diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0fefbd4..ed747e1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -93,3 +93,32 @@ jobs: echo "does not match" exit 1 fi + call: + runs-on: "ubuntu-latest" + steps: + - uses: actions/checkout@v4 + - name: "Test call" + id: test-call + uses: ./ + with: + module: github.com/shykes/daggerverse/hello@v0.3.0 + call: hello + - name: "Test call (check)" + run: | + target='${{ steps.test-call.outputs.output }}' + if [[ "$target" == "hello, world!" ]]; then + echo "matches" + exit 0 + else + echo "does not match" + exit 1 + fi + nocall: + runs-on: "ubuntu-latest" + steps: + - uses: actions/checkout@v4 + - name: "Only Install" + uses: ./ + - name: "Test Install" + run: | + dagger core version diff --git a/README.md b/README.md index 1396e5a..5684c48 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,8 @@ - name: Hello uses: dagger/dagger-for-github@v6 with: - verb: call module: github.com/shykes/daggerverse/hello - args: hello --greeting Hola --name Jeremy + call: hello --greeting Hola --name Jeremy cloud-token: ${{ secrets.DAGGER_CLOUD_TOKEN }} ``` @@ -43,4 +42,5 @@ By setting the version to `latest`, this action will install the latest version | `cloud-token` | Dagger Cloud Token | false | '' | | `module` | Dagger module to call. Local or Git | false | '' | | `args` | Arguments to pass to CLI | false | '' | +| `call` | Arguments to pass to CLI (Alias for args) | false | '' | | `engine-stop` | Whether to stop the Dagger Engine after this run | false | 'true' | diff --git a/action.yml b/action.yml index 6b456fc..e72c852 100644 --- a/action.yml +++ b/action.yml @@ -37,6 +37,10 @@ inputs: description: "Whether to stop the Dagger Engine after this run" required: false default: "true" + call: + description: "Function and arguments for dagger call" + required: false + default: "" outputs: output: description: "Job output" @@ -70,22 +74,25 @@ runs: | BIN_DIR=${prefix_dir}/bin DAGGER_VERSION="$VERSION" DAGGER_COMMIT="$COMMIT" sh - id: exec + if: inputs.call != '' || inputs.args != '' shell: bash env: INPUT_MODULE: ${{ inputs.module }} run: | tmpout=$(mktemp) + ARGS="${{ inputs.args }}" + ARGS="${ARGS:-"${{ inputs.call }}"}" cd ${{ inputs.workdir }} && { \ DAGGER_CLOUD_TOKEN=${{ inputs.cloud-token }} \ dagger \ ${{ inputs.dagger-flags }} \ ${{ inputs.verb }} \ ${INPUT_MODULE:+-m $INPUT_MODULE} \ - ${{ inputs.args }}; } | tee "${tmpout}" + $ARGS; } | tee "${tmpout}" (echo -n "stdout=" && cat "${tmpout}") >> "$GITHUB_OUTPUT" - - if: inputs.engine-stop == 'true' + - if: (inputs.call != '' || inputs.args != '') && inputs.engine-stop == 'true' shell: bash run: | mapfile -t containers < <(docker ps --filter name="dagger-engine-*" -q)