Compare commits

..

12 Commits

Author SHA1 Message Date
95d1a3e241 more entries 2025-03-24 20:24:25 +01:00
e25a2355c0 add to catalog 2024-07-13 21:49:04 +02:00
72ea5375ab feat: publish catalog as static page 2024-07-13 21:48:42 +02:00
0a2e0b643a add to catalog 2024-07-07 01:02:53 +02:00
6e98bd6a47 feat: render catalog in a html page 2024-06-12 11:24:38 +02:00
4334ffb6b2 add to catalog 2024-05-31 15:31:52 +02:00
00c7d93f7a add to catalog ; fix some keys 2024-04-30 12:01:48 +02:00
8a78fe393e add to catalog 2024-04-19 13:11:50 +02:00
f9570c3901 fix tags key 2024-04-10 11:45:28 +02:00
c5889d9f71 add to catalog 2024-04-04 22:53:54 +02:00
4a39a6d181 add some entry ; add a script to get tool README 2024-03-09 17:03:46 +01:00
e2c846b980 fix(cmd): display all versions, cast to str 2024-03-03 11:42:23 +01:00
8 changed files with 374 additions and 78 deletions

View File

@@ -8,16 +8,14 @@ Installs standalone command line utilities in your user profile
# motivations # motivations
You have a bunch of useful tools for day to day activity in the terminal, as a dev or ops guy. Tools like jq, fzf, exa, etc.
But you never know if there are up to date, where they come from, what do they do exactly, do you still need them. You have a variety of useful tools for day-to-day activities in the terminal, whether you're a developer or operations professional. These tools include jq, fzf, exa, and more. However, it's often difficult to determine if these tools are up to date, where they originate from, their exact functionality, and whether you still need them.
Few of them are part of you OS package manager. Most of the time of old version. And you may not want to install them system wide actually. Some of these tools are included in your operating system's package manager, but they are often outdated. Additionally, you may prefer not to install them system-wide.
Cliget lists, installs and updates standalone command line utilities in your user profile. **Cliget** addresses these challenges by listing, installing, and updating standalone command line utilities in your user profile.
Inspired by envinstall (private), [webinstall](gh:webinstall/webi-installers), [asdf](gh:asdf-community/.github).
This solution was inspired by envinstall (undisclosed), [webinstall](gh:webinstall/webi-installers), and [asdf](gh:asdf-community/.github).
# what # what
@@ -68,9 +66,9 @@ most defaults can be overriden
# FAQ # FAQ
#### What does it do, again ? #### Q: What does it do, again ?
CliGet automates the following process: **Cliget** automates the following process:
1. go to my useful tool website 1. go to my useful tool website
1. navigate to release section 1. navigate to release section
@@ -79,52 +77,52 @@ CliGet automates the following process:
1. repeat for all the useful small tools I use 1. repeat for all the useful small tools I use
1. repeat periodically 1. repeat periodically
CliGet has nice defaults, favors convention over configuration, and does its best to "guess" how to get current version number, get last version number, download last release and install it properly. **Cliget** has nice defaults, favors convention over configuration, and does its best to "guess" how to get current version number, get last version number, download last release and install it properly.
Tools developers / maintainers are not supposed to know CliGet exists. It adapts to the way they deliver their software. Of course if they use GitHub release and TGZ, it's easier for Cliget to manage :') Tools developers / maintainers are not supposed to know **Cliget** exists. It adapts to the way they deliver their software. Of course if they use GitHub release and TGZ, it's easier for Cliget to manage :')
#### so I have to do this process for CliGet ? #### Q: so I have to do this process for **Cliget** ?
Only the first time. After being installed, CliGet is managed by CliGet. Only the first time. After being installed, **Cliget** is managed by **Cliget**.
#### why this name ? #### Q: why this name ?
It is like wget but fo CLI. Plus, I like the sound of it :) It is like wget but fo CLI. Plus, I like the sound of it :)
#### I already use [asdf](https://asdf-vm.com/), why would I need cliget ? #### Q: I already use [asdf](https://asdf-vm.com/), why would I need cliget ?
asdf is a wonderful tool when it comes to do software development in various programming language while mixing versions from one project to an other. asdf is a wonderful tool when it comes to do software development in various programming language while mixing versions from one project to an other.
But this power comes with some constraints : a plugin has to be developed in order to integrate a new tool to asdf ; And versions of every tool that will be used for a project has to be declared in a config file. But this power comes with some constraints : a plugin has to be developed in order to integrate a new tool to asdf ; And versions of every tool that will be used for a project has to be declared in a config file.
CliGet does not handle multi-versions and tools are deployed for your whole profile. **Cliget** does not handle multi-versions and tools are deployed for your whole profile.
In short, if you want to manage development environment, use asfd. If you want to install small tools, use CliGet. They do not conflict, they are complement each other. In short, if you want to manage development environment, use asfd. If you want to install small tools, use **Cliget**. They do not conflict, they complement each other.
#### I already use the package manager of my OS to install tools, why would I need cliget ? #### Q: I already use the package manager of my OS to install tools, why would I need cliget ?
Package managers handle dependencies and install software system wide, for all users. Not all softwares are packaged for all OS distributions because this is hard work for maintainers. So you end up with some softwares not available or not up to date. Package managers handle dependencies and install software system wide, for all users. Not all softwares are packaged for all OS distributions because this is hard work for maintainers. So you end up with some softwares not available or not up to date.
CliGet only install standalone programs, in the user profile (`.local/bin`). It does its best to find the last version and the best way to install the software. There is no need to package for CliGet. **Cliget** only install standalone programs, in the user profile (`.local/bin`). It does its best to find the last version and the best way to install the software. There is no need to package for **Cliget**.
#### I already use Flatpack, AppImage, Snap to install tools in my profile, why would I need CliGet ? #### Q: I already use Flatpack, AppImage, Snap to install tools in my profile, why would I need **Cliget** ?
These are package managers for the user profile. They come with heavy runtime. And, as classic package manager, not all tools are packaged nor up to date as it requires work from maintainers. These are package managers for the user profile. They come with heavy runtime. And, as classic package manager, not all tools are packaged nor up to date as it requires work from maintainers.
CliGet does not sandbox, nor manage dependencies but does not require any special packaging. **Cliget** does not sandbox, nor manage dependencies but does not require any special packaging.
#### I don't want to install python on my machine #### Q: I don't want to install python on my machine
CliGet is written in Python but packaged as a standalone program with no dependencies except `libc` and `zlib`, thanks to [PyInstaller](https://pyinstaller.org). **Cliget** is written in Python but packaged as a standalone program with no dependencies except `libc` and `zlib`, thanks to [PyInstaller](https://pyinstaller.org).
#### I don't trust you. What prevent you from dumping me a malware instead of a genuine software ? #### Q: I don't trust you. What prevent you from dumping me a malware instead of a genuine software ?
* source code is available and very straightforward. you can audit the code, build from source or even write your own version * source code is available and very straightforward. you can audit the code, build from source or even write your own version
* the tool will, by default, prompt you with clear information of what will be done before install * the tool will, by default, prompt you with clear information of what will be done before install
* catalog is only one file, readable, with clear information on where the software is coming from and how it will be installed * catalog is only one file, readable, with clear information on where the software is coming from and how it will be installed
* also keep in mind you also have to trust the software dev team. We are different teams. * also keep in mind you also have to trust the software dev team. We are different teams.
#### I want this for macos or mswindows #### Q: I want this for macos or mswindows
Currently only Linux is supported. It should work on all Unix like OS. For others, contributions are welcome as long as they do not complicate the tool too much. Currently only Linux is supported. It should work on all Unix like OS. For others, contributions are welcome as long as they do not complicate the tool too much.

19
TODO.md
View File

@@ -1,10 +1,12 @@
- [+] implement MVP - [+] implement MVP
- [+] minimal catalog - [x] minimal catalog => currently 124 entries
- [+] search catalog - [x] search catalog
- [+] local current versions - [x] local current versions
- [+] latest version, github strategy - [x] latest version, github strategy
- [+] intall, github strategy - [+] intall,
- [x] github+linux+x86_64+tgz strategy
- [ ] prompt user to override current file/symlink
- [*] code style => blake, defaults - [*] code style => blake, defaults
@@ -34,6 +36,11 @@
- [ ] GH release - [ ] GH release
- [ ] pypi package - [ ] pypi package
- [ ] landing page
- [x] publish catalog
- [ ] replace jinja2 with [minijinja](https://github.com/mitsuhiko/minijinja/discussions/523)
- [ ] open an issue in managed tool forge asking to add support for `--version` and semver - [ ] open an issue in managed tool forge asking to add support for `--version` and semver
- [ ] open an issue in managed tool forge asking to add cliget install method - [ ] open an issue in managed tool forge asking to add cliget install method
@@ -44,7 +51,7 @@
- [ ] existence of `.local`, `.local/programs`, `.local/bin` - [ ] existence of `.local`, `.local/programs`, `.local/bin`
- [ ] that permissions are ok - [ ] that permissions are ok
- [ ] that `.local/bin` are in `PATH` - [ ] that `.local/bin` are in `PATH`
- [ ] UI, add some progress to install - [ ] UI, add some progress to install (steps : 1/5 check current version, 2/5 ..)
- [ ] allow to list versions - [ ] allow to list versions
- [ ] allow to force installation of a given version - [ ] allow to force installation of a given version
- [-] improve search algorithm, fuzzing - [-] improve search algorithm, fuzzing

34
catalog.html.j2 Normal file
View File

@@ -0,0 +1,34 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>Cliget Catalog</title>
<style>
{% include 'styles.css' %}
</style>
</head>
<body>
<p>{{get_context()|length}} entries</p>
<table>
<thead>
<tr><th>name</th><th>repo</th><th>description</th></tr>
<thead>
<tbody>
{% for k,o in get_context().items()%}
<tr>
<td>
<a id="{{k}}" href="#{{k}}">&nbsp;</a>
{%if "website" in o%}<a href="{{o.website}}">{{k}}</a>{%else%}{{k}}{%endif%}
</td>
<td>
{%if "github" in o%}<a href="https://github.com/{{o.github}}">x</a>{%else%}&nbsp;{%endif%}
</td>
<td><p>{{o.desc}}</p></td>
</tr>
{% endfor %}
</tbody>
<table>
<p>{{get_context()|length}} entries</p>
</body>
</html>

View File

@@ -1,8 +1,20 @@
ab: ab:
fullname: Apache Benchmark name: Apache Benchmark
desc: a tool for benchmarking your Apache Hypertext Transfer Protocol (HTTP) server desc: a tool for benchmarking your Apache Hypertext Transfer Protocol (HTTP) server
website: https://httpd.apache.org/docs/2.4/programs/ab.html website: https://httpd.apache.org/docs/2.4/programs/ab.html
ag:
name: the silver searcher
github: ggreer/the_silver_searcher
desc: A code-searching tool similar to ack, but faster.
website: https://geoff.greer.fm/ag/
amber:
website: https://amber-lang.com/
desc: a programming language transpiled into Bash Script
github: Ph0enixKM/Amber
tags: rust
arc: arc:
desc: Easily create & extract archives, and compress & decompress files of various formats desc: Easily create & extract archives, and compress & decompress files of various formats
github: mholt/archiver github: mholt/archiver
@@ -11,19 +23,24 @@ aria2:
desc: lightweight multi-protocol & multi-source command-line download utility desc: lightweight multi-protocol & multi-source command-line download utility
github: aria2/aria2 github: aria2/aria2
asdf:
desc: manage developement environments for many languages with multiple concurrent versions
github: asdf-vm/asdf
asciinema: asciinema:
desc: Record and share your terminal sessions desc: Record and share your terminal sessions
website: https://asciinema.org/ website: https://asciinema.org/
pip: pip:
asdf:
desc: manage developement environments for many languages with multiple concurrent versions
github: asdf-vm/asdf
atuin: atuin:
website: https://atuin.sh/
desc: Magical shell history desc: Magical shell history
github: ellie/atuin github: ellie/atuin
axel:
desc: Lightweight CLI download accelerator
github: axel-download-accelerator/axel
bat: bat:
desc: A cat(1) clone with syntax highlighting and Git integration desc: A cat(1) clone with syntax highlighting and Git integration
github: sharkdp/bat github: sharkdp/bat
@@ -33,12 +50,18 @@ benthos:
website: https://www.benthos.dev/ website: https://www.benthos.dev/
github: benthosdev/benthos github: benthosdev/benthos
bfs:
desc: A breadth-first version of the UNIX find command
website: https://tavianator.com/projects/bfs.html
github: tavianator/bfs
tags: C, find
bottom: bottom:
desc: A customizable cross-platform graphical process/system monitor for the terminal desc: A customizable cross-platform graphical process/system monitor for the terminal
github: ClementTsang/bottom github: ClementTsang/bottom
br: br:
fullname: Broot name: Broot
desc: Get an overview of a directory, even a big one desc: Get an overview of a directory, even a big one
github: Canop/broot github: Canop/broot
@@ -48,6 +71,11 @@ bfs:
github: tavianator/bfs github: tavianator/bfs
tags: C, find tags: C, find
btop:
github: aristocratos/btop
desc: A monitor of resources
tags: cpp
chezmoi: chezmoi:
desc: Manage your dotfiles across multiple diverse machines, securely desc: Manage your dotfiles across multiple diverse machines, securely
github: twpayne/chezmoi github: twpayne/chezmoi
@@ -60,17 +88,34 @@ cliget:
desc: install various tools in your user profile desc: install various tools in your user profile
#github: setop/cliget #github: setop/cliget
curl:
github: curl/curl
website: https://curl.se/
desc: transferring data with URL syntax
d2: d2:
fullname: Declarative Diagramming name: Declarative Diagramming
desc: a diagram scripting language that turns text to diagrams desc: a diagram scripting language that turns text to diagrams
website: https://d2-lang.com/ website: https://d2-lang.com/
github: terrastruct/d2 github: terrastruct/d2
delta:
desc: A syntax-highlighting pager for git, diff, grep, and blame output
name: git-delta
cargo: git-delta
github: dandavison/delta
diagram: diagram:
desc: CLI app to convert ASCII arts into hand drawn diagrams desc: CLI app to convert ASCII arts into hand drawn diagrams
github: esimov/diagram github: esimov/diagram
tags: Go, diagram, ascii tags: Go, diagram, ascii
difft:
desc: diff tool that compares files based on their syntax, not line-by-line
website: https://difftastic.wilfred.me.uk/
github: Wilfred/difftastic
tags: Rust, AST, tree-sitter
diskonaut: diskonaut:
desc: Terminal disk space navigator, disk tree-map desc: Terminal disk space navigator, disk tree-map
github: imsnif/diskonaut github: imsnif/diskonaut
@@ -83,7 +128,7 @@ dt:
desc: duct tape for your unix pipes desc: duct tape for your unix pipes
website: https://dt.plumbing/ website: https://dt.plumbing/
github: so-dang-cool/dt github: so-dang-cool/dt
tag: text-processing, Zig tags: text-processing, Zig
dua: dua:
desc: View disk space usage and delete unwanted data, fast. desc: View disk space usage and delete unwanted data, fast.
@@ -93,12 +138,16 @@ duf:
desc: Disk Usage/Free Utility - a better 'df' alternative desc: Disk Usage/Free Utility - a better 'df' alternative
github: muesli/duf github: muesli/duf
exa:
desc: modern replacement for ls ; unmaintaned, prefer eza
github: ogham/exa
eza: eza:
desc: enhanced ls (active clone of exa) desc: enhanced ls (active clone of exa)
github: eza-community/eza github: eza-community/eza
fail: fail:
desc: this entry will fail, for test purpos desc: this entry will fail, for test purpose
github: fail/fail github: fail/fail
fd: fd:
@@ -111,6 +160,12 @@ feh:
website: https://feh.finalrewind.org/ website: https://feh.finalrewind.org/
tags: C tags: C
fend:
desc: Arbitrary-precision unit-aware calculator
website: https://printfn.github.io/fend/
github: printfn/fend
cargo:
ffmpeg: ffmpeg:
desc: A complete, cross-platform solution to record, convert and stream audio and video desc: A complete, cross-platform solution to record, convert and stream audio and video
releases: http://ffmpeg.org/releases/ releases: http://ffmpeg.org/releases/
@@ -127,7 +182,7 @@ flyscrap:
desc: A standalone and scriptable web scraper in Go desc: A standalone and scriptable web scraper in Go
github: philippta/flyscrape github: philippta/flyscrape
website: https://flyscrape.com/ website: https://flyscrape.com/
tag: Go, scrapping tags: Go, scrapping
fq: fq:
desc: jq for binary formats - tool, language and decoders for working with binary and text formats desc: jq for binary formats - tool, language and decoders for working with binary and text formats
@@ -150,6 +205,12 @@ glow:
gotty: gotty:
desc: Share your terminal as a web application desc: Share your terminal as a web application
grex:
github: pemistahl/grex
desc: build regular expressions from samples
website: https://pemistahl.github.io/grex-js/
cargo:
gron: gron:
desc: flatter json to make it greppable desc: flatter json to make it greppable
github: tomnomnom/gron github: tomnomnom/gron
@@ -158,6 +219,11 @@ grype:
desc: A vulnerability scanner for container images and filesystems desc: A vulnerability scanner for container images and filesystems
github: anchore/grype github: anchore/grype
gum:
desc: A tool for glamorous shell scripts. Leverage the power of Bubbles and Lip Gloss in your scripts and aliases without writing any Go code!
github: charmbracelet/gum
tags: Go
hey: hey:
desc: HTTP load generator, ApacheBench (ab) replacement desc: HTTP load generator, ApacheBench (ab) replacement
github: rakyll/hey github: rakyll/hey
@@ -166,6 +232,12 @@ hishtory:
desc: Better Shell History desc: Better Shell History
github: ddworken/hishtory github: ddworken/hishtory
htmlq:
desc: Like jq, but for HTML. like pup
github: mgdm/htmlq
cargo:
tags: rust, query
htop: htop:
desc: an interactive process viewer desc: an interactive process viewer
github: htop-dev/htop github: htop-dev/htop
@@ -181,19 +253,50 @@ httpx:
pip: pip:
tags: curl tags: curl
hurl:
desc: run HTTP requests defined in a simple plain text format
github: Orange-OpenSource/hurl
website: https://hurl.dev/
tags: curl
hx: hx:
fullname: helix name: helix
desc: text editor, inspired by vim desc: text editor, inspired by vim
hyperfine:
github: sharkdp/hyperfine
desc: benchmarking tool
tags: rust
ijq:
desc: interactive jq tool. Like jqplay for the commandline
srht: gpanders/ijq
website: https://gpanders.com/blog/making-ijq-fast
tags: Go
jaq: jaq:
desc: A jq clone focussed on correctness, speed, and simplicity desc: A jq clone focussed on correctness, speed, and simplicity
tag: rust tags: rust
github: 01mf02/jaq github: 01mf02/jaq
jc:
desc: converts the output of popular command-line tools, file-types, and common strings to JSON
github: kellyjonbrazil/jc
pip: jc
jd:
desc: JSON diff and patch
github: josephburnett/jd
jinja2:
desc: CLI for Jinja2
github: mattrobenolt/jinja2-cli
jj: jj:
name: Jujutsu
desc: A Git-compatible DVCS that is both simple and powerful desc: A Git-compatible DVCS that is both simple and powerful
github: martinvonz/jj github: martinvonz/jj
tag: rust tags: rust
jless: jless:
@@ -208,13 +311,18 @@ jq:
desc: json query desc: json query
github: stedolan/jq github: stedolan/jq
jqp:
desc: a TUI playground to experiment with jq
github: noahgorstein/jqp
tags: Go
just: just:
desc: a handy way to save and run project-specific commands. desc: a handy way to save and run project-specific commands.
github: casey/just github: casey/just
tags: task runner, rust tags: task runner, rust
k3d: k3d:
desc: a lightweight wrapper to run k3s (Rancher Labs minimal Kubernetes distribution) in docker. desc: a lightweight wrapper to run k3s (Rancher Lab's minimal Kubernetes distribution) in docker.
website: https://k3d.io/ website: https://k3d.io/
github: k3d-io/k3d github: k3d-io/k3d
status: not a tar.gz status: not a tar.gz
@@ -229,6 +337,10 @@ ko:
desc: a simple, fast container image builder for Go applications. desc: a simple, fast container image builder for Go applications.
github: ko-build/ko github: ko-build/ko
landrun:
desc: Run any Linux process in a secure, unprivileged sandbox using Landlock LSM. Think firejail, but lightweight, user-friendly, and baked into the kernel.
github: Zouuup/landrun
lazygit: lazygit:
desc: simple terminal UI for git commands desc: simple terminal UI for git commands
github: jesseduffield/lazygit github: jesseduffield/lazygit
@@ -248,24 +360,41 @@ lnav:
website: https://lnav.org/ website: https://lnav.org/
github: tstack/lnav github: tstack/lnav
lsd:
desc: next gen ls command
github: lsd-rs/lsd
cargo:
tags: rust
mc: mc:
desc: minio client desc: minio client
versions: # see https://github.com/penpyt/asdf-mc/raw/master/bin/list-all # versions, see https://github.com/penpyt/asdf-mc/raw/master/bin/list-all
micro:
github: zyedidia/micro
desc: a modern and intuitive terminal-based text editor
tags: Go, tui
minify: minify:
desc: minifiers for web formats desc: minifiers for web formats
website: https://go.tacodewolff.nl/minify website: https://go.tacodewolff.nl/minify
github: tdewolff/minify github: tdewolff/minify
tag: Go tags: Go
minijail: minijail:
desc: sandboxing and containment tool used in ChromeOS and Android desc: sandboxing and containment tool used in ChromeOS and Android
website: https://google.github.io/minijail/ website: https://google.github.io/minijail/
github: google/minijail github: google/minijail
minijinja:
desc: a powerful template engine for Rust with minimal dependencies based on the syntax and behavior of the Jinja2 template engine for Python
github: mitsuhiko/minijinja
website: https://docs.rs/minijinja/
tags: Rust
mintotp: mintotp:
desc: generate TOTP from the terminal desc: generate TOTP from the terminal
github: susam/mintotp
mintproxy: mintproxy:
desc: interactive, SSL/TLS-capable intercepting proxy with a console interface for HTTP/1, HTTP/2, and WebSockets. desc: interactive, SSL/TLS-capable intercepting proxy with a console interface for HTTP/1, HTTP/2, and WebSockets.
@@ -281,6 +410,11 @@ mosh:
website: https://mosh.org/ website: https://mosh.org/
github: mobile-shell/mosho github: mobile-shell/mosho
navi:
desc: Interactive cheatsheet tool for the command-line
github: denisidoro/navi
tags: rust
ndcu: ndcu:
desc: a disk usage analyzer with an ncurses interface desc: a disk usage analyzer with an ncurses interface
website: https://dev.yorhel.nl/ncdu website: https://dev.yorhel.nl/ncdu
@@ -312,24 +446,33 @@ pet:
desc: Simple command-line snippet manager desc: Simple command-line snippet manager
github: knqyf263/pet github: knqyf263/pet
pueue:
github: Nukesor/pueue
desc: processes a queue of shell commands
tags: Rust
pup: pup:
desc: Parsing HTML at the command line desc: Parsing HTML at the command line
github: ericchiang/pup github: ericchiang/pup
pylufic: pylufic:
inst: direct pip:
desc: Let's upload that file CLI desc: Let's upload that file CLI
qjs: qjs:
desc: a small and embeddable Javascript engine. desc: a small and embeddable Javascript engine.
fullname: QuiskJS name: QuiskJS
releases: http://ffmpeg.org/releases/ website: https://bellard.org/quickjs/
qr: qr:
desc: generate qr code desc: generate qr code
github: Y2Z/qr github: Y2Z/qr
qsv:
desc: CSV sliced, diced & analyzed
github: jqnatividad/qsv
tags: Rust
redo: redo:
desc: create reusable functions from your history in an interactive way desc: create reusable functions from your history in an interactive way
github: barthr/redo github: barthr/redo
@@ -338,19 +481,19 @@ relpipe:
name: Relational pipes name: Relational pipes
website: https://relational-pipes.globalcode.info/ website: https://relational-pipes.globalcode.info/
desc: Relational pipes are an open data format designed for streaming structured data between two processes. desc: Relational pipes are an open data format designed for streaming structured data between two processes.
tag: text-processing tags: text-processing
rg:
name: ripgrep
desc: improved grep
github: BurntSushi/ripgrep
rlwrap: rlwrap:
desc: A readline wrapper, with history and completion desc: A readline wrapper, with history and completion
github: hanslub42/rlwrap github: hanslub42/rlwrap
rg:
fullname: ripgrep
desc: improved grep
github: BurntSushi/ripgrep
rq: rq:
fullname: Record Query name: Record Query
desc: A tool for doing format transformation. Supports Avro, CBOR, JSON, MessagePack, Protocol Buffers, YAML, TOML, CSV desc: A tool for doing format transformation. Supports Avro, CBOR, JSON, MessagePack, Protocol Buffers, YAML, TOML, CSV
github: dflemstr/rq github: dflemstr/rq
@@ -359,17 +502,53 @@ sake:
github: alajmo/sake github: alajmo/sake
website: https://sakecli.com/ website: https://sakecli.com/
scc:
github: boyter/scc
desc: "Sloc, Cloc and Code: scc is a very fast accurate code counter with complexity calculations and COCOMO estimates"
tags: Go
sd:
github: chmln/sd
desc: intuitive find & replace CLI (sed alternative)
semgrep:
desc: Lightweight static analysis for many languages. Find bug variants with patterns that look like source code.
website: https://semgrep.dev/
github: semgrep/semgrep
tags: ocaml, pattern
semgrepx:
desc: xargs for semgrep
github: icholy/semgrepx
tags: Go
sg:
name: ast-grep
desc: fast and polyglot tool for code structural search, lint, rewriting at large scale
github: ast-grep/ast-grep
website: https://ast-grep.github.io/
tags: rust
sk:
name: skim
desc: general fuzzy finder ; like fzf
github: lotabout/skim
cargo: skim
tags: rust
slugify: slugify:
desc: generate sluged version of input desc: generate sluged version of input
github: un33k/python-slugify github: un33k/python-slugify
slurp: slurp:
desc: put whole input in memory before processing ; this allow to overrite input file ; like `sed -i` ; prefer `sponge` from moreutils package desc: put whole input in memory before processing ; this allow to overrite input file ; like `sed -i` ; prefer `sponge` from moreutils package
shell: cat > /dev/shm/slurp_$$ && cat /dev/shm/slurp_$$ ; rm /dev/shm/slurp_$$ # shell: cat > /dev/shm/slurp_$$ && cat /dev/shm/slurp_$$ ; rm /dev/shm/slurp_$$
so: so:
desc: A terminal interface for Stack Overflow desc: A terminal interface for Stack Overflow
github: samtay/so github: samtay/so
cargo:
tags: rust
sqlite-utils: sqlite-utils:
desc: manipulate sqlite db (ETL) desc: manipulate sqlite db (ETL)
@@ -393,26 +572,27 @@ teip:
desc: Highly efficient "Masking tape" for Shell desc: Highly efficient "Masking tape" for Shell
github: greymd/teip github: greymd/teip
terminews:
desc: RSS client in the terminal
github: antavelos/terminews
termdbms: termdbms:
desc: A TUI for viewing and editing database files, CSV and SQLite. desc: A TUI for viewing and editing database files, CSV and SQLite.
github: mathaou/termdbms github: mathaou/termdbms
terminews:
desc: RSS client in the terminal
github: antavelos/terminews
#tldr: #tldr:
# desc: Collaborative cheatsheets for console commands ; must choose a client # desc: Collaborative cheatsheets for console commands ; must choose a client
# website: https://tldr.sh/ # website: https://tldr.sh/
tmux:
desc: terminal multiplexer
github: tmux/tmux
tqdm: tqdm:
desc: a better pv desc: a better pv
pip: pip:
tre:
desc: a better tree
github: dduan/tre
tags: Rust
trivy: trivy:
desc: Find vulnerabilities, misconfigurations, secrets, SBOM in containers, Kubernetes, code repositories, clouds and more desc: Find vulnerabilities, misconfigurations, secrets, SBOM in containers, Kubernetes, code repositories, clouds and more
github: aquasecurity/trivy github: aquasecurity/trivy
@@ -421,18 +601,29 @@ ttyd:
desc: share terminal over the web desc: share terminal over the web
github: tsl0922/ttyd github: tsl0922/ttyd
typst:
website: https://typst.app/
desc: A new markup-based typesetting system that is powerful and easy to learn.
ugrep:
desc: a more powerful, ultra fast, user-friendly, compatible grep
github: Genivia/ugrep
website: https://ugrep.com/
tags: cpp
up: up:
desc: interactively edit pipe desc: interactively edit pipe
fullname: Ultimate Plumber name: Ultimate Plumber
github: akavel/up github: akavel/up
ups: ups:
desc: Command line tools for manipulating UPS patch files desc: Command line tools for manipulating UPS patch files
githb: rameshvarun/ups github: rameshvarun/ups
tag: language:go tags: go
vd: vd:
fullname: VisiData name: VisiData
website: https://www.visidata.org/
desc: interactive multitool for tabular data desc: interactive multitool for tabular data
pip: visidata,lxml,odfpy,openpyxl,pyarrow,urllib3,requests,pyinstaller pip: visidata,lxml,odfpy,openpyxl,pyarrow,urllib3,requests,pyinstaller
@@ -440,6 +631,10 @@ vhs:
desc: Write terminal GIFs as code for integration testing and demoing your CLI tools. desc: Write terminal GIFs as code for integration testing and demoing your CLI tools.
github: charmbracelet/vhs github: charmbracelet/vhs
viddy:
desc: modern watch command, time machine and pager
github: sachaos/viddy
vuls: vuls:
desc: Agent-less vulnerability scanner for Linux, FreeBSD, Container, WordPress, Programming language libraries, Network devices desc: Agent-less vulnerability scanner for Linux, FreeBSD, Container, WordPress, Programming language libraries, Network devices
github: future-architect/vuls github: future-architect/vuls
@@ -461,7 +656,7 @@ wrk:
github: wg/wrk github: wg/wrk
ww: ww:
fullname: webwormhole name: webwormhole
desc: creates ephemeral pipes between computers desc: creates ephemeral pipes between computers
website: https://webwormhole.io/ website: https://webwormhole.io/
@@ -479,6 +674,10 @@ xsv:
desc: a fast CSV command line toolkit desc: a fast CSV command line toolkit
github: BurntSushi/xsv github: BurntSushi/xsv
yazi:
desc: terminal file manager
github: sxyazi/yazi
yq: yq:
desc: yq is a portable command-line YAML, JSON, XML, CSV, TOML and properties processor desc: yq is a portable command-line YAML, JSON, XML, CSV, TOML and properties processor
github: mikefarah/yq github: mikefarah/yq
@@ -491,15 +690,15 @@ yq-py:
website: https://kislyuk.github.io/yq/ website: https://kislyuk.github.io/yq/
tags: python, yaml tags: python, yaml
z:
name: zoxide
desc: A smarter cd command. Supports all major shells, inspired by z and autojump.
github: ajeetdsouza/zoxide
zee: zee:
desc: modern text editor for the terminal desc: modern text editor for the terminal
cargo: cargo:
z:
fullname: zoxide
desc: A smarter cd command. Supports all major shells, inspired by z and autojump.
github: ajeetdsouza/zoxide
zf: zf:
desc: a commandline fuzzy finder designed for filtering filepaths desc: a commandline fuzzy finder designed for filtering filepaths
github: natecraddock/zf github: natecraddock/zf

View File

@@ -248,7 +248,7 @@ def doallversions(options):
if props.github: if props.github:
vers = _gh_versions(props.github) vers = _gh_versions(props.github)
trace(vers) trace(vers)
print("\n".join(vers)) print("\n".join(map(str,vers)))
else: else:
warn(f"{tool} not in catalog") warn(f"{tool} not in catalog")

View File

@@ -1,4 +1,6 @@
. ./.venv/bin/activate . ./.venv/bin/activate
jinja2 catalog.html.j2 catalog.yaml >| cliget.html
brotli -f -q 11 -S br cliget.html

16
getreadme.sh Executable file
View File

@@ -0,0 +1,16 @@
#!/bin/bash -eu
cli=$1
page=${2-README.md}
# lookup cli in catalog
printf -v filter '.%s|.github' ${cli}
gh=$(yq ${filter} catalog.yaml)
# build gh README URL
printf -v url1 'https://github.com/%s/raw/main/%s' ${gh} ${page}
printf -v url2 'https://github.com/%s/raw/master/%s' ${gh} ${page}
# curl and pipe to bat
CURL="curl -fsS -L"
{ ${CURL} "${url1}" || ${CURL} "${url2}" ; } | glow -p -

40
styles.css Normal file
View File

@@ -0,0 +1,40 @@
:root {
--accent-bg: #F5F7FF;
--border: #D8DAE1;
--main-foreground: #5b4636;
--main-background: #f4f4f4;
}
body{max-width:80ch;padding:2ch;margin:auto;
color:var(--main-foreground);
background-color:var(--main-background);
}
a:link{text-decoration:none}
/* Format tables */
table {
border-collapse: collapse;
width: 100%
}
td,
th {
border: 1px solid var(--border);
text-align: left;
}
th {
background: var(--accent-bg);
font-weight: bold;
text-align: center;
}
table td:nth-child(2) {
text-align: center;
}
tr:nth-child(even) {
/* Set every other cell slightly darker. Improves readability. */
background: var(--accent-bg);
}