Use your local environment variables in Plover
Project description
Plover Local Env Var
This Plover extension plugin contains a meta that can read in and output values stored in local environment variables on your computer.
Use Case
Ever have information that is not quite secret enough to warrant putting in a password manager, but not public enough that you want to have steno dictionary outlines containing it available to the public? Information like your phone number, home address, and date of birth is very handy to have in outline values when filling in online forms etc, but I wouldn't want to share that info in my steno dictionaries.
So, in order to be able to share the outlines I use, but not the values contained in them, I put that kind of semi-secret information in environment variables, manage them with direnv, and use this plugin to access them in order to write them out.
[!NOTE] If you prefer to manually write out all your semi-secret information and/or you do not share your steno dictionaries publicly, you may not need to use this plugin at all.
[!WARNING] Please do not put secret information like passwords in your steno dictionary outlines! Plover stands between when you write your keystrokes and when they output on screen, fitting the very definition of a "man-in-the-middle" (see your
strokes.log
file for what Plover records by default). Use a password manager.
Why a Plugin?
I used to access environment variables from a steno outline like in this example:
"PHAEUL/PHAEUL": "{:COMMAND:SHELL:bash -ci 'osascript $STENO_DICTIONARIES/src/command/actions/output-env-var.scpt EMAIL'}"
This solution does the following:
- uses the Plover Run Shell plugin to run a shell command from Python
- calls
bash
in interactive mode (-i
) so that the command can see environment variables ($STENO_DICTIONARIES
in this case) defined outside of the Plover environment - gets
bash
to use theosascript
command-line tool to load in and run the target compiled AppleScript (.scpt
) file - The AppleScript in question would then call out to the shell to fetch the
$EMAIL
env var, and keystroke it out to the screen
This stack of Python->Shell->AppleScript->Shell
is convoluted and just not the
right tool for the job at hand. Plover Local Env Var just uses Python and Shell,
and reduces the outline above to be just:
"PHAEUL/PHAEUL": "{:ENV_VAR:$EMAIL}"
All the fetched values also get cached, so subsequent calls to the same env var get returned quicker.
Install
- In the Plover application, open the Plugins Manager (either click the Plugins
Manager icon, or from the
Tools
menu, selectPlugins Manager
). - From the list of plugins, find
plover-local-env-var
- Click "Install/Update"
- When it finishes installing, restart Plover
- After re-opening Plover, open the Configuration screen (either click the
Configuration icon, or from the main Plover application menu, select
Preferences...
) - Open the Plugins tab
- Check the box next to
plover_local_env_var
to activate the plugin
How To Use
After defining and exporting environment variables in your shell
configuration file, you can use them in your outlines with the ENV_VAR
meta. For an environment variable named $PHONE_NUMBER
, the outline would look
like:
"{:ENV_VAR:$PHONE_NUMBER}"
Pressing the "Disconnect and reconnect the machine" button on the Plover UI resets the environment variable cache. If you make any changes to the values contained in your environment variables, make sure to press it so they get re-read in again.
Development
Clone from GitHub with git:
git clone git@github.com:paulfioravanti/plover-local-env-var.git
cd plover-local-env-var
Python Version
Plover's Python environment currently uses version 3.9 (see Plover's
workflow_context.yml
to confirm the current version).
So, in order to avoid unexpected issues, use your runtime version manager to make sure your local development environment also uses Python 3.9.x.
Testing
- Pytest is used for testing in this plugin.
- Coverage.py and pytest-cov are used for test coverage, and to run coverage within Pytest
- Pylint is used for code quality
- Mypy is used for static type checking
Currently, the only parts able to be tested are ones that do not rely directly on Plover.
Run tests, coverage, and linting with the following commands:
pytest --cov --cov-report=term-missing
pylint plover_local_env_var
mypy plover_local_env_var
To get a HTML test coverage report:
coverage run --module pytest
coverage html
open htmlcov/index.html
Deploying Changes
After making any code changes, deploy the plugin into Plover with the following command:
plover -s plover_plugins install .
Where
plover
in the command is a reference to your locally installed version of Plover. See the Invoke Plover from the command line page for details on how to create that reference.
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
Built Distribution
Hashes for plover_local_env_var-0.2.5.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4c2520435204ceaf2cc55a6a5883f3f0e606339bc7632d5555403ad5a32c1767 |
|
MD5 | ecf4af0cef778604cb393b4e5b3c091c |
|
BLAKE2b-256 | 68b597e3615fd7544ee0873da31bbbe19b2624647d2542a1a4eed2444e419998 |
Hashes for plover_local_env_var-0.2.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8a37b68822efecc255b2bee9d2272dcb52c96d32932065fdcf865b3d652c974c |
|
MD5 | f77dc454aed009e963ae1304b33e4b59 |
|
BLAKE2b-256 | a88590cd0115c2634a3e273a92b044db8994f1ecf85c1d2d14b10bfddb58d9e8 |