flex-cli


Nameflex-cli JSON
Version 0.3.7 PyPI version JSON
download
home_pagehttps://github.com/a42ss/lcli
SummaryLocal CLI is an extendable interactive command line tool built in mind with the objective to make the interaction with day to day scripts more user friendly. The scripts you use daily should be easy to maintain, develop and document so you don't need to worry to write long documents on how to use them.
upload_time2024-02-16 07:42:11
maintainer
docs_urlNone
authorGeorge Babarus
requires_python>=3.8,<4.0
licenseMIT
keywords cli flex documentation automation local command command-line script scripts command-line-tool automation-framework flex cli flexible
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Introduction

[![PyPI version](https://img.shields.io/pypi/v/flex-cli.svg)](https://pypi.org/project/flex-cli)
[![Build Status](https://github.com/a42ss/flex-cli/actions/workflows/python-package.yml/badge.svg)](https://github.com/a42ss/flex-cli/actions/workflows/python-package.yml)
[![Coverage badge](https://raw.githubusercontent.com/a42ss/flex-cli/python-coverage-comment-action-data/badge.svg)](https://github.com/a42ss/flex-cli/tree/python-coverage-comment-action-data)
[![CodeQL](https://github.com/a42ss/flex-cli/actions/workflows/codeql-analysis.yml/badge.svg?branch=main)](https://github.com/a42ss/flex-cli/actions/workflows/codeql-analysis.yml)
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/6480/badge)](https://bestpractices.coreinfrastructure.org/projects/6480)
[![Docs badge](https://img.shields.io/badge/docs-latest-brightgreen.svg)](https://flex-cli.readthedocs.io/en/latest)
[![Chat badge](https://img.shields.io/badge/chat-IRC-brightgreen.svg)](https://github.com/a42ss/flex-cli/discussions)
[![License](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://flex-cli.readthedocs.io/en/latest)

   

Local development productivity tools meant to smooth and ease developers day to day work. 
It is meant to be cross-platform but for now is tested using MacOs and Ubuntu

## This are few examples

* unified command line interfaces for multiple cli tools
* interactive command line mode

  - this act as an interactive wrapper on top of existing cli tools
  - also allow extending the existing cli tools with auto-completion, input enhanced wizard or description
  - allow switching between command namespaces in the same terminal

* Implement custom CLI tools using Python, fully integrate with all LCLI tool features:
  - just write some code class or function and configure them to be wired in application

* use Fire to auto document Python objects, so all you should do is to focus on business logic
   
# Features

## Fire mode

In fire mode the application allow user to configure a hierarchy of objects that fit its needs for various project.
The user can navigate and execute the hierarchy using Fire library by Google. 
"Python Fire is a library for automatically generating command line interfaces (CLIs) from absolutely any Python object."
https://github.com/google/python-fire

## Interactive mode

Most often during the development process developers are using various tools for various projects.
The interactive mode purpose is to improve productivity by offering auto-completion details on the spot.
This is implemented on top of python cmd package: https://docs.python.org/3/library/cmd.html

# Getting Started

## Installation process

Install from source

```bash
# Using invoke
invoke install
#from project root directory
./install
#or 
python3 -m pip install -r requirements.txt
python3 -m pip install . --user
```

## Software dependencies

This is a Python package available as MIT License and is depending on following packages:
 
* fire https://github.com/google/python-fire/releases
* pinject https://github.com/google/pinject/releases
* PyYAML
* prompt_toolkit
* pyfiglet
* blessings
* tk
* appJar
* jsonschema

## Latest releases

- V-0.2.2 - First released version. 

## API references

# Build and Test

## Build

```bash
# Using invoke
invoke build
```

## Test

```bash
# Using invoke
invoke test
invoke coverage
# Using pytest
py.test
pytest --cov=src/lcli/ .
```

# Use cases

[<img src="https://img.youtube.com/vi/L9orYXE1nlU/hqdefault.jpg" width="50%">](https://youtu.be/L9orYXE1nlU)

# Usage


## Configuration

# Author

[George Babarus](https://github.com/georgebabarus)

# Contribute

Feel free to contribute to this project and make developer life essayer:
- by submitting new ideas as a github issue [here](https://github.com/georgebabarus/lcli/issues/new)
- by making pull request with specific bug fixes
- for new features or architectural change please contact [George Babarus](https://github.com/georgebabarus) to avoid double work on any way.

# Useful links

* https://mypy.readthedocs.io/en/latest/generics.html#generics
* https://code-maven.com/interactive-shell-with-cmd-in-python
* https://www.journaldev.com/16140/python-system-command-os-subprocess-call
* https://stackoverflow.com/questions/3262569/validating-a-yaml-document-in-python
* https://github.com/oclif/oclif#-cli-types
* https://medium.com/the-z/getting-started-with-oclif-by-creating-a-todo-cli-app-b3a2649adbcf
* https://opensource.com/article/17/5/4-practical-python-libraries


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/a42ss/lcli",
    "name": "flex-cli",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8,<4.0",
    "maintainer_email": "",
    "keywords": "cli,flex,documentation,automation,local,command,command-line,script,scripts,command-line-tool,automation-framework,flex cli,flexible",
    "author": "George Babarus",
    "author_email": "george.babarus@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/18/a2/c2ef49864ed5fa21c2516a494f3d824939ed91440d1e1cde7aacc32d7d67/flex_cli-0.3.7.tar.gz",
    "platform": null,
    "description": "# Introduction\n\n[![PyPI version](https://img.shields.io/pypi/v/flex-cli.svg)](https://pypi.org/project/flex-cli)\n[![Build Status](https://github.com/a42ss/flex-cli/actions/workflows/python-package.yml/badge.svg)](https://github.com/a42ss/flex-cli/actions/workflows/python-package.yml)\n[![Coverage badge](https://raw.githubusercontent.com/a42ss/flex-cli/python-coverage-comment-action-data/badge.svg)](https://github.com/a42ss/flex-cli/tree/python-coverage-comment-action-data)\n[![CodeQL](https://github.com/a42ss/flex-cli/actions/workflows/codeql-analysis.yml/badge.svg?branch=main)](https://github.com/a42ss/flex-cli/actions/workflows/codeql-analysis.yml)\n[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/6480/badge)](https://bestpractices.coreinfrastructure.org/projects/6480)\n[![Docs badge](https://img.shields.io/badge/docs-latest-brightgreen.svg)](https://flex-cli.readthedocs.io/en/latest)\n[![Chat badge](https://img.shields.io/badge/chat-IRC-brightgreen.svg)](https://github.com/a42ss/flex-cli/discussions)\n[![License](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://flex-cli.readthedocs.io/en/latest)\n\n   \n\nLocal development productivity tools meant to smooth and ease developers day to day work. \nIt is meant to be cross-platform but for now is tested using MacOs and Ubuntu\n\n## This are few examples\n\n* unified command line interfaces for multiple cli tools\n* interactive command line mode\n\n  - this act as an interactive wrapper on top of existing cli tools\n  - also allow extending the existing cli tools with auto-completion, input enhanced wizard or description\n  - allow switching between command namespaces in the same terminal\n\n* Implement custom CLI tools using Python, fully integrate with all LCLI tool features:\n  - just write some code class or function and configure them to be wired in application\n\n* use Fire to auto document Python objects, so all you should do is to focus on business logic\n   \n# Features\n\n## Fire mode\n\nIn fire mode the application allow user to configure a hierarchy of objects that fit its needs for various project.\nThe user can navigate and execute the hierarchy using Fire library by Google. \n\"Python Fire is a library for automatically generating command line interfaces (CLIs) from absolutely any Python object.\"\nhttps://github.com/google/python-fire\n\n## Interactive mode\n\nMost often during the development process developers are using various tools for various projects.\nThe interactive mode purpose is to improve productivity by offering auto-completion details on the spot.\nThis is implemented on top of python cmd package: https://docs.python.org/3/library/cmd.html\n\n# Getting Started\n\n## Installation process\n\nInstall from source\n\n```bash\n# Using invoke\ninvoke install\n#from project root directory\n./install\n#or \npython3 -m pip install -r requirements.txt\npython3 -m pip install . --user\n```\n\n## Software dependencies\n\nThis is a Python package available as MIT License and is depending on following packages:\n \n* fire https://github.com/google/python-fire/releases\n* pinject https://github.com/google/pinject/releases\n* PyYAML\n* prompt_toolkit\n* pyfiglet\n* blessings\n* tk\n* appJar\n* jsonschema\n\n## Latest releases\n\n- V-0.2.2 - First released version. \n\n## API references\n\n# Build and Test\n\n## Build\n\n```bash\n# Using invoke\ninvoke build\n```\n\n## Test\n\n```bash\n# Using invoke\ninvoke test\ninvoke coverage\n# Using pytest\npy.test\npytest --cov=src/lcli/ .\n```\n\n# Use cases\n\n[<img src=\"https://img.youtube.com/vi/L9orYXE1nlU/hqdefault.jpg\" width=\"50%\">](https://youtu.be/L9orYXE1nlU)\n\n# Usage\n\n\n## Configuration\n\n# Author\n\n[George Babarus](https://github.com/georgebabarus)\n\n# Contribute\n\nFeel free to contribute to this project and make developer life essayer:\n- by submitting new ideas as a github issue [here](https://github.com/georgebabarus/lcli/issues/new)\n- by making pull request with specific bug fixes\n- for new features or architectural change please contact [George Babarus](https://github.com/georgebabarus) to avoid double work on any way.\n\n# Useful links\n\n* https://mypy.readthedocs.io/en/latest/generics.html#generics\n* https://code-maven.com/interactive-shell-with-cmd-in-python\n* https://www.journaldev.com/16140/python-system-command-os-subprocess-call\n* https://stackoverflow.com/questions/3262569/validating-a-yaml-document-in-python\n* https://github.com/oclif/oclif#-cli-types\n* https://medium.com/the-z/getting-started-with-oclif-by-creating-a-todo-cli-app-b3a2649adbcf\n* https://opensource.com/article/17/5/4-practical-python-libraries\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Local CLI is an extendable interactive command line tool built in mind with the objective to make the interaction with day to day scripts more user friendly. The scripts you use daily should be easy to maintain, develop and document so you don't need to worry to write long documents on how to use them.",
    "version": "0.3.7",
    "project_urls": {
        "Homepage": "https://github.com/a42ss/lcli",
        "Repository": "https://github.com/a42ss/lcli"
    },
    "split_keywords": [
        "cli",
        "flex",
        "documentation",
        "automation",
        "local",
        "command",
        "command-line",
        "script",
        "scripts",
        "command-line-tool",
        "automation-framework",
        "flex cli",
        "flexible"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b9603563a10929e9201cc5f60eee7536739e2259ce1d3906d86e1fb9624f34c6",
                "md5": "7903e6c68f9f17b2652c5814b485e0c9",
                "sha256": "53d4b0ea9b690625c1ceae39e0a35b2cd099c7d0de3ffbb682a6299c334285e4"
            },
            "downloads": -1,
            "filename": "flex_cli-0.3.7-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "7903e6c68f9f17b2652c5814b485e0c9",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8,<4.0",
            "size": 78050,
            "upload_time": "2024-02-16T07:42:05",
            "upload_time_iso_8601": "2024-02-16T07:42:05.135418Z",
            "url": "https://files.pythonhosted.org/packages/b9/60/3563a10929e9201cc5f60eee7536739e2259ce1d3906d86e1fb9624f34c6/flex_cli-0.3.7-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "18a2c2ef49864ed5fa21c2516a494f3d824939ed91440d1e1cde7aacc32d7d67",
                "md5": "d34d711e998a0b468764624efc37bac8",
                "sha256": "9a29e082d9d9ec205d745cf20f50025e0d7b7babefef9bafdc509a79c7dfd097"
            },
            "downloads": -1,
            "filename": "flex_cli-0.3.7.tar.gz",
            "has_sig": false,
            "md5_digest": "d34d711e998a0b468764624efc37bac8",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8,<4.0",
            "size": 51516,
            "upload_time": "2024-02-16T07:42:11",
            "upload_time_iso_8601": "2024-02-16T07:42:11.391362Z",
            "url": "https://files.pythonhosted.org/packages/18/a2/c2ef49864ed5fa21c2516a494f3d824939ed91440d1e1cde7aacc32d7d67/flex_cli-0.3.7.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-16 07:42:11",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "a42ss",
    "github_project": "lcli",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "tox": true,
    "lcname": "flex-cli"
}
        
Elapsed time: 0.18285s