Giter Site home page Giter Site logo

protokoll's Introduction

Protokoll - Track Your Time

License

A simple program made for tracking your time spent on tasks per project. Designed around use from the shell.

Installation

Using Pip:

pip install protokoll

Or install from source:

git clone https://github.com/metalseargolid/protokoll
cd protokoll
python setup.py install

The database schema changed from 0.1 to 0.2. Due to the age of this project at this time, I don't plan on writing a migration mechanism unless this is requested, so know that by upgrading to 0.2 or later you will no longer be able to see tasks or projects created with older versions of the program. However, moving foward, schema changes will be gracefully migrated.

Usage

Usage: protokoll [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  project  Commands for working directly with projects.
  task     Commands for working directly with tasks.
Usage: protokoll project [OPTIONS] COMMAND [ARGS]...

  Commands for working directly with projects.

Options:
  --help  Show this message and exit.

Commands:
  create  Create a new project.
  list    List projects.
  remove  Remove a project.
Usage: protokoll task [OPTIONS] COMMAND [ARGS]...

  Commands for working directly with tasks.

Options:
  --help  Show this message and exit.

Commands:
  list   List tasks in a given project.
  start  Start a new task in a given project.
  stop   Stop a currently running task.

Creating a Project

protokoll project create projectname

List Existing Projects

protokoll project list

Starting a Task

Note: You may only have one task running at a time. Note: There is a 50 character limit on the task description.

protokoll task start projectname "Task Description"

Stopping a Task

protokoll task stop

List All Tasks from Project

protokoll task list projectname

Support

If you find this project and feel something is missing, broken, or could otherwise be enhanced, create an issue on Github and I will look into it when I get a chance.

protokoll's People

Contributors

bender-the-greatest avatar pgporada avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

protokoll's Issues

Protokol doesn't like hyphens in project names

$ protokoll project create jenkins-build-glapp
Traceback (most recent call last):
  File "/usr/local/bin/protokoll", line 9, in <module>
    load_entry_point('protokoll==0.1.3', 'console_scripts', 'protokoll')()
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 700, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 680, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1027, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1027, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 873, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 508, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/protokoll/__main__.py", line 44, in create
    dbo.create_project(project_name, close=True)
  File "/usr/local/lib/python2.7/dist-packages/protokoll/db.py", line 59, in create_project
    "is_running INT NOT NULL)", close, False, tn=project_name)
  File "/usr/local/lib/python2.7/dist-packages/protokoll/db.py", line 242, in __execute
    cursor.execute(query)
sqlite3.OperationalError: near "-": syntax error

I then put quotes around the project name.

$ protokoll project create "jenkins-build-glapp"
Traceback (most recent call last):
  File "/usr/local/bin/protokoll", line 9, in <module>
    load_entry_point('protokoll==0.1.3', 'console_scripts', 'protokoll')()
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 700, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 680, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1027, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1027, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 873, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 508, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/protokoll/__main__.py", line 44, in create
    dbo.create_project(project_name, close=True)
  File "/usr/local/lib/python2.7/dist-packages/protokoll/db.py", line 59, in create_project
    "is_running INT NOT NULL)", close, False, tn=project_name)
  File "/usr/local/lib/python2.7/dist-packages/protokoll/db.py", line 242, in __execute
    cursor.execute(query)
sqlite3.OperationalError: near "-": syntax error

I then tried to escape the hyphens but got blown up again. Escaping the escapes also causes protokoll to explode.

$ protokoll project create "jenkins\-build\-glapp"
Traceback (most recent call last):
  File "/usr/local/bin/protokoll", line 9, in <module>
    load_entry_point('protokoll==0.1.3', 'console_scripts', 'protokoll')()
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 700, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 680, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1027, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1027, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 873, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 508, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/protokoll/__main__.py", line 44, in create
    dbo.create_project(project_name, close=True)
  File "/usr/local/lib/python2.7/dist-packages/protokoll/db.py", line 59, in create_project
    "is_running INT NOT NULL)", close, False, tn=project_name)
  File "/usr/local/lib/python2.7/dist-packages/protokoll/db.py", line 242, in __execute
    cursor.execute(query)
sqlite3.OperationalError: unrecognized token: "\"

Acceptable characters for project names

$ protokoll project create jenkins-build-app
Traceback (most recent call last):
  File "/usr/local/bin/protokoll", line 9, in <module>
    load_entry_point('protokoll==0.1.3', 'console_scripts', 'protokoll')()
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 700, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 680, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1027, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1027, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 873, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 508, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/protokoll/__main__.py", line 44, in create
    dbo.create_project(project_name, close=True)
  File "/usr/local/lib/python2.7/dist-packages/protokoll/db.py", line 59, in create_project
    "is_running INT NOT NULL)", close, False, tn=project_name)
  File "/usr/local/lib/python2.7/dist-packages/protokoll/db.py", line 242, in __execute
    cursor.execute(query)
sqlite3.OperationalError: near "-": syntax error

I then put quotes around the project name.

$ protokoll project create "jenkins-build-app"
Traceback (most recent call last):
  File "/usr/local/bin/protokoll", line 9, in <module>
    load_entry_point('protokoll==0.1.3', 'console_scripts', 'protokoll')()
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 700, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 680, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1027, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1027, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 873, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 508, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/protokoll/__main__.py", line 44, in create
    dbo.create_project(project_name, close=True)
  File "/usr/local/lib/python2.7/dist-packages/protokoll/db.py", line 59, in create_project
    "is_running INT NOT NULL)", close, False, tn=project_name)
  File "/usr/local/lib/python2.7/dist-packages/protokoll/db.py", line 242, in __execute
    cursor.execute(query)
sqlite3.OperationalError: near "-": syntax error

I then tried to escape the hyphens but got blown up again. Escaping the escapes also causes protokoll to explode.

$ protokoll project create "jenkins\-build\-app"
Traceback (most recent call last):
  File "/usr/local/bin/protokoll", line 9, in <module>
    load_entry_point('protokoll==0.1.3', 'console_scripts', 'protokoll')()
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 700, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 680, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1027, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1027, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 873, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 508, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/protokoll/__main__.py", line 44, in create
    dbo.create_project(project_name, close=True)
  File "/usr/local/lib/python2.7/dist-packages/protokoll/db.py", line 59, in create_project
    "is_running INT NOT NULL)", close, False, tn=project_name)
  File "/usr/local/lib/python2.7/dist-packages/protokoll/db.py", line 242, in __execute
    cursor.execute(query)
sqlite3.OperationalError: unrecognized token: "\"

Using a non-existant project name causes a crash

p task list notaproj

Traceback (most recent call last):
  File "/usr/local/bin/p", line 9, in <module>
    load_entry_point('protokoll==0.1.3', 'console_scripts', 'p')()
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 700, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 680, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1027, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1027, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 873, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 508, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/protokoll/__main__.py", line 124, in list
    tasks = dbo.get_project_tasks(project_name, days, close=True)
  File "/usr/local/lib/python2.7/dist-packages/protokoll/db.py", line 158, in get_project_tasks
    tn=project_name, d=days)
  File "/usr/local/lib/python2.7/dist-packages/protokoll/db.py", line 242, in __execute
    cursor.execute(query)
sqlite3.OperationalError: no such table: notaproj

Output name of project upon creation

This would be helpful from a user experience perspective.

Expectation

phil at laptappy in ~
$ protokoll project create jenkins_build_app
Created project jenkins_build_app

Current

phil at laptappy in ~
$ protokoll project create jenkins_build_app
phil at laptappy in ~

Various errors result in crashes

There is currently no proper error handling for most issues. When something doesn't work, a stacktrace blows up in your face. Expected errors should not bubble up like this.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.