GitHub - unisonweb/actions: Github Actions and Workflows

@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.