Tool for saving/sharing your mostly used commands for fish shell
Project description
command-reminder
Command reminder is a tool for saving and sharing your mostly used fish shell commands. It allows quickly add commands to a local database, which can then be persisted/shared via Github.
Prerequisites
python >= 3.9
Installation
> pip install command-reminder
Quickstart
-
Create a Github repo which will then serve as your commands' database. Use this repo to init a new project.
> cr init --repo git@github.com:mygithubuser/my-command-reminder-repository.git
It will create a
~/.command-reminderdirectory, where all your commands will exist. You can change that directory by settingCOMMAND_REMINDER_DIRvariable. -
Add
cr init | sourceto the~/.config/fish/config.fishfile. Every time you start the fish shell, it will load both default and saved fish functions. -
Record a command.
> cr record --name 'lsof_listening_ports' --command 'lsof -nP -iTCP:$PORT | grep LISTEN'
Remember to use
'except"whenever a command contains$sign, otherwise the environment variable will be resolved. It saves a command to the local database. You can use tags too:> cr record --name 'show_process_rss_memory' --command 'ps o pid,rss -p 23159' --tags '#memory #process'
The record command creates a fish function too (available at shell after running
cr init | source). It allows to quickly get autosuggestions about available commands just by entering few first command's letters and typingTab. Currently, it only prints the command. -
List all available commands.
> cr listor> cr list --prettylsof_listening_ports: lsof -nP -iTCP:$PORT | grep LISTEN show_process_rss_memory: ps o pid,rss -p 23159 git_pull: git pull --rebase
Narrow down the results to the specific tag.
> cr list --tags '#memory'
-
Load a command to the shell. It would be very inconvenient to copy and paste the listed command. Command reminder comes with a useful shortcut, which loads commands to the fish history - they are available just by typing
arrow up.> cr list | grep ps | h
The
hshortcut is a function which name is derived from "history". It loads the command to the fish history. Remember to add it to a fish viacr init | source. Press thearrow upand you can execute a found result as a usual command. -
Push recorded commands to the remote repository.
> cr push
-
You can pull external repositories too. Let's say you're working with a team of a few people and have a common set of commands, useful in your working environment. More experienced team members can share their commands to the new ones.
> cr pull -r git@github.com:somegithubuser/some-external-commands-repository.git
The
pullcommand adds given repository to the configuration file:~/.command-reminder/repositories/main/config.yaml, which is then saved in the Github repo together with the recorded commands. On any machine with access to your Github repo (and external too), you just init a new project and provide the proper URL. You will have downloaded your own commands as well as the external ones. To refresh the commands from external repositories use:> cr pull -update_all
-
The main help menu is available via:
cr --help. Each subcommand supports help as well, e.g.cr init --help.
Repository structure
~/.command-reminder/
repositories/
main/
commands.json
fish/
config.yaml
external/
ext1/
commands.json
fish/
ext2/
commands.json
fish/
- The
maindirectory is a place where all your commands are kept. - Configuration file
config.yamlcontains data to restore your commands anywhere command-reminder is installed:repositories: external: - url: ... - url: ... commands.jsonkeeps recorded commandsfishdirectory keeps fish functions for commands. It is added to your fish search path (viacr init | source), so all commands are available as a function with fish autosuggestions. For now, the fish functions just print the respective command.- The
externaldirectory contains external repositories' commands.
Development
Install deps
> pipenv install --dev
> source .venv/bin/activate.fish
Test
> tox
Publish
> python setup.py sdist
> twine check dist/*
> twine upload dist/*
Installation from local setup.py
> pip install .
QA:
1. I've got problems with pushing changes to remote repository:
The push command use git shell command underneath. You can just go to the main directory and push it manually.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file command-reminder-1.1.0.tar.gz.
File metadata
- Download URL: command-reminder-1.1.0.tar.gz
- Upload date:
- Size: 13.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
820c9485262b7821ba26fb668ae49d39d7a3ac7b927fa410d67fc1ab0961590d
|
|
| MD5 |
09b198ccc1a59253de92dc31536da47b
|
|
| BLAKE2b-256 |
1be4a8a871f5941a73210650da9ddd96898db332aa72daa210c6321818ce5d08
|