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.
Release files for command-reminder 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| command-reminder-1.1.0.tar.gz | 13.2 kB | Details |
Release files / command-reminder-1.1.0.tar.gz
| Download URL | command-reminder-1.1.0.tar.gz |
|---|---|
| Size | 13.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
820c9485262b7821ba26fb668ae49d39d7a3ac7b927fa410d67fc1ab0961590d
|
|
BLAKE2b-256 checksum How to use checksums |
1be4a8a871f5941a73210650da9ddd96898db332aa72daa210c6321818ce5d08
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.0 CPython/3.9.7
|