Skip to content

feat: strut <stack> secrets push/pull/diff/validate#132

Merged
gfargo merged 1 commit into
mainfrom
feat/secrets-push
Jun 16, 2026
Merged

feat: strut <stack> secrets push/pull/diff/validate#132
gfargo merged 1 commit into
mainfrom
feat/secrets-push

Conversation

@gfargo

@gfargo gfargo commented Jun 16, 2026

Copy link
Copy Markdown
Owner

Closes #130

Adds a new secrets command for syncing .env files between local and VPS.

Subcommands

Command Description
secrets push Upload local .env to VPS (SCP, chmod 600, verify)
secrets pull Download .env from VPS to local
secrets diff Compare local vs remote keys (values hidden)
secrets validate Check required_vars are present before push

Safety

  • Validates required_vars before push (prevents incomplete deploys)
  • Refuses to overwrite existing remote without --force
  • Supports --dry-run for preview
  • Never logs secret values (diff shows keys only)

Usage

strut my-app secrets push --env prod
strut my-app secrets pull --env prod
strut my-app secrets diff --env prod
strut my-app secrets validate --env prod

Complements existing init-secrets (generate .env from template) and keys env:* (rotate/validate credentials).

Closes #130 — sync .env files between local and VPS.

Subcommands:
- push: SCP .env to remote, chmod 600, verify
- pull: download .env from remote
- diff: compare local vs remote keys (values hidden)
- validate: check required_vars before push

Safety:
- Validates required_vars before push (prevents incomplete deploys)
- Refuses to overwrite existing remote without --force
- Supports --dry-run for preview
- Never logs secret values (diff shows keys only)
@gfargo gfargo merged commit 6f36baa into main Jun 16, 2026
3 checks passed
@gfargo gfargo deleted the feat/secrets-push branch June 16, 2026 15:50
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.

feat: strut <stack> secrets push — sync .prod.env to VPS

1 participant