Skip to content

Add archive age display, bump to 0.2.0#41

Merged
kbens merged 2 commits into
stagingfrom
feature/archive-age-display
Feb 13, 2026
Merged

Add archive age display, bump to 0.2.0#41
kbens merged 2 commits into
stagingfrom
feature/archive-age-display

Conversation

@kbens
Copy link
Copy Markdown
Member

@kbens kbens commented Feb 13, 2026

  • Show human-friendly age (Xm/Xh/Xd ago) next to archive backups in domain compare picker
  • Bump version 0.1.0 → 0.2.0

@kbens kbens merged commit cde5b63 into staging Feb 13, 2026
@kbens kbens deleted the feature/archive-age-display branch February 13, 2026 04:04
kbens added a commit that referenced this pull request Feb 13, 2026
* Set help title to PSA-CLI with subtitle (#12) (#17)

* Update ops command description (#13) (#18)

* Remove trailing periods from CLI help text

Standardize CLI help text by removing trailing periods across all Click command/option help strings

* Fix missed trailing period in config compare help (#20)

* Remove trailing periods from CLI help text

* Fix missed trailing period in config compare help

* Resilient discovery: skip permission errors, scope find_domain by type (#21)

- Discovery methods now catch PermissionError per-domain instead of
  crashing entire list (e.g. PIA dirs with 750 perms no longer block
  app/prcs discovery)
- find_domain() scopes to requested type, avoiding unnecessary discovery
- _find_domain() in commands catches errors cleanly instead of raw traceback

* Add SudoFileOps abstraction, refactor domain/psadmin to use centralized file operations (#22)

* Fix demo lab findings: status parser, PIA paths, empty errors, PS path auto-detect (#24)

F7: Add "is not started" pattern to status parser for app/prcs domains
F9: Fallback message when psadmin returns empty output on stop/kill
F3: PIA discovery uses config.xml for detection, globs DPK WAR path for properties
F5: PRCS/PIA inline status checks filesystem markers instead of hardcoded unknown
F1: Add ps_app_home/ps_cust_home to PsaConfig; auto-detect PS paths from runtime user env
F4: Filed as #23 (deferred — needs design decision)

* Fix status parser for tmadmin process table output (#25)

psadmin on some servers returns raw tmadmin tables (BBL, PSAPPSRV, etc.)
instead of summary "X processes running" lines. Detect BBL + "Prog Name"
header as running indicator for app/prcs domains.

Also reorder stopped checks before running checks so "is not started"
can't accidentally match a running pattern.

* Add "Started" as prcs running pattern (#26)

psadmin returns just "Started" for running prcs domains on some servers.

* Add global --quiet/--verbose flags and Rich spinners for domain commands (#27)

- Verbosity enum + run_step() helper in output.py with spinner + checkmark UX
- Global -q/-v flags in cli.py callback
- Domain commands use run_step() for multi-step operations (bounce, reconfigure, restart)
- Single-action commands (start/stop/configure/flush/purge/kill) wrapped in run_step()
- status --verbose shows full output, list --verbose shows config columns
- print_info/success/warning silenced in QUIET, print_error always prints
- Remove unused --verbose from ops report, --quiet from dpk apply/data sync
- New test_output.py covering verbosity and run_step behavior

* Configure stops first, graceful already-stopped handling (#30)

- configure now stops domain before configuring; add --restart to start after
- Remove reconfigure (replaced by configure --restart)
- stop/kill on already-stopped domains warn instead of failing
- bounce/restart stop substeps only warn on real failures
- Add _is_already_stopped() helper reusing status parser
- Add skip_domain_confirm config field
- Tests for all new behavior

* Add warn_if to run_step for already-stopped domain warnings (#31)

Show yellow ~ instead of red x when stop/kill fails on an
already-stopped domain. Updated all 5 stop substep callers.

* Add psa config set, always prompt in all-mode (#32)

* Add warn_if to run_step for already-stopped domain warnings

Show yellow ~ instead of red x when stop/kill fails on an
already-stopped domain. Updated all 5 stop substep callers.

* Add psa config set, always prompt in all-mode, show bypass hint

* Add -q/--quiet and -v/--verbose to all domain subcommands (#33)

* Graceful already-purged + summary only when multiple domains (#34)

- Add _is_already_purged() helper: warn instead of fail when cache empty
- Guard all 8 summary blocks with len(domains) > 1 to skip redundant
  ratio message for single-domain commands
- Add tests for already-purged and single-domain-no-summary

* Add warn_if to purge run_step for ~ icon on already-empty cache (#35)

* Replace `psa domain drift` with `psa domain compare`, move set-env to ops (#36)

- New `psa domain compare` command: local archive, --ops (API), --file modes
- New `src/psa/core/compare.py`: archive listing, INI/properties parsing, diff
- Add `get_latest_config()` to ApiClient
- Move `set-env` from domain to `psa ops set-env` with proper ApiClient usage
- Delete old drift command + tests, add compare + set-env tests

* Fix compare: use RawConfigParser to handle %PS_SERVDIR% vars (#37)

Real psappsrv.cfg contains %VAR% interpolation tokens that
ConfigParser chokes on. RawConfigParser skips interpolation.

* Show compared file name in no-diff output for clarity (#38)

* Add interactive archive picker to domain compare (#39) (#39)

Default mode shows numbered backup list, prompts user to select.
--latest skips picker (old behavior). --json/--quiet imply --latest.
--latest/--ops/--file now mutually exclusive.

* Add archive age display, bump to 0.2.0 (#41)

* Add human-friendly age display to archive backup selection

* Bump version to 0.2.0
@kbens kbens mentioned this pull request Feb 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant