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 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 function _pp_category -a category printf "%s" (string upper (string sub -s 1 -l 1 $category[1]))(string sub -s 2 $category[1]) end function _pp_prog_status -a prog if is-installed $prog set_color green printf "%s " $prog set_color normal else set_color red printf "%s " $prog set_color normal end end 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 functions -e _get_basedbname functions -e _get_categories functions -e _get_progs_by_category functions -e _get_desc_by_progname functions -e _pp_category functions -e _pp_prog_status end