ttscoff / fish_files

140 stars 15 forks source link

lsfuncs.fish: Prints list of user-defined Fish functions, brews and other local scripts in users $HOME #2

Open 100ideas opened 2 years ago

100ideas commented 2 years ago

Hi @ttscoff, I just came across your work earlier today and have been impressed and intrigued with the collection of productivity and info-management tools you've made and shared.

I'm also a fish user and was interested to read your blog posts about useful fish funcs and other tools. Thanks for generously sharing your collection of scripts in All my Fish functions! It inspired me to (try) to share one of my ow scripts that you and other may find useful.

lsfuncs.fish is inspired by and complimentary to apropos. I found myself with an increasing library of either self-written or at least manually-curated scripts, packages, tools, and other executables for a variety of specific of obscure tasks and experiments. I had a hard time remembering what I had named many of the fish functions. I wanted to $ apropos keyword and have a good shot of rediscovering that script from several years ago I knew was around somewhere. My unix-fu was insufficient to the task to expanding apropos' reach (feeding its dbs new entries - which I believe some dark and ancient process generates from man files... at least historically, on osx)... so I took a shot at a fish script.

lsfuncs searches predefined user directories for .fish functions, collects --description strings if available, and then presents a list of the results in a nice table in the terminal. It does the same for the user's installed homebrew brews and kegs and also for other polyglot executable scripts and binaries that the user may have stashed someplace like ~/dev/bin/.

Check out the lsfuncs if it sounds useful, and also please let me know if you have experienced similar friction points and have your own solutions, I'd be interested to learn about them.

If you'd like to add lsfuncs to your repo, it would motivate me to organize and publish some more of my scripts in a proper public repo like yours, so just let me know and I'll send you a PR.

Cheers, and thanks for sharing your work! Mac

https://gist.github.com/100ideas/b27e44a5c07360917ce99cd6997e2b7b

100ideas commented 2 years ago
~/dev ❯ lsfuncs                                                                                      16:23:57

############
 a/all p/paths

 my_local_bins:
/Users/100ideas/dev/bin/
#############
/Users/100ideas/.config/fish/functions:
athenapdf                - Simple, Docker-powered PDF conversions - just supply URL
beef                     - start BeEF in docker
br                       - n/a
brewinfo                 - print formula/cask name desc homepage when argv is in desc
c                        - Improved cat, pygmentized
cdipfs                   - cd to ../ipfs/$argv dev dir
cfp                      - copy fullpath to clipboard: cfp <file>
clutter                  - show/hide osx desktop icons
conda_paths              - toggles anaconda paths in fish_user_paths
connections              - list local processes listening to network; -n for node, -p for only pids,
csf                      - lolcatcowfortune
dangerChrome             - n/a
desc                     - Print the description of a Fish function.
dl                       - alias dl cd ~/Downloads
dsf                      - diff-so-fancy file/a file/b (works outside of git repos)
ffmpeg_pip               - usage: stream1 stream2. ffmpeg encodes stream2 into stream1 (1080p or bigg
findnamed                - recursively finds all files/folders that contain ARGV in name under curren
finfo                    - dynamic apropos just for fish functions
fish_append_user_path    - append paths to tail of fish_user_paths array, or do nothing if already co
fish_audit               - profile fish prompt performance
fish_colors_monokai      - set fish color variables like monokai
fish_delete_user_path    - remove given paths from UNIVERSAL fish_user_paths if they exist
fish_prepend_user_path   - push paths to front of fish_user_paths array, or do nothing if already con
fish_prompt              - n/a
fish_update_user_path    - inserts/removes given paths to fish_user_paths
fish_user_key_bindings   - n/a
fishedit                 - open fish config & user bin in vscode
fuck                     - Correct your previous console command
fzf_complete             - n/a
fzf_config               - n/a
fzf_key_bindings         - n/a
gcl                      - shortcut for git clone <repo>; cd repo
getopts                  - 3rd-party cli options parser for fish funcs github.com/jorgebucaran/fish-g
gh                       - Open the current repository in github
gif-it                   - ffmpeg script to create gif. usage: input.mkv outputname starttime duratio
grepkill                 - kill ps that grep match arg (check first w/ psgrep)
hosts                    - switches /etc/hosts between default and StevenBlack blocklist
jupyterlab-anon          - docker run -it --rm jupyter/scipy-notebook jupyter lab (localhost:8888)
jupyterlab               - docker start -ai jupyterlab (localhost:8888)
keybinds                 - open fish & iterm2 keybind web docs
kindlecover              - convert png to kindle-optimized grayscale dither w/ imagemagick
ls-scripts               - list executable files that don\'t include \'.\' at given path (max depth 3
lsbrews                  - list all installed homebrew packages w/ description
lscolors                 - print list of fish colors
lsfuncs                  - Print user-defined Fish functions (including any executable files in first
lsrecent                 - lsrecent [numresults] [paths to skip]: list most recently edited files ben
man                      - Colored man pages
panscrape                - give url, pandoc scrapes, outputs markdown
paths                    - alias paths str2lines $PATH $fish_user_paths
portainer-upgrade        - update portainer image to latest version
psgrep                   - return pid of all ps that match grep (not self)
sigs                     - checks check input path code signatures and certs with codesign and spctl
str2lines                - split input into newlines: str2lines [\'delimiter\'] input
update_all               - homebrew, fish, npm -g, (no yarn yet), and Apple system update
wget-filetype            - wget all *.<ext> at <url>: use wget-filetype <ext>, <url>
wget-pdfs                - wget all pdfs at <http://site.tld/path>
where                    - Print the resolved absolute file name (uses realpath)
xh                       - list downloaded files from osx quarantine

/Users/100ideas/dev/bin/
apropos                  - 2020-02-12: patched apropos b/c apple broke it, making fish completions sl
brew-lsbrews             - was #!/usr/local/bin/bash
brew-lsbrews.cache       -
browsh                   - browsh: The modern, text-based browser
brute_upnproxy.sh        - dump the first 1,000 UPnP NAT entries from the device's exposed TCP daemon
chromium.sh              - https://developer.chrome.com/extensions/proxy
code                     - Copyright (c) Microsoft Corporation. All rights reserved.
crx-downlaod             - shell script to download google chrome crx extension file from webstore
delete-all-ds_store.command - delete-all-ds_store.command
emacsapp                 - /Applications/Emacs.app/Contents/MacOS/Emacs "$@"
firefox_dev              - uses osx metadata db to find and exec firefox dev edition binary
git-summary              - git-summary - summarize git repos at some path
git_latest_commits       - list remote branches ordered by most recent commit
handy.txt                -
lc                       - lc tool is a  license  compiler  for  Mono.  It's  used  to  convert  a
lsgits                   - list git repos under current directory
lsnodes                  - list node projects under current directory (looks for package.json files)
#### valid_help_param: false ####
basename                 -                          -
node-add-ignore.sh       - bash script for ignoring all files in node_modules for Spotlight
node-del-modules.sh      - delete node_modules folder recursively from a specified path using command
pdf-parser               - 'pdf-parser, use it to parse a PDF document'
pdf-strip.sh             - try to clone pdf without metadata
pdfid                    - 'Tool to test a PDF file'
pdftk                    - docker run --rm -v `pwd`:`pwd` -w `pwd` jottr/alpine-pdftk "$@"
proxify                  -  The -d flag enables some diagnostic output, which primarily reports inter
safari-print-bookmarks   - prints bookmarks given name of safari bookmark folder
safari-readinglist       - A script for exporting Safari Reading List items to Markdown and Pinboard
screenlapse              - records timelapse of desktop. frames and movie saved in ~/Movies/screenlap
torctl                   - start|stop torsocks w/ launch services
yamete                   - https://github.com/jaymoulin/yamete

/usr/local/bin/          - lsbrew.cache last updated Feb 23 15:37:22 2022 [STALE]

starting brew-lsbrews
...lsbrews cache was stale, updating brew descriptions... last updates:
      lsbrews: Feb 23 15:37:22 2022
     homebrew: Mar 16 01:55:14 2022
done updating /Users/100ideas/.config/bin/brew-lsbrews.cache - added 4 new entries (      36 ->      40 )

b3sum                    - BLAKE3 cryptographic hash function
bat                      - Clone of cat(1) with syntax highlighting and Git integration
brightness               - Change macOS display brightness from the command-line
broot                    - New way to see and navigate directory trees
certbot                  - Tool to obtain certs from Let's Encrypt and autoenable HTTPS
ckan                     - Comprehensive Kerbal Archive Network
clojure                  - The Clojure Programming Language
coreutils                - GNU File, Shell, and Text utilities
cowsay                   - Configurable talking characters in ASCII art
curl                     - Get a file from an HTTP, HTTPS or FTP server
ditaa                    - Convert ASCII diagrams into proper bitmap graphics
exiftool                 - Perl lib for reading and writing EXIF metadata
fish                     - User-friendly command-line shell for UNIX-like operating systems
fortune                  - Infamous electronic fortune-cookie generator
fzf                      - Command-line fuzzy finder written in Go
git                      - Distributed revision control system
gotop                    - Terminal based graphical activity monitor inspired by gtop and vtop
htop                     - Improved top (interactive process viewer)
imageoptim-cli           - CLI for ImageOptim, ImageAlpha and JPEGmini
jq                       - Lightweight and flexible command-line JSON processor
leiningen                - Build tool for Clojure
lolcat                   - Rainbows and unicorns in your console!
mkcert                   - Simple tool to make locally trusted development certificates
neofetch                 - Fast, highly customisable system info script
nginx                    - HTTP(S) server and reverse proxy, and IMAP/POP3 proxy server
openssh                  - OpenBSD freely-licensed SSH connectivity tools
pandoc                   - Swiss-army knife of markup format conversion
pdfcpu                   - PDF processor written in Go
pdfcrack                 - PDF files password cracker
pdfgrep                  - Search PDFs for strings matching a regular expression
rsync                    - Utility that provides fast incremental file transfer
speedtest-cli            - Command-line interface for https://speedtest.net bandwidth tests
starship                 - Cross-shell prompt for astronauts
tag                      - Manipulate and query tags on macOS files
tldr                     - Simplified and community-driven man pages
trash                    - CLI tool that moves files or folder to the trash
tree                     - Display directories as trees (with optional color/HTML output)
volta                    - JavaScript toolchain manager for reproducible environments
wget                     - Internet file retriever
xmlstarlet               - XML command-line utilities
ttscoff commented 2 years ago

This is pretty cool, thanks for sharing!

100ideas commented 2 years ago

I've explored your functions a bit more and saw you had already implemented some related functions (describe_functions.fish) so I'm glad you like it.

Currently I don't have a systematic way of organizing my TODOs, notes, project repos, and bookmarks to content I've researched (In particular I want full-text search across all my web bookmarks via a private-cloud or local indexer & db).

I've been researching various approaches like yours and twas interested to try out your time and task tracking tools -doing.fish, na, etc. The directory-based scoping of how doing resolves which taskpaper to target is a cool idea - as is the distributed flat-file architecture of potentially having these taskpaper or md project files scattered around.

doing does a fine job at creating todos for projects and helping track time spent on them. I'm trying to settle on a similar systematic process and documentation/serialization format for organizing my markdown notes, bookmarks, + markdown + image snapshots of bookmarks, and a way of relating them by association to a project, repo, and/or tags. I am playing around w obsidian md right now but it's just part of the puzzle.

ttscoff commented 2 years ago

If you're on a Mac, you might want to check out Hook for linking all of your notes, bookmarks, images, etc. to a project. I even wrote a CLI for it.

-Brett

On 18 Mar 2022, at 18:46, Mac Cowell wrote:

I've explored your functions a bit more and saw you had already implemented some related functions (describe_functions.fish) so I'm glad you like it.

Currently I don't have a systematic way of organizing my TODOs, notes, project repos, and bookmarks to content I've researched (In particular I want full-text search across all my web bookmarks via a private-cloud or local indexer & db).

I've been researching various approaches like yours and twas interested to try out your time and task tracking tools -doing.fish, na, etc. The directory-based scoping of how doing resolves which taskpaper to target is a cool idea - as is the distributed flat-file architecture of potentially having these taskpaper or md project files scattered around.

doing does a fine job at creating todos for projects and helping track time spent on them. I'm trying to settle on a similar systematic process and documentation/serialization format for organizing my markdown notes, bookmarks, + markdown + image snapshots of bookmarks, and a way of relating them by association to a project, repo, and/or tags. I am playing around w obsidian md right now but it's just part of the puzzle.

-- Reply to this email directly or view it on GitHub: https://github.com/ttscoff/fish_files/issues/2#issuecomment-1072891173 You are receiving this because you were mentioned.

Message ID: @.***>