You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.5 KiB
Markdown
72 lines
1.5 KiB
Markdown
Very much work in progress. This is the first project in my Rust learning journey.
|
|
Expect a lot of changes and refactoring.
|
|
|
|
# Colmap
|
|
|
|
Colmap is hybrid between `awk` in `xargs`. It borrows from the former its ability
|
|
to work on tabular columns of text and allows for arbitrary commands to be
|
|
applied per column in a similar way to `xargs`.
|
|
|
|
The columns are called `fields`. The command to execute on each field is called
|
|
an `x-arg`.
|
|
|
|
|
|
## Example
|
|
|
|
input:
|
|
|
|
field #1 field #2
|
|
|--------------------------| |--------------|
|
|
/long/path/to/some/ebook.pdf | Title Of Ebook
|
|
____
|
|
\
|
|
example usage: \
|
|
-------------- \__________________
|
|
___\_
|
|
colmap --field-1='basename {}' --field-2="awk { print $1 }"
|
|
_________________|: x-arg
|
|
|
|
#OR
|
|
colmap -f1 'basename {}' -f2 'awk { print $1 }'
|
|
|
|
would output: `ebook.pdf | Title`
|
|
|
|
|
|
- use colon as delimiter
|
|
|
|
`colmap -d':' -f1 '...'`
|
|
|
|
### Ways of passing x-args
|
|
|
|
1. passing column x-args as fields
|
|
|
|
```shell
|
|
foo_cmd | colmap --field-1='basename {}' --field-2="awk { print $1 }"
|
|
foo_cmd | colmap -f1 'basename {}' -f2 'awk { print $1 }'
|
|
```
|
|
|
|
2. Passing an `xarg template`
|
|
|
|
```shell
|
|
foo_cmd | colmap -t 'basename {}' 'awk { print $2 }'
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
[I am using Github under protest](protest.md)
|
|
|
|
|
|
TODO:
|
|
----
|
|
|
|
[ ] use non-dashed approach to cli (rwxrob/bonzai)
|