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

Uploaded Python 3

File details

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

File metadata

  • Download URL: galaxy_tool_refactor_cli-0.3.7.tar.gz
  • Upload date:
  • Size: 52.9 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.7.tar.gz
Algorithm Hash digest
SHA256 59aade323298e0af1932247b56a25c7245f79692f2d7e0bc0d5abed312f63966
MD5 2178b68aee8fc615ed69628365834ab2
BLAKE2b-256 fea3f332a5aaff0d4b479e82820c7c0fa35c52b9135fb3ee87df8dbca18cb76f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for galaxy_tool_refactor_cli-0.3.7-py3-none-any.whl
Algorithm Hash digest
SHA256 482b6cac1c2ee774508f2b2020c7ad580be7930db0ed9d4340b5827488a0106e
MD5 1835c19eedb41213a62a55ed556fd180
BLAKE2b-256 095754cdd26e0bf9f5dd01e2e1ce1fd05e28512a72c0dfc7b1ab09ca49bd9f5b

See more details on using hashes here.

Provenance

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