diff options
| -rw-r--r-- | functions/lscmd.fish | 89 | ||||
| -rw-r--r-- | progs.csv | 81 |
2 files changed, 131 insertions, 39 deletions
diff --git a/functions/lscmd.fish b/functions/lscmd.fish index 004dfc8..d428c3e 100644 --- a/functions/lscmd.fish +++ b/functions/lscmd.fish @@ -1,57 +1,68 @@ -function lscmd --description "View installed useful command line programs" +function lscmd --description "Show installed useful command line tools" + +set progsfile "$__fish_config_dir/progs.csv" + +if not command -sq 'textql' + echo "Can't find textql." + return 1 +end if not functions -q is-installed echo "No is-installed function defined." return 1 end -set -f compress 'libarchive' 'bzip3' 'p7zip' 'unrar' 'unshield' 'cabextract' -set -f crypt 'age' 'b3sum' -set -f shell 'exa' 'tmux' 'walk' 'moar' 'most' 'fcp' -set -f editor 'neovim' 'micro' 'nano' -set -f file 'mc' 'nnn' 'fdupes' -set -f bin 'hexyl' -set -f text 'bat' 'ripgrep' 'sd' 'ugrep' 'grex' 'since' 'difftastic' 'vbindiff' -set -f sys 'htop' 'btop' 'duf' 'ncdu' 'procs' -set -f sec 'hashcat' -set -f img 'viu' 'timg' -set -f markdown 'glow' 'mdcat' -set -f db 'csview' 'textql' -set -f dev 'strace' 'lurk' -set -f www 'links' -set -f mail 'aerc' -set -f gopher 'ncgopher' -set -f gemini 'clagrange' 'amfora' 'ncgopher' -set -f chat 'weechat' 'toxic' -set -f ftp 'lftp' -set -f http 'curlie' 'xh' 'hurl' -set -f mirror 'wget' 'gemget' 'httrack' 'crawley' -set -f dns 'doggo' 'dog' -set -f netmon 'bandwhich' 'iftop' 'netscanner' 'trippy' 'nload' 'dnstop' -set -f netsec 'nmap' 'ngrep' 'rustscan' 'ssldump' -set -f sync 'rsync' -set -f man 'tldr' -set -f sound 'sox' 'mp3gain' -set -f graphics 'graphicsmagick' -set -f xorg 'xdotool' 'yank' +function _get_basedbname -a progdb + set -f baseprogdbname (path basename $progdb) + echo (path change-extension '' $baseprogdbname) +end + +function _get_categories -a progdb + set bnprogdb (_get_basedbname $progdb) + command textql -header -sql "SELECT DISTINCT category FROM $bnprogdb" $progdb +end + +function _get_progs_by_category -a progdb -a category + set bnprogdb (_get_basedbname $progdb) + command textql -header -sql "SELECT name FROM $bnprogdb WHERE category = '$category'" $progdb +end + +function _get_desc_by_progname -a progdb -a progname + set bnprogdb (_get_basedbname $progdb) + command textql -header -sql "SELECT description FROM $bnprogdb WHERE name = '$progname'" $progdb +end -set -f -a mul $img $sound $graphics -set -f -a net $www $mail $gopher $gemini $chat $ftp $http $mirror $dns $netmon $netsec -set -f -a all $net $mul $compress $crypt $shell $editor $file $bin $text $sys $sec $markdown $db $dev $sync $man $xorg +function _pp_category -a category + printf "%s" (string upper (string sub -s 1 -l 1 $category[1]))(string sub -s 2 $category[1]) +end -for element in (string join0 $all | sort -z | uniq -z | string split0) - if is-installed $element +function _pp_prog_status -a prog + if is-installed $prog set_color green - printf $element + printf "%s " $prog set_color normal else set_color red - printf $element + printf "%s " $prog set_color normal end - printf ' ' end -printf '\n' +echo +set_color blue +echo "List of command line tools" +set_color normal +echo + +for category in (_get_categories $progsfile) + set_color yellow + printf "\n%s\n\n" (_pp_category $category) + set_color normal + + for prog in (_get_progs_by_category $progsfile $category) + printf "%s " (_pp_prog_status $prog) + _get_desc_by_progname $progsfile $prog + end +end end diff --git a/progs.csv b/progs.csv new file mode 100644 index 0000000..2eb9d39 --- /dev/null +++ b/progs.csv @@ -0,0 +1,81 @@ +name,category,description +libarchive,archive,Multiformat archiving tool +bzip3,archive,BZIP3 compressor/uncompressor +p7zip,archive,7-Zip compressor/uncompressor +unrar,archive,RAR uncompressor +unshield,archive,InstallShield uncompressor +cabextract,archive,CAB archive extractor +age,cryptography,Encryption tool +b3sum,cryptography,B3 hashing tool +gnupg,cryptography,Encryption tool +neovim,editor,Advanced text editor +micro,editor,Simple text editor +nano,editor,Simple text editor +vim,editor,Advanced text editor +fcp,file,Fast file copy +fdupes,file,Duplicate file finder +mc,file,Two pane file manager +nnn,file,File browser and manager +hexyl,binary,Hexadecimal editor +vbindiff,binary,Hexadecimal file display and comparison +bat,text,Syntax highlighted concatenation +difftastic,text,Structural diff tool +grex,text,Regular expression generator +ripgrep,text,Fast text content search +sd,text,Easy text search and replace +ugrep,text,File pattern searcher +mdcat,markdown,Markdown file viewer +glow,markdown,Markdown file viewer +since,logging,Show changes to a file since last run +csview,database,CSV file viewer +textql,database,Structured text SQL-like query +graphicsmagick,graphics,Image editing tools +imagemagick,graphics,Image editing tools +timg,graphics,Image viewer +viu,graphics,Image viewer +strace,programming,Process system call tracer +lurk,programming,Strace alternative +tealdeer,documentation,Easy command line tool documentation +eza,shell,Modern ls replacement +moor,shell,Modern pager +most,shell,Better pager +tmux,shell,Terminal multiplexer +walk,shell,Change directory tool +btop,system,Interactive process viewer +duf,system,Disk usage utility +htop,system,Interactive process viewer +ncdu,system,Disk usage utility +procs,system,Process viewer +hashcat,security,Hash cracker +aerc,internet,E-Mail client +amfora,internet,Gemini client +clagrange,internet,Small protocols client +elinks,internet,Web browser +lftp,internet,FTP client +links,internet,Web browser +lynx,internet,Web browser +ncgopher,internet,Gopher & gemini client +rsync,internet,Network file synchronisation +toxic,internet,Tox P2P instant messaging client +weechat,internet,IRC client +bandwhich,network,Bandwidth monitoring tool +crawley,network,Web crawler +curlie,network,HTTP request tool +dnstop,network,DNS request monitoring tool +dog,network,DNS client +doggo,network,DNS client +gemget,network,Recursive Gemini download tool +httrack,network,Recursive HTTP download tool +hurl,network,HTTP request tool +iftop,network,Bandwidth monitoring tool +netscanner,network,Connection monitoring tool +ngrep,network,Packet sniffer +nload,network,Network load monitoring tool +nmap,network,Port scanner and vulnerability tester +rustscan,network,Port scanner +ssldump,network,TLS analyser +trippy,network,Network diagnostic tool +wget,network,Recursive HTTP download tool +xh,network,HTTP request tool +xdotool,x11,X11 automation tool +yank,x11,X clipboard selection tool |
