The douklar CLI
Plan and run syncs, manage config and verify ECR mappings from a terminal.
Build a command
Choose what to move; the command updates as you go.
The app name your mappings are grouped under. Leave it empty for every app.
The command line tool is douklar-cli, reached as douklar. It runs the
same sync engine on your machine, against local config files.
Install
From the app checkout:
./install.sh cli
douklar --helpThe installer adds the douklar-cli command. When no douklar is on PATH
yet, it also links the app launcher scripts/douklar, so you get douklar
as well. ./install.sh cli --no-deps skips dependency downloads for offline
machines.
douklar install, douklar update and douklar companion belong to the app
launcher. Every other douklar command runs douklar-cli with the same
arguments.
ECR moves also need the AWS CLI and exactly ORAS v1.3.4 on PATH.
douklar doctor checks the local prerequisites.
Commands
douklar status
douklar doctor [--aws] [--profile P] [--strict]
douklar config init|show|validate|generate|fmt|export
douklar mapping list|add|remove
douklar check run
douklar sync plan|runGlobal options work before the command and on every command: -v,
-q, --debug, --no-input, --color auto|always|never and
--progress auto|live|final|off. Data commands take --json and print one
JSON document on stdout.
Exit codes: 0 success, 1 the operation ran and failed, 2 usage or
validation error before any work, 130 interrupted.
Plan, then run
douklar sync plan --service ecr --service s3 --app my-app
douklar sync run --service ecr --service s3 --app my-appsync plan shows what sync run would do and writes nothing. Both read the
workspace sync.yaml unless you pass --config PATH.
| Option | Effect |
|---|---|
--service ecr|s3|codecommit|dynamodb|all | Limit to this service (repeatable) |
--app <name> | Limit to this mapping name (repeatable) |
--json | One JSON document on stdout |
--dynamodb-ttl-policy preserve_all|exclude_expired_at_cutoff | run: required when the selection contains DynamoDB |
--codecommit-push-mode mirror|incremental | run: CodeCommit push mode (default mirror) |
--codecommit-overwrite | run: allow reconciling a non-empty CodeCommit destination |
--ecr-update-latest | run: also move the destination's ECR latest tag |
--s3-transport worker_relay|server_side | run: S3 path (default worker_relay) |
--s3-keep-tags | run: copy each object's tags |
--s3-kms-key-arn <ARN> | run: encrypt written objects with this key (full ARN) |
Without a terminal, a non-empty CodeCommit destination is skipped and
reported failed unless --codecommit-overwrite is given.
Verify ECR mappings
douklar check run --exit-codecheck run verifies the ECR repository pairs in the workspace sync.yaml
with the console's verdict engine. It reads only. With --exit-code it exits
1 unless every mapping is in_sync, which suits CI.
Bundles for the console
douklar config export writes a bundle folder for the console's
Settings > Imports. Bundles carry producer.tool = "douklar-cli"; the app
imports no other producer.