diff --git a/README.md b/README.md index 0646385..2e077c1 100644 --- a/README.md +++ b/README.md @@ -14,30 +14,42 @@ sensible defaults. - uses: Swatinem/rust-cache@v2 with: - # An explicit cache key that is used instead of the automatic `job`-based + # The prefix cache key, this can be changed to start a new cache manually + # default: "v0-rust" + prefix-key: "" + + # An additional cache key that is stable over multiple jobs + # that is used instead of the automatic `job`-based # cache key and is thus stable across jobs. - # Default: empty + # default: empty shared-key: "" # An additional cache key that is added alongside the automatic `job`-based # cache key and can be used to further differentiate jobs. - # Default: empty + # default: empty key: "" # A whitespace separated list of env-var *prefixes* who's value contributes # to the environment cache key. # The env-vars are matched by *prefix*, so the default `RUST` var will # match all of `RUSTC`, `RUSTUP_*`, `RUSTFLAGS`, `RUSTDOC_*`, etc. - # Default: "CARGO CC CFLAGS CXX CMAKE RUST" + # default: "CARGO CC CFLAGS CXX CMAKE RUST" env-vars: "" # The cargo workspaces and target directory configuration. # These entries are separated by newlines and have the form # `$workspace -> $target`. The `$target` part is treated as a directory # relative to the `$workspace` and defaults to "target" if not explicitly given. - # Default: ". -> target" + # default: ". -> target" workspaces: "" + # Additional non workspace directories, separated by newlines + cache-directories: "" + + # Determines whether workspace targets are cached + # default: "false" + cache-targets: "" + # Determines if the cache should be saved even when the workflow has failed. # Default: "false" cache-on-failure: "" diff --git a/dist/restore/index.js b/dist/restore/index.js index 0012890..d3965db 100644 --- a/dist/restore/index.js +++ b/dist/restore/index.js @@ -64545,7 +64545,7 @@ class CacheConfig { // Construct key prefix: // This uses either the `shared-key` input, // or the `key` input combined with the `job` key. - let key = `v0-rust`; + let key = lib_core.getInput("prefix-key"); const sharedKey = lib_core.getInput("shared-key"); if (sharedKey) { key += `-${sharedKey}`; @@ -64630,7 +64630,15 @@ class CacheConfig { workspaces.push(new Workspace(root, target)); } self.workspaces = workspaces; - self.cachePaths = [config_CARGO_HOME, ...workspaces.map((ws) => ws.target)]; + self.cachePaths = [config_CARGO_HOME]; + const cacheTargets = lib_core.getInput("cache-targets").toLowerCase(); + if (cacheTargets === "true") { + self.cachePaths.push(...workspaces.map((ws) => ws.target)); + } + const cacheDirectories = lib_core.getInput("cache-directories"); + for (const dir of cacheDirectories.trim().split("\n")) { + self.cachePaths.push(dir); + } return self; } printInfo() { diff --git a/dist/save/index.js b/dist/save/index.js index c2802aa..3d7ab4d 100644 --- a/dist/save/index.js +++ b/dist/save/index.js @@ -64545,7 +64545,7 @@ class CacheConfig { // Construct key prefix: // This uses either the `shared-key` input, // or the `key` input combined with the `job` key. - let key = `v0-rust`; + let key = core.getInput("prefix-key"); const sharedKey = core.getInput("shared-key"); if (sharedKey) { key += `-${sharedKey}`; @@ -64630,7 +64630,15 @@ class CacheConfig { workspaces.push(new Workspace(root, target)); } self.workspaces = workspaces; - self.cachePaths = [CARGO_HOME, ...workspaces.map((ws) => ws.target)]; + self.cachePaths = [CARGO_HOME]; + const cacheTargets = core.getInput("cache-targets").toLowerCase(); + if (cacheTargets === "true") { + self.cachePaths.push(...workspaces.map((ws) => ws.target)); + } + const cacheDirectories = core.getInput("cache-directories"); + for (const dir of cacheDirectories.trim().split("\n")) { + self.cachePaths.push(dir); + } return self; } printInfo() {