Skip to content

Commit 5d37868

Browse files
resolving comments
1 parent de27331 commit 5d37868

File tree

6 files changed

+62
-39
lines changed

6 files changed

+62
-39
lines changed

action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,5 @@ inputs:
3030
runs:
3131
using: 'node12'
3232
main: 'dist/setup/index.js'
33-
post: 'dist/save-cache/index.js'
33+
post: 'dist/cache-save/index.js'
3434
post-if: success()

dist/cache-save/index.js

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39312,16 +39312,16 @@ const getpackageManagerVersion = (packageManager, command) => __awaiter(void 0,
3931239312
}
3931339313
return '2';
3931439314
});
39315-
exports.isPackageManagerCacheSupported = packageManager => {
39316-
const arr = Array.of(...Object.values(constants_1.LockType));
39317-
return arr.includes(packageManager);
39318-
};
39319-
exports.getCacheDirectoryPath = (packageManager) => __awaiter(void 0, void 0, void 0, function* () {
39315+
exports.getPackageManagerInfo = (packageManager) => __awaiter(void 0, void 0, void 0, function* () {
3932039316
let packageManagerInfo;
39317+
const arr = Array.of(...Object.values(constants_1.LockType));
39318+
if (arr.includes(packageManager)) {
39319+
return null;
39320+
}
3932139321
if (packageManager === 'npm') {
3932239322
packageManagerInfo = exports.supportedPackageManagers.npm;
3932339323
}
39324-
else if (packageManager === 'yarn') {
39324+
else {
3932539325
const yarnVersion = yield getpackageManagerVersion('yarn', '--version');
3932639326
if (yarnVersion.startsWith('1.')) {
3932739327
packageManagerInfo = exports.supportedPackageManagers.yarn1;
@@ -39330,11 +39330,15 @@ exports.getCacheDirectoryPath = (packageManager) => __awaiter(void 0, void 0, vo
3933039330
packageManagerInfo = exports.supportedPackageManagers.yarn2;
3933139331
}
3933239332
}
39333+
return packageManagerInfo;
39334+
});
39335+
exports.getCacheDirectoryPath = (packageManagerInfo) => __awaiter(void 0, void 0, void 0, function* () {
3933339336
const stdOut = yield getCommandOutput(packageManagerInfo.getCacheFolderCommand);
39337+
const packageManager = Object.keys(packageManagerInfo)[0];
3933439338
if (!stdOut) {
3933539339
throw new Error(`Could not get cache folder path for ${packageManager}`);
3933639340
}
39337-
return { supportedPackageManager: packageManagerInfo, cachePath: stdOut };
39341+
return stdOut;
3933839342
});
3933939343
// https://github.com/actions/runner/blob/master/src/Misc/expressionFunc/hashFiles/src/hashFiles.ts
3934039344
// replace it, when the issue will be resolved: https://github.com/actions/toolkit/issues/472
@@ -50346,7 +50350,11 @@ function run() {
5034650350
const cachePackages = (packageManager) => __awaiter(void 0, void 0, void 0, function* () {
5034750351
const state = core.getState(constants_1.State.CacheMatchedKey);
5034850352
const primaryKey = core.getState(constants_1.State.CachePrimaryKey);
50349-
const { cachePath } = yield cache_utils_1.getCacheDirectoryPath(packageManager);
50353+
const packageManagerInfo = yield cache_utils_1.getPackageManagerInfo(packageManager);
50354+
if (!packageManagerInfo) {
50355+
throw new Error(`Caching for '${packageManager}'is not supported`);
50356+
}
50357+
const cachePath = yield cache_utils_1.getCacheDirectoryPath(packageManagerInfo);
5035050358
if (primaryKey === state) {
5035150359
core.info(`Cache hit occurred on the primary key ${primaryKey}, not saving cache.`);
5035250360
return;

dist/setup/index.js

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43402,12 +43402,13 @@ const fs_1 = __importDefault(__webpack_require__(747));
4340243402
const constants_1 = __webpack_require__(196);
4340343403
const cache_utils_1 = __webpack_require__(452);
4340443404
exports.restoreCache = (packageManager) => __awaiter(void 0, void 0, void 0, function* () {
43405-
if (!cache_utils_1.isPackageManagerCacheSupported(packageManager)) {
43405+
const packageManagerInfo = yield cache_utils_1.getPackageManagerInfo(packageManager);
43406+
if (!packageManagerInfo) {
4340643407
throw new Error(`Caching for '${packageManager}'is not supported`);
4340743408
}
4340843409
const platform = process.env.RUNNER_OS;
43409-
const { cachePath, supportedPackageManager } = yield cache_utils_1.getCacheDirectoryPath(packageManager);
43410-
const lockFilePath = findLockFile(supportedPackageManager);
43410+
const cachePath = yield cache_utils_1.getCacheDirectoryPath(packageManagerInfo);
43411+
const lockFilePath = findLockFile(packageManagerInfo);
4341143412
const fileHash = yield cache_utils_1.hashFile(lockFilePath);
4341243413
const primaryKey = `${platform}-${packageManager}-${fileHash}`;
4341343414
core.saveState(constants_1.State.CachePrimaryKey, primaryKey);
@@ -44718,16 +44719,16 @@ const getpackageManagerVersion = (packageManager, command) => __awaiter(void 0,
4471844719
}
4471944720
return '2';
4472044721
});
44721-
exports.isPackageManagerCacheSupported = packageManager => {
44722-
const arr = Array.of(...Object.values(constants_1.LockType));
44723-
return arr.includes(packageManager);
44724-
};
44725-
exports.getCacheDirectoryPath = (packageManager) => __awaiter(void 0, void 0, void 0, function* () {
44722+
exports.getPackageManagerInfo = (packageManager) => __awaiter(void 0, void 0, void 0, function* () {
4472644723
let packageManagerInfo;
44724+
const arr = Array.of(...Object.values(constants_1.LockType));
44725+
if (arr.includes(packageManager)) {
44726+
return null;
44727+
}
4472744728
if (packageManager === 'npm') {
4472844729
packageManagerInfo = exports.supportedPackageManagers.npm;
4472944730
}
44730-
else if (packageManager === 'yarn') {
44731+
else {
4473144732
const yarnVersion = yield getpackageManagerVersion('yarn', '--version');
4473244733
if (yarnVersion.startsWith('1.')) {
4473344734
packageManagerInfo = exports.supportedPackageManagers.yarn1;
@@ -44736,11 +44737,15 @@ exports.getCacheDirectoryPath = (packageManager) => __awaiter(void 0, void 0, vo
4473644737
packageManagerInfo = exports.supportedPackageManagers.yarn2;
4473744738
}
4473844739
}
44740+
return packageManagerInfo;
44741+
});
44742+
exports.getCacheDirectoryPath = (packageManagerInfo) => __awaiter(void 0, void 0, void 0, function* () {
4473944743
const stdOut = yield getCommandOutput(packageManagerInfo.getCacheFolderCommand);
44744+
const packageManager = Object.keys(packageManagerInfo)[0];
4474044745
if (!stdOut) {
4474144746
throw new Error(`Could not get cache folder path for ${packageManager}`);
4474244747
}
44743-
return { supportedPackageManager: packageManagerInfo, cachePath: stdOut };
44748+
return stdOut;
4474444749
});
4474544750
// https://github.com/actions/runner/blob/master/src/Misc/expressionFunc/hashFiles/src/hashFiles.ts
4474644751
// replace it, when the issue will be resolved: https://github.com/actions/toolkit/issues/472

src/cache-restore.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,20 @@ import {State, Outputs} from './constants';
77
import {
88
getCacheDirectoryPath,
99
hashFile,
10-
isPackageManagerCacheSupported,
11-
SupportedPackageInfo,
10+
getPackageManagerInfo,
11+
PackageInfo,
1212
supportedPackageManagers
1313
} from './cache-utils';
1414

1515
export const restoreCache = async (packageManager: string) => {
16-
if (!isPackageManagerCacheSupported(packageManager)) {
16+
const packageManagerInfo = await getPackageManagerInfo(packageManager);
17+
if (!packageManagerInfo) {
1718
throw new Error(`Caching for '${packageManager}'is not supported`);
1819
}
1920
const platform = process.env.RUNNER_OS;
20-
const {cachePath, supportedPackageManager} = await getCacheDirectoryPath(
21-
packageManager
22-
);
21+
const cachePath = await getCacheDirectoryPath(packageManagerInfo);
2322

24-
const lockFilePath = findLockFile(supportedPackageManager);
23+
const lockFilePath = findLockFile(packageManagerInfo);
2524
const fileHash = await hashFile(lockFilePath);
2625
const primaryKey = `${platform}-${packageManager}-${fileHash}`;
2726
core.saveState(State.CachePrimaryKey, primaryKey);
@@ -39,7 +38,7 @@ export const restoreCache = async (packageManager: string) => {
3938
core.info(`Cache restored from key: ${cacheKey}`);
4039
};
4140

42-
const findLockFile = (supportedPackageManager: SupportedPackageInfo) => {
41+
const findLockFile = (supportedPackageManager: PackageInfo) => {
4342
let lockFiles = supportedPackageManager.lockFilePatterns;
4443
const workspace = process.env.GITHUB_WORKSPACE!;
4544
const rootContent = fs.readdirSync(workspace);

src/cache-save.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import * as core from '@actions/core';
22
import * as cache from '@actions/cache';
33
import {State} from './constants';
4-
import {getCacheDirectoryPath} from './cache-utils';
4+
import {getCacheDirectoryPath, getPackageManagerInfo} from './cache-utils';
55

66
async function run() {
77
const cacheLock = core.getInput('cache');
@@ -15,8 +15,11 @@ async function run() {
1515
const cachePackages = async (packageManager: string) => {
1616
const state = core.getState(State.CacheMatchedKey);
1717
const primaryKey = core.getState(State.CachePrimaryKey);
18-
19-
const {cachePath} = await getCacheDirectoryPath(packageManager);
18+
const packageManagerInfo = await getPackageManagerInfo(packageManager);
19+
if (!packageManagerInfo) {
20+
throw new Error(`Caching for '${packageManager}'is not supported`);
21+
}
22+
const cachePath = await getCacheDirectoryPath(packageManagerInfo);
2023
if (primaryKey === state) {
2124
core.info(
2225
`Cache hit occurred on the primary key ${primaryKey}, not saving cache.`

src/cache-utils.ts

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ import * as util from 'util';
88
import * as path from 'path';
99

1010
type SupportedPackageManagers = {
11-
[prop: string]: SupportedPackageInfo;
11+
[prop: string]: PackageInfo;
1212
};
1313

14-
export interface SupportedPackageInfo {
14+
export interface PackageInfo {
1515
lockFilePatterns: Array<string>;
1616
getCacheFolderCommand: string;
1717
}
@@ -66,32 +66,40 @@ const getpackageManagerVersion = async (
6666
return '2';
6767
};
6868

69-
export const isPackageManagerCacheSupported = packageManager => {
69+
export const getPackageManagerInfo = async (packageManager: string) => {
70+
let packageManagerInfo: PackageInfo;
7071
const arr = Array.of<string>(...Object.values(LockType));
71-
return arr.includes(packageManager);
72-
};
72+
if (arr.includes(packageManager)) {
73+
return null;
74+
}
7375

74-
export const getCacheDirectoryPath = async (packageManager: string) => {
75-
let packageManagerInfo;
7676
if (packageManager === 'npm') {
7777
packageManagerInfo = supportedPackageManagers.npm;
78-
} else if (packageManager === 'yarn') {
78+
} else {
7979
const yarnVersion = await getpackageManagerVersion('yarn', '--version');
8080
if (yarnVersion.startsWith('1.')) {
8181
packageManagerInfo = supportedPackageManagers.yarn1;
8282
} else {
8383
packageManagerInfo = supportedPackageManagers.yarn2;
8484
}
8585
}
86+
87+
return packageManagerInfo;
88+
};
89+
90+
export const getCacheDirectoryPath = async (
91+
packageManagerInfo: PackageInfo
92+
) => {
8693
const stdOut = await getCommandOutput(
8794
packageManagerInfo.getCacheFolderCommand
8895
);
96+
const packageManager = Object.keys(packageManagerInfo)[0];
8997

9098
if (!stdOut) {
9199
throw new Error(`Could not get cache folder path for ${packageManager}`);
92100
}
93101

94-
return {supportedPackageManager: packageManagerInfo, cachePath: stdOut};
102+
return stdOut;
95103
};
96104

97105
// https://github.com/actions/runner/blob/master/src/Misc/expressionFunc/hashFiles/src/hashFiles.ts

0 commit comments

Comments
 (0)