Commit Graph
4 Commits
Author SHA1 Message Date
darroyo 4d55c8b8bb fix: parse SSH config entries with tabs as well as spaces
resolve_ssh_alias() now extracts tokens with 'read -r', which
collapses tabs and spaces uniformly. Two bugs were at play:

1. The previous parser split on literal spaces
   (key="${line%% *}") and used '${line#Host }' to drop the
   Host directive, so configs that used tab indentation
   (e.g. '\tHostName 10.60.16.35') ended up with key being the
   whole line and never matching the case branches. Result:
   'has no HostName in ~/.ssh/config' even when one was present.

2. The script's global IFS is $'\n\t' (no space), which made
   'read' unable to split on spaces at all. Fixed by restoring
   space-aware IFS locally inside the loop.

Verified against tabbed, spaced, mixed, indented-comment and
Host\tname configs; behavior with the original space-separated
configs is unchanged.
2026-09-09 11:19:13 -03:00
darroyo 38b22648f1 build: resolve --remote as SSH config alias when it has no @
scripts/build-and-push.sh now parses ~/.ssh/config (or --ssh-config)
when --remote is a bare alias like 'prod'. It extracts HostName,
User, Port and IdentityFile from the matching Host block, falls back
to the current user / port 22, and uses the config IdentityFile when
--ssh-key is not given. --ssh-key always wins. The resolved target
is shown in the logs before any docker/pussh call, and is the form
passed to docker pussh and the verification ssh.

Wildcards, Include and Match directives are intentionally not handled:
ssh itself resolves them when the alias is passed through, but the
script logs the expanded target first for visibility.
2026-09-08 18:35:23 -03:00
darroyo 3b0e6b4a3f build: make build-and-push.sh runnable from any directory
- Resolve PROJECT_DIR from the script's own location by default
  (works with absolute, relative and symlinked invocations)
- Allow override via --project-dir flag or PROJECT_DIR env var
- Improve error message for invalid --project-dir paths
- Update usage and README accordingly
2026-09-08 18:20:49 -03:00
darroyo ceebfb33f8 build: add native build and unregistry push script
scripts/build-and-push.sh builds the native image with the Mandrel
Dockerfile and pushes it to a remote Docker host via docker-pussh
(unregistry), transferring only missing layers over SSH.

- Name and tag default to pom.xml artifactId/version (overridable)
- Builds for linux/amd64; --skip-build to pussh only
- Verifies image presence on the remote after push and prints
  a ready-to-use docker run hint

README updated with a 'Building and deploying natively' section.
2026-09-07 18:02:37 -03:00