andrew-ls/gantt
Command line tool to print a textual gantt chart from specially formatted input.
gantt
An OmniPlan competitor written in Bourne shell.
Overview
Usage: gantt [OPTION]... [FILE]...
Prints a gantt chart from a specially formatted 'agenda' input.
File should be in the form...
TASK:
SUBTASK: (status|[-])
With no FILE, standard input is read.
-h, --hours-per-day=NUM Hours of work per day.
-t, --tasks=LIST Comma-separated list of tasks to include. Tasks are
referenced by index in the order they appear.
--help Print this help.
--help-example Print an input example.
--version Print version information.
Display can be customized with the following environment variables:
GANTT_CHART_CHARACTER_MAX (Default: ▒)
- Character to use for 'maximum estimate' portion of bars.
GANTT_CHART_CHARACTER_MIN (Default: █)
- Character to use for 'minumum estimate' portion of bars.
GANTT_CHART_CHARACTER_TIMELINE (Default: •)
- Character to use for the timeline decoration.
Piping to a pager is recommended if output exceeds your terminal width.
.Example input:
This is an example of the input gantt expects.
Lines starting with a '#' are ignored.
Whitespace padding is also ignored.
Hint: try piping this output back into gantt to see the visual output.
Testing:
Test Live View: 4
Attendance Blocks Tab:
Design UX: 1-6
Implement Listings: blocked
Implement Details: 20-24
Directory-Attendance Integration:
Design UX: done
Implement Viewing: 8-24
.Example output:
0d 1d 2d 3d 4d 5d 6d 7d
••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
Testing
Test Live View ████ 4
Attendance Blocks Tab
Design UX █▒▒▒▒▒ 1-6
Implement Listings blocked
Implement Details ████████████████████▒▒▒▒ 20-24
Directory-Attendance Integration
Design UX done
Implement Viewing ████████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ 8-24
••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
0d 1d 2d 3d 4d 5d 6d 7d
.Output in GNOME Terminal
image::img/help-example.jpg[width="100%"]
Installation
Drop the shell script located at bin/gantt into a PATH accessible directory and mark it as executable.
TODO
For 1.0.0 release
- Allow hiding of timeline header and/or footer.
- Allow ranges for
-t/--tasksparameter. - Allow input to consist of only subtasks.
- Allow auto-paging if output detected to be wider than terminal width.
- Allow definition of target duration, display as vertical rule in output.
- Display relevant statistics for current task set.
- Allow "best-case" task alignment view.
- Gracefully handle and report malformed input.
- Gracefully handle and report malformed arguments.
- Allow each task to show full estimate bar of constituent subtasks.
- Allow further definition of task alignments.
- Allow scaling of display.
Further development
- Simulative prediction.
- Input:
** Calendar - weekends, holidays...
** Assignments - utilization, dependencies... - Output:
** Image format. - Graphical interface wrapper.