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 twelve commands (format, upgrade, check, find-references, rename-param, rulesets, rules, normalize-macros, convert-help, tokenize-version, bump-version-suffix, 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.6.tar.gz (51.7 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.6-py3-none-any.whl (36.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: galaxy_tool_refactor_cli-0.3.6.tar.gz
  • Upload date:
  • Size: 51.7 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.6.tar.gz
Algorithm Hash digest
SHA256 af2a2b96add3620ecee800ed810f281f99e0bc311cb4470f66a4bb8e30d542e3
MD5 c07bd248daf6a3fcd8f174001ad36f98
BLAKE2b-256 ee66405729794ea83073a596499f91e57066a28c809fa17f6ca841a9dd4b5fbd

See more details on using hashes here.

Provenance

The following attestation bundles were made for galaxy_tool_refactor_cli-0.3.6.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.6-py3-none-any.whl.

File metadata

File hashes

Hashes for galaxy_tool_refactor_cli-0.3.6-py3-none-any.whl
Algorithm Hash digest
SHA256 02c92bf42cd6ec7bec0f11dd3e16bab7e036ffb0b67add6421069d7eabcd51b2
MD5 c1f70e39a8968a169311e0365a72e3e1
BLAKE2b-256 0893f0ed06622d0c55ef1685512f71e4376a14d40a18acd36a2a7539b3cf225f

See more details on using hashes here.

Provenance

The following attestation bundles were made for galaxy_tool_refactor_cli-0.3.6-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