@actions/cache 3.0.6 → 3.1.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/internal/cacheUtils.d.ts +1 -1
- package/lib/internal/cacheUtils.js +6 -7
- package/lib/internal/cacheUtils.js.map +1 -1
- package/lib/internal/constants.d.ts +8 -0
- package/lib/internal/constants.js +11 -0
- package/lib/internal/constants.js.map +1 -1
- package/lib/internal/tar.js +170 -86
- package/lib/internal/tar.js.map +1 -1
- package/package.json +1 -1
|
@@ -7,6 +7,6 @@ export declare function resolvePaths(patterns: string[]): Promise<string[]>;
|
|
|
7
7
|
export declare function unlinkFile(filePath: fs.PathLike): Promise<void>;
|
|
8
8
|
export declare function getCompressionMethod(): Promise<CompressionMethod>;
|
|
9
9
|
export declare function getCacheFileName(compressionMethod: CompressionMethod): string;
|
|
10
|
-
export declare function
|
|
10
|
+
export declare function getGnuTarPathOnWindows(): Promise<string>;
|
|
11
11
|
export declare function assertDefined<T>(name: string, value?: T): T;
|
|
12
12
|
export declare function isGhes(): boolean;
|
|
@@ -132,10 +132,6 @@ function getVersion(app) {
|
|
|
132
132
|
// Use zstandard if possible to maximize cache performance
|
|
133
133
|
function getCompressionMethod() {
|
|
134
134
|
return __awaiter(this, void 0, void 0, function* () {
|
|
135
|
-
if (process.platform === 'win32' && !(yield isGnuTarInstalled())) {
|
|
136
|
-
// Disable zstd due to bug https://github.com/actions/cache/issues/301
|
|
137
|
-
return constants_1.CompressionMethod.Gzip;
|
|
138
|
-
}
|
|
139
135
|
const versionOutput = yield getVersion('zstd');
|
|
140
136
|
const version = semver.clean(versionOutput);
|
|
141
137
|
if (!versionOutput.toLowerCase().includes('zstd command line interface')) {
|
|
@@ -159,13 +155,16 @@ function getCacheFileName(compressionMethod) {
|
|
|
159
155
|
: constants_1.CacheFilename.Zstd;
|
|
160
156
|
}
|
|
161
157
|
exports.getCacheFileName = getCacheFileName;
|
|
162
|
-
function
|
|
158
|
+
function getGnuTarPathOnWindows() {
|
|
163
159
|
return __awaiter(this, void 0, void 0, function* () {
|
|
160
|
+
if (fs.existsSync(constants_1.GnuTarPathOnWindows)) {
|
|
161
|
+
return constants_1.GnuTarPathOnWindows;
|
|
162
|
+
}
|
|
164
163
|
const versionOutput = yield getVersion('tar');
|
|
165
|
-
return versionOutput.toLowerCase().includes('gnu tar');
|
|
164
|
+
return versionOutput.toLowerCase().includes('gnu tar') ? io.which('tar') : '';
|
|
166
165
|
});
|
|
167
166
|
}
|
|
168
|
-
exports.
|
|
167
|
+
exports.getGnuTarPathOnWindows = getGnuTarPathOnWindows;
|
|
169
168
|
function assertDefined(name, value) {
|
|
170
169
|
if (value === undefined) {
|
|
171
170
|
throw Error(`Expected ${name} but value was undefiend`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cacheUtils.js","sourceRoot":"","sources":["../../src/internal/cacheUtils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAqC;AACrC,oDAAqC;AACrC,oDAAqC;AACrC,gDAAiC;AACjC,uCAAwB;AACxB,2CAA4B;AAC5B,+CAAgC;AAChC,2CAA4B;AAC5B,+BAAiC;AACjC,
|
|
1
|
+
{"version":3,"file":"cacheUtils.js","sourceRoot":"","sources":["../../src/internal/cacheUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,14 @@ export declare enum CompressionMethod {
|
|
|
7
7
|
ZstdWithoutLong = "zstd-without-long",
|
|
8
8
|
Zstd = "zstd"
|
|
9
9
|
}
|
|
10
|
+
export declare enum ArchiveToolType {
|
|
11
|
+
GNU = "gnu",
|
|
12
|
+
BSD = "bsd"
|
|
13
|
+
}
|
|
10
14
|
export declare const DefaultRetryAttempts = 2;
|
|
11
15
|
export declare const DefaultRetryDelay = 5000;
|
|
12
16
|
export declare const SocketTimeout = 5000;
|
|
17
|
+
export declare const GnuTarPathOnWindows: string;
|
|
18
|
+
export declare const SystemTarPathOnWindows: string;
|
|
19
|
+
export declare const TarFilename = "cache.tar";
|
|
20
|
+
export declare const ManifestFilename = "manifest.txt";
|
|
@@ -13,6 +13,11 @@ var CompressionMethod;
|
|
|
13
13
|
CompressionMethod["ZstdWithoutLong"] = "zstd-without-long";
|
|
14
14
|
CompressionMethod["Zstd"] = "zstd";
|
|
15
15
|
})(CompressionMethod = exports.CompressionMethod || (exports.CompressionMethod = {}));
|
|
16
|
+
var ArchiveToolType;
|
|
17
|
+
(function (ArchiveToolType) {
|
|
18
|
+
ArchiveToolType["GNU"] = "gnu";
|
|
19
|
+
ArchiveToolType["BSD"] = "bsd";
|
|
20
|
+
})(ArchiveToolType = exports.ArchiveToolType || (exports.ArchiveToolType = {}));
|
|
16
21
|
// The default number of retry attempts.
|
|
17
22
|
exports.DefaultRetryAttempts = 2;
|
|
18
23
|
// The default delay in milliseconds between retry attempts.
|
|
@@ -21,4 +26,10 @@ exports.DefaultRetryDelay = 5000;
|
|
|
21
26
|
// over the socket during this period, the socket is destroyed and the download
|
|
22
27
|
// is aborted.
|
|
23
28
|
exports.SocketTimeout = 5000;
|
|
29
|
+
// The default path of GNUtar on hosted Windows runners
|
|
30
|
+
exports.GnuTarPathOnWindows = `${process.env['PROGRAMFILES']}\\Git\\usr\\bin\\tar.exe`;
|
|
31
|
+
// The default path of BSDtar on hosted Windows runners
|
|
32
|
+
exports.SystemTarPathOnWindows = `${process.env['SYSTEMDRIVE']}\\Windows\\System32\\tar.exe`;
|
|
33
|
+
exports.TarFilename = 'cache.tar';
|
|
34
|
+
exports.ManifestFilename = 'manifest.txt';
|
|
24
35
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/internal/constants.ts"],"names":[],"mappings":";;AAAA,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,mCAAkB,CAAA;IAClB,oCAAmB,CAAA;AACrB,CAAC,EAHW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAGxB;AAED,IAAY,iBAMX;AAND,WAAY,iBAAiB;IAC3B,kCAAa,CAAA;IACb,+CAA+C;IAC/C,6EAA6E;IAC7E,0DAAqC,CAAA;IACrC,kCAAa,CAAA;AACf,CAAC,EANW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAM5B;AAED,wCAAwC;AAC3B,QAAA,oBAAoB,GAAG,CAAC,CAAA;AAErC,4DAA4D;AAC/C,QAAA,iBAAiB,GAAG,IAAI,CAAA;AAErC,6EAA6E;AAC7E,+EAA+E;AAC/E,cAAc;AACD,QAAA,aAAa,GAAG,IAAI,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/internal/constants.ts"],"names":[],"mappings":";;AAAA,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,mCAAkB,CAAA;IAClB,oCAAmB,CAAA;AACrB,CAAC,EAHW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAGxB;AAED,IAAY,iBAMX;AAND,WAAY,iBAAiB;IAC3B,kCAAa,CAAA;IACb,+CAA+C;IAC/C,6EAA6E;IAC7E,0DAAqC,CAAA;IACrC,kCAAa,CAAA;AACf,CAAC,EANW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAM5B;AAED,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,8BAAW,CAAA;IACX,8BAAW,CAAA;AACb,CAAC,EAHW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAG1B;AAED,wCAAwC;AAC3B,QAAA,oBAAoB,GAAG,CAAC,CAAA;AAErC,4DAA4D;AAC/C,QAAA,iBAAiB,GAAG,IAAI,CAAA;AAErC,6EAA6E;AAC7E,+EAA+E;AAC/E,cAAc;AACD,QAAA,aAAa,GAAG,IAAI,CAAA;AAEjC,uDAAuD;AAC1C,QAAA,mBAAmB,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,0BAA0B,CAAA;AAE3F,uDAAuD;AAC1C,QAAA,sBAAsB,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,8BAA8B,CAAA;AAEpF,QAAA,WAAW,GAAG,WAAW,CAAA;AAEzB,QAAA,gBAAgB,GAAG,cAAc,CAAA"}
|
package/lib/internal/tar.js
CHANGED
|
@@ -23,21 +23,19 @@ const path = __importStar(require("path"));
|
|
|
23
23
|
const utils = __importStar(require("./cacheUtils"));
|
|
24
24
|
const constants_1 = require("./constants");
|
|
25
25
|
const IS_WINDOWS = process.platform === 'win32';
|
|
26
|
-
|
|
26
|
+
// Function also mutates the args array. For non-mutation call with passing an empty array.
|
|
27
|
+
function getTarPath() {
|
|
27
28
|
return __awaiter(this, void 0, void 0, function* () {
|
|
28
29
|
switch (process.platform) {
|
|
29
30
|
case 'win32': {
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
//
|
|
34
|
-
|
|
31
|
+
const gnuTar = yield utils.getGnuTarPathOnWindows();
|
|
32
|
+
const systemTar = constants_1.SystemTarPathOnWindows;
|
|
33
|
+
if (gnuTar) {
|
|
34
|
+
// Use GNUtar as default on windows
|
|
35
|
+
return { path: gnuTar, type: constants_1.ArchiveToolType.GNU };
|
|
35
36
|
}
|
|
36
37
|
else if (fs_1.existsSync(systemTar)) {
|
|
37
|
-
return systemTar;
|
|
38
|
-
}
|
|
39
|
-
else if (yield utils.isGnuTarInstalled()) {
|
|
40
|
-
args.push('--force-local');
|
|
38
|
+
return { path: systemTar, type: constants_1.ArchiveToolType.BSD };
|
|
41
39
|
}
|
|
42
40
|
break;
|
|
43
41
|
}
|
|
@@ -45,24 +43,83 @@ function getTarPath(args, compressionMethod) {
|
|
|
45
43
|
const gnuTar = yield io.which('gtar', false);
|
|
46
44
|
if (gnuTar) {
|
|
47
45
|
// fix permission denied errors when extracting BSD tar archive with GNU tar - https://github.com/actions/cache/issues/527
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
return { path: gnuTar, type: constants_1.ArchiveToolType.GNU };
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
return {
|
|
50
|
+
path: yield io.which('tar', true),
|
|
51
|
+
type: constants_1.ArchiveToolType.BSD
|
|
52
|
+
};
|
|
50
53
|
}
|
|
51
|
-
break;
|
|
52
54
|
}
|
|
53
55
|
default:
|
|
54
56
|
break;
|
|
55
57
|
}
|
|
56
|
-
return
|
|
58
|
+
return {
|
|
59
|
+
path: yield io.which('tar', true),
|
|
60
|
+
type: constants_1.ArchiveToolType.GNU
|
|
61
|
+
};
|
|
57
62
|
});
|
|
58
63
|
}
|
|
59
|
-
|
|
64
|
+
// Return arguments for tar as per tarPath, compressionMethod, method type and os
|
|
65
|
+
function getTarArgs(tarPath, compressionMethod, type, archivePath = '') {
|
|
60
66
|
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
-
|
|
62
|
-
|
|
67
|
+
const args = [`"${tarPath.path}"`];
|
|
68
|
+
const cacheFileName = utils.getCacheFileName(compressionMethod);
|
|
69
|
+
const tarFile = 'cache.tar';
|
|
70
|
+
const workingDirectory = getWorkingDirectory();
|
|
71
|
+
const BSD_TAR_ZSTD = tarPath.type === constants_1.ArchiveToolType.BSD &&
|
|
72
|
+
compressionMethod !== constants_1.CompressionMethod.Gzip &&
|
|
73
|
+
IS_WINDOWS;
|
|
74
|
+
// Method specific args
|
|
75
|
+
switch (type) {
|
|
76
|
+
case 'create':
|
|
77
|
+
args.push('--posix', '-cf', BSD_TAR_ZSTD
|
|
78
|
+
? tarFile
|
|
79
|
+
: cacheFileName.replace(new RegExp(`\\${path.sep}`, 'g'), '/'), '--exclude', BSD_TAR_ZSTD
|
|
80
|
+
? tarFile
|
|
81
|
+
: cacheFileName.replace(new RegExp(`\\${path.sep}`, 'g'), '/'), '-P', '-C', workingDirectory.replace(new RegExp(`\\${path.sep}`, 'g'), '/'), '--files-from', constants_1.ManifestFilename);
|
|
82
|
+
break;
|
|
83
|
+
case 'extract':
|
|
84
|
+
args.push('-xf', BSD_TAR_ZSTD
|
|
85
|
+
? tarFile
|
|
86
|
+
: archivePath.replace(new RegExp(`\\${path.sep}`, 'g'), '/'), '-P', '-C', workingDirectory.replace(new RegExp(`\\${path.sep}`, 'g'), '/'));
|
|
87
|
+
break;
|
|
88
|
+
case 'list':
|
|
89
|
+
args.push('-tf', BSD_TAR_ZSTD
|
|
90
|
+
? tarFile
|
|
91
|
+
: archivePath.replace(new RegExp(`\\${path.sep}`, 'g'), '/'), '-P');
|
|
92
|
+
break;
|
|
63
93
|
}
|
|
64
|
-
|
|
65
|
-
|
|
94
|
+
// Platform specific args
|
|
95
|
+
if (tarPath.type === constants_1.ArchiveToolType.GNU) {
|
|
96
|
+
switch (process.platform) {
|
|
97
|
+
case 'win32':
|
|
98
|
+
args.push('--force-local');
|
|
99
|
+
break;
|
|
100
|
+
case 'darwin':
|
|
101
|
+
args.push('--delay-directory-restore');
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return args;
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
function getArgs(compressionMethod, type, archivePath = '') {
|
|
109
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
110
|
+
const tarPath = yield getTarPath();
|
|
111
|
+
const tarArgs = yield getTarArgs(tarPath, compressionMethod, type, archivePath);
|
|
112
|
+
const compressionArgs = type !== 'create'
|
|
113
|
+
? yield getDecompressionProgram(tarPath, compressionMethod, archivePath)
|
|
114
|
+
: yield getCompressionProgram(tarPath, compressionMethod);
|
|
115
|
+
const BSD_TAR_ZSTD = tarPath.type === constants_1.ArchiveToolType.BSD &&
|
|
116
|
+
compressionMethod !== constants_1.CompressionMethod.Gzip &&
|
|
117
|
+
IS_WINDOWS;
|
|
118
|
+
if (BSD_TAR_ZSTD && type !== 'create') {
|
|
119
|
+
return [...compressionArgs, ...tarArgs].join(' ');
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
return [...tarArgs, ...compressionArgs].join(' ');
|
|
66
123
|
}
|
|
67
124
|
});
|
|
68
125
|
}
|
|
@@ -71,32 +128,89 @@ function getWorkingDirectory() {
|
|
|
71
128
|
return (_a = process.env['GITHUB_WORKSPACE']) !== null && _a !== void 0 ? _a : process.cwd();
|
|
72
129
|
}
|
|
73
130
|
// Common function for extractTar and listTar to get the compression method
|
|
74
|
-
function
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
131
|
+
function getDecompressionProgram(tarPath, compressionMethod, archivePath) {
|
|
132
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
133
|
+
// -d: Decompress.
|
|
134
|
+
// unzstd is equivalent to 'zstd -d'
|
|
135
|
+
// --long=#: Enables long distance matching with # bits. Maximum is 30 (1GB) on 32-bit OS and 31 (2GB) on 64-bit.
|
|
136
|
+
// Using 30 here because we also support 32-bit self-hosted runners.
|
|
137
|
+
const BSD_TAR_ZSTD = tarPath.type === constants_1.ArchiveToolType.BSD &&
|
|
138
|
+
compressionMethod !== constants_1.CompressionMethod.Gzip &&
|
|
139
|
+
IS_WINDOWS;
|
|
140
|
+
switch (compressionMethod) {
|
|
141
|
+
case constants_1.CompressionMethod.Zstd:
|
|
142
|
+
return BSD_TAR_ZSTD
|
|
143
|
+
? [
|
|
144
|
+
'zstd -d --long=30 -o',
|
|
145
|
+
constants_1.TarFilename,
|
|
146
|
+
archivePath.replace(new RegExp(`\\${path.sep}`, 'g'), '/'),
|
|
147
|
+
'&&'
|
|
148
|
+
]
|
|
149
|
+
: [
|
|
150
|
+
'--use-compress-program',
|
|
151
|
+
IS_WINDOWS ? '"zstd -d --long=30"' : 'unzstd --long=30'
|
|
152
|
+
];
|
|
153
|
+
case constants_1.CompressionMethod.ZstdWithoutLong:
|
|
154
|
+
return BSD_TAR_ZSTD
|
|
155
|
+
? [
|
|
156
|
+
'zstd -d -o',
|
|
157
|
+
constants_1.TarFilename,
|
|
158
|
+
archivePath.replace(new RegExp(`\\${path.sep}`, 'g'), '/'),
|
|
159
|
+
'&&'
|
|
160
|
+
]
|
|
161
|
+
: ['--use-compress-program', IS_WINDOWS ? '"zstd -d"' : 'unzstd'];
|
|
162
|
+
default:
|
|
163
|
+
return ['-z'];
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
// -T#: Compress using # working thread. If # is 0, attempt to detect and use the number of physical CPU cores.
|
|
168
|
+
// zstdmt is equivalent to 'zstd -T0'
|
|
169
|
+
// --long=#: Enables long distance matching with # bits. Maximum is 30 (1GB) on 32-bit OS and 31 (2GB) on 64-bit.
|
|
170
|
+
// Using 30 here because we also support 32-bit self-hosted runners.
|
|
171
|
+
// Long range mode is added to zstd in v1.3.2 release, so we will not use --long in older version of zstd.
|
|
172
|
+
function getCompressionProgram(tarPath, compressionMethod) {
|
|
173
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
174
|
+
const cacheFileName = utils.getCacheFileName(compressionMethod);
|
|
175
|
+
const BSD_TAR_ZSTD = tarPath.type === constants_1.ArchiveToolType.BSD &&
|
|
176
|
+
compressionMethod !== constants_1.CompressionMethod.Gzip &&
|
|
177
|
+
IS_WINDOWS;
|
|
178
|
+
switch (compressionMethod) {
|
|
179
|
+
case constants_1.CompressionMethod.Zstd:
|
|
180
|
+
return BSD_TAR_ZSTD
|
|
181
|
+
? [
|
|
182
|
+
'&&',
|
|
183
|
+
'zstd -T0 --long=30 -o',
|
|
184
|
+
cacheFileName.replace(new RegExp(`\\${path.sep}`, 'g'), '/'),
|
|
185
|
+
constants_1.TarFilename
|
|
186
|
+
]
|
|
187
|
+
: [
|
|
188
|
+
'--use-compress-program',
|
|
189
|
+
IS_WINDOWS ? '"zstd -T0 --long=30"' : 'zstdmt --long=30'
|
|
190
|
+
];
|
|
191
|
+
case constants_1.CompressionMethod.ZstdWithoutLong:
|
|
192
|
+
return BSD_TAR_ZSTD
|
|
193
|
+
? [
|
|
194
|
+
'&&',
|
|
195
|
+
'zstd -T0 -o',
|
|
196
|
+
cacheFileName.replace(new RegExp(`\\${path.sep}`, 'g'), '/'),
|
|
197
|
+
constants_1.TarFilename
|
|
198
|
+
]
|
|
199
|
+
: ['--use-compress-program', IS_WINDOWS ? '"zstd -T0"' : 'zstdmt'];
|
|
200
|
+
default:
|
|
201
|
+
return ['-z'];
|
|
202
|
+
}
|
|
203
|
+
});
|
|
90
204
|
}
|
|
91
205
|
function listTar(archivePath, compressionMethod) {
|
|
92
206
|
return __awaiter(this, void 0, void 0, function* () {
|
|
93
|
-
const args =
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
207
|
+
const args = yield getArgs(compressionMethod, 'list', archivePath);
|
|
208
|
+
try {
|
|
209
|
+
yield exec_1.exec(args);
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
throw new Error(`Tar failed with error: ${error === null || error === void 0 ? void 0 : error.message}`);
|
|
213
|
+
}
|
|
100
214
|
});
|
|
101
215
|
}
|
|
102
216
|
exports.listTar = listTar;
|
|
@@ -105,57 +219,27 @@ function extractTar(archivePath, compressionMethod) {
|
|
|
105
219
|
// Create directory to extract tar into
|
|
106
220
|
const workingDirectory = getWorkingDirectory();
|
|
107
221
|
yield io.mkdirP(workingDirectory);
|
|
108
|
-
const args =
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
];
|
|
116
|
-
yield execTar(args, compressionMethod);
|
|
222
|
+
const args = yield getArgs(compressionMethod, 'extract', archivePath);
|
|
223
|
+
try {
|
|
224
|
+
yield exec_1.exec(args);
|
|
225
|
+
}
|
|
226
|
+
catch (error) {
|
|
227
|
+
throw new Error(`Tar failed with error: ${error === null || error === void 0 ? void 0 : error.message}`);
|
|
228
|
+
}
|
|
117
229
|
});
|
|
118
230
|
}
|
|
119
231
|
exports.extractTar = extractTar;
|
|
120
232
|
function createTar(archiveFolder, sourceDirectories, compressionMethod) {
|
|
121
233
|
return __awaiter(this, void 0, void 0, function* () {
|
|
122
234
|
// Write source directories to manifest.txt to avoid command length limits
|
|
123
|
-
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
// Using 30 here because we also support 32-bit self-hosted runners.
|
|
131
|
-
// Long range mode is added to zstd in v1.3.2 release, so we will not use --long in older version of zstd.
|
|
132
|
-
function getCompressionProgram() {
|
|
133
|
-
switch (compressionMethod) {
|
|
134
|
-
case constants_1.CompressionMethod.Zstd:
|
|
135
|
-
return [
|
|
136
|
-
'--use-compress-program',
|
|
137
|
-
IS_WINDOWS ? 'zstd -T0 --long=30' : 'zstdmt --long=30'
|
|
138
|
-
];
|
|
139
|
-
case constants_1.CompressionMethod.ZstdWithoutLong:
|
|
140
|
-
return ['--use-compress-program', IS_WINDOWS ? 'zstd -T0' : 'zstdmt'];
|
|
141
|
-
default:
|
|
142
|
-
return ['-z'];
|
|
143
|
-
}
|
|
235
|
+
fs_1.writeFileSync(path.join(archiveFolder, constants_1.ManifestFilename), sourceDirectories.join('\n'));
|
|
236
|
+
const args = yield getArgs(compressionMethod, 'create');
|
|
237
|
+
try {
|
|
238
|
+
yield exec_1.exec(args, undefined, { cwd: archiveFolder });
|
|
239
|
+
}
|
|
240
|
+
catch (error) {
|
|
241
|
+
throw new Error(`Tar failed with error: ${error === null || error === void 0 ? void 0 : error.message}`);
|
|
144
242
|
}
|
|
145
|
-
const args = [
|
|
146
|
-
'--posix',
|
|
147
|
-
...getCompressionProgram(),
|
|
148
|
-
'-cf',
|
|
149
|
-
cacheFileName.replace(new RegExp(`\\${path.sep}`, 'g'), '/'),
|
|
150
|
-
'--exclude',
|
|
151
|
-
cacheFileName.replace(new RegExp(`\\${path.sep}`, 'g'), '/'),
|
|
152
|
-
'-P',
|
|
153
|
-
'-C',
|
|
154
|
-
workingDirectory.replace(new RegExp(`\\${path.sep}`, 'g'), '/'),
|
|
155
|
-
'--files-from',
|
|
156
|
-
manifestFilename
|
|
157
|
-
];
|
|
158
|
-
yield execTar(args, compressionMethod, archiveFolder);
|
|
159
243
|
});
|
|
160
244
|
}
|
|
161
245
|
exports.createTar = createTar;
|
package/lib/internal/tar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tar.js","sourceRoot":"","sources":["../../src/internal/tar.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,wCAAkC;AAClC,gDAAiC;AACjC,2BAA4C;AAC5C,2CAA4B;AAC5B,oDAAqC;
|
|
1
|
+
{"version":3,"file":"tar.js","sourceRoot":"","sources":["../../src/internal/tar.ts"],"names":[],"mappings":"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"}
|