Commit Graph
17 Commits
Author SHA1 Message Date
emil 0c6c735000 GRM-30: feat: add runner labels support and refactor i18n to JSON
Post-merge Vikunja update / vikunja (push) Successful in 7s
CI / quality (push) Successful in 1m5s
CI / molecule-tests (1) (push) Successful in 6m26s
CI / molecule-tests (0) (push) Successful in 8m50s
CI / molecule-tests (2) (push) Successful in 5m55s
2026-06-20 18:42:39 +00:00
emil ea18793963 GRM-26: fix: CI pipeline for rootless Docker runners
Post-merge Vikunja update / vikunja (push) Failing after 5s
CI / quality (push) Successful in 1m3s
CI / molecule-tests (2) (push) Successful in 6m57s
CI / molecule-tests (1) (push) Successful in 7m3s
CI / molecule-tests (0) (push) Successful in 9m17s
2026-06-20 16:16:05 +00:00
emil 9c51c8b62c GRM-25: feat: auto-delete branch after merge in configure_repo script
CI / lint (push) Has been cancelled
CI / unit-tests (push) Has been cancelled
CI / molecule-tests (push) Has been cancelled
Post-merge Vikunja update / vikunja (push) Has been cancelled
2026-06-19 21:46:45 +00:00
emilandEmil Simeonov d949bd3444 GRM-24: feat: bandit integration (#1)
CI / lint (push) Has been cancelled
CI / unit-tests (push) Has been cancelled
CI / molecule-tests (push) Has been cancelled
Post-merge Vikunja update / vikunja (push) Has been cancelled
Co-authored-by: Emil Simeonov <emil@theliberatededge.org>
Reviewed-on: #1
2026-06-19 21:17:39 +00:00
Emil Simeonov 790b5c3769 GRM-20: refactor: rework all scripts to use click and i18n
CI / lint (push) Has been cancelled
CI / unit-tests (push) Has been cancelled
CI / molecule-tests (push) Has been cancelled
Post-merge Vikunja update / vikunja (push) Has been cancelled
- Replace argparse/print/sys.exit with click commands and ClickException
- Translate all user-facing messages via _()
- Add friendly Oops! / Nice! prompts
- Wrap HTTP errors in all scripts with user-friendly translated messages
- Update all unit tests to use CliRunner and expect ClickException
- Add 100% branch coverage for new HTTP error handling branches
- Add missing translation keys to i18n.py
- Fix pre-commit hook to use venv Python for validate_commit_msg.py
2026-06-19 20:11:20 +02:00
Emil Simeonov e1b589efab GRM-20: feat: user-friendly click errors with i18n in configure_repo
Post-merge Vikunja update / vikunja (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / unit-tests (push) Has been cancelled
CI / molecule-tests (push) Has been cancelled
2026-06-19 19:33:04 +02:00
Emil Simeonov 3d943b57dc GRM-19: refactor: resolve_runner returns gitea_url, add --url CLI option, force remove improvements, code quality fixes
- _resolve_runner now returns gitea_url from registry so disable/remove
  can reuse the URL stored at install time without requiring env vars.
- Added --url option to install, disable, and remove CLI commands.
- remove(force=True) no longer requires gitea_url or token.
- Moved _parse_status outside the for loop in list_runners.
- Updated all translations and tests to match.
2026-06-19 03:12:04 +02:00
Emil Simeonov 12e6ce1601 GRM-17: fix grm list status — use docker inspect for docker mode, add host/user context
- Docker mode runners now check container status via docker inspect
  instead of systemctl is-active, avoiding false unknown when systemd
  service is missing or stderr output is discarded
- Binary mode still uses systemctl is-active with stderr suppressed
- Both modes now show a translated context message before the check so
  users know which host/user each BECOME password prompt belongs to
- Better ansible output filtering: strip CHANGED/FAILED/UNREACHABLE
  header lines and separator noise
- Map Docker container states (running/exited/dead) to systemd vocabulary
- All new user-facing messages fully translated (en/bg/de/ru/zh)
- 125 tests, 100% coverage, pyright clean, ruff clean
2026-06-19 02:35:53 +02:00
Emil Simeonov ebb1088a8c GRM-18: feat: make --ask-become-pass the default behavior
- Change --ask-become-pass from opt-in to opt-out across all commands
  (install, update, start, stop, enable, disable, status, remove)
- Use Click toggle pattern: --ask-become-pass/--no-ask-become-pass with
  default=True so users are always prompted for sudo unless they
  explicitly opt out
- Update i18n translations for both help texts
- Update all CLI tests to expect ask_become_pass=True as default and
  add test for --no-ask-become-pass
- Update README: remove --ask-become-pass from examples, document
  --no-ask-become-pass for passwordless-sudo setups
- 120 tests, 100% coverage, pyright clean, ruff clean
2026-06-19 02:11:38 +02:00
Emil Simeonov 18760f6a2a GRM-17: fix: make grm list retrieve runner status correctly
- run_ad_hoc() now raises AnsibleError on non-zero exit, surfacing
  stderr instead of silently returning empty stdout
- list_runners() passes become=True to run_ad_hoc since systemctl
  is-active requires root privileges
- Add i18n translations for ad-hoc failure messages
- Add unit test for run_ad_hoc failure case
- Update list_runners test to expect become=True
- 119 tests, 100% coverage, pyright clean, ruff clean
2026-06-19 02:05:06 +02:00
Emil Simeonov 677745ac99 GRM-16: feat: add --force flag to grm remove for unreachable runners
- Add force parameter to RunnerManager.remove() — skips remote Ansible
  playbook and only removes the local registry entry
- Add --force/-f CLI flag to grm remove command
- Add translations for --force help text across all 5 languages
- Add unit tests for force skip and CLI flag propagation
- 118 tests, 100% coverage, pyright clean, ruff clean
2026-06-19 02:00:45 +02:00
Emil Simeonov 815b59c537 GRM-12: feat: add translated operation report for success and failure cases
- Create StepTracker context manager in new report.py module
- Track each step of lifecycle operations (install, update, start, stop, enable,
  disable, status, remove) with begin/done markers
- On success: report lists all completed steps with ✓ icons
- On failure: report shows failed step (✗), completed steps before failure (✓),
  and pending steps that never started (○)
- Add translations for report header, status labels, and registry step names
  in all 5 supported languages (EN/BG/DE/RU/ZH)
- 105 tests, 100% coverage, pyright clean, ruff clean
2026-06-19 01:16:39 +02:00
Emil Simeonov 3b68302274 GRM-11: i18n: translate all remaining user-facing strings 2026-06-19 00:57:26 +02:00
Emil Simeonov b3ac955515 GRM-10: refactor: deduplicate CLI, remove dead code, move validation to business layer 2026-06-19 00:57:26 +02:00
Emil Simeonov 4c08606d0c GRM-9: feat: add runner registry for simplified CLI UX 2026-06-19 00:57:26 +02:00
Emil Simeonov adb758f5f5 GRM-15: feat: add lifecycle CLI commands and RunnerManager extensions
- Add start, stop, enable, disable, status, remove methods to RunnerManager
- Add corresponding CLI subcommands: grm start/stop/enable/disable/status/remove
- Add i18n translations for lifecycle commands across all supported languages
- Add comprehensive unit tests for lifecycle methods and CLI commands
- Fix environment variable leakage in CLI tests for GITEA_URL
2026-06-18 22:59:50 +02:00
Emil Simeonov 564c12e782 GRM-8: feat: add AnsibleExecutor and i18n modules 2026-06-18 20:16:50 +02:00