diff --git a/dist/index.js b/dist/index.js index c53e004..20ef28c 100644 --- a/dist/index.js +++ b/dist/index.js @@ -4437,6 +4437,7 @@ var init_exit_codes = __esm({ ExitCodes = /* @__PURE__ */ ((ExitCodes2) => { ExitCodes2[ExitCodes2["SUCCESS"] = 0] = "SUCCESS"; ExitCodes2[ExitCodes2["ERROR"] = 1] = "ERROR"; + ExitCodes2[ExitCodes2["NOT_FOUND"] = -2] = "NOT_FOUND"; ExitCodes2[ExitCodes2["UNCLEAN"] = 128] = "UNCLEAN"; return ExitCodes2; })(ExitCodes || {}); @@ -5448,9 +5449,22 @@ var init_git_executor_chain = __esm({ return new Promise((done) => { const stdOut = []; const stdErr = []; - let rejection; logger.info(`%s %o`, command, args); logger("%O", spawnOptions); + let rejection = this._beforeSpawn(task, args); + if (rejection) { + return done({ + stdOut, + stdErr, + exitCode: 9901, + rejection + }); + } + this._plugins.exec("spawn.before", void 0, __spreadProps(__spreadValues({}, pluginContext(task, args)), { + kill(reason) { + rejection = reason || rejection; + } + })); const spawned = (0,external_child_process_namespaceObject.spawn)(command, args, spawnOptions); spawned.stdout.on("data", onDataReceived(stdOut, "stdOut", logger, outputLogger.step("stdOut"))); spawned.stderr.on("data", onDataReceived(stdErr, "stdErr", logger, outputLogger.step("stdErr"))); @@ -5480,6 +5494,15 @@ var init_git_executor_chain = __esm({ }); }); } + _beforeSpawn(task, args) { + let rejection; + this._plugins.exec("spawn.before", void 0, __spreadProps(__spreadValues({}, pluginContext(task, args)), { + kill(reason) { + rejection = reason || rejection; + } + })); + return rejection; + } }; } }); @@ -6587,6 +6610,59 @@ var init_status = __esm({ } }); +// src/lib/tasks/version.ts +function versionResponse(major = 0, minor = 0, patch = 0, agent = "", installed = true) { + return Object.defineProperty({ + major, + minor, + patch, + agent, + installed + }, "toString", { + value() { + return `${major}.${minor}.${patch}`; + }, + configurable: false, + enumerable: false + }); +} +function notInstalledResponse() { + return versionResponse(0, 0, 0, "", false); +} +function version_default() { + return { + version() { + return this._runTask({ + commands: ["--version"], + format: "utf-8", + parser(stdOut) { + if (stdOut === NOT_INSTALLED) { + return notInstalledResponse(); + } + const version = /version (\d+)\.(\d+)\.(\d+)(?:\s*\((.+)\))?/.exec(stdOut); + if (!version) { + return versionResponse(0, 0, 0, stdOut); + } + return versionResponse(asNumber(version[1]), asNumber(version[2]), asNumber(version[3]), version[4] || ""); + }, + onError(result, error, done, fail) { + if (result.exitCode === -2 /* NOT_FOUND */) { + return done(Buffer.from(NOT_INSTALLED)); + } + fail(error); + } + }); + } + }; +} +var NOT_INSTALLED; +var init_version = __esm({ + "src/lib/tasks/version.ts"() { + init_utils(); + NOT_INSTALLED = "installed=false"; + } +}); + // src/lib/simple-git-api.ts var simple_git_api_exports = {}; __export(simple_git_api_exports, { @@ -6607,6 +6683,7 @@ var init_simple_git_api = __esm({ init_push(); init_status(); init_task(); + init_version(); init_utils(); SimpleGitApi = class { constructor(_executor) { @@ -6670,7 +6747,7 @@ var init_simple_git_api = __esm({ return this._runTask(statusTask(getTrailingOptions(arguments)), trailingFunctionArgument(arguments)); } }; - Object.assign(SimpleGitApi.prototype, commit_default(), config_default(), grep_default(), log_default()); + Object.assign(SimpleGitApi.prototype, commit_default(), config_default(), grep_default(), log_default(), version_default()); } }); @@ -7680,6 +7757,32 @@ init_config(); init_grep(); init_reset(); +// src/lib/plugins/abort-plugin.ts +function abortPlugin(signal) { + if (!signal) { + return; + } + const onSpawnAfter = { + type: "spawn.after", + action(_data, context) { + function kill() { + context.kill(new GitPluginError(void 0, "abort", "Abort signal received")); + } + signal.addEventListener("abort", kill); + context.spawned.on("close", () => signal.removeEventListener("abort", kill)); + } + }; + const onSpawnBefore = { + type: "spawn.before", + action(_data, context) { + if (signal.aborted) { + context.kill(new GitPluginError(void 0, "abort", "Abort already signaled")); + } + } + }; + return [onSpawnBefore, onSpawnAfter]; +} + // src/lib/plugins/command-config-prefixing-plugin.ts init_utils(); function commandConfigPrefixingPlugin(configuration) { @@ -7925,6 +8028,7 @@ function gitInstanceFactory(baseDir, options) { plugins.add(commandConfigPrefixingPlugin(config.config)); } plugins.add(completionDetectionPlugin(config.completion)); + config.abort && plugins.add(abortPlugin(config.abort)); config.progress && plugins.add(progressMonitorPlugin(config.progress)); config.timeout && plugins.add(timeoutPlugin(config.timeout)); config.spawnOptions && plugins.add(spawnOptionsPlugin(config.spawnOptions)); diff --git a/package-lock.json b/package-lock.json index 266a822..2583284 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "dependencies": { "@actions/core": "1.9.1", "extract-pr-titles": "1.1.0", - "simple-git": "3.13.0" + "simple-git": "3.14.0" }, "devDependencies": { "@vercel/ncc": "0.34.0", @@ -1269,9 +1269,9 @@ } }, "node_modules/simple-git": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.13.0.tgz", - "integrity": "sha512-VYrs3joeHvWGcN3K135RpGpPjm4AHYeOrclwew6LlfHgq6ozQYIW2yMnmjf4PCgVOuSYCbXkdUjyiFawuJz8MA==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.14.0.tgz", + "integrity": "sha512-Paad1BkrI7vWhImLybDRYOHnh3WPsHSKXJpmKM+iGjjKNV91XaOdd+yIdZ/gqdzncHDEKYff4k+74oNo1R+U8Q==", "dependencies": { "@kwsites/file-exists": "^1.1.1", "@kwsites/promise-deferred": "^1.1.1", @@ -2341,9 +2341,9 @@ "dev": true }, "simple-git": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.13.0.tgz", - "integrity": "sha512-VYrs3joeHvWGcN3K135RpGpPjm4AHYeOrclwew6LlfHgq6ozQYIW2yMnmjf4PCgVOuSYCbXkdUjyiFawuJz8MA==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.14.0.tgz", + "integrity": "sha512-Paad1BkrI7vWhImLybDRYOHnh3WPsHSKXJpmKM+iGjjKNV91XaOdd+yIdZ/gqdzncHDEKYff4k+74oNo1R+U8Q==", "requires": { "@kwsites/file-exists": "^1.1.1", "@kwsites/promise-deferred": "^1.1.1", diff --git a/package.json b/package.json index 93b55a5..a24a674 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "dependencies": { "@actions/core": "1.9.1", "extract-pr-titles": "1.1.0", - "simple-git": "3.13.0" + "simple-git": "3.14.0" }, "devDependencies": { "@vercel/ncc": "0.34.0",