CLI to view, code & submit problems directly from terminal
Project description
Termicoder
View, Code, Submit directly from terminal
Made with :heart: by Divesh Uttamchandani
A python based command line interface for helping in competitive programming. Termicoder aims at automating and simplifying the process of coding, testing and submitting solutions to Online Judges so that one can concentrate only on algorithms
Inspiration behind Termicoder
Installation
User installation
pip install termicoder
use sudo -H if required. preferably use pip3 (python3)
Developer installation
- clone this repo
- in the root folder of this repo run
pip install --editable .
notice the dot(.) in above command at the end
Note: it is better to use virtualenv and pip3 (python3)
- to remove this package, in the root folder of the repo run
python setup.py develop --uninstall
Note: Termicoder is in its development stage and has only been tested on Ubuntu + python3. Support for other configurations is being worked on, if you are using some other platform and encounter errors, do create an issue for them. For windows one can also try using Bash on Ubuntu on Windows ; most features have been tested out there and work as expected.
Autocomplete for bash
To setup tab autocompletion for termicoder commands,
see termicoder config autocomplete --help
Current Support
Judges Included
Languages Support Included
- C
- C++
- Python2/3
Highlights
Usage: termicoder [OPTIONS] COMMAND [ARGS]...
__ __ _ __
\ \ / /____ _________ ___ (_)________ ____/ /__ _____
\ \ / __/ _ \/ ___/ __ `__ \/ / ___/ __ \/ __ / _ \/ ___/
/ / / /_/ __/ / / / / / / / / /__/ /_/ / /_/ / __/ /
/_/ \__/\___/_/ /_/ /_/ /_/_/\___/\____/\__,_/\___/_/
view, code & submit problems directly from terminal.
Options:
--version Show the version and exit.
-v, --verbosity LVL Either CRITICAL, ERROR, WARNING, INFO or DEBUG
-h, --help Show this message and exit.
Commands:
clip Copies code from file to clipboard.
code Creates and opens file with template code.
config Configure settings, autocomplete etc.
debug Launches custom debug interface.
list List the contents of current folder.
repl Start an interactive shell.
setup Sets up problem, contests and login.
submit Submit a solution.
test Test code against the sample testcases.
view View contests and problems.
Detailed Command Help
For details of a particular command use:
termicoder --help
termicoder <COMMAND> --help
or you can have a look at helptext which contains the output of all help commands
Sample Run
For a sample we recommend going through sample run which contains the details
ChangeLog
ChangeLog and Older Releases are availible under Releases .
Contributing to Termicoder
Termicoder is mostly written in python. If you are looking towards contributing to the code base, you should begin with reading the following:
You can also contribute otherwise by
-
Improving the Documentation.
- Most of the documentation lies in the documentation folder. To start fork this repo, change and create a pull request
-
reporting a bug or requesting a feature.
- Please create an issue about the bug/feature.
-
Giving feedback about the work. (both praise and criticism are equally appreciated).
LICENSE
NOTE
This is a complete redesign and rewrite of termicoder to support judges as plugins, As well as to support the new codechef API.
Unlike previous implementation this
completely does away with exec
and eval
calls. And implements Judges
,
Problems
and Contests
as classes instead of modules.
There is an abstract class Judge
which is used to dispatch operations to a
particular judge instance through Judge Factory
.
Developers can subclass and implement the Judge
class externally
and attach their module to setup tool entry-point - termicoder.judge_plugins
.
Termicoder dynamically loads these judges and dispatches the operations.
Complete documentation for writing judge-plugins and the UML design docs for
termicoder would be available soon. By then you can look at the
termicoder/judges/codechef
in this repo for an example implementation.
See setup.py for example of how to subscribe to entry point
termicoder.judge_plugins
.
This distribution currently includes judge plugin codechef
implemented using
codechef api for codechef api hackathon powered by Alibaba
There are also many completely new features implemented in this version including
termicoder repl
, termicoder config
, termicoder clip
, termicoder config autocomplete
Though this implementation lacks support for colors as well as a few other features which were present in previous implementation. This is mostly due to time constraint of the hackathon. Codechef API severely limits requests per time which slows down development. We will try to get it running, once we have tested and perfected the api based features.
This repo code will replace the main termicoder repo after this is perfected
You can use previous implementation of termicoder by specifying the version while pip
installation.
Previous implementation had version numbers ~0.2.*
and current implementation has
versions ~0.3.*
Once all primary features are implemented we will shift to beta versions ~0.9.*
for develop branch and stable versions ~1.0.*
for master branch
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file termicoder-0.3.0.tar.gz
.
File metadata
- Download URL: termicoder-0.3.0.tar.gz
- Upload date:
- Size: 216.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/20.7.0 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.5.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 86ce8f0f46c6dc2722345d6061b2e1b5b3039c0b45363e88a86692ee48327b1f |
|
MD5 | 4d552dcfbd687be3b5ea9c374254f714 |
|
BLAKE2b-256 | d212740df9813d762be1118e97b94edf645734a783c92a038d4b913287b781e2 |