From b6cff214f70648a881e363942244d4e0ff0d50c8 Mon Sep 17 00:00:00 2001 From: Ella Kramer Date: Fri, 19 Jul 2024 15:35:02 -0400 Subject: [PATCH] Add paths as an output for easier access --- dist/restore-only/index.js | 63 +++++++++++++++++++++----------------- restore/README.md | 1 + restore/action.yml | 2 ++ 3 files changed, 38 insertions(+), 28 deletions(-) diff --git a/dist/restore-only/index.js b/dist/restore-only/index.js index 9a59ac0..526bdd5 100644 --- a/dist/restore-only/index.js +++ b/dist/restore-only/index.js @@ -174,7 +174,7 @@ function saveCache(paths, key, options, enableCrossOsArchive = false) { checkPaths(paths); checkKey(key); const compressionMethod = yield utils.getCompressionMethod(); - let cacheId = -1; + let cacheId = -1; const cachePaths = yield utils.resolvePaths(paths); core.debug('Cache Paths:'); core.debug(`${JSON.stringify(cachePaths)}`); @@ -1260,7 +1260,7 @@ function retry(name, method, getStatusCode, maxAttempts = constants_1.DefaultRet exports.retry = retry; function retryTypedResponse(name, method, maxAttempts = constants_1.DefaultRetryAttempts, delay = constants_1.DefaultRetryDelay) { return __awaiter(this, void 0, void 0, function* () { - return yield retry(name, method, (response) => response.statusCode, maxAttempts, delay, + return yield retry(name, method, (response) => response.statusCode, maxAttempts, delay, // If the error object contains the statusCode property, extract it and return // an TypedResponse so it can be processed by the retry logic. (error) => { @@ -2230,8 +2230,8 @@ class OidcClient { const res = yield httpclient .getJson(id_token_url) .catch(error => { - throw new Error(`Failed to get ID Token. \n - Error Code : ${error.statusCode}\n + throw new Error(`Failed to get ID Token. \n + Error Code : ${error.statusCode}\n Error Message: ${error.result.message}`); }); const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; @@ -7437,7 +7437,7 @@ class Serializer { /** * The provided model mapper. */ - modelMappers = {}, + modelMappers = {}, /** * Whether the contents are XML or not. */ @@ -9553,7 +9553,7 @@ class NodeFetchHttpClient { body = uploadReportStream; } const platformSpecificRequestInit = await this.prepareRequest(httpRequest); - const requestInit = Object.assign({ body: body, headers: httpRequest.headers.rawHeaders(), method: httpRequest.method, + const requestInit = Object.assign({ body: body, headers: httpRequest.headers.rawHeaders(), method: httpRequest.method, // the types for RequestInit are from the browser, which expects AbortSignal to // have `reason` and `throwIfAborted`, but these don't exist on our polyfill // for Node. @@ -9752,7 +9752,7 @@ class BaseRequestPolicy { /** * The next policy in the pipeline. Each policy is responsible for executing the next one if the request is to continue through the pipeline. */ - _nextPolicy, + _nextPolicy, /** * The options that can be passed to a given request policy. */ @@ -10730,7 +10730,7 @@ function createTokenCycler(credential, scopes, tokenCyclerOptions) { const tryGetAccessToken = () => credential.getToken(scopes, getTokenOptions); // Take advantage of promise chaining to insert an assignment to `token` // before the refresh can be considered done. - refreshWorker = beginRefresh(tryGetAccessToken, options.retryIntervalInMs, + refreshWorker = beginRefresh(tryGetAccessToken, options.retryIntervalInMs, // If we don't have a token, then we should timeout immediately (_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : Date.now()) .then((_token) => { @@ -11537,7 +11537,7 @@ class ServiceClient { * @param credentials - The credentials used for authentication with the service. * @param options - The service client options that govern the behavior of the client. */ - constructor(credentials, + constructor(credentials, /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options */ options) { if (!options) { @@ -31082,7 +31082,7 @@ function createTokenCycler(credential, scopes, tokenCyclerOptions) { const tryGetAccessToken = () => credential.getToken(scopes, getTokenOptions); // Take advantage of promise chaining to insert an assignment to `token` // before the refresh can be considered done. - refreshWorker = beginRefresh(tryGetAccessToken, options.retryIntervalInMs, + refreshWorker = beginRefresh(tryGetAccessToken, options.retryIntervalInMs, // If we don't have a token, then we should timeout immediately (_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : Date.now()) .then((_token) => { @@ -35502,7 +35502,7 @@ const fsCreateReadStream = fs__namespace.createReadStream; * append blob, or page blob. */ class BlobClient extends StorageClient { - constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, + constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, // Legacy, no fix for eslint error without breaking. Disable it for this interface. /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/ options) { @@ -36547,7 +36547,7 @@ class BlobClient extends StorageClient { * AppendBlobClient defines a set of operations applicable to append blobs. */ class AppendBlobClient extends BlobClient { - constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, + constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, // Legacy, no fix for eslint error without breaking. Disable it for this interface. /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/ options) { @@ -36803,7 +36803,7 @@ class AppendBlobClient extends BlobClient { * BlockBlobClient defines a set of operations applicable to block blobs. */ class BlockBlobClient extends BlobClient { - constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, + constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, // Legacy, no fix for eslint error without breaking. Disable it for this interface. /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/ options) { @@ -37429,7 +37429,7 @@ class BlockBlobClient extends BlobClient { if (options.onProgress) { options.onProgress({ loadedBytes: transferProgress }); } - }, + }, // concurrency should set a smaller value than maxConcurrency, which is helpful to // reduce the possibility when a outgoing handler waits for stream data, in // this situation, outgoing handlers are blocked. @@ -37454,7 +37454,7 @@ class BlockBlobClient extends BlobClient { * PageBlobClient defines a set of operations applicable to page blobs. */ class PageBlobClient extends BlobClient { - constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, + constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, // Legacy, no fix for eslint error without breaking. Disable it for this interface. /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/ options) { @@ -38712,7 +38712,7 @@ class BatchHeaderFilterPolicyFactory { * @see https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch */ class BlobBatchClient { - constructor(url, credentialOrPipeline, + constructor(url, credentialOrPipeline, // Legacy, no fix for eslint error without breaking. Disable it for this interface. /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/ options) { @@ -38744,7 +38744,7 @@ class BlobBatchClient { createBatch() { return new BlobBatch(); } - async deleteBlobs(urlsOrBlobClients, credentialOrOptions, + async deleteBlobs(urlsOrBlobClients, credentialOrOptions, // Legacy, no fix for eslint error without breaking. Disable it for this interface. /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/ options) { @@ -38759,7 +38759,7 @@ class BlobBatchClient { } return this.submitBatch(batch); } - async setBlobsAccessTier(urlsOrBlobClients, credentialOrTier, tierOrOptions, + async setBlobsAccessTier(urlsOrBlobClients, credentialOrTier, tierOrOptions, // Legacy, no fix for eslint error without breaking. Disable it for this interface. /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/ options) { @@ -38851,7 +38851,7 @@ class BlobBatchClient { * A ContainerClient represents a URL to the Azure Storage container allowing you to manipulate its blobs. */ class ContainerClient extends StorageClient { - constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, + constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, // Legacy, no fix for eslint error without breaking. Disable it for this interface. /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/ options) { @@ -40565,7 +40565,7 @@ function generateAccountSASQueryParameters(accountSASSignatureValues, sharedKeyC * to manipulate blob containers. */ class BlobServiceClient extends StorageClient { - constructor(url, credentialOrPipeline, + constructor(url, credentialOrPipeline, // Legacy, no fix for eslint error without breaking. Disable it for this interface. /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/ options) { @@ -40597,7 +40597,7 @@ class BlobServiceClient extends StorageClient { * `BlobEndpoint=https://myaccount.blob.core.windows.net/;QueueEndpoint=https://myaccount.queue.core.windows.net/;FileEndpoint=https://myaccount.file.core.windows.net/;TableEndpoint=https://myaccount.table.core.windows.net/;SharedAccessSignature=sasString` * @param options - Optional. Options to configure the HTTP pipeline. */ - static fromConnectionString(connectionString, + static fromConnectionString(connectionString, // Legacy, no fix for eslint error without breaking. Disable it for this interface. /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/ options) { @@ -59331,11 +59331,13 @@ var Outputs; Outputs["CacheHit"] = "cache-hit"; Outputs["CachePrimaryKey"] = "cache-primary-key"; Outputs["CacheMatchedKey"] = "cache-matched-key"; // Output from restore action + Outputs["CachePath"] = "cache-path"; })(Outputs = exports.Outputs || (exports.Outputs = {})); var State; (function (State) { State["CachePrimaryKey"] = "CACHE_KEY"; State["CacheMatchedKey"] = "CACHE_RESULT"; + State["CachePath"] = "CACHE_PATH"; })(State = exports.State || (exports.State = {})); var Events; (function (Events) { @@ -59407,6 +59409,10 @@ function restoreImpl(stateProvider, earlyExit) { const primaryKey = core.getInput(constants_1.Inputs.Key, { required: true }); stateProvider.setState(constants_1.State.CachePrimaryKey, primaryKey); const restoreKeys = utils.getInputAsArray(constants_1.Inputs.RestoreKeys); + + // Output the inputted path unchanged + stateProvider.setState(constants_1.State.CachePath, getInput(constants_1.Inputs.Path)); + const cachePaths = utils.getInputAsArray(constants_1.Inputs.Path, { required: true }); @@ -59535,7 +59541,8 @@ class NullStateProvider extends StateProviderBase { super(...arguments); this.stateToOutputMap = new Map([ [constants_1.State.CacheMatchedKey, constants_1.Outputs.CacheMatchedKey], - [constants_1.State.CachePrimaryKey, constants_1.Outputs.CachePrimaryKey] + [constants_1.State.CachePrimaryKey, constants_1.Outputs.CachePrimaryKey], + [constants_1.State.CachePath, constants_1.Outputs.CachePath] ]); this.setState = (key, value) => { core.setOutput(this.stateToOutputMap.get(key), value); @@ -59823,7 +59830,7 @@ module.exports = JSON.parse('[[[0,44],"disallowed_STD3_valid"],[[45,46],"valid"] /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; -/******/ +/******/ /******/ // The require function /******/ function __nccwpck_require__(moduleId) { /******/ // Check if module is in cache @@ -59837,7 +59844,7 @@ module.exports = JSON.parse('[[[0,44],"disallowed_STD3_valid"],[[45,46],"valid"] /******/ // no module.loaded needed /******/ exports: {} /******/ }; -/******/ +/******/ /******/ // Execute the module function /******/ var threw = true; /******/ try { @@ -59846,16 +59853,16 @@ module.exports = JSON.parse('[[[0,44],"disallowed_STD3_valid"],[[45,46],"valid"] /******/ } finally { /******/ if(threw) delete __webpack_module_cache__[moduleId]; /******/ } -/******/ +/******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } -/******/ +/******/ /************************************************************************/ /******/ /* webpack/runtime/compat */ -/******/ +/******/ /******/ if (typeof __nccwpck_require__ !== 'undefined') __nccwpck_require__.ab = __dirname + "/"; -/******/ +/******/ /************************************************************************/ var __webpack_exports__ = {}; // This entry need to be wrapped in an IIFE because it need to be in strict mode. diff --git a/restore/README.md b/restore/README.md index a7203e9..bc5a798 100644 --- a/restore/README.md +++ b/restore/README.md @@ -17,6 +17,7 @@ The restore action restores a cache. It works similarly to the `cache` action ex * `cache-hit` - A boolean value to indicate an exact match was found for the key. * `cache-primary-key` - Cache primary key passed in the input to use in subsequent steps of the workflow. * `cache-matched-key` - Key of the cache that was restored, it could either be the primary key on cache-hit or a partial/complete match of one of the restore keys. +* `cache-path` - The list of files, directories, and wildcard patterns passed in the input. > **Note** `cache-hit` will be set to `true` only when cache hit occurs for the exact `key` match. For a partial key match via `restore-keys` or a cache miss, it will be set to `false`. diff --git a/restore/action.yml b/restore/action.yml index 194669f..60a6d0e 100644 --- a/restore/action.yml +++ b/restore/action.yml @@ -30,6 +30,8 @@ outputs: description: 'A resolved cache key for which cache match was attempted' cache-matched-key: description: 'Key of the cache that was restored, it could either be the primary key on cache-hit or a partial/complete match of one of the restore keys' + cache-path: + description: 'The list of files, directories, and wildcard patterns passed in the input' runs: using: 'node20' main: '../dist/restore-only/index.js'