diff --git a/.butterstack/fresh2-dev/.answers.yml b/.butterstack/fresh2-dev/.answers.yml deleted file mode 100644 index b54623a..0000000 --- a/.butterstack/fresh2-dev/.answers.yml +++ /dev/null @@ -1,5 +0,0 @@ -_src_path: /var/home/d/sync/projects/py/hostbutter/src/hostbutter/resources/copier-butterstack -environment: fresh2-dev -flavor: sweet -releaseName: argparse-tui-docs -releaseNamespace: default diff --git a/.butterstack/fresh2-dev/values.yaml.tpl b/.butterstack/fresh2-dev/values.yaml.tpl deleted file mode 100644 index 591f341..0000000 --- a/.butterstack/fresh2-dev/values.yaml.tpl +++ /dev/null @@ -1,3 +0,0 @@ -<{{- $vars := (ds "vars") }}> -<{{/* defineDatasource "vault" (printf "vault+https:///secret/data/releases/%s/%s" $vars.hostbutterSiteName $vars.releaseName) */}}> -# Pull vault secrets like: <{{/* index (ds "vault").data "my-file.txt" | base64.Decode */}}> diff --git a/.butterstack/fresh2-dev/vars.yaml b/.butterstack/fresh2-dev/vars.yaml deleted file mode 100644 index 590b024..0000000 --- a/.butterstack/fresh2-dev/vars.yaml +++ /dev/null @@ -1 +0,0 @@ -# Reusable variables specific to this environment and release. diff --git a/.butterstack/hostbutter-net/.answers.yml b/.butterstack/hostbutter-net/.answers.yml deleted file mode 100644 index 9c4a6a4..0000000 --- a/.butterstack/hostbutter-net/.answers.yml +++ /dev/null @@ -1,5 +0,0 @@ -_src_path: /var/home/d/sync/projects/py/hostbutter/src/hostbutter/resources/copier-butterstack -environment: hostbutter-net -flavor: sweet -releaseName: argparse-tui-docs -releaseNamespace: default diff --git a/.butterstack/hostbutter-net/values.yaml.tpl b/.butterstack/hostbutter-net/values.yaml.tpl deleted file mode 100644 index 591f341..0000000 --- a/.butterstack/hostbutter-net/values.yaml.tpl +++ /dev/null @@ -1,3 +0,0 @@ -<{{- $vars := (ds "vars") }}> -<{{/* defineDatasource "vault" (printf "vault+https:///secret/data/releases/%s/%s" $vars.hostbutterSiteName $vars.releaseName) */}}> -# Pull vault secrets like: <{{/* index (ds "vault").data "my-file.txt" | base64.Decode */}}> diff --git a/.butterstack/hostbutter-net/vars.yaml b/.butterstack/hostbutter-net/vars.yaml deleted file mode 100644 index 590b024..0000000 --- a/.butterstack/hostbutter-net/vars.yaml +++ /dev/null @@ -1 +0,0 @@ -# Reusable variables specific to this environment and release. diff --git a/.copier-answers.common.yml b/.copier-answers.common.yml new file mode 100644 index 0000000..ef0e902 --- /dev/null +++ b/.copier-answers.common.yml @@ -0,0 +1,13 @@ +# Changes here will be overwritten by Copier +_commit: a8f9ddd +_src_path: ssh://git@git.local.hostbutter.net/fresh2dev/copier-python-project.git +docs_engine: mkdocs +docs_route: /r/argparse-tui +home_domain: fresh2.dev +license_type: MIT +project_description: Present your Argparse CLI as a Textual UI (TUI). +project_name: argparse-tui +repo_host: github.com +repo_owner: fresh2dev +repo_ssh_url: git@git.local.hostbutter.net:fresh2dev/argparse-tui.git +template: common diff --git a/.copier-answers.mkdocs.yml b/.copier-answers.mkdocs.yml new file mode 100644 index 0000000..77d7277 --- /dev/null +++ b/.copier-answers.mkdocs.yml @@ -0,0 +1,12 @@ +# Changes here will be overwritten by Copier +_commit: a8f9ddd +_src_path: ssh://git@git.local.hostbutter.net/fresh2dev/copier-python-project.git +docs_engine: mkdocs +docs_route: /r/argparse-tui +home_domain: fresh2.dev +project_description: Present your Argparse CLI as a Textual UI (TUI). +project_name: argparse-tui +repo_host: github.com +repo_owner: fresh2dev +repo_ssh_url: git@git.local.hostbutter.net:fresh2dev/argparse-tui.git +template: mkdocs diff --git a/.copier-answers.python.yml b/.copier-answers.python.yml new file mode 100644 index 0000000..d7d850c --- /dev/null +++ b/.copier-answers.python.yml @@ -0,0 +1,14 @@ +# Changes here will be overwritten by Copier +_commit: a8f9ddd +_src_path: ssh://git@git.local.hostbutter.net/fresh2dev/copier-python-project.git +docs_engine: mkdocs +docs_route: /r/argparse-tui +home_domain: fresh2.dev +package_name: argparse_tui +project_description: Present your Argparse CLI as a Textual UI (TUI). +project_name: argparse-tui +python_version: '3.9' +repo_host: github.com +repo_owner: fresh2dev +repo_ssh_url: git@git.local.hostbutter.net:fresh2dev/argparse-tui.git +template: python diff --git a/.copier-answers.yml b/.copier-answers.yml deleted file mode 100644 index 8e549b1..0000000 --- a/.copier-answers.yml +++ /dev/null @@ -1,21 +0,0 @@ -# Changes here will be overwritten by Copier -_commit: 8af3bf2 -_src_path: ../../templates/copier-f2dv-project -author_email: hello@f2dv.com -author_name: Donald Mellenbruch -docs_slides_url: https://www.f2dv.com/s/argparse-tui -docs_url: https://www.f2dv.com/r/argparse-tui -funding_url: https://www.f2dv.com/fund -home_domain: f2dv.com -home_page: https://www.f2dv.com -is_minimal: false -is_python: true -license_type: MIT -package_name: argparse_tui -project_description: Present your Argparse CLI as a Textual UI (TUI). -project_name: argparse-tui -python_version: '3.9' -repo_name: fresh2dev/argparse-tui -repo_owner: fresh2dev -repo_url: https://www.github.com/fresh2dev/argparse-tui - diff --git a/.envrc b/.envrc index 473fdf2..6c82dd5 100644 --- a/.envrc +++ b/.envrc @@ -1,2 +1,2 @@ -uv sync --python='3.9' --all-extras +uv sync --all-extras # --upgrade . ./.venv/bin/activate diff --git a/.gitea/workflows/build-deploy-image.yaml b/.gitea/workflows/build-deploy-image.yaml deleted file mode 100644 index 02d1d58..0000000 --- a/.gitea/workflows/build-deploy-image.yaml +++ /dev/null @@ -1,165 +0,0 @@ ---- -name: 'Build and Publish Image' -on: - push: - branches: - - '*' - tags: - - 'v?[0-9]+.*' - -permissions: - contents: write - -jobs: - setup: - runs-on: 'ubuntu-latest' - steps: - ### Checkout - - name: Check out repository code - uses: actions/checkout@v4 - with: - fetch-depth: 0 - submodules: 'recursive' - - # - uses: fresh2dev/hostbutter@01f6cc2ffa2f916e237c458d1641314aed3d15bb - # - uses: ./ - - uses: https://gitea.local.hostbutter.net/fresh2dev/hostbutter@01f6cc2ffa2f916e237c458d1641314aed3d15bb - with: - github-token: ${{ secrets.EGET_GITHUB_TOKEN }} - - - run: | - kubectl cluster-info - - # find-dockerfiles: - # needs: ['setup'] - # runs-on: 'ubuntu-latest' - # outputs: - # matrix: ${{ steps.find-dockerfiles.outputs.matrix }} - # steps: - # - name: Check out repository code - # uses: actions/checkout@v4 - # - # - name: Find dockerfiles - # id: find-dockerfiles - # shell: python - # run: | - # import json - # import os - # from pathlib import Path - # base_name = "Dockerfile" - # matrix_includes = json.dumps({ - # "include": [ - # {"dockerfile": x.name, "image_suffix": x.name[len(base_name):]} - # for x in Path.cwd().glob(f"{base_name}*") - # ] - # }, separators=(",", ":")) - # with open(os.environ["GITHUB_OUTPUT"], "a") as f: - # f.write(f"matrix={matrix_includes}\n") - - build-publish-image: - needs: ['setup'] - # needs: ['setup', 'find-dockerfiles'] - runs-on: 'ubuntu-latest' - env: - PRIVATE_REGISTRY_DEV: registry.local.hostbutter.net - PRIVATE_REGISTRY_PROD: registry.fresh2.dev - strategy: - # matrix: ${{ fromJson(needs.find-dockerfiles.outputs.matrix) }} - matrix: - include: - - dockerfile: Dockerfile - image_suffix: "" - # - dockerfile: Dockerfile-docs - # image_suffix: "-docs" - fail-fast: true - steps: - ### Checkout - - name: Check out repository code - uses: actions/checkout@v4 - with: - fetch-depth: 0 - submodules: 'recursive' - - ### Checkout - # - uses: fresh2dev/hostbutter@01f6cc2ffa2f916e237c458d1641314aed3d15bb - # - uses: ./ - - uses: https://gitea.local.hostbutter.net/fresh2dev/hostbutter@01f6cc2ffa2f916e237c458d1641314aed3d15bb - - - name: Dump github context - run: echo "$GITHUB_CONTEXT" - shell: bash - env: - GITHUB_CONTEXT: ${{ toJson(github) }} - - - name: Dump env context - run: echo "$env_context" - shell: bash - env: - env_context: ${{ tojson(env) }} - - - name: Setup Docker Buildx - uses: docker/setup-buildx-action@v3 - with: - driver: kubernetes - driver-opts: | - image=moby/buildkit:master - namespace=default - qemu.install=true - - - name: Build and push - uses: docker/build-push-action@v5 - with: - context: . - file: ${{ matrix.dockerfile }} - push: true - platforms: linux/amd64 #,linux/arm64 - tags: | - ${{ env.PRIVATE_REGISTRY_DEV }}/${{ github.repository }}${{ matrix.image_suffix }}:${{ env.CI_COMMIT_SHORT_SHA }} - cache-from: type=gha,url=${{ env.ACTIONS_CACHE_URL }},token=${{ env.ACTIONS_RUNTIME_TOKEN }} - cache-to: type=gha,mode=max,url=${{ env.ACTIONS_CACHE_URL }},token=${{ env.ACTIONS_RUNTIME_TOKEN }} - - - name: Push image to Prod Registry - if: > - always() - && format('refs/heads/{0}', github.event.repository.default_branch) == github.ref - run: | - docker buildx imagetools create \ - --tag ${{ env.PRIVATE_REGISTRY_PROD }}/${{ github.repository }}${{ matrix.image_suffix }}:$CI_COMMIT_SHORT_SHA \ - ${{ env.PRIVATE_REGISTRY_DEV }}/${{ github.repository }}${{ matrix.image_suffix }}:$CI_COMMIT_SHORT_SHA - - deploy-image: - needs: ['build-publish-image'] - runs-on: 'ubuntu-latest' - env: - HOSTBUTTER_SITE_DEV: hostbutter-net - HOSTBUTTER_SITE_PROD: fresh2-dev - steps: - ### Checkout - - name: Check out repository code - uses: actions/checkout@v4 - with: - fetch-depth: 0 - submodules: 'recursive' - - ### Checkout - # - uses: fresh2dev/hostbutter@01f6cc2ffa2f916e237c458d1641314aed3d15bb - # - uses: ./ - - uses: https://gitea.local.hostbutter.net/fresh2dev/hostbutter@01f6cc2ffa2f916e237c458d1641314aed3d15bb - - - if: > - endsWith(github.repository, '/hostbutter') - name: Upgrade Hostbutter - run: | - pipx install -fe . - - - name: Deploy Stack(s) [dev] - run: | - butter --site $HOSTBUTTER_SITE_DEV stack up - - - name: Deploy Stack(s) - if: > - always() - && format('refs/heads/{0}', github.event.repository.default_branch) == github.ref - run: | - butter --site $HOSTBUTTER_SITE_PROD stack up - diff --git a/.gitea/workflows/build-publish-python-package.yaml b/.gitea/workflows/build-publish-python-package.yaml deleted file mode 100644 index b0baf4a..0000000 --- a/.gitea/workflows/build-publish-python-package.yaml +++ /dev/null @@ -1,86 +0,0 @@ ---- -name: 'Build and Publish Python Package' -on: - push: - branches: - - '*' - tags: - - 'v?[0-9]+.*' - -permissions: - contents: write - -jobs: - - test-python-package: - # needs: ['setup'] - name: Test with Python v${{ matrix.python-version }} - if: > - github.ref_type != 'tag' - && format('refs/heads/{0}', github.event.repository.default_branch) != github.ref - runs-on: 'ubuntu-latest' - strategy: - matrix: - python-version: ['3.10', '3.11', '3.12', '3.13'] - max-parallel: 3 - fail-fast: true - steps: - ### Checkout - - name: Check out repository code - uses: actions/checkout@v4 - with: - fetch-depth: 0 - submodules: 'recursive' - - - # - uses: fresh2dev/hostbutter@01f6cc2ffa2f916e237c458d1641314aed3d15bb - # - uses: ./ - - uses: https://gitea.local.hostbutter.net/fresh2dev/hostbutter@01f6cc2ffa2f916e237c458d1641314aed3d15bb - - - name: Set up Python v${{ matrix.python-version }} - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - - - name: Test Python Project using Python v${{ matrix.python-version }} - run: | - tox --workdir ${{ runner.temp }}/tox -e py - - build-publish-python: - # needs: ['setup'] - runs-on: 'ubuntu-latest' - env: - DIST_DIR: ${{ runner.temp }}/dist - steps: - ### Checkout - - name: Check out repository code - uses: actions/checkout@v4 - with: - fetch-depth: 0 - submodules: 'recursive' - - # - uses: fresh2dev/hostbutter@01f6cc2ffa2f916e237c458d1641314aed3d15bb - # - uses: ./ - - uses: https://gitea.local.hostbutter.net/fresh2dev/hostbutter@01f6cc2ffa2f916e237c458d1641314aed3d15bb - - - name: Test Python Project - run: | - tox --workdir ${{ runner.temp }}/tox -e py - - - name: Build Python Project - run: | - rm -rf $DIST_DIR - pyproject-build -o $DIST_DIR - twine check --strict $DIST_DIR/* - - - name: Publish Python Project [dev] - run: | - twine upload --verbose --non-interactive --repository dev $DIST_DIR/* - - - name: Publish Python Project - if: > - github.ref_type == 'tag' - run: | - twine upload --verbose --non-interactive --repository codeberg $DIST_DIR/* - twine upload --verbose --non-interactive --repository testpypi $DIST_DIR/* - twine upload --verbose --non-interactive --repository pypi $DIST_DIR/* diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 98e05d7..3b0501f 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1 +1 @@ -# custom: ["https://www.f2dv.com/fund/"] +custom: ["https://fresh2.dev/fund"] diff --git a/.github/workflows/build-publish-python-package.yaml b/.github/workflows/build-publish-python-package.yaml new file mode 100644 index 0000000..1b7d620 --- /dev/null +++ b/.github/workflows/build-publish-python-package.yaml @@ -0,0 +1,70 @@ +--- +name: 'Build and Publish Python Package' +on: + workflow_dispatch: + push: + branches-ignore: ["*"] + tags: ["v?[0-9]+.*"] + pull_request: + +concurrency: + # group: build-${{ github.ref }} + group: build + cancel-in-progress: false + +jobs: + build-publish: + name: build with ${{ matrix.python-version }} on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: true + matrix: + python-version: + - "3.13" + os: + - ubuntu-latest + permissions: + id-token: write # to verify the deployment originates from an appropriate source + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + fetch-tags: true + lfs: true + submodules: true + set-safe-directory: true + + - run: > + git fetch --prune --tags + + - name: Install uv + uses: astral-sh/setup-uv@v5 + with: + enable-cache: true + cache-dependency-glob: "uv.lock" + python-version: ${{ matrix.python-version }} + + - run: > + git log --graph --oneline --decorate + + - run: > + uv pip list + + - name: Build the project + run: > + uv build --link-mode copy --no-sources + + - name: Publish (Test) + # env: + # UV_PUBLISH_TOKEN: ${{ secrets.PYPI_TEST_PUBLISH_TOKEN }} + run: > + uv publish --publish-url 'https://test.pypi.org/legacy/' + + - name: Publish + if: > + github.ref_type == 'tag' + # env: + # UV_PUBLISH_TOKEN: ${{ secrets.PYPI_PUBLISH_TOKEN }} + run: > + uv publish diff --git a/.github/workflows/test-python-package.yaml b/.github/workflows/test-python-package.yaml new file mode 100644 index 0000000..dd2cc23 --- /dev/null +++ b/.github/workflows/test-python-package.yaml @@ -0,0 +1,60 @@ +--- +name: 'Run Tests' +on: + workflow_dispatch: + push: + branches-ignore: ["*"] + tags-ignore: ["*"] + pull_request: + +concurrency: + # group: test-${{ github.ref }} + group: test + cancel-in-progress: false + +jobs: + test: + name: test with ${{ matrix.python-version }} on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + python-version: + - "3.9" + - "3.10" + - "3.11" + - "3.12" + - "3.13" + os: + - ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + fetch-tags: true + lfs: true + submodules: true + set-safe-directory: true + + - run: > + git fetch --prune --tags + + - name: Install uv + uses: astral-sh/setup-uv@v5 + with: + enable-cache: true + cache-dependency-glob: "uv.lock" + python-version: ${{ matrix.python-version }} + + - name: Install the project + run: > + uv sync --link-mode copy --no-sources --no-editable --all-extras --all-groups + + - name: Run tests + run: > + uv run --no-sync pytest --cov=./src --cov-report=term + + - name: Run doc tests + run: > + uv run --no-sync pytest --markdown-docs -m markdown-docs --suppress-no-test-exit-code ./src diff --git a/.gitignore b/.gitignore index 44d647c..46fa0ce 100644 --- a/.gitignore +++ b/.gitignore @@ -1,27 +1,26 @@ -!**/*.gitkeep +!.gitkeep -/.devbox -/.helmwave -**/secrets -**/*.tmp -**/.vscode -**/.DS_store -/.venv +/.venv/ /requirements.txt -/dist -/build -/public +/dist/ +/build/ +/public/ +/.devbox/ +/.helmwave/ +secrets/ +*.tmp +.vscode/ +.DS_store + +src/**/_version.py *.pyc -**/.ipynb_checkpoints -**/.coverage -**/.hypothesis -**/.tox -**/.idea -**/*.egg-info -**/.mypy_cache -**/__pycache__ -**/.pytest_cache -**/.ropeproject -**/.ruff_cache +.coverage +.ipynb_checkpoints/ +.tox/ +*.egg-info/ +.mypy_cache/ +__pycache__/ +.pytest_cache/ +.ruff_cache/ .aider* diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e696157..bbbaef1 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,34 +1,50 @@ --- repos: - - repo: 'https://github.com/pre-commit/pre-commit-hooks' - rev: 'v4.5.0' + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v5.0.0 hooks: - - id: 'check-added-large-files' - - id: 'check-executables-have-shebangs' + - id: check-added-large-files + - id: check-executables-have-shebangs # - id: check-json - - id: 'check-shebang-scripts-are-executable' - - id: 'check-merge-conflict' - - id: 'check-symlinks' - - id: 'check-toml' - - id: 'end-of-file-fixer' - - id: 'mixed-line-ending' - - id: 'trailing-whitespace' - # - repo: 'https://github.com/scop/pre-commit-shfmt' - # rev: 'v3.8.0-1' - # hooks: - # - id: 'shfmt' - # args: ['-w', '-s', '-i', '2'] - # - id: 'myke-py-format' - # name: 'myke py format' - # entry: 'myke py format' - # description: 'Format Python project.' - # language: 'python' - # types: ['python'] - # pass_filenames: false - # - id: 'myke-py-check' - # name: 'myke py check --critical' - # entry: 'myke py check --critical' - # description: 'Check Python project for critical errors.' - # language: 'python' - # types: ['python'] - # pass_filenames: false + - id: check-shebang-scripts-are-executable + - id: check-merge-conflict + - id: check-symlinks + - id: check-toml + - id: debug-statements + - id: end-of-file-fixer + - id: mixed-line-ending + - id: trailing-whitespace + + - repo: local + hooks: + - id: ruff-format + name: Ruff format + language: system + types: [python] + # pass_filenames: false + entry: > + uvx ruff format + + - id: pylint + name: Pylint + language: system + types: [python] + pass_filenames: false + entry: > + uvx --with pylint-venv pylint --init-hook='import pylint_venv; pylint_venv.inithook(force_venv_activation=True)' --disable=R,C,W0511 ./src + + - id: docsig + name: Lint Docstrings + language: system + types: [python] + pass_filenames: false + entry: > + uvx docsig ./src + + # - id: pyrefly + # name: Check Types + # language: system + # types: [python] + # pass_filenames: false + # entry: > + # uvx pyrefly check --output-format min-text ./src diff --git a/.python-version b/.python-version new file mode 100644 index 0000000..bd28b9c --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.9 diff --git a/CHANGELOG.md b/CHANGELOG.md index cbfdb26..e505c49 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,25 @@ All notable changes to this project will be documented in this file. +## 0.4.0 - 2025-03-16 + +**Full Changelog**: https://github.com/fresh2dev/argparse-tui/compare/0.3.1...0.4.0 + +### :clap: Features + +- Preserve argparse arg group titles and order +- Set default textual theme to `catppuccin-mocha` +- Press `q` or `Q` to exit +- Support `VersionAction` and Yapx's `DummyArgAction` + +### :fist: Fixes + +- Don't display label for boolean parameters + +### :metal: Other + +- Bump `textual>=2.1.2,<3` and refactor + ## 0.3.1 - 2024-11-26 **Full Changelog**: https://github.com/fresh2dev/argparse-tui/compare/0.3.0...0.3.1 @@ -75,34 +94,34 @@ All notable changes to this project will be documented in this file. ### :fist: Fixes -- Type lookup when given a partial with kwargs \[8c48e8c\] -- Enforce proper handling of is_flag arguments \[450cc5e\] +- Type lookup when given a partial with kwargs [8c48e8c] +- Enforce proper handling of is_flag arguments [450cc5e] ### :point_right: Changes -- Use more generic type-hints \[016d634\] -- Pin textual \< 1 \[f17b432\] +- Use more generic type-hints [016d634] +- Pin textual < 1 [f17b432] ## 0.2.1 - 2023-08-24 ### :point_right: Changes -- Derive root cmd name from parser.prog \[52d6a65\] -- Remove 'group' label \[45dc5d4\] +- Derive root cmd name from parser.prog [52d6a65] +- Remove 'group' label [45dc5d4] ### :fist: Fixes -- Correct logic for required arguments \[7e818a6\] +- Correct logic for required arguments [7e818a6] ## 0.2.0 - 2023-07-29 ### :clap: Features -- Passthru command-line values to TUI form \[4ed259f\] +- Passthru command-line values to TUI form [4ed259f] ### :point_right: Changes -- *Breaking:* Remove support for mandatory prompts \[76beab4\] +- *Breaking:* Remove support for mandatory prompts [76beab4] ______________________________________________________________________ @@ -110,13 +129,13 @@ ______________________________________________________________________ ### :clap: Features -- Copy command to clipboard before running \[1d03f57\] +- Copy command to clipboard before running [1d03f57] ### :point_right: Changes -- `add_command` will now return the subparser \[5fe982d\] -- Suppress error if clipboard copy fails \[6e00995\] -- Rename example \[bd245fe\] +- `add_command` will now return the subparser [5fe982d] +- Suppress error if clipboard copy fails [6e00995] +- Rename example [bd245fe] ______________________________________________________________________ @@ -124,12 +143,12 @@ ______________________________________________________________________ ### :clap: Features -- `invoke_tui` \[554827b\] +- `invoke_tui` [554827b] ### :fist: Fixes -- Handle argparse.REMAINDER \[5447b92\] -- Positional arguments go after options in the generated command \[0a91a2e\] +- Handle argparse.REMAINDER [5447b92] +- Positional arguments go after options in the generated command [0a91a2e] ______________________________________________________________________ @@ -137,32 +156,32 @@ ______________________________________________________________________ ### :fist: Fixes -- Only accept root ArgumentParser in `add_tui_command` \[6f124f0\] -- Correct image name in docker-compose \[bcbfcec\] +- Only accept root ArgumentParser in `add_tui_command` [6f124f0] +- Correct image name in docker-compose [bcbfcec] ______________________________________________________________________ ## 0.1.0 - 2023-07-22 -- Init fork as argparse-tui :rocket: \[367bc96\] +- Init fork as argparse-tui :rocket: [367bc96] ### :clap: Features -- Argparse support \[394d4dc\] -- Ctrl+y to copy command \[99d24f2\] -- Add hacker keybindings \[262f231\] -- Redact sensitive values \[ca0df16\] -- Support click prompt_required \[48809bf\] -- Omit hidden parameters and subcommands \[0a7ed9d\] -- Support typer \[705e432\] -- *Breaking:* Refactor to make click optional \[91db7dd\] +- Argparse support [394d4dc] +- Ctrl+y to copy command [99d24f2] +- Add hacker keybindings [262f231] +- Redact sensitive values [ca0df16] +- Support click prompt_required [48809bf] +- Omit hidden parameters and subcommands [0a7ed9d] +- Support typer [705e432] +- *Breaking:* Refactor to make click optional [91db7dd] ### :fist: Fixes -- Regain feature parity with trogon/main \[ca15753\] -- Fixed command info when no docstring is present \[d434653\] -- Fixed help_text if self.schema.help is none \[f42f995\] +- Regain feature parity with trogon/main [ca15753] +- Fixed command info when no docstring is present [d434653] +- Fixed help_text if self.schema.help is none [f42f995] ### :point_right: Changes -- Generate `post_run_command` on-closed, not on-changed \[afd8883\] +- Generate `post_run_command` on-closed, not on-changed [afd8883] diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 4827565..0000000 --- a/Dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -FROM python:3.13.0-slim-bullseye as build -RUN apt-get update \ - && apt-get install --upgrade -y git build-essential gcc libssl-dev libffi-dev python3-dev -WORKDIR /workspace -COPY . /workspace -ENV PYTHONUNBUFFERED=1 -RUN python3 -m pip install 'mkdocs==1.*' \ - 'mkdocs-material>=9.5,<10' \ - 'mkdocs-jupyter' \ - 'mkdocs-include-dir-to-nav' \ - 'mkdocstrings[python]' \ - 'black' \ - 'mkdocs-autorefs' \ - 'pymdown-extensions' \ - 'pygments' - -RUN python3 -m mkdocs build -d public - -FROM nginx:1 -COPY --from=build /workspace/public /usr/share/nginx/html diff --git a/LICENSE b/LICENSE index cc12842..db683ba 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright 2024 Donald Mellenbruch +Copyright 2025 Donald Mellenbruch Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/README.md b/README.md index 1d49173..7d4d313 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@
Present your Argparse CLI as a Textual UI (TUI).