diff --git a/Cargo.lock b/Cargo.lock index 480ee28..d7bb1a9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -204,15 +204,6 @@ dependencies = [ "syn", ] -[[package]] -name = "addr2line" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7a2e47a1fbe209ee101dd6d61285226744c6c8d3c21c8dc878ba6cb9f467f3a" -dependencies = [ - "gimli", -] - [[package]] name = "adler" version = "0.2.3" @@ -239,6 +230,17 @@ dependencies = [ "memchr", ] +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + [[package]] name = "autocfg" version = "1.0.1" @@ -269,21 +271,6 @@ dependencies = [ "serde_urlencoded", ] -[[package]] -name = "backtrace" -version = "0.3.59" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4717cfcbfaa661a0fd48f8453951837ae7e8f81e481fbb136e3202d72805a744" -dependencies = [ - "addr2line", - "cc", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", -] - [[package]] name = "base-x" version = "0.2.8" @@ -365,30 +352,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] -name = "color-eyre" -version = "0.6.1" +name = "clap" +version = "3.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ebf286c900a6d5867aeff75cfee3192857bb7f24b547d4f0df2ed6baa812c90" +checksum = "190814073e85d238f31ff738fcb0bf6910cedeb73376c87cd69291028966fd83" dependencies = [ - "backtrace", - "color-spantrace", - "eyre", - "indenter", - "once_cell", - "owo-colors", - "tracing-error", + "atty", + "bitflags", + "clap_lex", + "indexmap", + "strsim", + "termcolor", + "textwrap", ] [[package]] -name = "color-spantrace" -version = "0.2.0" +name = "clap_lex" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ba75b3d9449ecdccb27ecbc479fdc0b87fa2dd43d2f8298f9bf0e59aacc8dce" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" dependencies = [ - "once_cell", - "owo-colors", - "tracing-core", - "tracing-error", + "os_str_bytes", ] [[package]] @@ -480,16 +464,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "eyre" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c2b6b5a29c02cdc822728b7d7b8ae1bab3e3b05d44522770ddd49722eeac7eb" -dependencies = [ - "indenter", - "once_cell", -] - [[package]] name = "flate2" version = "1.0.20" @@ -594,12 +568,6 @@ dependencies = [ "wasi", ] -[[package]] -name = "gimli" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4075386626662786ddb0ec9081e7c7eeb1ba31951f447ca780ef9f5d568189" - [[package]] name = "h2" version = "0.3.0" @@ -716,12 +684,6 @@ dependencies = [ "unicode-normalization", ] -[[package]] -name = "indenter" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" - [[package]] name = "indexmap" version = "1.6.1" @@ -886,12 +848,6 @@ dependencies = [ "libc", ] -[[package]] -name = "object" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5b3dd1c072ee7963717671d1ca129f1048fda25edea6b752bfc71ac8854170" - [[package]] name = "once_cell" version = "1.13.0" @@ -938,10 +894,10 @@ dependencies = [ ] [[package]] -name = "owo-colors" -version = "3.4.0" +name = "os_str_bytes" +version = "6.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "decf7381921fea4dcb2549c5667eda59b3ec297ab7e2b5fc33eac69d2e7da87b" +checksum = "21326818e99cfe6ce1e524c2a805c189a99b5ae555a35d19f9a284b427d86afa" [[package]] name = "parking_lot" @@ -1177,16 +1133,10 @@ name = "rust-cache" version = "0.1.0" dependencies = [ "actix-web", - "color-eyre", + "clap", "reqwest", ] -[[package]] -name = "rustc-demangle" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" - [[package]] name = "rustc_version" version = "0.2.3" @@ -1318,15 +1268,6 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" -[[package]] -name = "sharded-slab" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" -dependencies = [ - "lazy_static", -] - [[package]] name = "signal-hook-registry" version = "1.3.0" @@ -1417,6 +1358,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + [[package]] name = "syn" version = "1.0.60" @@ -1442,6 +1389,21 @@ dependencies = [ "winapi", ] +[[package]] +name = "termcolor" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "textwrap" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb" + [[package]] name = "thread_local" version = "1.1.4" @@ -1570,17 +1532,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b7358be39f2f274f322d2aaed611acc57f382e8eb1e5b48cb9ae30933495ce7" dependencies = [ "once_cell", - "valuable", -] - -[[package]] -name = "tracing-error" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d686ec1c0f384b1277f097b2f279a2ecc11afe8c133c1aabf036a27cb4cd206e" -dependencies = [ - "tracing", - "tracing-subscriber", ] [[package]] @@ -1593,17 +1544,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "tracing-subscriber" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a713421342a5a666b7577783721d3117f1b69a393df803ee17bb73b1e122a59" -dependencies = [ - "sharded-slab", - "thread_local", - "tracing-core", -] - [[package]] name = "try-lock" version = "0.2.3" @@ -1652,12 +1592,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - [[package]] name = "vcpkg" version = "0.2.11" @@ -1780,6 +1714,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" diff --git a/Cargo.toml b/Cargo.toml index bf80148..3569a0b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,5 +7,5 @@ edition = "2018" [dev-dependencies] reqwest = "0.11.0" -color-eyre = "0.6" +clap = "3" actix-web = { git = "https://github.com/actix/actix-web.git", rev = "bd26083f333ecf63e3eb444748250364ce124f5e" } diff --git a/dist/restore/index.js b/dist/restore/index.js index 901c94e..1a098a9 100644 --- a/dist/restore/index.js +++ b/dist/restore/index.js @@ -61734,15 +61734,22 @@ async function getLockfileHash() { } return hasher.digest("hex").slice(0, 20); } -async function getPackages() { +async function getPackages(workspacePaths) { const cwd = process.cwd(); - const meta = JSON.parse(await getCmdOutput("cargo", ["metadata", "--all-features", "--format-version", "1"])); - return meta.packages - .filter((p) => !p.manifest_path.startsWith(cwd)) - .map((p) => { - const targets = p.targets.filter((t) => t.kind[0] === "lib").map((t) => t.name); - return { name: p.name, version: p.version, targets, path: external_path_default().dirname(p.manifest_path) }; - }); + let allPackages = []; + for (const workspacePath of workspacePaths) { + process.chdir(workspacePath); + const meta = JSON.parse(await getCmdOutput("cargo", ["metadata", "--all-features", "--format-version", "1"])); + const workspacePackages = meta.packages + .filter((p) => !p.manifest_path.startsWith(cwd)) + .map((p) => { + const targets = p.targets.filter((t) => t.kind[0] === "lib").map((t) => t.name); + return { name: p.name, version: p.version, targets, path: external_path_default().dirname(p.manifest_path) }; + }); + allPackages = allPackages.concat(workspacePackages); + } + process.chdir(cwd); + return allPackages; } async function cleanTarget(targetDir, packages) { await external_fs_default().promises.unlink(external_path_default().join(targetDir, "./.rustc_info.json")); @@ -61840,7 +61847,8 @@ async function run() { core.saveState(stateKey, restoreKey); if (restoreKey !== key) { // pre-clean the target directory on cache mismatch - const packages = await getPackages(); + const packages = await getPackages(workspaces); + core.info("Restoring the following repository packages: " + JSON.stringify(packages)); for (const workspace of workspaces) { const target = external_path_default().join(workspace, "target"); await cleanTarget(target, packages); diff --git a/dist/save/index.js b/dist/save/index.js index 0fbf3f5..ce035ac 100644 --- a/dist/save/index.js +++ b/dist/save/index.js @@ -61734,15 +61734,22 @@ async function getLockfileHash() { } return hasher.digest("hex").slice(0, 20); } -async function getPackages() { +async function getPackages(workspacePaths) { const cwd = process.cwd(); - const meta = JSON.parse(await getCmdOutput("cargo", ["metadata", "--all-features", "--format-version", "1"])); - return meta.packages - .filter((p) => !p.manifest_path.startsWith(cwd)) - .map((p) => { - const targets = p.targets.filter((t) => t.kind[0] === "lib").map((t) => t.name); - return { name: p.name, version: p.version, targets, path: external_path_default().dirname(p.manifest_path) }; - }); + let allPackages = []; + for (const workspacePath of workspacePaths) { + process.chdir(workspacePath); + const meta = JSON.parse(await getCmdOutput("cargo", ["metadata", "--all-features", "--format-version", "1"])); + const workspacePackages = meta.packages + .filter((p) => !p.manifest_path.startsWith(cwd)) + .map((p) => { + const targets = p.targets.filter((t) => t.kind[0] === "lib").map((t) => t.name); + return { name: p.name, version: p.version, targets, path: external_path_default().dirname(p.manifest_path) }; + }); + allPackages = allPackages.concat(workspacePackages); + } + process.chdir(cwd); + return allPackages; } async function cleanTarget(targetDir, packages) { await external_fs_default().promises.unlink(external_path_default().join(targetDir, "./.rustc_info.json")); @@ -61833,7 +61840,8 @@ async function run() { // TODO: remove this once https://github.com/actions/toolkit/pull/553 lands await macOsWorkaround(); const registryName = await getRegistryName(); - const packages = await getPackages(); + const packages = await getPackages(workspaces); + core.info("Detected repository packages to cache: " + JSON.stringify(packages)); if (registryName) { try { await cleanRegistry(registryName, packages);