From 89cbb18acd5ca1ac4f6ae349c2a0b0d1c1ee01fd Mon Sep 17 00:00:00 2001 From: eric sciple Date: Tue, 10 Dec 2019 18:38:53 -0500 Subject: [PATCH] . --- dist/index.js | 52 +++++++++++++++++++++++++++++++++----- src/git-source-provider.ts | 13 ++++------ src/main.ts | 7 +++-- src/state-helper.ts | 29 +++++++++++++++++++++ 4 files changed, 82 insertions(+), 19 deletions(-) create mode 100644 src/state-helper.ts diff --git a/dist/index.js b/dist/index.js index e0d5a0c..5de1c97 100644 --- a/dist/index.js +++ b/dist/index.js @@ -2597,6 +2597,44 @@ function paginatePlugin(octokit) { } +/***/ }), + +/***/ 153: +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result["default"] = mod; + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const coreCommand = __importStar(__webpack_require__(431)); +/** + * Indicates whether the POST action is running + */ +exports.IsPost = !!process.env['STATE_isPost']; +/** + * The repository path for the POST action. The value is empty during the MAIN action. + */ +exports.RepositoryPath = process.env['STATE_repositoryPath']; +/** + * Save the repository path so the POST action can retrieve the value. + */ +function setRepositoryPath(repositoryPath) { + coreCommand.issueCommand('save-state', { name: 'repositoryPath' }, repositoryPath); +} +exports.setRepositoryPath = setRepositoryPath; +// Publish a variable so that when the POST action runs, it can determine it should run the cleanup logic. +// This is necessary since we don't have a separate entry point. +if (!exports.IsPost) { + coreCommand.issueCommand('save-state', { name: 'isPost' }, 'true'); +} + + /***/ }), /***/ 168: @@ -2751,7 +2789,7 @@ const coreCommand = __importStar(__webpack_require__(431)); const gitSourceProvider = __importStar(__webpack_require__(293)); const inputHelper = __importStar(__webpack_require__(821)); const path = __importStar(__webpack_require__(622)); -const cleanupRepositoryPath = process.env['STATE_repositoryPath']; +const stateHelper = __importStar(__webpack_require__(153)); function run() { return __awaiter(this, void 0, void 0, function* () { try { @@ -2775,7 +2813,7 @@ function run() { function cleanup() { return __awaiter(this, void 0, void 0, function* () { try { - yield gitSourceProvider.cleanup(cleanupRepositoryPath); + yield gitSourceProvider.cleanup(stateHelper.RepositoryPath); } catch (error) { core.warning(error.message); @@ -2783,7 +2821,7 @@ function cleanup() { }); } // Main -if (!cleanupRepositoryPath) { +if (!stateHelper.IsPost) { run(); } // Post @@ -5049,22 +5087,20 @@ var __importStar = (this && this.__importStar) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); const core = __importStar(__webpack_require__(470)); -const coreCommand = __importStar(__webpack_require__(431)); const fs = __importStar(__webpack_require__(747)); const fsHelper = __importStar(__webpack_require__(618)); const gitCommandManager = __importStar(__webpack_require__(289)); +const githubApiHelper = __importStar(__webpack_require__(464)); const io = __importStar(__webpack_require__(1)); const path = __importStar(__webpack_require__(622)); const refHelper = __importStar(__webpack_require__(227)); -const githubApiHelper = __importStar(__webpack_require__(464)); +const stateHelper = __importStar(__webpack_require__(153)); const authConfigKey = `http.https://github.com/.extraheader`; function getSource(settings) { return __awaiter(this, void 0, void 0, function* () { // Repository URL core.info(`Syncing repository: ${settings.repositoryOwner}/${settings.repositoryName}`); const repositoryUrl = `https://github.com/${encodeURIComponent(settings.repositoryOwner)}/${encodeURIComponent(settings.repositoryName)}`; - // Set intra-task state for cleanup - coreCommand.issueCommand('save-state', { name: 'repositoryPath' }, settings.repositoryPath); // Remove conflicting file path if (fsHelper.fileExistsSync(settings.repositoryPath)) { yield io.rmRF(settings.repositoryPath); @@ -5088,6 +5124,8 @@ function getSource(settings) { yield githubApiHelper.downloadRepository(settings.accessToken, settings.repositoryOwner, settings.repositoryName, settings.ref, settings.commit, settings.repositoryPath); } else { + // Save state for POST action + stateHelper.setRepositoryPath(settings.repositoryPath); // Initialize the repository if (!fsHelper.directoryExistsSync(path.join(settings.repositoryPath, '.git'))) { yield git.init(); diff --git a/src/git-source-provider.ts b/src/git-source-provider.ts index 5e3945a..bf086ff 100644 --- a/src/git-source-provider.ts +++ b/src/git-source-provider.ts @@ -3,10 +3,11 @@ import * as coreCommand from '@actions/core/lib/command' import * as fs from 'fs' import * as fsHelper from './fs-helper' import * as gitCommandManager from './git-command-manager' +import * as githubApiHelper from './github-api-helper' import * as io from '@actions/io' import * as path from 'path' import * as refHelper from './ref-helper' -import * as githubApiHelper from './github-api-helper' +import * as stateHelper from './state-helper' import {IGitCommandManager} from './git-command-manager' const authConfigKey = `http.https://github.com/.extraheader` @@ -32,13 +33,6 @@ export async function getSource(settings: ISourceSettings): Promise { settings.repositoryOwner )}/${encodeURIComponent(settings.repositoryName)}` - // Set intra-task state for cleanup - coreCommand.issueCommand( - 'save-state', - {name: 'repositoryPath'}, - settings.repositoryPath - ) - // Remove conflicting file path if (fsHelper.fileExistsSync(settings.repositoryPath)) { await io.rmRF(settings.repositoryPath) @@ -79,6 +73,9 @@ export async function getSource(settings: ISourceSettings): Promise { settings.repositoryPath ) } else { + // Save state for POST action + stateHelper.setRepositoryPath(settings.repositoryPath) + // Initialize the repository if ( !fsHelper.directoryExistsSync(path.join(settings.repositoryPath, '.git')) diff --git a/src/main.ts b/src/main.ts index 26da3aa..4702fe0 100644 --- a/src/main.ts +++ b/src/main.ts @@ -3,8 +3,7 @@ import * as coreCommand from '@actions/core/lib/command' import * as gitSourceProvider from './git-source-provider' import * as inputHelper from './input-helper' import * as path from 'path' - -const cleanupRepositoryPath = process.env['STATE_repositoryPath'] as string +import * as stateHelper from './state-helper' async function run(): Promise { try { @@ -31,14 +30,14 @@ async function run(): Promise { async function cleanup(): Promise { try { - await gitSourceProvider.cleanup(cleanupRepositoryPath) + await gitSourceProvider.cleanup(stateHelper.RepositoryPath) } catch (error) { core.warning(error.message) } } // Main -if (!cleanupRepositoryPath) { +if (!stateHelper.IsPost) { run() } // Post diff --git a/src/state-helper.ts b/src/state-helper.ts new file mode 100644 index 0000000..2b28db6 --- /dev/null +++ b/src/state-helper.ts @@ -0,0 +1,29 @@ +import * as core from '@actions/core' +import * as coreCommand from '@actions/core/lib/command' + +/** + * Indicates whether the POST action is running + */ +export const IsPost = !!process.env['STATE_isPost'] + +/** + * The repository path for the POST action. The value is empty during the MAIN action. + */ +export const RepositoryPath = process.env['STATE_repositoryPath'] as string + +/** + * Save the repository path so the POST action can retrieve the value. + */ +export function setRepositoryPath(repositoryPath: string) { + coreCommand.issueCommand( + 'save-state', + {name: 'repositoryPath'}, + repositoryPath + ) +} + +// Publish a variable so that when the POST action runs, it can determine it should run the cleanup logic. +// This is necessary since we don't have a separate entry point. +if (!IsPost) { + coreCommand.issueCommand('save-state', {name: 'isPost'}, 'true') +}