2 Commits

Author SHA1 Message Date
Arpad Borsos
bd4d2a7017 1.0.2 2020-09-29 12:30:45 +02:00
Arpad Borsos
d38127a85b Improve target pruning
fixes #1
2020-09-29 12:30:19 +02:00
5 changed files with 44 additions and 9 deletions

View File

@@ -1,5 +1,9 @@
# Changelog
## 1.0.2
- Dont prune targets that have a different name from the crate, but do prune targets from the workspace.
## 1.0.1
- Improved logging output.

16
dist/save/index.js vendored
View File

@@ -54793,8 +54793,14 @@ async function getIndexRef(registryName) {
return (await getCmdOutput("git", ["rev-parse", "--short", "origin/master"], { cwd })).trim();
}
async function getPackages() {
const cwd = process.cwd();
const meta = JSON.parse(await getCmdOutput("cargo", ["metadata", "--all-features", "--format-version", "1"]));
return meta.packages.map(({ name, version }) => ({ name, version }));
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 };
});
}
async function pruneRegistryCache(registryName, packages) {
var e_1, _a;
@@ -54846,8 +54852,12 @@ async function pruneTarget(packages) {
await rmExcept("./target/debug/build", keepPkg);
await rmExcept("./target/debug/.fingerprint", keepPkg);
const keepDeps = new Set(packages.flatMap((p) => {
const name = p.name.replace(/-/g, "_");
return [name, `lib${name}`];
const names = [];
for (const n of [p.name, ...p.targets]) {
const name = n.replace(/-/g, "_");
names.push(name, `lib${name}`);
}
return names;
}));
await rmExcept("./target/debug/deps", keepDeps);
}

2
package-lock.json generated
View File

@@ -1,6 +1,6 @@
{
"name": "rust-cache",
"version": "1.0.1",
"version": "1.0.2",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@@ -1,7 +1,7 @@
{
"private": true,
"name": "rust-cache",
"version": "1.0.1",
"version": "1.0.2",
"description": "A GitHub Action that implements smart caching for rust/cargo projects",
"keywords": [
"actions",

View File

@@ -68,13 +68,30 @@ async function getIndexRef(registryName: string) {
interface PackageDefinition {
name: string;
version: string;
targets: Array<string>;
}
type Packages = Array<PackageDefinition>;
interface Meta {
packages: Array<{
name: string;
version: string;
manifest_path: string;
targets: Array<{ kind: Array<string>; name: string }>;
}>;
}
async function getPackages(): Promise<Packages> {
const meta = JSON.parse(await getCmdOutput("cargo", ["metadata", "--all-features", "--format-version", "1"]));
return meta.packages.map(({ name, version }: any) => ({ name, version }));
const cwd = process.cwd();
const meta: 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 };
});
}
async function pruneRegistryCache(registryName: string, packages: Packages) {
@@ -111,8 +128,12 @@ async function pruneTarget(packages: Packages) {
const keepDeps = new Set(
packages.flatMap((p) => {
const name = p.name.replace(/-/g, "_");
return [name, `lib${name}`];
const names = [];
for (const n of [p.name, ...p.targets]) {
const name = n.replace(/-/g, "_");
names.push(name, `lib${name}`);
}
return names;
}),
);
await rmExcept("./target/debug/deps", keepDeps);