A command-line tool written in Rust for pretty-printing CSV files grouped by a specified column or field.
cargo install shelveshelve --help
Usage: shelve [OPTIONS] [FILENAME]...
Arguments:
FILENAME CSV file to read [default: stdin]
Options:
-c, --column-number <COLUMN_NUMBER> Column number to group by [default: 1] (first colum)
-h, --help Print help
-V, --version Print versionGiven the following CSV file containing data about tasks and their status:
Task ID,Task Title,Status,Assignee,Priority
1,Implement feature A,In Progress,John Doe,High
2,Fix bug B,Done,Jane Doe,Low
3,Write tests for feature A,In Progress,John Doe,Medium
4,Refactor code,To Do,Jane Doe,High
5,Deploy to production A and B,To Do,John Doe,Low
6,Write missing documentation for feature A,Done,Peter Foo,Medium
7,Fix bug C,To Do,Alice Bar,High
8,Write tests for feature A,In Progress,John Doe,Low
Grouping by the Status column (column number 2):
shelve -c 3 example.csv
Done:
2, Fix bug B, Jane Doe, Low
6, Write missing documentation for feature A, Peter Foo, Medium
In Progress:
1, Implement feature A, John Doe, High
3, Write tests for feature A, John Doe, Medium
8, Write tests for feature A, John Doe, Low
To Do:
4, Refactor code, Jane Doe, High
5, Deploy to production A and B, John Doe, Low
7, Fix bug C, Alice Bar, HighGrouping by the Priority column (column number 4):
shelve -c 5 example.csv
High:
1, Implement feature A, In Progress, John Doe
4, Refactor code, To Do, Jane Doe
7, Fix bug C, To Do, Alice Bar
Low:
2, Fix bug B, Done, Jane Doe
5, Deploy to production A and B, To Do, John Doe
8, Write tests for feature A, In Progress, John Doe
Medium:
3, Write tests for feature A, In Progress, John Doe
6, Write missing documentation for feature A, Done, Peter FooGrouping by the Assignee column (column number 3):
shelve -c 4 example.csv
Alice Bar:
7, Fix bug C, To Do, High
Jane Doe:
2, Fix bug B, Done, Low
4, Refactor code, To Do, High
John Doe:
1, Implement feature A, In Progress, High
3, Write tests for feature A, In Progress, Medium
5, Deploy to production A and B, To Do, Low
8, Write tests for feature A, In Progress, Low
Peter Foo:
6, Write missing documentation for feature A, Done, MediumThe command can also read input from stdin:
>> cat sample-files/tasks.csv | shelve -c 5
High:
1, Implement feature A, In Progress, John Doe
4, Refactor code, To Do, Jane Doe
7, Fix bug C, To Do, Alice Bar
Low:
2, Fix bug B, Done, Jane Doe
5, Deploy to production A and B, To Do, John Doe
8, Write tests for feature A, In Progress, John Doe
Medium:
3, Write tests for feature A, In Progress, John Doe
6, Write missing documentation for feature A, Done, Peter FooOr reading multiple files at once:
shelve -c 5 sample-files/tasks.csv sample-files/more-tasks.csvContributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.