Compare commits
12 Commits
cd72e16fef
...
more-in-th
Author | SHA1 | Date | |
---|---|---|---|
95d1a3e241 | |||
e25a2355c0 | |||
72ea5375ab | |||
0a2e0b643a | |||
6e98bd6a47 | |||
4334ffb6b2 | |||
00c7d93f7a | |||
8a78fe393e | |||
f9570c3901 | |||
c5889d9f71 | |||
4a39a6d181 | |||
e2c846b980 |
46
README.md
46
README.md
@@ -8,16 +8,14 @@ Installs standalone command line utilities in your user profile
|
||||
|
||||
# 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.
|
||||
|
||||
Inspired by envinstall (private), [webinstall](gh:webinstall/webi-installers), [asdf](gh:asdf-community/.github).
|
||||
**Cliget** addresses these challenges by listing, installing, and updating standalone command line utilities in your user profile.
|
||||
|
||||
This solution was inspired by envinstall (undisclosed), [webinstall](gh:webinstall/webi-installers), and [asdf](gh:asdf-community/.github).
|
||||
|
||||
# what
|
||||
|
||||
@@ -68,9 +66,9 @@ most defaults can be overriden
|
||||
|
||||
# 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. 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 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 :)
|
||||
|
||||
#### 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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
* 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
|
||||
* 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.
|
||||
|
||||
|
19
TODO.md
19
TODO.md
@@ -1,10 +1,12 @@
|
||||
|
||||
- [+] implement MVP
|
||||
- [+] minimal catalog
|
||||
- [+] search catalog
|
||||
- [+] local current versions
|
||||
- [+] latest version, github strategy
|
||||
- [+] intall, github strategy
|
||||
- [x] minimal catalog => currently 124 entries
|
||||
- [x] search catalog
|
||||
- [x] local current versions
|
||||
- [x] latest version, github strategy
|
||||
- [+] intall,
|
||||
- [x] github+linux+x86_64+tgz strategy
|
||||
- [ ] prompt user to override current file/symlink
|
||||
|
||||
- [*] code style => blake, defaults
|
||||
|
||||
@@ -34,6 +36,11 @@
|
||||
- [ ] GH release
|
||||
- [ ] 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 cliget install method
|
||||
|
||||
@@ -44,7 +51,7 @@
|
||||
- [ ] existence of `.local`, `.local/programs`, `.local/bin`
|
||||
- [ ] that permissions are ok
|
||||
- [ ] 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 force installation of a given version
|
||||
- [-] improve search algorithm, fuzzing
|
||||
|
34
catalog.html.j2
Normal file
34
catalog.html.j2
Normal 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}}"> </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%} {%endif%}
|
||||
</td>
|
||||
<td><p>{{o.desc}}</p></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
<table>
|
||||
<p>{{get_context()|length}} entries</p>
|
||||
</body>
|
||||
</html>
|
291
catalog.yaml
291
catalog.yaml
@@ -1,8 +1,20 @@
|
||||
ab:
|
||||
fullname: Apache Benchmark
|
||||
name: Apache Benchmark
|
||||
desc: a tool for benchmarking your Apache Hypertext Transfer Protocol (HTTP) server
|
||||
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:
|
||||
desc: Easily create & extract archives, and compress & decompress files of various formats
|
||||
github: mholt/archiver
|
||||
@@ -11,19 +23,24 @@ aria2:
|
||||
desc: lightweight multi-protocol & multi-source command-line download utility
|
||||
github: aria2/aria2
|
||||
|
||||
asdf:
|
||||
desc: manage developement environments for many languages with multiple concurrent versions
|
||||
github: asdf-vm/asdf
|
||||
|
||||
asciinema:
|
||||
desc: Record and share your terminal sessions
|
||||
website: https://asciinema.org/
|
||||
pip:
|
||||
|
||||
asdf:
|
||||
desc: manage developement environments for many languages with multiple concurrent versions
|
||||
github: asdf-vm/asdf
|
||||
|
||||
atuin:
|
||||
website: https://atuin.sh/
|
||||
desc: Magical shell history
|
||||
github: ellie/atuin
|
||||
|
||||
axel:
|
||||
desc: Lightweight CLI download accelerator
|
||||
github: axel-download-accelerator/axel
|
||||
|
||||
bat:
|
||||
desc: A cat(1) clone with syntax highlighting and Git integration
|
||||
github: sharkdp/bat
|
||||
@@ -33,12 +50,18 @@ benthos:
|
||||
website: https://www.benthos.dev/
|
||||
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:
|
||||
desc: A customizable cross-platform graphical process/system monitor for the terminal
|
||||
github: ClementTsang/bottom
|
||||
|
||||
br:
|
||||
fullname: Broot
|
||||
name: Broot
|
||||
desc: Get an overview of a directory, even a big one
|
||||
github: Canop/broot
|
||||
|
||||
@@ -48,6 +71,11 @@ bfs:
|
||||
github: tavianator/bfs
|
||||
tags: C, find
|
||||
|
||||
btop:
|
||||
github: aristocratos/btop
|
||||
desc: A monitor of resources
|
||||
tags: cpp
|
||||
|
||||
chezmoi:
|
||||
desc: Manage your dotfiles across multiple diverse machines, securely
|
||||
github: twpayne/chezmoi
|
||||
@@ -60,17 +88,34 @@ cliget:
|
||||
desc: install various tools in your user profile
|
||||
#github: setop/cliget
|
||||
|
||||
curl:
|
||||
github: curl/curl
|
||||
website: https://curl.se/
|
||||
desc: transferring data with URL syntax
|
||||
|
||||
d2:
|
||||
fullname: Declarative Diagramming
|
||||
name: Declarative Diagramming
|
||||
desc: a diagram scripting language that turns text to diagrams
|
||||
website: https://d2-lang.com/
|
||||
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:
|
||||
desc: CLI app to convert ASCII arts into hand drawn diagrams
|
||||
github: esimov/diagram
|
||||
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:
|
||||
desc: Terminal disk space navigator, disk tree-map
|
||||
github: imsnif/diskonaut
|
||||
@@ -83,7 +128,7 @@ dt:
|
||||
desc: duct tape for your unix pipes
|
||||
website: https://dt.plumbing/
|
||||
github: so-dang-cool/dt
|
||||
tag: text-processing, Zig
|
||||
tags: text-processing, Zig
|
||||
|
||||
dua:
|
||||
desc: View disk space usage and delete unwanted data, fast.
|
||||
@@ -93,12 +138,16 @@ duf:
|
||||
desc: Disk Usage/Free Utility - a better 'df' alternative
|
||||
github: muesli/duf
|
||||
|
||||
exa:
|
||||
desc: modern replacement for ‘ls’ ; unmaintaned, prefer eza
|
||||
github: ogham/exa
|
||||
|
||||
eza:
|
||||
desc: enhanced ls (active clone of exa)
|
||||
github: eza-community/eza
|
||||
|
||||
fail:
|
||||
desc: this entry will fail, for test purpos
|
||||
desc: this entry will fail, for test purpose
|
||||
github: fail/fail
|
||||
|
||||
fd:
|
||||
@@ -111,6 +160,12 @@ feh:
|
||||
website: https://feh.finalrewind.org/
|
||||
tags: C
|
||||
|
||||
fend:
|
||||
desc: Arbitrary-precision unit-aware calculator
|
||||
website: https://printfn.github.io/fend/
|
||||
github: printfn/fend
|
||||
cargo:
|
||||
|
||||
ffmpeg:
|
||||
desc: A complete, cross-platform solution to record, convert and stream audio and video
|
||||
releases: http://ffmpeg.org/releases/
|
||||
@@ -127,7 +182,7 @@ flyscrap:
|
||||
desc: A standalone and scriptable web scraper in Go
|
||||
github: philippta/flyscrape
|
||||
website: https://flyscrape.com/
|
||||
tag: Go, scrapping
|
||||
tags: Go, scrapping
|
||||
|
||||
fq:
|
||||
desc: jq for binary formats - tool, language and decoders for working with binary and text formats
|
||||
@@ -150,6 +205,12 @@ glow:
|
||||
gotty:
|
||||
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:
|
||||
desc: flatter json to make it greppable
|
||||
github: tomnomnom/gron
|
||||
@@ -158,6 +219,11 @@ grype:
|
||||
desc: A vulnerability scanner for container images and filesystems
|
||||
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:
|
||||
desc: HTTP load generator, ApacheBench (ab) replacement
|
||||
github: rakyll/hey
|
||||
@@ -166,6 +232,12 @@ hishtory:
|
||||
desc: Better Shell History
|
||||
github: ddworken/hishtory
|
||||
|
||||
htmlq:
|
||||
desc: Like jq, but for HTML. like pup
|
||||
github: mgdm/htmlq
|
||||
cargo:
|
||||
tags: rust, query
|
||||
|
||||
htop:
|
||||
desc: an interactive process viewer
|
||||
github: htop-dev/htop
|
||||
@@ -181,19 +253,50 @@ httpx:
|
||||
pip:
|
||||
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:
|
||||
fullname: helix
|
||||
name: helix
|
||||
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:
|
||||
desc: A jq clone focussed on correctness, speed, and simplicity
|
||||
tag: rust
|
||||
tags: rust
|
||||
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:
|
||||
name: Jujutsu
|
||||
desc: A Git-compatible DVCS that is both simple and powerful
|
||||
github: martinvonz/jj
|
||||
tag: rust
|
||||
tags: rust
|
||||
|
||||
|
||||
jless:
|
||||
@@ -208,13 +311,18 @@ jq:
|
||||
desc: json query
|
||||
github: stedolan/jq
|
||||
|
||||
jqp:
|
||||
desc: a TUI playground to experiment with jq
|
||||
github: noahgorstein/jqp
|
||||
tags: Go
|
||||
|
||||
just:
|
||||
desc: a handy way to save and run project-specific commands.
|
||||
github: casey/just
|
||||
tags: task runner, rust
|
||||
|
||||
k3d:
|
||||
desc: a lightweight wrapper to run k3s (Rancher Lab’s minimal Kubernetes distribution) in docker.
|
||||
desc: a lightweight wrapper to run k3s (Rancher Lab's minimal Kubernetes distribution) in docker.
|
||||
website: https://k3d.io/
|
||||
github: k3d-io/k3d
|
||||
status: not a tar.gz
|
||||
@@ -229,6 +337,10 @@ ko:
|
||||
desc: a simple, fast container image builder for Go applications.
|
||||
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:
|
||||
desc: simple terminal UI for git commands
|
||||
github: jesseduffield/lazygit
|
||||
@@ -248,24 +360,41 @@ lnav:
|
||||
website: https://lnav.org/
|
||||
github: tstack/lnav
|
||||
|
||||
lsd:
|
||||
desc: next gen ls command
|
||||
github: lsd-rs/lsd
|
||||
cargo:
|
||||
tags: rust
|
||||
|
||||
mc:
|
||||
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:
|
||||
desc: minifiers for web formats
|
||||
website: https://go.tacodewolff.nl/minify
|
||||
github: tdewolff/minify
|
||||
tag: Go
|
||||
tags: Go
|
||||
|
||||
minijail:
|
||||
desc: sandboxing and containment tool used in ChromeOS and Android
|
||||
website: https://google.github.io/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:
|
||||
desc: generate TOTP from the terminal
|
||||
github: susam/mintotp
|
||||
|
||||
mintproxy:
|
||||
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/
|
||||
github: mobile-shell/mosho
|
||||
|
||||
navi:
|
||||
desc: Interactive cheatsheet tool for the command-line
|
||||
github: denisidoro/navi
|
||||
tags: rust
|
||||
|
||||
ndcu:
|
||||
desc: a disk usage analyzer with an ncurses interface
|
||||
website: https://dev.yorhel.nl/ncdu
|
||||
@@ -312,24 +446,33 @@ pet:
|
||||
desc: Simple command-line snippet manager
|
||||
github: knqyf263/pet
|
||||
|
||||
pueue:
|
||||
github: Nukesor/pueue
|
||||
desc: processes a queue of shell commands
|
||||
tags: Rust
|
||||
|
||||
pup:
|
||||
desc: Parsing HTML at the command line
|
||||
github: ericchiang/pup
|
||||
|
||||
pylufic:
|
||||
inst: direct
|
||||
pip:
|
||||
desc: Let's upload that file CLI
|
||||
|
||||
qjs:
|
||||
desc: a small and embeddable Javascript engine.
|
||||
fullname: QuiskJS
|
||||
releases: http://ffmpeg.org/releases/
|
||||
|
||||
name: QuiskJS
|
||||
website: https://bellard.org/quickjs/
|
||||
|
||||
qr:
|
||||
desc: generate qr code
|
||||
github: Y2Z/qr
|
||||
|
||||
qsv:
|
||||
desc: CSV sliced, diced & analyzed
|
||||
github: jqnatividad/qsv
|
||||
tags: Rust
|
||||
|
||||
redo:
|
||||
desc: create reusable functions from your history in an interactive way
|
||||
github: barthr/redo
|
||||
@@ -338,19 +481,19 @@ relpipe:
|
||||
name: Relational pipes
|
||||
website: https://relational-pipes.globalcode.info/
|
||||
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:
|
||||
desc: A readline wrapper, with history and completion
|
||||
github: hanslub42/rlwrap
|
||||
|
||||
rg:
|
||||
fullname: ripgrep
|
||||
desc: improved grep
|
||||
github: BurntSushi/ripgrep
|
||||
|
||||
rq:
|
||||
fullname: Record Query
|
||||
name: Record Query
|
||||
desc: A tool for doing format transformation. Supports Avro, CBOR, JSON, MessagePack, Protocol Buffers, YAML, TOML, CSV
|
||||
github: dflemstr/rq
|
||||
|
||||
@@ -359,17 +502,53 @@ sake:
|
||||
github: alajmo/sake
|
||||
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:
|
||||
desc: generate sluged version of input
|
||||
github: un33k/python-slugify
|
||||
|
||||
slurp:
|
||||
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:
|
||||
desc: A terminal interface for Stack Overflow
|
||||
github: samtay/so
|
||||
cargo:
|
||||
tags: rust
|
||||
|
||||
sqlite-utils:
|
||||
desc: manipulate sqlite db (ETL)
|
||||
@@ -393,26 +572,27 @@ teip:
|
||||
desc: Highly efficient "Masking tape" for Shell
|
||||
github: greymd/teip
|
||||
|
||||
terminews:
|
||||
desc: RSS client in the terminal
|
||||
github: antavelos/terminews
|
||||
|
||||
termdbms:
|
||||
desc: A TUI for viewing and editing database files, CSV and SQLite.
|
||||
github: mathaou/termdbms
|
||||
|
||||
terminews:
|
||||
desc: RSS client in the terminal
|
||||
github: antavelos/terminews
|
||||
|
||||
#tldr:
|
||||
# desc: Collaborative cheatsheets for console commands ; must choose a client
|
||||
# website: https://tldr.sh/
|
||||
|
||||
tmux:
|
||||
desc: terminal multiplexer
|
||||
github: tmux/tmux
|
||||
|
||||
tqdm:
|
||||
desc: a better pv
|
||||
pip:
|
||||
|
||||
tre:
|
||||
desc: a better tree
|
||||
github: dduan/tre
|
||||
tags: Rust
|
||||
|
||||
trivy:
|
||||
desc: Find vulnerabilities, misconfigurations, secrets, SBOM in containers, Kubernetes, code repositories, clouds and more
|
||||
github: aquasecurity/trivy
|
||||
@@ -421,18 +601,29 @@ ttyd:
|
||||
desc: share terminal over the web
|
||||
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:
|
||||
desc: interactively edit pipe
|
||||
fullname: Ultimate Plumber
|
||||
name: Ultimate Plumber
|
||||
github: akavel/up
|
||||
|
||||
ups:
|
||||
desc: Command line tools for manipulating UPS patch files
|
||||
githb: rameshvarun/ups
|
||||
tag: language:go
|
||||
github: rameshvarun/ups
|
||||
tags: go
|
||||
|
||||
vd:
|
||||
fullname: VisiData
|
||||
name: VisiData
|
||||
website: https://www.visidata.org/
|
||||
desc: interactive multitool for tabular data
|
||||
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.
|
||||
github: charmbracelet/vhs
|
||||
|
||||
viddy:
|
||||
desc: modern watch command, time machine and pager
|
||||
github: sachaos/viddy
|
||||
|
||||
vuls:
|
||||
desc: Agent-less vulnerability scanner for Linux, FreeBSD, Container, WordPress, Programming language libraries, Network devices
|
||||
github: future-architect/vuls
|
||||
@@ -461,7 +656,7 @@ wrk:
|
||||
github: wg/wrk
|
||||
|
||||
ww:
|
||||
fullname: webwormhole
|
||||
name: webwormhole
|
||||
desc: creates ephemeral pipes between computers
|
||||
website: https://webwormhole.io/
|
||||
|
||||
@@ -479,6 +674,10 @@ xsv:
|
||||
desc: a fast CSV command line toolkit
|
||||
github: BurntSushi/xsv
|
||||
|
||||
yazi:
|
||||
desc: terminal file manager
|
||||
github: sxyazi/yazi
|
||||
|
||||
yq:
|
||||
desc: yq is a portable command-line YAML, JSON, XML, CSV, TOML and properties processor
|
||||
github: mikefarah/yq
|
||||
@@ -491,15 +690,15 @@ yq-py:
|
||||
website: https://kislyuk.github.io/yq/
|
||||
tags: python, yaml
|
||||
|
||||
z:
|
||||
name: zoxide
|
||||
desc: A smarter cd command. Supports all major shells, inspired by z and autojump.
|
||||
github: ajeetdsouza/zoxide
|
||||
|
||||
zee:
|
||||
desc: modern text editor for the terminal
|
||||
cargo:
|
||||
|
||||
z:
|
||||
fullname: zoxide
|
||||
desc: A smarter cd command. Supports all major shells, inspired by z and autojump.
|
||||
github: ajeetdsouza/zoxide
|
||||
|
||||
zf:
|
||||
desc: a commandline fuzzy finder designed for filtering filepaths
|
||||
github: natecraddock/zf
|
||||
|
@@ -248,7 +248,7 @@ def doallversions(options):
|
||||
if props.github:
|
||||
vers = _gh_versions(props.github)
|
||||
trace(vers)
|
||||
print("\n".join(vers))
|
||||
print("\n".join(map(str,vers)))
|
||||
else:
|
||||
warn(f"{tool} not in catalog")
|
||||
|
||||
|
2
cmd.txt
2
cmd.txt
@@ -1,4 +1,6 @@
|
||||
|
||||
. ./.venv/bin/activate
|
||||
|
||||
jinja2 catalog.html.j2 catalog.yaml >| cliget.html
|
||||
brotli -f -q 11 -S br cliget.html
|
||||
|
||||
|
16
getreadme.sh
Executable file
16
getreadme.sh
Executable 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
40
styles.css
Normal 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);
|
||||
}
|
Reference in New Issue
Block a user