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.4.tar.gz (46.6 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.4-py3-none-any.whl (24.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: galaxy_tool_refactor_cli-0.3.4.tar.gz
  • Upload date:
  • Size: 46.6 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.4.tar.gz
Algorithm Hash digest
SHA256 caa1f7268cc98adfe18a61078cc5032a7e04fc5390fdd92d05f9066fb332eaa5
MD5 5a4c39d6f3994f1a09d3524b2fa1452a
BLAKE2b-256 d03f3ba45e641a95fbaaa84e7daea3071e6e66b16fe505eff918ffd0f8d16709

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for galaxy_tool_refactor_cli-0.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 90b4b553a76ca466c562ab1af944c5285e56206fb4a6df5a296c6d152be9a4f5
MD5 9bfa543e02411b6fb12cadcb23c97dc2
BLAKE2b-256 9386c4e9ad81ebdb58543d3727127e6157edefaf1d2e035ec5f2c75aaff4234e

See more details on using hashes here.

Provenance

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