.. include:: ../README.rst Introduction ------------ Our company decided that its about time we would have our own implementation of project clock tracking. The work in our company is split between different projects and development time consumption must be tracked. The simple server was implemented and your primary task is to implement CLI client for developers to use, but to do that you unfortunately will have to modify server as well. The communication between server and client is over `Silicon Heaven `__ RPC protocol. You can start the server and investigate its RPC API with `SHVCli `__: .. code-block:: console $ python3 -m ellclockin.server -vvv tests/server/ellclockin-server.ini .. code-block:: console $ shvcli 'tcp://franta@localhost?shapass=00af70ce92fa1a0106b28f8909a6fe3e7d0ab1d5' > ls .app .broker clockin > clockin/ clockin> ls workers projects clockin> ls workers self clockin> ls projects clockin> dir projects dir ls new clockout clockin> projects:new "test" null clockin> ls projects test clockin> projects/test:work null clockin> ls workers self franta clockin> workers/self:currentProject "test" clockin> workers/self:currentSeconds 18 clockin> workers/self:currentSeconds 21 clockin> projects:clockout null clockin> workers/self:currentProject null clockin> workers/self:currentSeconds null clockin> projects/test:workers ["franta"] clockin> projects/test:worktime 31 clockin> The concept is that workers start their work by calling ``work`` method on project they are going to work. Later they can switch to a different project with the same method (worker can work only on one project at the time). To leave the work worker must call ``ellclockin/projects:clockout``. Checklist --------- This is checklist of expected work you should do. It is not an issue if you are unable to do them all. If you get stuck on some step then try to workaround it instead of abandoning the whole ordeal. - Implement command line client for developers to use to clock-in and out. The design is up to you (you would be the user). The file `ellclockin/__main__.py` contains initial template for you to start. It must provide a way to start and stop working on the project. - Write user documentation for the tool. - Add query for the worker's contributions in the project - Commit changes using Git in the meaningful steps with an appropriate commit comments. - Fork this project on Gitlab.com and submit pull request with your changes. - Ensure that Gitlab CI passes Table of contents ----------------- .. toctree:: :maxdepth: 2 client server api/index :ref:`genindex`