Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added prefix-key cache-directories and cache-targets options #85

Merged
merged 4 commits into from Oct 18, 2022
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
22 changes: 17 additions & 5 deletions README.md
Expand Up @@ -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.
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this now repeats "stable over multiple jobs" / "stable across jobs"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I will just mirror what is in action.yml

# 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"
mkatychev marked this conversation as resolved.
Show resolved Hide resolved
cache-targets: ""

# Determines if the cache should be saved even when the workflow has failed.
# Default: "false"
cache-on-failure: ""
Expand Down
11 changes: 11 additions & 0 deletions action.yml
Expand Up @@ -2,6 +2,10 @@ name: "Rust Cache"
description: "A GitHub Action that implements smart caching for rust/cargo projects with sensible defaults."
author: "Arpad Borsos <swatinem@swatinem.de>"
inputs:
prefix-key:
description: "The prefix cache key, this can be changed to start a new cache manually"
required: false
default: "v0-rust"
shared-key:
description: "An additional cache key that is stable over multiple jobs"
required: false
Expand All @@ -14,6 +18,13 @@ inputs:
workspaces:
description: "Paths to multiple Cargo workspaces and their target directories, separated by newlines"
required: false
cache-directories:
description: "Additional non workspace directories, separated by newlines"
required: false
cache-targets:
description: "Determines whether workspace targets are cached"
required: false
default: "true"
cache-on-failure:
description: "Cache even if the build fails. Defaults to false"
required: false
Expand Down
12 changes: 10 additions & 2 deletions dist/restore/index.js
Expand Up @@ -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}`;
Expand Down Expand Up @@ -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() {
Expand Down
12 changes: 10 additions & 2 deletions dist/save/index.js
Expand Up @@ -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}`;
Expand Down Expand Up @@ -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() {
Expand Down
13 changes: 11 additions & 2 deletions src/config.ts
Expand Up @@ -50,7 +50,7 @@ export class CacheConfig {
// 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) {
Expand Down Expand Up @@ -154,7 +154,16 @@ export class CacheConfig {
}
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;
}
Expand Down