Files
ppit/phelp.py

241 lines
5.6 KiB
Python

import sys
from utils import strstr
def handle_help(args, *_):
if not args:
help_help()
sys.exit(0)
cmd_handler = [
("init", help_init),
("project", help_project),
("task", help_task),
("note", help_note),
("log", help_action),
("info", help_info),
("help", help_help),
("version", help_version),
]
candidate = -1
for i in range(len(cmd_handler)):
if strstr(cmd_handler[i][0], args[0]) == cmd_handler[i][0]:
if candidate < 0:
candidate = i
else:
print("Ambiguous command ({})".format(args[0]))
sys.exit(1)
if candidate < 0:
print(
"Invalid command ({}), run '{} help' for help".format(
args[0], os.path.basename(__file__)
)
)
sys.exit(1)
cmd_handler[candidate][1]()
def help_project():
print(
"""Pits project is basic entity used to group related tasks together. A project has name and status.
Creating a project:
$ pits project -c name [-s status]
Editing a project:
$ pits project -e [number] [-n name] [-s status]
Deleting a project:
$ pits project -d [number]
Viewing a project:
$ pits project [[-q] number]
Searching projects:
$ pits project -q [number | [-n name] [-s status]]
Examples:
$ pits project -c 'My Tasks'
created project 1: My Tasks (status: active)
$ pits project -c 'Feature Requests' -s backlog
created project 2: Feature Requests (status: backlog)
$ pits pro
1: (username) [active ] My Tasks (0 tasks)
* 2: (username) [backlog] Feature Requests (0 tasks)
$ pits p 1 -e -n 'Task and Bugs' -s current
1: Task and Bugs (current, 0 tasks)
$ pits p
1: (username) [current] Task and Bugs (0 tasks)
* 2: (username) [backlog] Feature Requests (0 tasks)
$ pits p -d
deleted project 2: Feature Requests
$ pits p
* 1: (username) [current] Task and Bugs (0 tasks)
"""
)
def help_task():
print(
"""In Pits a task belongs to a project and projects can have many tasks. Task attributes include name, status,
priority, date, and time. All attributes except the name are optional.
Creating a task:
pits task -c name [-s status] [-p priority] [-d date] [-t time]
Editing a task:
pits task -e [number] [-n name] [-s status] [-p priority] [-d date] [-t time]
Moving a task:
pits task -m [number] -p number
Deleting a task:
pits task -d [number]
Viewing a task:
pits task [[-q] number]
Searching tasks:
pits task -q [number | [-n name] [-s status] [-p priority] [-d date-from] [-D date-to] [-t time-min] [-T time-max]]
Supported date formats:
none, 4/26, 4/26/2012, 4/26/12, '4/26 3pm', '4/26 19:30', '4/26/2012 3:15am', '4/26/12 17:00'
'Apr 26', 'Apr 26, 2012', 'Apr 26 3pm', 'Apr 26 19:30', 'Apr 26, 12 3:15am', 'Apr 26, 2012 17:00'
Supported time formats:
none, 17, 17:00, 17:30, 5pm, 1:15am
Examples:
$ pits task -c 'Hack this'
created task 1/1: Hack this (status: open, priority: normal)
$ pits task -c 'And hack that' -s new -p urgent -d 'Dec 31'
created task 2/1: And hack that (status: new, priority: urgent, date: Dec 31, 2010)
$ pits t
1: (username) [open] [normal] Hack this (0 notes)
* 2: (username) [new ] [urgent] Dec 31, 2010 And hack that (0 notes)
$ pits t -e 1 -s done -d 10/10 -t 4:30
updated task 1: Hack that (status: done, date: Oct 10, 2010, time: 4:30)
$ pits t
1: (username) [done] [normal] Oct 10, 2010 4:30 Hack this (0 notes)
* 2: (username) [new] [urgent] Dec 31, 2010 And hack that (0 notes)
$ pits t -d
deleted task 2: And hack that
$ pits t
1: (username) [done] [normal] Oct 10, 2010 4:30 Hack this (0 notes)
"""
)
def help_note():
print(
"""Pits notes are attached to a task. The only attribute is the note's message body.
Creating a note:
$ pits note -c message
Editing a note:
$ pits note -e [number] message
Deleting a note:
$ pits note -d [number]
Listing notes:
$ pits note
"""
)
def help_action():
print(
"""Show summary information about your Pits database. This command is as simple as:
pits log
"""
)
def help_info():
print(
"""Show summary information about your Pits database. This command is as simple as:
pits info
"""
)
def help_help():
print(
"""Pits is highly experimental software. Use it at your own risk. See LICENSE file for details.
usage: pits command [args]
The commands are:
init Create empty Pits database or reinitialize an existing one
project Create, search, and manage Pits projects
task Create, search, and manage Pits tasks
note Create, search, and manage Pits notes
log Show chronological Pits activity log
info Show summary information about your Pits database
help Show help information about Pit
version Show Pits version number
All commands might be shortened as long as they remain unambiguous. See 'pits help <command>' for more
information on a specific command.
"""
)
def help_version():
print("todo")
def help_init():
print(
"""Create empty Pits database or reinitialize an existing one. Default file name for the Pits database
is ~/.pits.db -- you can override the default by setting PITFILE environment variable.
$ pits init [-f]
-f force initialization without prompt
Example:
$ pits init
/home/user/.pits.db already exists, do you want to override it [y/N]: y
Created database /home/user/.pit
"""
)