Source code for msdss_base_dotenv.cli

import argparse

from .core import *

[docs]def _get_parser(): """ Builds an ``argparse`` parser for the ``msdss-dotenv`` command line tool. Returns ------- :class:`argparse.ArgumentParser` An ``argparse`` parser for ``msdss-dotenv``. Author ------ Richard Wen <rrwen.dev@gmail.com> Example ------- .. jupyter-execute:: :hide-output: from msdss_base_dotenv.cli import _get_parser parser = _get_parser() parser.print_help() """ # (_get_parser_parsers) Create main parser and sub parsers parser = argparse.ArgumentParser(description='Manages encrypted .env files') subparsers = parser.add_subparsers(title='commands', dest='command') # (_get_parser_init) Add init command init_parser = subparsers.add_parser('init', help='create env file and key') # (_get_parser_set) Add set command set_parser = subparsers.add_parser('set', help='set an env var') set_parser.add_argument('name', type=str, help='env var name to set') set_parser.add_argument('value', type=str, help='env var value to set') # (_get_parser_del) Add del command del_parser = subparsers.add_parser('del', help='delete an env var') del_parser.add_argument('name', type=str, help='env var name to delete') # (_get_parser_clear) Add clear command clear_parser = subparsers.add_parser('clear', help='clear env file and key') # (_get_parser_file_key) Add file and key arguments to all commands for p in [parser, init_parser, set_parser, del_parser, clear_parser]: p.add_argument('--env_file', type=str, default='./.env', help='path of .env file') p.add_argument('--key_path', type=str, default=None, help='path of key file') # (_get_parser_out) Return the parser out = parser return out
[docs]def run(): """ Runs the ``msdss-dotenv`` command. Author ------ Richard Wen <rrwen.dev@gmail.com> Example ------- >>> msdss-dotenv --help .. jupyter-execute:: :hide-code: from msdss_base_dotenv.cli import _get_parser parser = _get_parser() parser.print_help() Initialize env and key files (run this first): >>> msdss-dotenv init Set ``USER`` var to ``msdss``: >>> msdss-dotenv set USER msdss Remove ``USER`` var: >>> msdss-dotenv del USER Clear env and key files: >>> msdss-dotenv clear """ # (run_kwargs) Get arguments and command parser = _get_parser() kwargs = vars(parser.parse_args()) command = kwargs.pop('command') # (run_command) Run commands if command == 'init': if env_exists(**kwargs): print('Environmental variable files already initialized.') else: save_env_file(env={}, **kwargs) elif command == 'set': set_env_var(**kwargs) elif command == 'del': del_env_var(**kwargs) elif command == 'clear': clear_env_file(**kwargs) else: parser.print_help()