A CLI tool for a competitive programmers built using python. It allows you to view stats across multiple sites, control templates, quickly test code, and maybe submit through your console!
xuhan
Check their projects out: Gomoku, The Unconventional Units Converter, Extract: Zombie Shooter
dave9123
Check their projects out: Recall Me, Lenie, InstaQuote
aramb-dev
Check their projects out: Madinah Resources website, Transcriptr, Aram Tutorials Website, 1st Class Grass site, Madinah Resources App
grace
Check their projects out: Calculator, Age Calculator, igraceQuiz, Weather App, Igrace's Notes, Igrace's Password, Cineverse
yehor
Check their projects out: The Terminal News, Beepcrypt, FlipUI, Pirate Play, Dashboardy, WIBR, RssTUI
Once you ship this you can't edit the description of the project, but you'll be able to add more devlogs and re-ship it as you add new features!
I updated the documentation site with the new installation commands as well as the new command themselves. Previously, they were referred to as python3 main.py
command but now, they're referred to as cp-cli <command>
.
In these past few days, I tried multiple times to get the binaries working by using pyinstaller. It finally works! With a few workarounds for mac and windows, you can now install the .exe and apple versions with a few extra commands to make it an executable and a global command! They are now available on github under the releases https://github.com/CompProgTools/CPCli/releases/tag/v1.0.0
I've added some final touches such as dependabot updates, greeting workflow, and pyling updates.
Okay in this session I added the stats system that allows you to get a general overview of your statistics. That includes, total problems solved, average rating, highest rating, most common tags, highest streak, etc. I've also made a graph subcommand that graphs the rating of all the problems you've solved over time. I also updated the documentation accordingly.
In this devlog, I worked on the streak system, added the cf log system that lets you log a day along with the problem you did. The streak system is pretty simple, you log a problem, and your streak is continued, it also shows what problem(s) you solved. I also added a code of conduct and contribute section to the documenation site!
In this kinda confusing yet fun session, I worked on the contribution section of my documentation. It really just let me flush out my ideas on what a CP-Cli contributor should be like, and what the main goal of this project is. What are we trying to do for competitive programmers, and why? That was the main question that I aimed to answer in this section. I also added a flag for the codeforces subcommand that allows you to set a problem as solved, this is so I can add streaks and graph/stats in the very near future in order for the programmer to better understand their consistency and where they focus their practice on. The attachment is what the --solved flag looks like and the usage. Really it was just a normal O(1) look up time on the dictionary since I have the required parameters!
I added a pip command in order for you to run a command and update the code as well as build it to use the cp-cli command.
In this update I added commands for the leetcode daily challenge, as well as codeforces contests, and I updated the documentation accordingly.
WOW that was a long session. I spent good 90 minutes just writing documentation. I got the about me section as well as the installation, setup, and template section done. The docs are looking good all thanks to Mkdocs!! I also tested the sync command and it works!! The contest results from last week came out, and while I did lose 15 elo, the sync command tracks it!!!
This time, I wanted to add documentation and overall polishing the project as it is. I wanted to add a contribution, code of conduct, and documentation to the project so its more accessible for anyone new to contribute. I kinda just based the CONTRIBUTION.md
file based on what I think CP-Cli should look like in the future, being a fast and vast cli tool for all things competitive programming. I also based the code of conduct on the github guide and modified accordingly. For the documentation, I wanted a quick way to get started while not having to write the html, css, and js all the way from scratch. Thats when I remembered about jekyll through #tonic
, so I did a quick search for jekyll themes for documentation and came across Mkdocs
. It has a theme that is identical to that of read the docs, so I went with it. Tinkered around for a while a managed to get the docs and the rest of the project code onto one branch. You can access it at, docs
In this long ahh session I managed to get the template system working. Essentially, you can create templates for certain kinds of problems (ex: permutations, binary search, etc) using the command cp-cli template --make name.ext --alias alias
the template subcommand has other arguments for useful things such as the --make
command which allows you to make a template with the alias argument. So a binary search template command would look like:
cp-cli template --make binarySearch.cpp --alias binarySearch
and to use this template, simply use the command cp-cli template --use alias --filename name.ext
. The --use flag followed by alias
just refers to the alias created in the command before and the --filename
tag allows you to use that template in a predefine path in the config command
Added a config command so you can change the account username, set default language, name, default code editor.
Added the testcases feature to allow quick testing!! It only supports string inputs but soon I'll also add ints and floats
In this update, I added a subcommand (argument) called sync that allows you to view all your rating changes across the platforms at the same time.
Created the basic account linking system with the CodeForces, LeetCode, and AtCoder API and save it to a config on ~/.config/cpcli