#csv #column #pretty-print #command-line-tool #field #grouping #data

app shelve

A simple command-line tool to pretty print CSV files grouped by a column

5 releases

new 0.2.0 Nov 2, 2024
0.1.3 Oct 26, 2024
0.1.2 Sep 23, 2024
0.1.1 Sep 8, 2024
0.1.0 Sep 7, 2024

#38 in Value formatting

Download history 233/week @ 2024-09-02 61/week @ 2024-09-09 53/week @ 2024-09-16 185/week @ 2024-09-23 75/week @ 2024-09-30 16/week @ 2024-10-07 115/week @ 2024-10-21 139/week @ 2024-10-28

270 downloads per month

MIT license

12KB
116 lines

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.

Dependencies

~2.3–3MB
~49K SLoC