Skip to content

caizhengxin/interact-cli

Repository files navigation

Interact cli

PyPI

image

image

image

Documentation Status

image

image

Interactive command line tool.

Features

  • Interact input
  • Supports multiple data types
  • Support input check
  • Support regex, see network.json

Support type

  • boolean
  • string
  • int
  • float
  • list
  • choice
  • mac
  • ipv4
  • cidr, eg: 192.168.1.1/24
  • hex

Installation

To install interact-cli, run this command in your terminal:

$ pip3 install interact-cli

or:

$ git clone https://github.com/caizhengxin/interact-cli.git
$ cd interact-cli
$ pip3 install -e .

Usage

See interact.json

string:

from interact import interacts


config = {
    "name": {
        "type": "string",
        "default": "jankinca",
        "max_length": 10,
        "min_length": 1,
        "description": "Your name"
    }
}


if __name__ == "__main__":
    """
    Your name [jankinca]: sssssssssssss
    Error: Invalided `sssssssssssss`
    Your name [jankinca]: jankincai
    """

    print(interacts(config).name)

regex:

from interact import interacts


config = {
    "ipv4": {
        "type": "string",
        "regex": r"^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$",
        "default": "192.168.166.12",
        "description": "IPv4 address"
    }
}


if __name__ == "__main__":
    """
    IPv4 address [192.168.166.12]: 22
    Error: Invalided `22`
    IPv4 address [192.168.166.12]: 192.168.166.2
    """

    print(interacts(config).ipv4)

when:

from interact import interacts


config = {
    "use_code_hosting": {
        "type": "boolean",
        "default": True,
        "description": "Use code hosting platform"
    },
    "code_hosting": {
        "type": "choice",
        "default": 1,
        "choice": [
            "github",
            "gitee",
            "gitlab"
        ],
        "description": "Code hosting",
        "when": "use_code_hosting == true"
    },
    "code_hosting_username": {
        "type": "string",
        "default": "jankincai",
        "description": "Your code hosting username",
        "when": "use_code_hosting == true"
    }
}


if __name__ == "__main__":
    """
    Use code hosting platform [y]: y
    Select code hosting:
    1 - github
    2 - gitee
    3 - gitlab
    Choose from [1]:
    Your code hosting username [jankincai]: jankincai

    {'use_code_hosting': True, 'code_hosting': 'github', 'code_hosting_username': 'jankincai'}
    """

    """
    Use code hosting platform [y]: n
    {'use_code_hosting': False, 'code_hosting': None, 'code_hosting_username': None}
    """

    print(interacts(config).get_interact_data())

See demo

Credits

This package was created with Cookiecutter and the caizhengxin/cookiecutter-package project template.