7 ms·
A very useful function in jq is "join", which I use a lot to cook the final shape of the data (many times used with fzf/dmenu) Here's a simple way to list and
by rgrau 5y ago
A very useful function in jq is "join", which I use a lot to cook the final shape of the data (many times used with fzf/dmenu)
Here's a simple way to list and browse github issues of a given user/repo:
#!/usr/bin/env sh
browse_url() {
firefox http://github.com/$1/issues/$2
}
issue=$(curl https://api.github.com/repos/$1/issues |
jq -r 'map([(.number|tostring), .title] | join(" | ")) | join("\n")' |
dmenu -i -l 10 |
awk "{print \$1}")
browse_url $1 $issue
Although the `| join("\n")` part could be done in a more idomatic way with just `[]`, sometimes the manual way are still clearer to me:
map([(.number|tostring), .title] | join(" | "))[]
- ekimekim 5y agoPersonally I find it clearer in many cases to use a format string instead. ie. instead of writing: [(.number|tostring), .title] | join(" | ") I would write: "\(.number) | \(.title)" which IMO is more readable in cases where you have specific values you want to put in specific places, as opposed to a list of unknown length which you want joined (eg. I would still use join("\n") in your example).
- rgrau 5y agoOh! I didn't know that one could build an arbitrary string like that inside a map. Thanks a lot for that, I agree it looks better!