Skip to content
/ shelve Public

🦀 A command-line tool written in Rust to pretty print files grouped by a column or field. It only support CSV files so far.

License

Notifications You must be signed in to change notification settings

matagus/shelve

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

shelve

A command-line tool written in Rust for pretty-printing CSV files grouped by a specified column or field.

Crates.io Documentation License

Installation

cargo install shelve

Usage

shelve --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 version

Examples

Given 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, High

Grouping 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 Foo

Grouping 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, Medium

The 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 Foo

Or reading multiple files at once:

shelve -c 5 sample-files/tasks.csv sample-files/more-tasks.csv

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

🦀 A command-line tool written in Rust to pretty print files grouped by a column or field. It only support CSV files so far.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Languages