Package: sacr
[S]hape and Share [A]liased [C]ommand [R]unner - SACROverviewSACR is meant to be a simple add-in for Python centric project management.  I wanted tooling similair to what NPM provides within the Node.js ecosystem or make for compiled application.There are a number of tools out there but none of them worked with multiple commands and integrated well.FunctionalityCommand execution (and chaining)Support for Python ini files (and running sets of commands from a single alias)Support for NPM package.json filesProject cleanup supportInstallationTo download and install the latest version simply perform a pip install:pip install sacrInitial configurationIf you are setting up a new project or want to create the defaults run the following:sacr initThis will create two new files within the current project:.sacrrc- This file handles application configuration and functionality for the current solution.  Here you configure command time outs and backends (either native Python or Node.js).sacr.config- This file contains the commands and aliases for use within the current project.  If you are familiar with Node.js then this file is similar to the "scripts" section.ConfigurationDefaults (defined with.sacrrc)[command]timeout = 60If execution will run longer than 60 seconds ensure that this is increased  for your use case.[config]type = configIf you are using native Python ini files then leave the type asconfig.  If you are leveraging apackage.jsonfile and wish to continue to do so change the type topackage.UsageTo get usage help run:sacr helpIf you ran theinitto generate the defaults then you also got a samplesacr.configwhich looks like this:[scripts]hello = "echo hello"If you where to runsacr run helloyou would get the below output:>echo hellohellosacr.config Advanced ExampleBelow is a robust usage sample of sacr from another solution.[scripts]

###############################################################################
# Audit
###############################################################################
audit = "sacr run audit:pip"
audit:pip = "safety check --full-report"


###############################################################################
# Build
###############################################################################
clean = [
        "sacr clean dist src/shapeandshare_fingerprint_dataset.egg-info **/__pycache__ .coverage coverage.xml htmlcov"
    ]
prebuild = [
    "pip install -r ./requirements.build.txt",
    "pip install -r ./requirements.test.txt",
    "pip install -r ./requirements.txt"
    ]
build = "python -m build"


###############################################################################
# Linting
###############################################################################
lint = [
        "sacr run lint:pylint:check",
        "sacr run lint:isort:check",
        "sacr run lint:black:check"
    ]
lint:pylint:check = "pylint src"
lint:isort:check = "isort --check --diff ."
lint:black:check = "black --line-length=120 --target-version=py310 --check --diff ."
lint:fix = "sacr run lint:isort:fix && sacr run lint:black:fix"
lint:isort:fix = "isort ."
lint:black:fix = "black --line-length=120 --target-version=py310 ."


###############################################################################
# Tests and Coverage
###############################################################################
test = "sacr run test:unit && sacr run coverage"
test:unit = "python test/unit/setup.py"
coverage = [
        "sacr run coverage:report",
        "sacr run coverage:report:html",
        "sacr run coverage:report:xml"
    ]
coverage:report = "coverage report"
coverage:report:html = "coverage html"
coverage:report:xml = "coverage xml"TODOThere is always more to do. :)[] Test coverage[] Move to fire for cli parsing