diff --git a/README.md b/README.md new file mode 100644 index 0000000..565a9c6 --- /dev/null +++ b/README.md @@ -0,0 +1,66 @@ +## @unisonweb/actions/stack/install +Installs `stack` and adds it to the path. + +Example usage: +``` +steps: + - uses: unisonweb/actions/stack/install@main + with: + version: 2.9.1 +``` +`version` is optional. + +## @unisonweb/actions/stack/cache/restore +Restore the global and local stack work directories from a cache + +Example usage: +``` +steps: + - name: restore stack caches + id: restore-stack-caches + uses: unisonweb/actions/stack/cache/restore@main + with: + cache-prefix: ci + + - name: check result + if: steps.restore-stack-caches.outputs.cache-hit == 'true' + run: echo "Found an exact match!" + shell: bash +``` + +The caches are keyed by the cache prefix, the OS, and the resolver version in your `stack.yaml`, and the contents of your `stack.yaml` and `package.yaml`. + +For a partial hit, only the cache prefix, the OS, and the resolver version must match, so you can use the `cache-prefix` input to distinguish between caches you wouldn't want to use as fallbacks, even if the OS and resolver match. + +### Inputs +`cache-prefix`: The cache prefix to use for `~/.stack`, e.g. "release" or "ci". Required. +`work-cache-prefix`: The cache prefix to use for `**/.stack-work`. Defaults to the same as `cache-prefix`. +`stack-yaml-dir`: The directory to search for `stack.yaml`. Defaults to `"."` +`lookup-only`: If `'true'`, only checks if cache entry exists and skips download. Defaults to `'false'`. Note that due to technical limitations, these are strings, not Booleans. + +### Outputs +`cache-hit`: Whether the `.stack` cache was restored with an exact match. +`work-cache-hit`: `'true'` or `'false'`, whether the `.stack-work` cache was restored with an exact match. Note that due to technical limitations, these are strings, not Booleans. + +## @unisonweb/actions/stack/cache/save +Save the global and local stack work directories to caches. + +Due to a technical limitation, these actions provide independent `restore` and `save` functionality. This is in contrast to the `github/actions/cache` action which automatically saves at the end of a succesful run, whenever there was not an exact cache hit during restore. + +Instead, you have to do this manually: restoring at the start, and saving at the end whenever there was not an exact cache hit during restore. + +Example usage: +``` +steps: + - name: save stack caches + if: steps.restore-stack-caches.outputs.cache-hit != 'true' + uses: unisonweb/actions/stack/cache/save@main + with: + cache-prefix: ci +``` + +### Inputs +`cache-prefix`: The cache prefix to use for `~/.stack`, e.g. "release" or "ci". Required. +`work-cache-prefix`: The cache prefix to use for `**/.stack-work`. Defaults to the same as `cache-prefix`. +`stack-yaml-dir`: The directory to search for `stack.yaml`. Defaults to `"."` +`lookup-only`: If `'true'`, only checks if cache entry exists and skips download. Defaults to `'false'`. Note that due to technical limitations, these are strings, not Booleans. diff --git a/stack/install/action.yaml b/stack/install/action.yaml index f3796fa..29cf783 100644 --- a/stack/install/action.yaml +++ b/stack/install/action.yaml @@ -8,7 +8,7 @@ inputs: stack-version: description: "The version of stack to install, e.g. 2.9.1" required: true - default: "2.9.1" + default: 2.9.1 runs: using: "composite"