diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 6bf0293..4a263fa 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.0.0-alpha.1" + ".": "2.0.0-alpha.1" } diff --git a/CHANGELOG.md b/CHANGELOG.md index c0ded03..3d929e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,128 @@ # Changelog +## [2.0.0-alpha.1](https://github.com/BlindspotSoftware/dutctl/compare/v1.0.0-alpha.1...v2.0.0-alpha.1) (2026-06-29) + + +### ⚠ BREAKING CHANGES + +* The serial module's invocation changed. It no longer accepts a single optional expect regex; callers must pass an explicit step sequence. For example, `serial "(?i)hello"` becomes `serial -- expect "(?i)hello"`. Existing configs/scripts using the old form must be updated. +* The `main` YAML config key on modules is replaced by `passthrough`. Existing config files must be updated. +* The dutagent configuration changed. Existing configurations must be updated in the following way: From commands: - name: example modules: - name: flash options: file: firmware.bin To commands: - name: example uses: - name: flash with: file: firmware.bin +* Flash module removed default tool. Users must now explicitly configure the tool option in their flash module configuration. +* The -v flag now enabled verbose output, while version information is printed with the 'dutctl version' command. +* The client does not add an extra newline to received Print messages anymore. + +### Features + +* add --log level and keep diagnostics off stdout ([93df26a](https://github.com/BlindspotSoftware/dutctl/commit/93df26a26b53880c5ddc4c00586825e301e05d7a)) +* add command-level argument templating ([711c8d2](https://github.com/BlindspotSoftware/dutctl/commit/711c8d29f3986a46283a8d21bfafd38fc28caffa)) +* add dpcmd support ([13a4ace](https://github.com/BlindspotSoftware/dutctl/commit/13a4acee09848ff7458bb4eb7bf7dfbdbbd07109)) +* add emulate module for em100 support ([268bb80](https://github.com/BlindspotSoftware/dutctl/commit/268bb80c75e0c8d398d0e6270e14165b8b4cbd86)) +* add file module for bidirectional file transfers ([ded8a2c](https://github.com/BlindspotSoftware/dutctl/commit/ded8a2cf7bc96061d743df511bb3060c47a087f6)) +* add flashprog support to flash module ([7a9c309](https://github.com/BlindspotSoftware/dutctl/commit/7a9c30990ebce4ad84b3dbddbf5677c01e9823ad)) +* add further output options to dutctl ([5c027cc](https://github.com/BlindspotSoftware/dutctl/commit/5c027ccb170f37eb35a64ac16596872674ba936d)) +* add lock and unlock client commands ([f2b5ea8](https://github.com/BlindspotSoftware/dutctl/commit/f2b5ea834299c5716a90662549fcef64408df0f9)) +* add Lock and Unlock RPCs with agent handlers ([99ccc6b](https://github.com/BlindspotSoftware/dutctl/commit/99ccc6b2b3097d0cb57f8bdd6d0d078daaf0ba88)) +* add per-device Locker engine ([c825745](https://github.com/BlindspotSoftware/dutctl/commit/c82574542146506ab90767df3befcbd52b61a91c)) +* add wifi socket module ([329161d](https://github.com/BlindspotSoftware/dutctl/commit/329161d5b3834edc5b871741e5feea059a350b48)) +* annotate YAML config errors with device, command, and line ([71a0968](https://github.com/BlindspotSoftware/dutctl/commit/71a0968fa6aeaef1ee938f01930a62b41a5c9e4a)) +* dutctl verbose output flag ([abb8d67](https://github.com/BlindspotSoftware/dutctl/commit/abb8d67afcfc56a7d713a9c64e2329503d5340f4)) +* embed release version constant ([f21b45d](https://github.com/BlindspotSoftware/dutctl/commit/f21b45de4fb9e6db83fbd3dc9b9356cdec1c2ce1)) +* enforce per-device locking on Run ([9c33e80](https://github.com/BlindspotSoftware/dutctl/commit/9c33e80aba784eb83c106589c898ca942b33dd50)) +* establish reusable test doubles ([62a5c99](https://github.com/BlindspotSoftware/dutctl/commit/62a5c990e7b69f73aa1126b5dfb89b406a51b66a)) +* extend module.Session interface with fmt-style print functions ([3432675](https://github.com/BlindspotSoftware/dutctl/commit/34326753a2a6afc4722329d5e87a8ca6caa89ba4)) +* reject reserved command names in device config ([81ee7f6](https://github.com/BlindspotSoftware/dutctl/commit/81ee7f65bfa6f0b7d0a267a1b6411c9c422964db)) +* serial expect/send automation with monitor mode ([9f57498](https://github.com/BlindspotSoftware/dutctl/commit/9f57498b4ebf99cc1960015832986f059673020b)) +* show device lock state in list output ([0d56523](https://github.com/BlindspotSoftware/dutctl/commit/0d56523cb29c1399bea6550917fa5f72237af9a7)) + + +### Bug Fixes + +* add missing newline to gpio-switch state output ([a0fbd64](https://github.com/BlindspotSoftware/dutctl/commit/a0fbd64cf607f0e817ac1f8dde29839ec50c4ef7)) +* allow command templating without a passthrough module ([282989f](https://github.com/BlindspotSoftware/dutctl/commit/282989f5948bb7f94bb588865dd94957ca4c0945)) +* broker does not treat io.EOF as error ([1588898](https://github.com/BlindspotSoftware/dutctl/commit/15888988dfdfef39270b3db5efbb31dc8b334042)) +* clear serial expect pattern between runs ([#315](https://github.com/BlindspotSoftware/dutctl/issues/315)) ([b55455e](https://github.com/BlindspotSoftware/dutctl/commit/b55455e8afb9adca3226c702423b8629c1236e50)) +* defer port opening to runtime in serial module ([fd417af](https://github.com/BlindspotSoftware/dutctl/commit/fd417af170850aec61e40d4bf74376b9b2d09124)) +* don't cancel run context on stdin EOF in dutctl client ([cf7de77](https://github.com/BlindspotSoftware/dutctl/commit/cf7de77771b3bf142095cef3ab0cee89739f0a49)) +* flush stale RX buffer on connect ([040d45c](https://github.com/BlindspotSoftware/dutctl/commit/040d45cf6d3893eb7beddd7e1b79d32358ccce03)) +* harden module Init/Deinit lifecycle ([7a6518f](https://github.com/BlindspotSoftware/dutctl/commit/7a6518ff4da213bc53d3658508d3231588ca90f3)) +* initialize gpio-switch state to off on startup ([5dfd776](https://github.com/BlindspotSoftware/dutctl/commit/5dfd776ddf3059deb0d6aaf74e18f9e8fe181ef4)) +* ipmi-example-cfg.yml ([2d61fc9](https://github.com/BlindspotSoftware/dutctl/commit/2d61fc9be5c8236283036447850370ddc143bbd3)) +* make GPIO Deinit safe to call without prior Init ([36c69c6](https://github.com/BlindspotSoftware/dutctl/commit/36c69c64bbe57ffe73866d94abbeecdda7836a86)) +* prevent infinite recursion in Device.UnmarshalYAML ([af34a6e](https://github.com/BlindspotSoftware/dutctl/commit/af34a6e7d183f3a51251ccefc7f2aad8a65a23ce)) +* relay flash tool stdout/stderr to client ([78a623c](https://github.com/BlindspotSoftware/dutctl/commit/78a623cef29f786b2a158cb4262a4d34e4dcf601)) +* remove extra newline for print messages ([afe31fe](https://github.com/BlindspotSoftware/dutctl/commit/afe31fe40513d431ab9ecf5cef24c9620d332255)) +* stream bytes without waiting for newline ([6a7205c](https://github.com/BlindspotSoftware/dutctl/commit/6a7205c0e49194a9dd695562cd0579682b5f08cb)) + + +### Documentation + +* add missing modules to README and fix IPMI link ([b79eff2](https://github.com/BlindspotSoftware/dutctl/commit/b79eff2064daffff52eea72c10a7898fe6ea9876)) +* add README and example config for dummy module ([6e1673f](https://github.com/BlindspotSoftware/dutctl/commit/6e1673f8e739a49c4c2d4df80ab984bc34c403b7)) +* explain module.Session interface ([3e9612e](https://github.com/BlindspotSoftware/dutctl/commit/3e9612eb677d904b3ea634c0d6a5f28e1afabcaf)) +* fix several linting issues in markdown files ([1db2cfa](https://github.com/BlindspotSoftware/dutctl/commit/1db2cfa0a3890ba73bf7499a5a28ab73c63fd4ae)) +* fix typos in stream and test fakes ([52d7e32](https://github.com/BlindspotSoftware/dutctl/commit/52d7e323ed8e4565bf2be5665ef082a63eeab684)) +* fix typos, spelling and tables ([c1dbf9b](https://github.com/BlindspotSoftware/dutctl/commit/c1dbf9b840f91a3c6f22332a704839fe2374e2c6)) +* sanitize modules example configuration ([0479c66](https://github.com/BlindspotSoftware/dutctl/commit/0479c66eb96ab7e94208280eb87569779a834768)) + + +### Other Work + +* assert gpio switch state after Init and Run output format ([437fe4e](https://github.com/BlindspotSoftware/dutctl/commit/437fe4eadeda8bd3214d16f6a0bd91e74ee98012)) +* broker worker lifecycle and error channel handling ([1da20f9](https://github.com/BlindspotSoftware/dutctl/commit/1da20f96be24b0506741e9960ca914920f60a722)) +* broker.Start returns session and error channel ([b970bac](https://github.com/BlindspotSoftware/dutctl/commit/b970bac4554a4b4b087b44661b464866e123a760)) +* bump actions/checkout from 4 to 5 ([ab84c81](https://github.com/BlindspotSoftware/dutctl/commit/ab84c8109330b5bea1247ebbe161d71e6ea442ff)) +* bump actions/checkout from 5 to 6 ([3bb8551](https://github.com/BlindspotSoftware/dutctl/commit/3bb8551a2ef06a77ddd8b24f8e3ee00825d17714)) +* bump actions/setup-go from 5 to 6 ([77b3beb](https://github.com/BlindspotSoftware/dutctl/commit/77b3beb4336d393ec08bcecfd3c38d44aa0af35e)) +* bump actions/setup-node from 4 to 6 ([bd4e5f7](https://github.com/BlindspotSoftware/dutctl/commit/bd4e5f71f9ab340a78ef00f90b846adb77f75058)) +* bump connectrpc.com/connect from 1.18.1 to 1.19.1 ([323b013](https://github.com/BlindspotSoftware/dutctl/commit/323b013a9fab7357433e676ee2fa96aead0c8ee5)) +* bump connectrpc.com/connect from 1.19.1 to 1.19.2 ([0fa7ce2](https://github.com/BlindspotSoftware/dutctl/commit/0fa7ce2143283e5bf3b5551e91caeed57ef5cf4d)) +* bump connectrpc.com/connect from 1.19.2 to 1.20.0 ([710bbcd](https://github.com/BlindspotSoftware/dutctl/commit/710bbcd16264e62af932698a229f9be2f83f6286)) +* bump github.com/bougou/go-ipmi from 0.7.7 to 0.7.8 ([d561eab](https://github.com/BlindspotSoftware/dutctl/commit/d561eab15674ea30f35f9667500bbf1d3a57f4d2)) +* bump github.com/go-playground/validator/v10 ([47e4c1f](https://github.com/BlindspotSoftware/dutctl/commit/47e4c1f4bae50ffcb185c17bc4f2a1d53ac71ded)) +* bump github.com/go-playground/validator/v10 ([cabf73d](https://github.com/BlindspotSoftware/dutctl/commit/cabf73de494174285fbfd31428563d333b0aca78)) +* bump github.com/go-playground/validator/v10 ([3f39f64](https://github.com/BlindspotSoftware/dutctl/commit/3f39f64ad88e227f90fcc05c37424d45704d40d6)) +* bump github.com/go-playground/validator/v10 ([2293e9d](https://github.com/BlindspotSoftware/dutctl/commit/2293e9d6948eaf7221a0d5ba953ab1ef0c9c952b)) +* bump golang.org/x/crypto ([933701c](https://github.com/BlindspotSoftware/dutctl/commit/933701cdba424f312f490806e79d53038362d70b)) +* bump golang.org/x/crypto from 0.45.0 to 0.46.0 ([4f262d8](https://github.com/BlindspotSoftware/dutctl/commit/4f262d8b8bc25e61345078e7ea9899bda7871021)) +* bump golang.org/x/crypto from 0.46.0 to 0.47.0 ([e75f000](https://github.com/BlindspotSoftware/dutctl/commit/e75f00066bf5534b11053fedea87a3d44504f39d)) +* bump golang.org/x/crypto from 0.49.0 to 0.50.0 ([073285c](https://github.com/BlindspotSoftware/dutctl/commit/073285c3b825d006f54fda298c13e11ab39fec08)) +* bump golang.org/x/crypto from 0.50.0 to 0.51.0 ([18d6d9d](https://github.com/BlindspotSoftware/dutctl/commit/18d6d9dae193f4327b0128e5ab0ef1c445f0f998)) +* bump golang.org/x/net from 0.42.0 to 0.46.0 ([f11049e](https://github.com/BlindspotSoftware/dutctl/commit/f11049e60a6e014d8468f439bee386e68daafac7)) +* bump golang.org/x/net from 0.46.0 to 0.47.0 ([da28691](https://github.com/BlindspotSoftware/dutctl/commit/da286913efed73be4d040ec932698ab4bb911474)) +* bump golang.org/x/net from 0.47.0 to 0.48.0 ([bc399bd](https://github.com/BlindspotSoftware/dutctl/commit/bc399bd9f1bcc4c50d2598c446f30bd543c851e4)) +* bump golang.org/x/net from 0.48.0 to 0.49.0 ([6e3aaa0](https://github.com/BlindspotSoftware/dutctl/commit/6e3aaa0a4fad081134579c208e528b2c004a6ae6)) +* bump golang.org/x/net from 0.49.0 to 0.50.0 ([2dd0cbb](https://github.com/BlindspotSoftware/dutctl/commit/2dd0cbbca02b8546fe31d46217d687594b933c63)) +* bump golang.org/x/net from 0.50.0 to 0.52.0 ([f7bc82f](https://github.com/BlindspotSoftware/dutctl/commit/f7bc82fce3521c02a298758777d1d9946fda04ce)) +* bump golang.org/x/net from 0.52.0 to 0.53.0 ([00f4600](https://github.com/BlindspotSoftware/dutctl/commit/00f4600d8d33ed9dda3395ed98297358af23567f)) +* bump golangci/golangci-lint-action from 8 to 9 ([244cb31](https://github.com/BlindspotSoftware/dutctl/commit/244cb3153fe60f6311163cd0ccb074a93a37c707)) +* bump google.golang.org/protobuf from 1.36.10 to 1.36.11 ([4739d6b](https://github.com/BlindspotSoftware/dutctl/commit/4739d6b4f3e0b1c1739d0e67662aa8ff09c2b560)) +* bump google.golang.org/protobuf from 1.36.6 to 1.36.10 ([e49cc65](https://github.com/BlindspotSoftware/dutctl/commit/e49cc6559ee3084f4aaf2093654044f96bf71e88)) +* bump googleapis/release-please-action from 4 to 5 ([39a9a60](https://github.com/BlindspotSoftware/dutctl/commit/39a9a6034f722bee76510dc5116666ba1c369535)) +* centralise command query logic into Command methods ([8175951](https://github.com/BlindspotSoftware/dutctl/commit/8175951389159d91d302958ee420ca5826b08979)) +* change naming of dutagent config items ([f795b4c](https://github.com/BlindspotSoftware/dutctl/commit/f795b4cb3e45a48372265af8d6c28bb043693d32)) +* cover dutagent/states ([b7ea4c4](https://github.com/BlindspotSoftware/dutctl/commit/b7ea4c4fe19648cf6214c8f32f9dad9a8103c90b)) +* defer moduleErrCh channel init to FSM execution state ([4c01fd0](https://github.com/BlindspotSoftware/dutctl/commit/4c01fd04a705626201846e7d3b8062e07bd5e562)) +* dutctl output formatter ([923f673](https://github.com/BlindspotSoftware/dutctl/commit/923f673ad62424d6aabc0833dc76f8a918a40705)) +* early ctx cancellation in Run RPC ([7638b3b](https://github.com/BlindspotSoftware/dutctl/commit/7638b3ba86322400dda98e00a3f52668ae5ff65b)) +* fix flaky TestWaitModules by resolving race condition ([b98a7e3](https://github.com/BlindspotSoftware/dutctl/commit/b98a7e3c5e91e928540efd1eae0576fad8b70f3d)) +* fix typo and improve logging in rpc handler ([53cac3a](https://github.com/BlindspotSoftware/dutctl/commit/53cac3a14cf7fb2d3acd5747ffbcdb567d4244be)) +* group dutagent FSM states in own file ([f1014a4](https://github.com/BlindspotSoftware/dutctl/commit/f1014a4cca351d65338f7d0b1485d99d264d2d5e)) +* improve default output of dutctl ([46817ce](https://github.com/BlindspotSoftware/dutctl/commit/46817ce15923363133216170ab1d2b5b92af6199)) +* make main module optional for commands ([2af85e7](https://github.com/BlindspotSoftware/dutctl/commit/2af85e79e7a108a2aee5ff26afce8171ff5c981f)) +* modules use session.Print/f/ln functions ([a5acb8f](https://github.com/BlindspotSoftware/dutctl/commit/a5acb8fca7a7499bbc7af76c03e47ad63e791c19)) +* remove check if filepath on dutctl matches with args ([9f625a4](https://github.com/BlindspotSoftware/dutctl/commit/9f625a41a4fe4c28300fc8ff886e9bfe4b5abaa3)) +* rename "main module" to "passthrough" ([cdfeb52](https://github.com/BlindspotSoftware/dutctl/commit/cdfeb527ed5d86b59e7108df6ff6d3800b07476a)) +* replace deprecated h2c package with net/http Protocols ([a85e0da](https://github.com/BlindspotSoftware/dutctl/commit/a85e0da9ba6a9914687847e19c6a73540bafb79c)) +* resolve busy waiting in waitModules loop ([13b2ef7](https://github.com/BlindspotSoftware/dutctl/commit/13b2ef75ea3d111019c80da3ad259faf8de70f84)) +* send/receive synchronization in dutclient ([6f900f2](https://github.com/BlindspotSoftware/dutctl/commit/6f900f28bc6ebe01393a5972acdcfbf63aa27ba8)) +* tune .gitignore ([4e9c943](https://github.com/BlindspotSoftware/dutctl/commit/4e9c94318d254e20a45278012c6c0831e62a16fd)) +* unify broker and module channels to error-only pattern ([84e39d1](https://github.com/BlindspotSoftware/dutctl/commit/84e39d13f64aa4e7d11e4430168ad5e129925852)) +* update signoff signature in release-please-config ([bae6d59](https://github.com/BlindspotSoftware/dutctl/commit/bae6d599315d2bdf5764dc3a568e3b1d4d4916b6)) +* use constants for flag usage strings ([ceb0bf6](https://github.com/BlindspotSoftware/dutctl/commit/ceb0bf68656752b7bee4139b33748e203364eca9)) +* use dutagent.Stream as project wide RPC stream abstraction ([7c0fa17](https://github.com/BlindspotSoftware/dutctl/commit/7c0fa171608b56220f7617afdc15cbf7662fdf48)) +* use string for config version field ([e8d9c0d](https://github.com/BlindspotSoftware/dutctl/commit/e8d9c0d249cd58873897f803d9bb2bab659b0fee)) + ## [1.0.0-alpha.1](https://github.com/BlindspotSoftware/dutctl/compare/v0.10.0...v1.0.0-alpha.1) (2025-07-27) diff --git a/cmds/exp/contrib/config-1.yaml b/cmds/exp/contrib/config-1.yaml index 1c34e19..bfe27f2 100644 --- a/cmds/exp/contrib/config-1.yaml +++ b/cmds/exp/contrib/config-1.yaml @@ -1,11 +1,10 @@ ---- -version: 1.0.0-alpha.1 # x-release-please-version +version: 2.0.0-alpha.1 devices: device1: - desc: "Device 1" + desc: Device 1 cmds: status: - desc: "Report status" + desc: Report status uses: - module: dummy-status passthrough: true diff --git a/cmds/exp/contrib/config-2.yaml b/cmds/exp/contrib/config-2.yaml index 1728943..772bda7 100644 --- a/cmds/exp/contrib/config-2.yaml +++ b/cmds/exp/contrib/config-2.yaml @@ -1,16 +1,15 @@ ---- -version: 1.0.0-alpha.1 # x-release-please-version +version: 2.0.0-alpha.1 devices: device2: - desc: "Device 2" + desc: Device 2 cmds: status: - desc: "Report status" + desc: Report status uses: - module: dummy-status passthrough: true repeat: - desc: "Repeat input" + desc: Repeat input uses: - module: dummy-repeat passthrough: true diff --git a/contrib/dutagent-cfg-example.yaml b/contrib/dutagent-cfg-example.yaml index df66d23..caa9c81 100644 --- a/contrib/dutagent-cfg-example.yaml +++ b/contrib/dutagent-cfg-example.yaml @@ -1,50 +1,49 @@ ---- -version: 1.0.0-alpha.1 # x-release-please-version +version: 2.0.0-alpha.1 devices: device1: - desc: "Device 1" + desc: Device 1 cmds: status: - desc: "Report status" + desc: Report status uses: - module: dummy-status passthrough: true device2: - desc: "Device 2" + desc: Device 2 cmds: status: - desc: "Report status" + desc: Report status uses: - module: dummy-status args: - foo - bar repeat: - desc: "Repeat input" + desc: Repeat input uses: - module: dummy-repeat passthrough: true device3: - desc: "Device 3" + desc: Device 3 cmds: status: - desc: "Report status" + desc: Report status uses: - module: dummy-status passthrough: true file-transfer: - desc: "Transfer a file" + desc: Transfer a file args: - name: source-file - desc: "Source file path" + desc: Source file path - name: dest-file - desc: "Destination file path" + desc: Destination file path uses: - module: dummy-status args: - transferring - - "${source-file}" + - ${source-file} - module: dummy-ft args: - - "${source-file}" - - "${dest-file}" + - ${source-file} + - ${dest-file} diff --git a/internal/buildinfo/version.go b/internal/buildinfo/version.go index 4cffeb1..5eb28b1 100644 --- a/internal/buildinfo/version.go +++ b/internal/buildinfo/version.go @@ -6,4 +6,4 @@ package buildinfo // Version is the released semantic version of the application. // It is bumped automatically by release-please on every release. -const Version = "1.0.0-alpha.1" // x-release-please-version +const Version = "2.0.0-alpha.1" // x-release-please-version diff --git a/pkg/module/dummy/dummy-example-cfg.yml b/pkg/module/dummy/dummy-example-cfg.yml index c5059ac..57bfd70 100644 --- a/pkg/module/dummy/dummy-example-cfg.yml +++ b/pkg/module/dummy/dummy-example-cfg.yml @@ -1,30 +1,35 @@ ---- -version: 1.0.0-alpha.1 # x-release-please-version +version: 2.0.0-alpha.1 devices: self: - desc: | - This device represents no DUT but the dutagent itself to demonstrate the dummy modules. - The dummy modules showcase different module capabilities such as printing, console interaction + desc: > + This device represents no DUT but the dutagent itself to demonstrate the + dummy modules. + + The dummy modules showcase different module capabilities such as printing, + console interaction + and file transfer. cmds: status: - desc: "Report status information via the dummy-status module" + desc: Report status information via the dummy-status module uses: - module: dummy-status passthrough: true repeat: - desc: "Interactively repeat user input via the dummy-repeat module" + desc: Interactively repeat user input via the dummy-repeat module uses: - module: dummy-repeat passthrough: true file-transfer: - desc: "Transfer a file, process it, and send it back via the dummy-ft module" + desc: Transfer a file, process it, and send it back via the dummy-ft module uses: - module: dummy-ft passthrough: true combined: - desc: | - Demonstrates chaining multiple dummy modules: prints status, transfers a file, + desc: > + Demonstrates chaining multiple dummy modules: prints status, transfers + a file, + and prints status again. uses: - module: dummy-status diff --git a/pkg/module/file/file-example-cfg.yml b/pkg/module/file/file-example-cfg.yml index 14f0b24..ba002d5 100644 --- a/pkg/module/file/file-example-cfg.yml +++ b/pkg/module/file/file-example-cfg.yml @@ -1,64 +1,38 @@ -# Example configuration for the file module -# This file demonstrates various use cases for file transfers between client and dutagent -# $WD is a placeholder of the working directory on both the client and dutagent - -version: 1.0.0-alpha.1 # x-release-please-version +version: 2.0.0-alpha.1 devices: example-device: cmds: - # Upload any file - preserves directory structure upload: - desc: "Upload file to device" + desc: Upload file to device uses: - module: file passthrough: true with: - operation: "upload" - # Usage: - # dutctl example-device upload ./build/firmware.bin - # → uploads to $WD/firmware.bin (preserves structure) - # - # dutctl example-device upload ./firmware.bin:custom/firmware.bin - # → uploads to $WD/custom/firmware.bin (custom destination via colon syntax) - - # Upload with destination configured - arg becomes source + operation: upload upload-script: - desc: "Upload and install a script" + desc: Upload and install a script uses: - module: file passthrough: true with: - operation: "upload" - destination: "/opt/scripts/install.sh" - permission: "0755" # Make it executable - # Usage: - # dutctl example-device upload-script ./scripts/init.sh - # → uploads to: /opt/scripts/install.sh on device - - # Download with source configured - arg becomes destination + operation: upload + destination: /opt/scripts/install.sh + permission: '0755' fetch-logs: - desc: "Download logs from device" + desc: Download logs from device uses: - module: file passthrough: true with: - operation: "download" - source: "/var/log.txt" - # Usage: - # dutctl example-device fetch-logs ./local-log.txt - # → downloads /var/log.txt to ./local-log.txt on client - - # Upload with both paths configured - no arg allowed + operation: download + source: /var/log.txt upload-config: - desc: "Upload configuration file with fixed paths" + desc: Upload configuration file with fixed paths uses: - module: file passthrough: true with: - operation: "upload" - source: "./configs/device.conf" - destination: "/etc/device/device.conf" - permission: "0644" - # Usage: - # dutctl example-device upload-config - # → uploads ./configs/device.conf to /etc/device/device.conf + operation: upload + source: ./configs/device.conf + destination: /etc/device/device.conf + permission: '0644' diff --git a/pkg/module/flash-emulate/flash-emulate-example-cfg.yml b/pkg/module/flash-emulate/flash-emulate-example-cfg.yml index d2b996f..3feb111 100644 --- a/pkg/module/flash-emulate/flash-emulate-example-cfg.yml +++ b/pkg/module/flash-emulate/flash-emulate-example-cfg.yml @@ -1,8 +1,9 @@ ---- -version: 1.0.0-alpha.1 # x-release-please-version +version: 2.0.0-alpha.1 devices: xyz: - desc: "A mainboard that uses a Dediprog EM100Pro-G2 flash emulator during firmware development" + desc: >- + A mainboard that uses a Dediprog EM100Pro-G2 flash emulator during + firmware development cmds: flash-emulate: desc: | @@ -11,6 +12,4 @@ devices: - module: flash-emulate passthrough: true with: - chip: "N25Q256A13" - # tool: "/usr/local/bin/em100" # optional, defaults to em100 - # device: "0" # optional, for multiple emulators + chip: N25Q256A13 diff --git a/pkg/module/flash/flash-example-cfg.yml b/pkg/module/flash/flash-example-cfg.yml index 97ffc32..973b1d2 100644 --- a/pkg/module/flash/flash-example-cfg.yml +++ b/pkg/module/flash/flash-example-cfg.yml @@ -1,8 +1,7 @@ ---- -version: 1.0.0-alpha.1 # x-release-please-version +version: 2.0.0-alpha.1 devices: xyz: - desc: "A mainboard that needs to be flashed during firmware development" + desc: A mainboard that needs to be flashed during firmware development cmds: flash: desc: | @@ -11,5 +10,5 @@ devices: - module: flash passthrough: true with: - tool: "/usr/sbin/flashprog" - programmer: "dediprog" + tool: /usr/sbin/flashprog + programmer: dediprog diff --git a/pkg/module/gpio/gpio-example-cfg.yml b/pkg/module/gpio/gpio-example-cfg.yml index f0241fc..b76b9f5 100644 --- a/pkg/module/gpio/gpio-example-cfg.yml +++ b/pkg/module/gpio/gpio-example-cfg.yml @@ -1,18 +1,17 @@ ---- -version: 1.0.0-alpha.1 # x-release-please-version +version: 2.0.0-alpha.1 devices: rocket: - desc: "A rocket that can be fired" + desc: A rocket that can be fired cmds: fire: - desc: "Push the big red button" + desc: Push the big red button uses: - module: gpio-button passthrough: true with: pin: 9 reset: - desc: "Reset the rocket" + desc: Reset the rocket uses: - module: gpio-button passthrough: true @@ -20,10 +19,10 @@ devices: pin: 10 activelow: true light: - desc: "Turn on the light" + desc: Turn on the light uses: - module: gpio-switch passthrough: true with: pin: 11 - initial: on + initial: 'on' diff --git a/pkg/module/ipmi/ipmi-example-cfg.yml b/pkg/module/ipmi/ipmi-example-cfg.yml index 9414a3c..b88c442 100644 --- a/pkg/module/ipmi/ipmi-example-cfg.yml +++ b/pkg/module/ipmi/ipmi-example-cfg.yml @@ -1,10 +1,10 @@ -version: 1.0.0-alpha.1 # x-release-please-version +version: 2.0.0-alpha.1 devices: fancy-server: - desc: "A server with IPMI-managed power control" + desc: A server with IPMI-managed power control cmds: power: - desc: "Power on the server using IPMI" + desc: Power on the server using IPMI uses: - module: ipmi with: diff --git a/pkg/module/pdu/pdu-example-cfg.yml b/pkg/module/pdu/pdu-example-cfg.yml index 56a3aa1..8cfb443 100644 --- a/pkg/module/pdu/pdu-example-cfg.yml +++ b/pkg/module/pdu/pdu-example-cfg.yml @@ -1,10 +1,10 @@ -version: 1.0.0-alpha.1 # x-release-please-version +version: 2.0.0-alpha.1 devices: fancy-server: - desc: "A server with power control via PDU" + desc: A server with power control via PDU cmds: power-on: - desc: "Turn the power ON via PDU" + desc: Turn the power ON via PDU uses: - module: pdu passthrough: true diff --git a/pkg/module/serial/serial-example-cfg.yml b/pkg/module/serial/serial-example-cfg.yml index 8b96e76..00c4194 100644 --- a/pkg/module/serial/serial-example-cfg.yml +++ b/pkg/module/serial/serial-example-cfg.yml @@ -1,7 +1,7 @@ -version: 1.0.0-alpha.1 # x-release-please-version +version: 2.0.0-alpha.1 devices: server: - desc: "A server that needs to be observed during boot" + desc: A server that needs to be observed during boot cmds: serial: desc: | @@ -14,4 +14,4 @@ devices: with: port: /tmp/ttyS0 baud: 115200 - delay: 50ms # optional: pause before each send (default 50ms; "0s" disables) + delay: 50ms diff --git a/pkg/module/shell/shell-example-cfg.yml b/pkg/module/shell/shell-example-cfg.yml index d5baff3..4c95b1d 100644 --- a/pkg/module/shell/shell-example-cfg.yml +++ b/pkg/module/shell/shell-example-cfg.yml @@ -1,22 +1,30 @@ ---- -version: 1.0.0-alpha.1 # x-release-please-version +version: 2.0.0-alpha.1 devices: self: - desc: | - This device represents no DUT but the dutagent itself to demonstrate the shell module. - However, the shell module can of corse be used to take actions on the DUT, depending on what the shell command is. + desc: > + This device represents no DUT but the dutagent itself to demonstrate the + shell module. + + However, the shell module can of corse be used to take actions on the DUT, + depending on what the shell command is. cmds: greet: - desc: | - Demonstrates the shell module by writing a greeting to a file, giving the user the chance to edit, - then reading it back and deleting the file. E.g try: dutctl self greet "echo 'Hello World' >> /tmp/shell-test.txt" + desc: > + Demonstrates the shell module by writing a greeting to a file, giving + the user the chance to edit, + + then reading it back and deleting the file. E.g try: dutctl self greet + "echo 'Hello World' >> /tmp/shell-test.txt" uses: - module: shell with: path: bash quiet: true args: - - "echo 'Greetings from the shell module!\n\n' > /tmp/shell-test.txt" + - |- + echo 'Greetings from the shell module! + + ' > /tmp/shell-test.txt - module: shell passthrough: true - module: shell @@ -24,9 +32,9 @@ devices: path: sh quiet: true args: - - "ls /tmp/shell-test.txt" + - ls /tmp/shell-test.txt - module: shell with: path: /bin/bash args: - - "cat /tmp/shell-test.txt && rm -f /tmp/shell-test.txt" + - cat /tmp/shell-test.txt && rm -f /tmp/shell-test.txt diff --git a/pkg/module/ssh/ssh-example-cfg.yml b/pkg/module/ssh/ssh-example-cfg.yml index 872c3a8..63990db 100644 --- a/pkg/module/ssh/ssh-example-cfg.yml +++ b/pkg/module/ssh/ssh-example-cfg.yml @@ -1,14 +1,18 @@ ---- -version: 1.0.0-alpha.1 # x-release-please-version +version: 2.0.0-alpha.1 devices: laptop: - desc: "A laptop computer" + desc: A laptop computer cmds: ssh: - desc: | - "Basic demo of the SSH module: Use SSH as the passthrough module to connect - to the DUT. The SSH module is used to connect from the dutagent to the DUT - and execute commands that are passed to the module from the dutctl client. + desc: > + "Basic demo of the SSH module: Use SSH as the passthrough module to + connect + + to the DUT. The SSH module is used to connect from the dutagent to the + DUT + + and execute commands that are passed to the module from the dutctl + client. uses: - module: ssh passthrough: true diff --git a/pkg/module/time/time-example-cfg.yml b/pkg/module/time/time-example-cfg.yml index 41a8831..02efd6f 100644 --- a/pkg/module/time/time-example-cfg.yml +++ b/pkg/module/time/time-example-cfg.yml @@ -1,11 +1,10 @@ ---- -version: 1.0.0-alpha.1 # x-release-please-version +version: 2.0.0-alpha.1 devices: self: - desc: "This device represents no DUT but the dutagent itself" + desc: This device represents no DUT but the dutagent itself cmds: system-double-check: - desc: "Report status twice" + desc: Report status twice uses: - module: agent-status passthrough: true @@ -14,6 +13,6 @@ devices: duration: 2s - module: agent-status just-wait: - desc: "Do nothing and finish after the provided amount of time" + desc: Do nothing and finish after the provided amount of time uses: - module: time-wait diff --git a/pkg/module/wifisocket/wifisocket-example-cfg.yml b/pkg/module/wifisocket/wifisocket-example-cfg.yml index 10d62df..5826a70 100644 --- a/pkg/module/wifisocket/wifisocket-example-cfg.yml +++ b/pkg/module/wifisocket/wifisocket-example-cfg.yml @@ -1,15 +1,15 @@ -version: 1.0.0-alpha.1 # x-release-please-version +version: 2.0.0-alpha.1 devices: nous-a1t: - desc: "Device powered via Tasmota NOUS A1T WiFi socket" + desc: Device powered via Tasmota NOUS A1T WiFi socket cmds: power: - desc: "Control the power via WiFi socket" + desc: Control the power via WiFi socket uses: - module: wifisocket passthrough: true with: host: http://192.168.1.60 - user: "user" - password: "password" + user: user + password: password channel: 1