Skip to main content

Top-level CLI app that composes the Galaxy tool refactoring tiers (format + upgrade).

Project description

galaxy-tool-refactor-cli

The app tier of the Galaxy tool refactoring framework — the user-facing galaxy-tool-refactor CLI, a thin front-end over the tier-3.6 rule-registry facade (galaxy-tool-refactor-registry).

Tier Layer Package
0.5 rule metadata galaxy-tool-refactor-rules
1 parsing & validation galaxy-tool-source
2 structure galaxy-tool-codemod
3 formatting galaxy-tool-fmt
3.5 advisory checks galaxy-tool-lint
3.6 rule registry / rulesets galaxy-tool-refactor-registry
4 app / CLI galaxy-tool-refactor-cli (this package)

Rule orchestration lives in the registry facade; this package depends on it (plus fmt's cli_support engine and tier-1 parsing) and exposes eleven commands (format, upgrade, check, find-references, rename-param, rulesets, rules, normalize-macros, convert-help, tokenize-version, lint-skip):

# Safe, idempotent: apply a ruleset's fixable rules + cosmetic formatting.
# Default ruleset = structural canonicalisation + cosmetic; never profile=.
galaxy-tool-refactor format tool.xml
galaxy-tool-refactor format --ruleset cosmetic tool.xml  # whitespace only
galaxy-tool-refactor format --ignore GTR002 tool.xml     # all but param-reorder
galaxy-tool-refactor format tools/                       # also formats <macros> files

# Opt-in, semantic: repair typos, then place profile=, then format.
# Minimal-bump by default: profile= moves only when strictly needed for
# validity (kept when the repaired tool validates at its baseline, undeclared
# stays undeclared, else the minimum valid profile at or above the baseline).
# --modernize opts into the behavior-preserving walk: upgrade profile= as far
# as behaviour provably stays the same, stopping at the behaviour ceiling
# (report naming the blocking code(s), pointing at docs/profile_boundaries.md)
# and never past the deployment ceiling (the newest profile every major
# public Galaxy server runs). Only an explicit --target-profile exceeds the
# deployment ceiling. No --ruleset; --select/--ignore tune it.
galaxy-tool-refactor upgrade tool.xml
galaxy-tool-refactor upgrade --modernize tool.xml              # gated walk to the ceilings
galaxy-tool-refactor upgrade --modernize --allow-behavior-change tool.xml  # lift the behaviour gate
galaxy-tool-refactor upgrade --target-profile 23.0 tool.xml    # explicit cap (implies the walk)

# Report-only linter: one `file:line  CODE  message` per finding, mutating
# nothing. The default ruleset reports the fixable GTR rules; `--ruleset strict` adds
# the advisory checks (marked `(advisory)`). Exits non-zero on any fixable
# finding; advisory findings are informational unless --strict.
galaxy-tool-refactor check tool.xml
galaxy-tool-refactor check --ruleset strict tool.xml

# Introspection.
galaxy-tool-refactor rulesets
galaxy-tool-refactor rules

# Opt-in, repo-scoped: lowercase literal format/ftype in <macros>-root files (the
# macro-library fix the per-tool `upgrade` can't reach). Rewrites files other than
# the one named, so it is a separate command — never part of format/upgrade.
galaxy-tool-refactor normalize-macros macros/            # --check to preview

# Opt-in convenience: prune planemo .lint_skip suppressions we can prove are
# resolved (apply the fixes, remove a line only when its linter is completely
# covered and clean on every tool in the dir). Leaves what it can't prove
# untouched and unmentioned. See docs/lint_skip.md.
galaxy-tool-refactor lint-skip tools/                    # --check to preview

format/upgrade/check share rule selection — --ruleset NAME (repeatable / comma-separated — the union of the named sets), --select CODE…, --ignore CODE… (ruff-style precedence: --ignore--select--ruleset; --select replaces the rulesets' set; upgrade takes no --ruleset). format/upgrade also honour --check (detect drift, exit non-zero, don't write — distinct from the check command), --diff, and --quiet; check honours --quiet and --strict. The typical modernization flow is upgrade then format.

Why a separate tier

Profile upgrade is semantic, fallible, and reports outcomes; canonicalisation + formatting is safe and idempotent. Keeping them in separate, explicit commands (rather than auto-upgrading inside "format my tool") lets users opt into modernization deliberately. Rule orchestration sits below the CLI in the registry facade — both because output is written via fmt's serializer (so the orchestrator must sit above fmt) and so the MCP server reuses the same core. See docs/decisions.md §D1 (the app tier), §D2 (check), §D3 (advisory findings), §D4 (the registry facade + rule selection).

Install / test

End-user install (the metapackage is the front door; it pulls this CLI):

pip install galaxy-tool-refactor          # provides the `galaxy-tool-refactor` command
pip install galaxy-tool-refactor-cli      # or this package directly

For development, from the workspace root:

uv sync
uv run --package galaxy-tool-refactor-cli pytest galaxy-tool-refactor-cli/tests/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

galaxy_tool_refactor_cli-0.3.2.tar.gz (46.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

galaxy_tool_refactor_cli-0.3.2-py3-none-any.whl (24.0 kB view details)

Uploaded Python 3

File details

Details for the file galaxy_tool_refactor_cli-0.3.2.tar.gz.

File metadata

  • Download URL: galaxy_tool_refactor_cli-0.3.2.tar.gz
  • Upload date:
  • Size: 46.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for galaxy_tool_refactor_cli-0.3.2.tar.gz
Algorithm Hash digest
SHA256 bf4b2986d133d46dee1846fa97f7ee2c80978f19c90185e0d8b231d1986306a6
MD5 8f4c89239cb6cf7f9c6a674ce5bce24f
BLAKE2b-256 ed063cbd1e3094d2a63156867f271782534ca78e2c89e3ef138b28839eeced4f

See more details on using hashes here.

Provenance

The following attestation bundles were made for galaxy_tool_refactor_cli-0.3.2.tar.gz:

Publisher: release.yml on richard-burhans/galaxy-tool-refactor

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file galaxy_tool_refactor_cli-0.3.2-py3-none-any.whl.

File metadata

File hashes

Hashes for galaxy_tool_refactor_cli-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1fe3e5631fb5046d0e4e2b36939bdfe308d7efb7fbfc99467cfce48ad04f6d40
MD5 fd035a955fb056b2fa706fbcf3f9a0da
BLAKE2b-256 7d65cf925e8f49b0b339bf4f56fd11d8b0b51c3356747cae42afd53daccd2805

See more details on using hashes here.

Provenance

The following attestation bundles were made for galaxy_tool_refactor_cli-0.3.2-py3-none-any.whl:

Publisher: release.yml on richard-burhans/galaxy-tool-refactor

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page