-
Notifications
You must be signed in to change notification settings - Fork 1
ethanfurman/scription
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
scription light-weight library to enhance command-line scripts; includes conversion of parameters to specified data types, parameter checking, basic input/output with users, support for suid [1], sending email, executing sub-programs, and having sub-commands within a script decorators - Script: sets global variables and/or parameters for Commands; when used as decorator, the decorated function will be called by Main/Run before any specified Command - Command: marks function as a subcommand for the script (e.g. add, delete, list, etc.); if no subcommand is specified on the command-line, scription will look for a Command with the same name as the script - Alias: registers other names for Commands (e.g. delete / remove / kill) functions - Main: if the importing module's __name__ is __main__, call Run() (this allows for importing the script as a module) - Run: unconditionally attempts to run the Script function (if any) and the Command found on the command-line Main() or Run() should be the last thing in the script classes - Spec: can be used when defining the command-line parameters (can also just use tuples) helper functions/classes - abort: quits immediately by raising SystemExit - Execute: class for executing other programs; uses subprocess.Popen by default, but if `pty=True` is specified then `pty.fork` will be used (handy for programs that only accept input from a pty) - get_response: function for displaying text and getting feedback - help: quits immediately, but adds a reference to --help in the quit message - log_exception: logs an exception with logging.logger - mail: rudimentary mail sender - OrmFile: lightweight orm -- supports str, int, float, date, time, datetime, bool, and path (which defaults to str); custom data types can also be specified - print: wrapper around print that adds a 'verbose_level' keyword (default: 1); default script verbosity is 0 (so print does nothing), but can be increased using -v, -vv, --verbose, or --verbose=2 (in Python 2 the script must use 'from __future__ import print_function' to use scription's print) - user_ids: context manager useful for suid scripts -- all actions taken within the context are run as the user/group specified - Exit: an enumeration of useful exit codes (scription uses Exit.ScriptionError (63) if unable to parse the command line and run the script) features - extra parameters defined by Script are global, and can be accessed from any function or Command - 'module' is a namespace inserted into the script - 'script_command' is the Command selected from the command line (useful when one needs to call the subcommand directly from a main() function) - 'script_command_name' is the name of the script_command - 'script_verbosity' is the level of verboseness selected (defaults to 0) - 'script_name' is the name of the script - builtin options are: --help, --verbose (-v or -vv), --version, --all-versions --version attempts to display the version of the main package in use --all-versions attempts to display the versions of any imported packages - command-line is decoded to unicode under Python 2 (Python 3 does this for us) [1] I use the suid-python program, available at http://selliott.org/python/suid-python.c
About
light-weight library to enhance command-line scripts
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published