remo-cli 1.0.2__tar.gz → 1.0.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {remo_cli-1.0.2 → remo_cli-1.0.3}/PKG-INFO +1 -1
- {remo_cli-1.0.2 → remo_cli-1.0.3}/pyproject.toml +1 -1
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/cli/main.py +18 -1
- {remo_cli-1.0.2 → remo_cli-1.0.3}/tests/unit/cli/test_main.py +39 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/uv.lock +1 -1
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.claude/commands/speckit.analyze.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.claude/commands/speckit.checklist.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.claude/commands/speckit.clarify.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.claude/commands/speckit.constitution.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.claude/commands/speckit.implement.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.claude/commands/speckit.plan.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.claude/commands/speckit.specify.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.claude/commands/speckit.tasks.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.claude/commands/speckit.taskstoissues.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.devcontainer/devcontainer.json +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.dockerignore +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.github/dependabot.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.github/workflows/ci.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.github/workflows/provision.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.github/workflows/release.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.github/workflows/smoke-test-cleanup.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.github/workflows/smoke-test.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.github/workflows/teardown.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.gitignore +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.maverick/checkpoints/feature/implementation_complete.json +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.maverick/checkpoints/feature/phase_${{ index }}_complete.json +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.maverick/checkpoints/feature/validation_complete.json +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.specify/memory/constitution.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.specify/scripts/bash/check-prerequisites.sh +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.specify/scripts/bash/common.sh +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.specify/scripts/bash/create-new-feature.sh +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.specify/scripts/bash/setup-plan.sh +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.specify/scripts/bash/update-agent-context.sh +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.specify/templates/agent-file-template.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.specify/templates/checklist-template.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.specify/templates/plan-template.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.specify/templates/spec-template.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/.specify/templates/tasks-template.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/CLAUDE.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/CONTRIBUTING.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/Dockerfile +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/LICENSE +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/README.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/.ansible-lint +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/README.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/ansible.cfg +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/aws_configure.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/aws_resize.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/aws_site.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/aws_teardown.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/group_vars/all.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/group_vars/incus_containers.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/group_vars/proxmox_containers.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/hetzner_configure.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/hetzner_provision.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/hetzner_resize.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/hetzner_site.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/hetzner_teardown.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/incus_bootstrap.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/incus_configure.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/incus_provision.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/incus_resize.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/incus_site.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/incus_teardown.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/inventory/hosts.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/inventory/incus_containers.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/proxmox_bootstrap.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/proxmox_configure.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/proxmox_provision.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/proxmox_resize.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/proxmox_site.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/proxmox_teardown.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/requirements.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/aws_server/defaults/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/aws_server/tasks/ebs.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/aws_server/tasks/ec2.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/aws_server/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/aws_server/tasks/patch_manager.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/aws_server/tasks/preflight.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/aws_server/tasks/security_group.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/devcontainers/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/docker/handlers/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/docker/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/fzf/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/github_cli/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/hetzner_server/defaults/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/hetzner_server/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/incus_bootstrap/defaults/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/incus_bootstrap/handlers/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/incus_bootstrap/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/incus_container/defaults/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/incus_container/handlers/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/incus_container/meta/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/incus_container/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/incus_container/tasks/preflight.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/incus_container_teardown/defaults/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/incus_container_teardown/meta/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/incus_container_teardown/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/nodejs/defaults/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/nodejs/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/proxmox_bootstrap/defaults/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/proxmox_bootstrap/meta/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/proxmox_bootstrap/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/proxmox_container/defaults/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/proxmox_container/handlers/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/proxmox_container/meta/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/proxmox_container/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/proxmox_container/tasks/preflight.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/proxmox_container_teardown/defaults/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/proxmox_container_teardown/meta/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/proxmox_container_teardown/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/user_setup/defaults/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/user_setup/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/user_setup/templates/devshell.sh.j2 +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/user_setup/templates/project-menu.sh.j2 +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/zellij/defaults/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/zellij/tasks/main.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/zellij/templates/config.kdl.j2 +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/zellij/templates/layouts/minimal.kdl.j2 +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/tasks/configure_dev_tools.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/docs/aws.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/docs/hetzner.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/docs/incus.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/docs/install.sh +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/docs/proxmox.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/install.sh +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/maverick.yaml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/project-menu.sh +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/remo +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/run.sh +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/scripts/setup-aws-oidc.sh +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/001-bootstrap-incus-host/checklists/requirements.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/001-bootstrap-incus-host/checklists/validation.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/001-bootstrap-incus-host/contracts/playbook-interface.yaml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/001-bootstrap-incus-host/contracts/role-interface.yaml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/001-bootstrap-incus-host/data-model.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/001-bootstrap-incus-host/plan.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/001-bootstrap-incus-host/quickstart.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/001-bootstrap-incus-host/research.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/001-bootstrap-incus-host/spec.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/001-bootstrap-incus-host/tasks.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/002-incus-container-support/checklists/requirements.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/002-incus-container-support/contracts/playbook-interface.yaml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/002-incus-container-support/contracts/role-interface.yaml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/002-incus-container-support/data-model.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/002-incus-container-support/plan.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/002-incus-container-support/quickstart.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/002-incus-container-support/research.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/002-incus-container-support/spec.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/002-incus-container-support/tasks.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/003-python-cli-rewrite/checklists/requirements.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/003-python-cli-rewrite/data-model.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/003-python-cli-rewrite/plan.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/003-python-cli-rewrite/quickstart.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/003-python-cli-rewrite/research.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/003-python-cli-rewrite/spec.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/003-python-cli-rewrite/tasks.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/specs/004-proxmox-container-support/spec.md +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/__init__.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/__main__.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/cli/__init__.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/cli/cp.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/cli/providers/__init__.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/cli/providers/aws.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/cli/providers/hetzner.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/cli/providers/incus.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/cli/providers/proxmox.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/cli/shell.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/core/__init__.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/core/ansible_runner.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/core/completion.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/core/config.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/core/known_hosts.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/core/output.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/core/picker.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/core/rsync.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/core/ssh.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/core/validation.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/core/version.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/models/__init__.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/models/host.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/providers/__init__.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/providers/aws.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/providers/hetzner.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/providers/incus.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/src/remo_cli/providers/proxmox.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/tests/__init__.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/tests/conftest.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/tests/integration/__init__.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/tests/integration/orbstack-cloud-init.yml +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/tests/integration/orbstack.sh +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/tests/unit/__init__.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/tests/unit/cli/__init__.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/tests/unit/cli/test_cp.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/tests/unit/cli/test_shell.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/tests/unit/core/__init__.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/tests/unit/core/test_ansible_runner.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/tests/unit/core/test_config.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/tests/unit/core/test_known_hosts.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/tests/unit/core/test_output.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/tests/unit/core/test_picker.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/tests/unit/core/test_rsync.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/tests/unit/core/test_ssh.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/tests/unit/core/test_validation.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/tests/unit/core/test_version.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/tests/unit/providers/__init__.py +0 -0
- {remo_cli-1.0.2 → remo_cli-1.0.3}/tests/unit/test_host_model.py +0 -0
|
@@ -53,7 +53,24 @@ def completion(shell: str) -> None:
|
|
|
53
53
|
|
|
54
54
|
ctx = click.get_current_context()
|
|
55
55
|
instance = completer_cls(ctx.find_root().command, {}, "remo", "_REMO_COMPLETE")
|
|
56
|
-
|
|
56
|
+
source = instance.source()
|
|
57
|
+
|
|
58
|
+
if shell == "fish":
|
|
59
|
+
# Click's completion handler emits a bare newline when there are no
|
|
60
|
+
# matches (e.g., `remo upd<TAB>` — no such command). Some fish versions
|
|
61
|
+
# then iterate the for-loop once with an empty $completion, and
|
|
62
|
+
# `string split "," ""` errors out. Guard the loop body so empty
|
|
63
|
+
# candidates are skipped.
|
|
64
|
+
source = source.replace(
|
|
65
|
+
"for completion in $response;\n set -l metadata",
|
|
66
|
+
"for completion in $response;\n"
|
|
67
|
+
" if test -z \"$completion\";\n"
|
|
68
|
+
" continue;\n"
|
|
69
|
+
" end;\n"
|
|
70
|
+
" set -l metadata",
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
click.echo(source)
|
|
57
74
|
|
|
58
75
|
|
|
59
76
|
def _register_commands() -> None:
|
|
@@ -170,3 +170,42 @@ class TestIncusGroup:
|
|
|
170
170
|
expected = ["create", "destroy", "update", "list", "sync", "bootstrap"]
|
|
171
171
|
for name in expected:
|
|
172
172
|
assert name in result.output, f"Incus subcommand '{name}' missing from help output"
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
# ---------------------------------------------------------------------------
|
|
176
|
+
# remo completion <shell>
|
|
177
|
+
# ---------------------------------------------------------------------------
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
class TestCompletionCommand:
|
|
181
|
+
"""Verify ``remo completion <shell>`` emits a usable activation script."""
|
|
182
|
+
|
|
183
|
+
def test_fish_completion_emits_script(self):
|
|
184
|
+
result = _invoke("completion", "fish")
|
|
185
|
+
assert result.exit_code == 0
|
|
186
|
+
assert "function _remo_completion" in result.output
|
|
187
|
+
|
|
188
|
+
def test_fish_completion_skips_empty_candidates(self):
|
|
189
|
+
"""Click emits a bare newline when no completions match (e.g.,
|
|
190
|
+
`remo upd<TAB>`). Some fish versions iterate the for-loop once with
|
|
191
|
+
an empty $completion, which then breaks `string split "," ""`. The
|
|
192
|
+
emitted script must guard against this.
|
|
193
|
+
"""
|
|
194
|
+
result = _invoke("completion", "fish")
|
|
195
|
+
assert result.exit_code == 0
|
|
196
|
+
assert 'if test -z "$completion"' in result.output
|
|
197
|
+
# Sanity: the guard sits *inside* the for-loop, before string split
|
|
198
|
+
loop_idx = result.output.index("for completion in $response;")
|
|
199
|
+
guard_idx = result.output.index('if test -z "$completion"')
|
|
200
|
+
split_idx = result.output.index('set -l metadata (string split')
|
|
201
|
+
assert loop_idx < guard_idx < split_idx
|
|
202
|
+
|
|
203
|
+
def test_bash_completion_emits_script(self):
|
|
204
|
+
result = _invoke("completion", "bash")
|
|
205
|
+
assert result.exit_code == 0
|
|
206
|
+
assert "_remo_completion" in result.output
|
|
207
|
+
|
|
208
|
+
def test_zsh_completion_emits_script(self):
|
|
209
|
+
result = _invoke("completion", "zsh")
|
|
210
|
+
assert result.exit_code == 0
|
|
211
|
+
assert "_remo_completion" in result.output
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remo_cli-1.0.2 → remo_cli-1.0.3}/.maverick/checkpoints/feature/implementation_complete.json
RENAMED
|
File without changes
|
{remo_cli-1.0.2 → remo_cli-1.0.3}/.maverick/checkpoints/feature/phase_${{ index }}_complete.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remo_cli-1.0.2 → remo_cli-1.0.3}/ansible/roles/proxmox_container_teardown/defaults/main.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remo_cli-1.0.2 → remo_cli-1.0.3}/specs/001-bootstrap-incus-host/contracts/playbook-interface.yaml
RENAMED
|
File without changes
|
{remo_cli-1.0.2 → remo_cli-1.0.3}/specs/001-bootstrap-incus-host/contracts/role-interface.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remo_cli-1.0.2 → remo_cli-1.0.3}/specs/002-incus-container-support/checklists/requirements.md
RENAMED
|
File without changes
|
|
File without changes
|
{remo_cli-1.0.2 → remo_cli-1.0.3}/specs/002-incus-container-support/contracts/role-interface.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|