Skip to main content

The CLI helper you need 🥭

Project description

WIP

Currently in development.

Save time building command-line apps with LUPE

Install

$ pip install lupe

Features

  • Parses arguments
  • Converts flags snake_case for easier use
  • Negates flags when using the --no- prefix
  • Outputs version when -v, --version
  • Outputs description and supplied help text when -h, --help

Usage

On the command line:

$ python main.py dinner --mango --no-banana

On the app:

#!/usr/bin/python
import lupe

help = """
Usage foo [input]

Options
  -h, --help      Show this help message and exit
  -v, --version   Show version and exit
  -m, --mangeo    Include a mango

Examples

  $ main.py dinner --mango --no-banana
"""

cli = lupe(help, {
    'flags': {
        'mango': {
            'type': 'boolen',
            'alias': 'm'
        },
        'banana': {
            'type': 'boolen',
        }
    }
})

print(cli.flags)
# {'mango': True, 'banana': False}

print(cli.inputs)
# [dinner]

API

lupe(help_message, options?)

lupe(options)

Returns an object with:

  • inputs (Array) - Non-flag arguments
  • flags (Object) - Flags converted to snake_case excluding aliases
  • help (string) - The help text used with --help
  • show_help([exit_code=2]) (Function) - Show the help text and exit with exit_code
  • show_version() (Function) - Show the version text and exit

help_message

Type: string

options

Type: object

Shortcut for the help option.

version

Type: string

Version of the command-line application.

flags

Type: object

Define argument flags.

The key is the flag name in snake_case and the value is an object with any of:

  • type: Type of value. (Possible values: string boolean number)
  • alias: Usually used to define a short flag alias.
  • default: Default value when the flag is not specified.
  • required: Determine if the flag is required. (Default: false)

Note that flags are always defined using a snake_case key (my_key), but will match arguments in kebab-case (--my-key).

Example:

flags = {
	'unicorn': {
		'type': 'string',
		'alias': 'u',
		'default': ['rainbow', 'cat'],
		'required': True,
	}
}

Credit

Based on meow from @sindresorhus

License

MIT © Abraham Hernandez

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lupe-0.1.2.tar.gz (2.6 kB view details)

Uploaded Source

Built Distribution

lupe-0.1.2-py3-none-any.whl (2.5 kB view details)

Uploaded Python 3

File details

Details for the file lupe-0.1.2.tar.gz.

File metadata

  • Download URL: lupe-0.1.2.tar.gz
  • Upload date:
  • Size: 2.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.7.12

File hashes

Hashes for lupe-0.1.2.tar.gz
Algorithm Hash digest
SHA256 199f38f80eb26f80ce1df2063fac002c61dbca2ddbea22dfd351d564fb6586a3
MD5 26b1e22e457571a3e5cc9bf838f09aaf
BLAKE2b-256 ce9ab1a7d5925199fabd68e0adda22f0c45a74f4e03e95957ee62a6f00b8c828

See more details on using hashes here.

File details

Details for the file lupe-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: lupe-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 2.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.7.12

File hashes

Hashes for lupe-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 16a9d67580492c428f15b615f0c629f6180445c08526198d9ab4f777f44474b2
MD5 fda042f0a0b407046c8eaef6cf63bffd
BLAKE2b-256 4cf03b86fe2326bf6cfd476e24c657940e49b198dcf310e7b51758eb561b6431

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page