Clean target dir.

This commit is contained in:
Miles Johnson 2023-04-17 18:50:22 -07:00
parent 8e43d3720d
commit c8e2a54937
2 changed files with 51 additions and 16 deletions

View file

@ -6,12 +6,14 @@ import * as cache from '@actions/cache';
import * as core from '@actions/core';
import * as exec from '@actions/exec';
import * as glob from '@actions/glob';
import * as io from '@actions/io';
import * as tc from '@actions/tool-cache';
import { rmrf } from './fs';
import { RUST_HASH, RUST_VERSION } from './rust';
export const CARGO_HOME = process.env.CARGO_HOME ?? path.join(os.homedir(), '.cargo');
export const WORKSPACE_ROOT = process.env.GITHUB_WORKSPACE ?? process.cwd();
export const CACHE_ENABLED = core.getBooleanInput('cache') || cache.isFeatureAvailable();
export async function downloadAndInstallBinstall(binDir: string) {
@ -87,7 +89,7 @@ export function getCachePaths(): string[] {
// ~/.cargo/registry
path.join(CARGO_HOME, 'registry'),
// /workspace/target/debug
path.join(process.env.GITHUB_WORKSPACE ?? process.cwd(), 'target/debug'),
path.join(WORKSPACE_ROOT, 'target/debug'),
];
}
@ -122,7 +124,7 @@ export async function getPrimaryCacheKey() {
}
export async function cleanCargoRegistry() {
core.info('Cleaning cache before saving');
core.info('Cleaning ~/.cargo before saving');
const registryDir = path.join(CARGO_HOME, 'registry');
@ -133,25 +135,46 @@ export async function cleanCargoRegistry() {
const indexDir = path.join(registryDir, 'index');
if (fs.existsSync(indexDir)) {
for (const index of fs.readdirSync(indexDir)) {
await Promise.all(
fs.readdirSync(indexDir).map(async (index) => {
if (fs.existsSync(path.join(indexDir, index, '.git'))) {
const dir = path.join(indexDir, index, '.cache');
core.debug(`Deleting ${dir}`);
try {
// eslint-disable-next-line no-await-in-loop
await io.rmRF(dir);
} catch (error: unknown) {
core.warning(`Failed to delete ${dir}: ${error}`);
}
}
await rmrf(path.join(indexDir, index, '.cache'));
}
}),
);
}
// .cargo/registry/cache - Do nothing?
}
// https://doc.rust-lang.org/cargo/guide/build-cache.html
export async function cleanTargetProfile() {
core.info('Cleaning target/debug before saving');
const targetDir = path.join(WORKSPACE_ROOT, 'target/debug');
// target/debug/{examples,incremental} - Not required in CI
core.info('Removing examples and incremental directories');
await Promise.all(
['examples', 'incremental'].map(async (dirName) => {
const dir = path.join(targetDir, dirName);
if (fs.existsSync(dir)) {
await rmrf(dir);
}
}),
);
// target/debug/**/*.d - Dep info files for build systems, not required in CI
core.info('Removing depinfo files (*.d)');
const globber = await glob.create(path.join(targetDir, '**/*.d'));
const files = await globber.glob();
await Promise.all(files.map(rmrf));
}
export async function saveCache() {
if (!CACHE_ENABLED) {
return;

12
src/fs.ts Normal file
View file

@ -0,0 +1,12 @@
import * as core from '@actions/core';
import * as io from '@actions/io';
export async function rmrf(dir: string) {
core.debug(`Deleting ${dir}`);
try {
await io.rmRF(dir);
} catch (error: unknown) {
core.warning(`Failed to delete ${dir}: ${error}`);
}
}