Four PRs on top of v2.1.0. No breaking change.
Added
-
PR #52 (
feat(observability)) — script hardening + log
ergonomics:- Shebang is now
#!/bin/sh -euand the script enables
pipefailimmediately after. Catches silent typos in
variable names (set -u) and a failing command in a
pipeline (pipefail). ::add-mask::forINPUT_PASSWORD,INPUT_USERand
INPUT_SERVERso even future log lines that echo the
value will be redacted in the rendered log.::group::/::endgroup::around the four heavy
log phases (Inputs received, Resolved configuration,
Upload, final result) so the GitHub Actions UI can
collapse them.
- Shebang is now
-
PR #53 (
chore(devx)) — developer-experience polish:.github/dependabot.ymlwith weekly scans for both
dockerandgithub-actionsecosystems. lftp bumps are
restricted to patches; actions are grouped per major.- ASCII flow diagram of
init.shadded to the README. Makefilewithlint,test,build,run,release
andcleantargets (all no-op if the underlying tool
is not installed).
-
PR #59 (
feat:) — error classification and log
capture:- Permanent lftp errors (530 login, 550 permission, 550
no such file) are detected in the captured output and
abort the retry loop early, saving minutes of waiting
on a backoff that would never succeed. - Every lftp invocation's combined stdout+stderr is
written to a timestamped log file at
~/.lftp-logs/run-<UTC>.log. The path is exposed as
thelog_fileaction output (via$GITHUB_OUTPUT)
so a follow-up step can attach it as a workflow
artifact, and it is printed in the failure banner.
- Permanent lftp errors (530 login, 550 permission, 550
-
PR #60 (
feat:) —dry_runinput (defaultfalse).
When set totrue, the mirror command gets lftp's
--dry-runflag, the plan is reported without any
transfer or delete, and the final success banner switches
to FTP DRY RUN COMPLETED (no files transferred) so a
casual reader cannot mistake a dry run for a real upload.
Long-standing TODO in the README.
Changed
- Relicense to AGPL-3.0 (commit
f9bfc80). The
project moves from GPL-3.0 to the GNU Affero General
Public License v3.0 to add the network use clause
(section 13 of the AGPL), ensuring the source remains
available to users interacting with the software over a
network. No code change; onlyLICENSEis updated.