From 8bd9e29d3ce3c5d2e5fbbed07f00a1690b9ac48f Mon Sep 17 00:00:00 2001 From: Lovepreet Singh Date: Sat, 13 Aug 2022 18:01:07 +0000 Subject: [PATCH 1/8] Use zstd short flag version for win runners. Update comments to reflect the same. Fix --d to -d in comments. --- packages/cache/src/internal/tar.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/cache/src/internal/tar.ts b/packages/cache/src/internal/tar.ts index 1f63da51..7c45a939 100644 --- a/packages/cache/src/internal/tar.ts +++ b/packages/cache/src/internal/tar.ts @@ -61,14 +61,17 @@ export async function extractTar( // Create directory to extract tar into const workingDirectory = getWorkingDirectory() await io.mkdirP(workingDirectory) - // --d: Decompress. + // -d: Decompress. + // unzstd is equivalent to 'zstd -d' // --long=#: Enables long distance matching with # bits. Maximum is 30 (1GB) on 32-bit OS and 31 (2GB) on 64-bit. // Using 30 here because we also support 32-bit self-hosted runners. function getCompressionProgram(): string[] { switch (compressionMethod) { case CompressionMethod.Zstd: + if (process.platform === 'win32') return ['--use-compress-program=zstd -d --long=30'] return ['--use-compress-program', 'unzstd --long=30'] case CompressionMethod.ZstdWithoutLong: + if (process.platform === 'win32') return ['--use-compress-program=zstd -d'] return ['--use-compress-program', 'unzstd'] default: return ['-z'] @@ -100,14 +103,17 @@ export async function createTar( const workingDirectory = getWorkingDirectory() // -T#: Compress using # working thread. If # is 0, attempt to detect and use the number of physical CPU cores. + // zstdmt is equivalent to 'zstd -T0' // --long=#: Enables long distance matching with # bits. Maximum is 30 (1GB) on 32-bit OS and 31 (2GB) on 64-bit. // Using 30 here because we also support 32-bit self-hosted runners. // Long range mode is added to zstd in v1.3.2 release, so we will not use --long in older version of zstd. function getCompressionProgram(): string[] { switch (compressionMethod) { case CompressionMethod.Zstd: + if (process.platform === 'win32') return ['--use-compress-program=zstd -T0 --long=30'] return ['--use-compress-program', 'zstdmt --long=30'] case CompressionMethod.ZstdWithoutLong: + if (process.platform === 'win32') return ['--use-compress-program=zstd -T0'] return ['--use-compress-program', 'zstdmt'] default: return ['-z'] @@ -133,15 +139,18 @@ export async function listTar( archivePath: string, compressionMethod: CompressionMethod ): Promise { - // --d: Decompress. + // -d: Decompress. + // unzstd is equivalent to 'zstd -d' // --long=#: Enables long distance matching with # bits. // Maximum is 30 (1GB) on 32-bit OS and 31 (2GB) on 64-bit. // Using 30 here because we also support 32-bit self-hosted runners. function getCompressionProgram(): string[] { switch (compressionMethod) { case CompressionMethod.Zstd: + if (process.platform === 'win32') return ['--use-compress-program=zstd -d --long=30'] return ['--use-compress-program', 'unzstd --long=30'] case CompressionMethod.ZstdWithoutLong: + if (process.platform === 'win32') return ['--use-compress-program=zstd -d'] return ['--use-compress-program', 'unzstd'] default: return ['-z'] From d543359fab7ac8d05e62a848f7bdd24a44d303db Mon Sep 17 00:00:00 2001 From: Lovepreet Singh Date: Sat, 13 Aug 2022 18:46:24 +0000 Subject: [PATCH 2/8] Bump internal package @actions/cache version to fix #888 and #891 in actions/cache repo --- packages/cache/RELEASES.md | 5 +- packages/cache/package-lock.json | 4 +- packages/cache/package.json | 2 +- packages/core/package-lock.json | 144 ++++++++++++------------------- 4 files changed, 64 insertions(+), 91 deletions(-) diff --git a/packages/cache/RELEASES.md b/packages/cache/RELEASES.md index 8fc7ba29..749afb33 100644 --- a/packages/cache/RELEASES.md +++ b/packages/cache/RELEASES.md @@ -80,4 +80,7 @@ - Added 1 hour timeout for the download stuck issue [#810](https://github.com/actions/cache/issues/810). ### 3.0.3 -- Bug fixes for download stuck issue [#810](https://github.com/actions/cache/issues/810). \ No newline at end of file +- Bug fixes for download stuck issue [#810](https://github.com/actions/cache/issues/810). + +### 3.0.4 +- Fix zstd not working for windows on gnu tar in issues [#888](https://github.com/actions/cache/issues/888) and [#891](https://github.com/actions/cache/issues/891). \ No newline at end of file diff --git a/packages/cache/package-lock.json b/packages/cache/package-lock.json index 87d24d4d..0ea84f44 100644 --- a/packages/cache/package-lock.json +++ b/packages/cache/package-lock.json @@ -1,12 +1,12 @@ { "name": "@actions/cache", - "version": "3.0.3", + "version": "3.0.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@actions/cache", - "version": "3.0.3", + "version": "3.0.4", "license": "MIT", "dependencies": { "@actions/core": "^1.2.6", diff --git a/packages/cache/package.json b/packages/cache/package.json index 476e8562..6a3d476f 100644 --- a/packages/cache/package.json +++ b/packages/cache/package.json @@ -1,6 +1,6 @@ { "name": "@actions/cache", - "version": "3.0.3", + "version": "3.0.4", "preview": true, "description": "Actions cache lib", "keywords": [ diff --git a/packages/core/package-lock.json b/packages/core/package-lock.json index 119f418e..da03f56f 100644 --- a/packages/core/package-lock.json +++ b/packages/core/package-lock.json @@ -1,89 +1,59 @@ { - "name": "@actions/core", - "version": "1.9.1", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "@actions/core", - "version": "1.9.1", - "license": "MIT", - "dependencies": { - "@actions/http-client": "^2.0.1", - "uuid": "^8.3.2" - }, - "devDependencies": { - "@types/node": "^12.0.2", - "@types/uuid": "^8.3.4" - } - }, - "node_modules/@actions/http-client": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz", - "integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==", - "dependencies": { - "tunnel": "^0.0.6" - } - }, - "node_modules/@types/node": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.2.tgz", - "integrity": "sha512-5tabW/i+9mhrfEOUcLDu2xBPsHJ+X5Orqy9FKpale3SjDA17j5AEpYq5vfy3oAeAHGcvANRCO3NV3d2D6q3NiA==", - "dev": true - }, - "node_modules/@types/uuid": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", - "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", - "dev": true - }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - } - }, - "dependencies": { - "@actions/http-client": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz", - "integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==", - "requires": { - "tunnel": "^0.0.6" - } - }, - "@types/node": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.2.tgz", - "integrity": "sha512-5tabW/i+9mhrfEOUcLDu2xBPsHJ+X5Orqy9FKpale3SjDA17j5AEpYq5vfy3oAeAHGcvANRCO3NV3d2D6q3NiA==", - "dev": true - }, - "@types/uuid": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", - "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", - "dev": true - }, - "tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - } - } + "name": "@actions/core", + "version": "1.9.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "@actions/core", + "version": "1.9.1", + "license": "MIT", + "dependencies": { + "uuid": "^8.3.2" + }, + "devDependencies": { + "@types/node": "^12.0.2", + "@types/uuid": "^8.3.4" + } + }, + "node_modules/@types/node": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.2.tgz", + "integrity": "sha512-5tabW/i+9mhrfEOUcLDu2xBPsHJ+X5Orqy9FKpale3SjDA17j5AEpYq5vfy3oAeAHGcvANRCO3NV3d2D6q3NiA==", + "dev": true + }, + "node_modules/@types/uuid": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", + "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", + "dev": true + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + } + }, + "dependencies": { + "@types/node": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.2.tgz", + "integrity": "sha512-5tabW/i+9mhrfEOUcLDu2xBPsHJ+X5Orqy9FKpale3SjDA17j5AEpYq5vfy3oAeAHGcvANRCO3NV3d2D6q3NiA==", + "dev": true + }, + "@types/uuid": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", + "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + } + } } From 6e888c882e6bfa41aa1918b474958b4dd57a5bd3 Mon Sep 17 00:00:00 2001 From: Lovepreet Singh Date: Wed, 17 Aug 2022 07:47:49 +0000 Subject: [PATCH 3/8] Fix linting --- packages/cache/src/internal/tar.ts | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/packages/cache/src/internal/tar.ts b/packages/cache/src/internal/tar.ts index 7c45a939..07335774 100644 --- a/packages/cache/src/internal/tar.ts +++ b/packages/cache/src/internal/tar.ts @@ -68,10 +68,14 @@ export async function extractTar( function getCompressionProgram(): string[] { switch (compressionMethod) { case CompressionMethod.Zstd: - if (process.platform === 'win32') return ['--use-compress-program=zstd -d --long=30'] + if (process.platform === 'win32') { + return ['--use-compress-program=zstd -d --long=30'] + } return ['--use-compress-program', 'unzstd --long=30'] case CompressionMethod.ZstdWithoutLong: - if (process.platform === 'win32') return ['--use-compress-program=zstd -d'] + if (process.platform === 'win32') { + return ['--use-compress-program=zstd -d'] + } return ['--use-compress-program', 'unzstd'] default: return ['-z'] @@ -110,10 +114,14 @@ export async function createTar( function getCompressionProgram(): string[] { switch (compressionMethod) { case CompressionMethod.Zstd: - if (process.platform === 'win32') return ['--use-compress-program=zstd -T0 --long=30'] + if (process.platform === 'win32') { + return ['--use-compress-program=zstd -T0 --long=30'] + } return ['--use-compress-program', 'zstdmt --long=30'] case CompressionMethod.ZstdWithoutLong: - if (process.platform === 'win32') return ['--use-compress-program=zstd -T0'] + if (process.platform === 'win32') { + return ['--use-compress-program=zstd -T0'] + } return ['--use-compress-program', 'zstdmt'] default: return ['-z'] @@ -147,10 +155,14 @@ export async function listTar( function getCompressionProgram(): string[] { switch (compressionMethod) { case CompressionMethod.Zstd: - if (process.platform === 'win32') return ['--use-compress-program=zstd -d --long=30'] + if (process.platform === 'win32') { + return ['--use-compress-program=zstd -d --long=30'] + } return ['--use-compress-program', 'unzstd --long=30'] case CompressionMethod.ZstdWithoutLong: - if (process.platform === 'win32') return ['--use-compress-program=zstd -d'] + if (process.platform === 'win32') { + return ['--use-compress-program=zstd -d'] + } return ['--use-compress-program', 'unzstd'] default: return ['-z'] From 98a40695580ff2ec9783455362f514662deaf0bc Mon Sep 17 00:00:00 2001 From: Lovepreet Singh Date: Wed, 17 Aug 2022 08:21:09 +0000 Subject: [PATCH 4/8] Fix failing test cases on windows --- packages/cache/__tests__/tar.test.ts | 8 ++++---- packages/cache/src/internal/tar.ts | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/cache/__tests__/tar.test.ts b/packages/cache/__tests__/tar.test.ts index b05c67e1..e4233bc9 100644 --- a/packages/cache/__tests__/tar.test.ts +++ b/packages/cache/__tests__/tar.test.ts @@ -50,7 +50,7 @@ test('zstd extract tar', async () => { `"${defaultTarPath}"`, [ '--use-compress-program', - 'unzstd --long=30', + IS_WINDOWS ? 'zstd -d --long=30' : 'unzstd --long=30', '-xf', IS_WINDOWS ? archivePath.replace(/\\/g, '/') : archivePath, '-P', @@ -140,7 +140,7 @@ test('zstd create tar', async () => { [ '--posix', '--use-compress-program', - 'zstdmt --long=30', + IS_WINDOWS ? 'zstd -T0 --long=30' : 'zstdmt --long=30', '-cf', IS_WINDOWS ? CacheFilename.Zstd.replace(/\\/g, '/') : CacheFilename.Zstd, '--exclude', @@ -210,7 +210,7 @@ test('zstd list tar', async () => { `"${defaultTarPath}"`, [ '--use-compress-program', - 'unzstd --long=30', + IS_WINDOWS ? 'zstd -d --long=30' : 'unzstd --long=30', '-tf', IS_WINDOWS ? archivePath.replace(/\\/g, '/') : archivePath, '-P' @@ -235,7 +235,7 @@ test('zstdWithoutLong list tar', async () => { `"${defaultTarPath}"`, [ '--use-compress-program', - 'unzstd', + IS_WINDOWS ? 'zstd -d' : 'unzstd', '-tf', IS_WINDOWS ? archivePath.replace(/\\/g, '/') : archivePath, '-P' diff --git a/packages/cache/src/internal/tar.ts b/packages/cache/src/internal/tar.ts index 07335774..cb563a0a 100644 --- a/packages/cache/src/internal/tar.ts +++ b/packages/cache/src/internal/tar.ts @@ -69,12 +69,12 @@ export async function extractTar( switch (compressionMethod) { case CompressionMethod.Zstd: if (process.platform === 'win32') { - return ['--use-compress-program=zstd -d --long=30'] + return ['--use-compress-program', 'zstd -d --long=30'] } return ['--use-compress-program', 'unzstd --long=30'] case CompressionMethod.ZstdWithoutLong: if (process.platform === 'win32') { - return ['--use-compress-program=zstd -d'] + return ['--use-compress-program', 'zstd -d'] } return ['--use-compress-program', 'unzstd'] default: @@ -115,12 +115,12 @@ export async function createTar( switch (compressionMethod) { case CompressionMethod.Zstd: if (process.platform === 'win32') { - return ['--use-compress-program=zstd -T0 --long=30'] + return ['--use-compress-program', 'zstd -T0 --long=30'] } return ['--use-compress-program', 'zstdmt --long=30'] case CompressionMethod.ZstdWithoutLong: if (process.platform === 'win32') { - return ['--use-compress-program=zstd -T0'] + return ['--use-compress-program', 'zstd -T0'] } return ['--use-compress-program', 'zstdmt'] default: @@ -156,12 +156,12 @@ export async function listTar( switch (compressionMethod) { case CompressionMethod.Zstd: if (process.platform === 'win32') { - return ['--use-compress-program=zstd -d --long=30'] + return ['--use-compress-program', 'zstd -d --long=30'] } return ['--use-compress-program', 'unzstd --long=30'] case CompressionMethod.ZstdWithoutLong: if (process.platform === 'win32') { - return ['--use-compress-program=zstd -d'] + return ['--use-compress-program', 'zstd -d'] } return ['--use-compress-program', 'unzstd'] default: From ce68daa10e16ef88934a6d00a301d1fd5133d19c Mon Sep 17 00:00:00 2001 From: Lovepreet Singh Date: Thu, 18 Aug 2022 11:01:22 +0000 Subject: [PATCH 5/8] Common getCompressionMethod for listTar and extractTar --- packages/cache/src/internal/constants.ts | 6 ++ packages/cache/src/internal/tar.ts | 113 ++++++++++------------- 2 files changed, 54 insertions(+), 65 deletions(-) diff --git a/packages/cache/src/internal/constants.ts b/packages/cache/src/internal/constants.ts index 2f78d326..8686a630 100644 --- a/packages/cache/src/internal/constants.ts +++ b/packages/cache/src/internal/constants.ts @@ -11,6 +11,12 @@ export enum CompressionMethod { Zstd = 'zstd' } +export enum TarOperation { + Create = 'create', + List = 'list', + Extract = 'extract' +} + // The default number of retry attempts. export const DefaultRetryAttempts = 2 diff --git a/packages/cache/src/internal/tar.ts b/packages/cache/src/internal/tar.ts index cb563a0a..34229ccf 100644 --- a/packages/cache/src/internal/tar.ts +++ b/packages/cache/src/internal/tar.ts @@ -3,7 +3,9 @@ import * as io from '@actions/io' import {existsSync, writeFileSync} from 'fs' import * as path from 'path' import * as utils from './cacheUtils' -import {CompressionMethod} from './constants' +import {CompressionMethod, TarOperation} from './constants' + +const IS_WINDOWS = process.platform === 'win32' async function getTarPath( args: string[], @@ -54,6 +56,41 @@ function getWorkingDirectory(): string { return process.env['GITHUB_WORKSPACE'] ?? process.cwd() } +// Common function for extractTar and listTar to get the compression method +function getCompressionProgram(compressionMethod: CompressionMethod): string[] { + // -d: Decompress. + // unzstd is equivalent to 'zstd -d' + // --long=#: Enables long distance matching with # bits. Maximum is 30 (1GB) on 32-bit OS and 31 (2GB) on 64-bit. + // Using 30 here because we also support 32-bit self-hosted runners. + switch (compressionMethod) { + case CompressionMethod.Zstd: + return [ + '--use-compress-program', + IS_WINDOWS ? 'zstd -d --long=30' : 'unzstd --long=30', + ] + case CompressionMethod.ZstdWithoutLong: + return [ + '--use-compress-program', + IS_WINDOWS ? 'zstd -d' : 'unzstd', + ] + default: + return ['-z'] + } +} + +export async function listTar( + archivePath: string, + compressionMethod: CompressionMethod +): Promise { + const args = [ + getCompressionProgram(compressionMethod), + '-tf', + archivePath.replace(new RegExp(`\\${path.sep}`, 'g'), '/'), + '-P' + ] + await execTar(args, compressionMethod) +} + export async function extractTar( archivePath: string, compressionMethod: CompressionMethod @@ -61,28 +98,8 @@ export async function extractTar( // Create directory to extract tar into const workingDirectory = getWorkingDirectory() await io.mkdirP(workingDirectory) - // -d: Decompress. - // unzstd is equivalent to 'zstd -d' - // --long=#: Enables long distance matching with # bits. Maximum is 30 (1GB) on 32-bit OS and 31 (2GB) on 64-bit. - // Using 30 here because we also support 32-bit self-hosted runners. - function getCompressionProgram(): string[] { - switch (compressionMethod) { - case CompressionMethod.Zstd: - if (process.platform === 'win32') { - return ['--use-compress-program', 'zstd -d --long=30'] - } - return ['--use-compress-program', 'unzstd --long=30'] - case CompressionMethod.ZstdWithoutLong: - if (process.platform === 'win32') { - return ['--use-compress-program', 'zstd -d'] - } - return ['--use-compress-program', 'unzstd'] - default: - return ['-z'] - } - } const args = [ - ...getCompressionProgram(), + getCompressionProgram(compressionMethod), '-xf', archivePath.replace(new RegExp(`\\${path.sep}`, 'g'), '/'), '-P', @@ -114,15 +131,15 @@ export async function createTar( function getCompressionProgram(): string[] { switch (compressionMethod) { case CompressionMethod.Zstd: - if (process.platform === 'win32') { - return ['--use-compress-program', 'zstd -T0 --long=30'] - } - return ['--use-compress-program', 'zstdmt --long=30'] + return [ + '--use-compress-program', + IS_WINDOWS ? 'zstd -T0 --long=30' : 'zstdmt --long=30' + ] case CompressionMethod.ZstdWithoutLong: - if (process.platform === 'win32') { - return ['--use-compress-program', 'zstd -T0'] - } - return ['--use-compress-program', 'zstdmt'] + return [ + '--use-compress-program', + IS_WINDOWS ? 'zstd -T0' : 'zstdmt' + ] default: return ['-z'] } @@ -141,38 +158,4 @@ export async function createTar( manifestFilename ] await execTar(args, compressionMethod, archiveFolder) -} - -export async function listTar( - archivePath: string, - compressionMethod: CompressionMethod -): Promise { - // -d: Decompress. - // unzstd is equivalent to 'zstd -d' - // --long=#: Enables long distance matching with # bits. - // Maximum is 30 (1GB) on 32-bit OS and 31 (2GB) on 64-bit. - // Using 30 here because we also support 32-bit self-hosted runners. - function getCompressionProgram(): string[] { - switch (compressionMethod) { - case CompressionMethod.Zstd: - if (process.platform === 'win32') { - return ['--use-compress-program', 'zstd -d --long=30'] - } - return ['--use-compress-program', 'unzstd --long=30'] - case CompressionMethod.ZstdWithoutLong: - if (process.platform === 'win32') { - return ['--use-compress-program', 'zstd -d'] - } - return ['--use-compress-program', 'unzstd'] - default: - return ['-z'] - } - } - const args = [ - ...getCompressionProgram(), - '-tf', - archivePath.replace(new RegExp(`\\${path.sep}`, 'g'), '/'), - '-P' - ] - await execTar(args, compressionMethod) -} +} \ No newline at end of file From 14d8f65f100ea291360d89239ba395c1dd32265b Mon Sep 17 00:00:00 2001 From: Lovepreet Singh Date: Thu, 18 Aug 2022 11:10:41 +0000 Subject: [PATCH 6/8] Remove unused constants --- packages/cache/src/internal/constants.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/packages/cache/src/internal/constants.ts b/packages/cache/src/internal/constants.ts index 8686a630..2f78d326 100644 --- a/packages/cache/src/internal/constants.ts +++ b/packages/cache/src/internal/constants.ts @@ -11,12 +11,6 @@ export enum CompressionMethod { Zstd = 'zstd' } -export enum TarOperation { - Create = 'create', - List = 'list', - Extract = 'extract' -} - // The default number of retry attempts. export const DefaultRetryAttempts = 2 From ed96e2179290985f58185d9727b68280d27e0135 Mon Sep 17 00:00:00 2001 From: Lovepreet Singh Date: Thu, 18 Aug 2022 11:22:13 +0000 Subject: [PATCH 7/8] Fix spread operator for getCompressionMethod --- packages/cache/src/internal/tar.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cache/src/internal/tar.ts b/packages/cache/src/internal/tar.ts index 3dee7fd0..cf0ccd0a 100644 --- a/packages/cache/src/internal/tar.ts +++ b/packages/cache/src/internal/tar.ts @@ -83,7 +83,7 @@ export async function listTar( compressionMethod: CompressionMethod ): Promise { const args = [ - getCompressionProgram(compressionMethod), + ...getCompressionProgram(compressionMethod), '-tf', archivePath.replace(new RegExp(`\\${path.sep}`, 'g'), '/'), '-P' @@ -99,7 +99,7 @@ export async function extractTar( const workingDirectory = getWorkingDirectory() await io.mkdirP(workingDirectory) const args = [ - getCompressionProgram(compressionMethod), + ...getCompressionProgram(compressionMethod), '-xf', archivePath.replace(new RegExp(`\\${path.sep}`, 'g'), '/'), '-P', From 0982f1da893275c42a21c55410fdcfa0adef5bf6 Mon Sep 17 00:00:00 2001 From: Lovepreet Singh Date: Thu, 18 Aug 2022 11:44:15 +0000 Subject: [PATCH 8/8] Fix linting issues --- packages/cache/src/internal/tar.ts | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/packages/cache/src/internal/tar.ts b/packages/cache/src/internal/tar.ts index cf0ccd0a..2e28ca1a 100644 --- a/packages/cache/src/internal/tar.ts +++ b/packages/cache/src/internal/tar.ts @@ -66,13 +66,10 @@ function getCompressionProgram(compressionMethod: CompressionMethod): string[] { case CompressionMethod.Zstd: return [ '--use-compress-program', - IS_WINDOWS ? 'zstd -d --long=30' : 'unzstd --long=30', + IS_WINDOWS ? 'zstd -d --long=30' : 'unzstd --long=30' ] case CompressionMethod.ZstdWithoutLong: - return [ - '--use-compress-program', - IS_WINDOWS ? 'zstd -d' : 'unzstd', - ] + return ['--use-compress-program', IS_WINDOWS ? 'zstd -d' : 'unzstd'] default: return ['-z'] } @@ -136,10 +133,7 @@ export async function createTar( IS_WINDOWS ? 'zstd -T0 --long=30' : 'zstdmt --long=30' ] case CompressionMethod.ZstdWithoutLong: - return [ - '--use-compress-program', - IS_WINDOWS ? 'zstd -T0' : 'zstdmt' - ] + return ['--use-compress-program', IS_WINDOWS ? 'zstd -T0' : 'zstdmt'] default: return ['-z'] } @@ -158,4 +152,4 @@ export async function createTar( manifestFilename ] await execTar(args, compressionMethod, archiveFolder) -} \ No newline at end of file +}