Skip to content

zeroSal/cli-fragments

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cli-fragments

Pylint

Awesome terminal input and output functions for python scripts.

image

Icon by Freepik - Flaticon

Why this name?

I like to consider the command-line interface as if it were a graphical interface. In the development of graphical interfaces, 'components' are usually used to facilitate maintainability and design consistency. In my opinion, the word 'fragments' is a correct synonym to describe the same approach, but for command-line interfaces.

Fragments

  • error: a red message having [✕] as prefix
  • success: a green message having [✓] as prefix
  • warning: a yellow message having [!] as prefix
  • text: a standard text in terminal having the proper padding
  • debug: a default color message having [#] as prefix
  • notice: a blue message having [~] as prefix
  • ask: a qustion to the user having [?] as prefix. The input value can be optionally validated passing a validator callback

Screenshot

image

Usage

First of all, you have to install the library using pip.

pip install cli-fragments

Then import the library in your script and use it as follows.

from cli_fragments import CliFragments

# Custom validators function.
# They must accept an str parameter and must raise ValueError on validation failure.
def validator_function(value: str):
    if value == "wrong":
        raise ValueError

# Instantiate the main class
io = CliFragments()

# Use the output methods as shown
io.debug("This is a debug message.")
io.notice("This is a notice message.")
io.warning("This is a warning message.")
io.error("This is an error message.")
io.success("This is a success message.")
io.text("This is padded raw text message.")

# The default and the validator parameters are optional in the ask method.
# You can pass None to avoid using them.
io.ask("This is a user question.", None, None)

# This is a validated ask method call having a default value.
io.ask("This is a user question.", "default", validator_function)