From b64355ae6ca0b5d484f0106a033dd1388965d06d Mon Sep 17 00:00:00 2001 From: Devon Carew Date: Wed, 11 Oct 2023 08:01:19 -0700 Subject: [PATCH] debugging issues around specifying the latest patch release (#108) * debugging issues around specifying the latest patch release * exitCode as a field * handle converting '3' to '3.0' * wrap sdk values in quotes * address process exit code issue * restore int => double promotion code * review comments * comments * set the process.exitCode value * re-test process.exitCode * remove temporary test * Update build.yml --- .github/workflows/dart.yml | 2 +- README.md | 2 +- action.yml | 2 +- dist/index.mjs | 3 +- dist/main.cjs | 519 +++++++++++++++++++------------------ dist/sig.txt | 2 +- lib/main.dart | 215 +++++++-------- lib/main.mjs | 2 +- lib/node/actions/core.dart | 2 - lib/node/process.dart | 2 + pubspec.yaml | 2 +- 11 files changed, 392 insertions(+), 361 deletions(-) diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index 579d812..6dd0f23 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -94,7 +94,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - sdk: [2.19, 3.1] + sdk: [2.19, 3.0, 3.1] fail-fast: false steps: - uses: actions/checkout@v4 diff --git a/README.md b/README.md index 99dc19f..8b070d8 100644 --- a/README.md +++ b/README.md @@ -91,7 +91,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] - sdk: [3.1, stable, beta, dev] + sdk: [3.1, stable, beta] steps: - uses: actions/checkout@v3 - uses: dart-lang/setup-dart@v1 diff --git a/action.yml b/action.yml index 5d3e1a2..033c5ff 100644 --- a/action.yml +++ b/action.yml @@ -7,7 +7,7 @@ inputs: sdk: description: >- This can be either the channel to install (i.e., 'stable', 'beta', 'dev'), - an SDK release version (i.e., `2.19`, `3.1`), or a specific SDK version + an SDK release version (i.e., '2.19', '3.1'), or a specific SDK version (i.e, '2.19.1', '3.0.0-1.4.beta'). required: false default: "stable" diff --git a/dist/index.mjs b/dist/index.mjs index 2cb76e0..ddcecd2 100644 --- a/dist/index.mjs +++ b/dist/index.mjs @@ -6678,7 +6678,6 @@ var _actions_exec__WEBPACK_IMPORTED_MODULE_1___namespace_cache; var _actions_tool_cache__WEBPACK_IMPORTED_MODULE_3___namespace_cache; var fs__WEBPACK_IMPORTED_MODULE_4___namespace_cache; var os__WEBPACK_IMPORTED_MODULE_6___namespace_cache; -var process__WEBPACK_IMPORTED_MODULE_7___namespace_cache; __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try { /* harmony import */ var _actions_core__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(9935); /* harmony import */ var _actions_exec__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(3409); @@ -6712,7 +6711,7 @@ globalThis.HttpClient = _actions_http_client__WEBPACK_IMPORTED_MODULE_2__.HttpCl globalThis.toolCache = /*#__PURE__*/ (_actions_tool_cache__WEBPACK_IMPORTED_MODULE_3___namespace_cache || (_actions_tool_cache__WEBPACK_IMPORTED_MODULE_3___namespace_cache = __nccwpck_require__.t(_actions_tool_cache__WEBPACK_IMPORTED_MODULE_3__, 2))); globalThis.fs = /*#__PURE__*/ (fs__WEBPACK_IMPORTED_MODULE_4___namespace_cache || (fs__WEBPACK_IMPORTED_MODULE_4___namespace_cache = __nccwpck_require__.t(fs__WEBPACK_IMPORTED_MODULE_4__, 2))); globalThis.os = /*#__PURE__*/ (os__WEBPACK_IMPORTED_MODULE_6___namespace_cache || (os__WEBPACK_IMPORTED_MODULE_6___namespace_cache = __nccwpck_require__.t(os__WEBPACK_IMPORTED_MODULE_6__, 2))); -globalThis.process = /*#__PURE__*/ (process__WEBPACK_IMPORTED_MODULE_7___namespace_cache || (process__WEBPACK_IMPORTED_MODULE_7___namespace_cache = __nccwpck_require__.t(process__WEBPACK_IMPORTED_MODULE_7__, 2))); +globalThis.process = process__WEBPACK_IMPORTED_MODULE_7__; globalThis.location = { href: `file://${process__WEBPACK_IMPORTED_MODULE_7__.cwd()}/`} globalThis.dartMainRunner = async function(main, args) { diff --git a/dist/main.cjs b/dist/main.cjs index 3973f14..5d205e3 100644 --- a/dist/main.cjs +++ b/dist/main.cjs @@ -1,4 +1,4 @@ -// Generated by dart2js (NullSafetyMode.sound, csp, intern-composite-values), the Dart to JavaScript compiler version: 3.2.0-199.0.dev. +// Generated by dart2js (NullSafetyMode.sound, csp, intern-composite-values), the Dart to JavaScript compiler version: 3.3.0-5.0.dev. // The code supports the following hooks: // dartPrint(message): // if this function is defined it is called instead of the Dart [print] @@ -507,9 +507,6 @@ map$1$1$ax(receiver, a0, $T1) { return J.getInterceptor$ax(receiver).map$1$1(receiver, a0, $T1); }, - split$1$s(receiver, a0) { - return J.getInterceptor$s(receiver).split$1(receiver, a0); - }, toString$0$(receiver) { return J.getInterceptor$(receiver).toString$0(receiver); }, @@ -624,7 +621,7 @@ this.__internal$_message = t0; }, CodeUnits: function CodeUnits(t0) { - this.__internal$_string = t0; + this._string = t0; }, EfficientLengthIterable: function EfficientLengthIterable() { }, @@ -1643,13 +1640,13 @@ }, _AllMatchesIterable: function _AllMatchesIterable(t0, t1, t2) { this._re = t0; - this._string = t1; + this.__js_helper$_string = t1; this.__js_helper$_start = t2; }, _AllMatchesIterator: function _AllMatchesIterator(t0, t1, t2) { var _ = this; _._regExp = t0; - _._string = t1; + _.__js_helper$_string = t1; _._nextIndex = t2; _.__js_helper$_current = null; }, @@ -5243,7 +5240,7 @@ return new A.UriData(text, indices, sourceUri); }, _createTables() { - var _i, t1, t2, t3, t4, t5, + var _i, t1, t2, t3, b, _s77_ = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-._~!$&'()*+,;=", _s1_ = ".", _s1_0 = ":", _s1_1 = "/", _s1_2 = "\\", _s1_3 = "?", _s1_4 = "#", _s2_ = "/\\", tables = A._setArrayType(new Array(22), type$.JSArray_Uint8List); @@ -5252,139 +5249,138 @@ t1 = new A._createTables_build(tables); t2 = new A._createTables_setChars(); t3 = new A._createTables_setRange(); - t4 = type$.Uint8List; - t5 = t4._as(t1.call$2(0, 225)); - t2.call$3(t5, _s77_, 1); - t2.call$3(t5, _s1_, 14); - t2.call$3(t5, _s1_0, 34); - t2.call$3(t5, _s1_1, 3); - t2.call$3(t5, _s1_2, 227); - t2.call$3(t5, _s1_3, 172); - t2.call$3(t5, _s1_4, 205); - t5 = t4._as(t1.call$2(14, 225)); - t2.call$3(t5, _s77_, 1); - t2.call$3(t5, _s1_, 15); - t2.call$3(t5, _s1_0, 34); - t2.call$3(t5, _s2_, 234); - t2.call$3(t5, _s1_3, 172); - t2.call$3(t5, _s1_4, 205); - t5 = t4._as(t1.call$2(15, 225)); - t2.call$3(t5, _s77_, 1); - t2.call$3(t5, "%", 225); - t2.call$3(t5, _s1_0, 34); - t2.call$3(t5, _s1_1, 9); - t2.call$3(t5, _s1_2, 233); - t2.call$3(t5, _s1_3, 172); - t2.call$3(t5, _s1_4, 205); - t5 = t4._as(t1.call$2(1, 225)); - t2.call$3(t5, _s77_, 1); - t2.call$3(t5, _s1_0, 34); - t2.call$3(t5, _s1_1, 10); - t2.call$3(t5, _s1_2, 234); - t2.call$3(t5, _s1_3, 172); - t2.call$3(t5, _s1_4, 205); - t5 = t4._as(t1.call$2(2, 235)); - t2.call$3(t5, _s77_, 139); - t2.call$3(t5, _s1_1, 131); - t2.call$3(t5, _s1_2, 131); - t2.call$3(t5, _s1_, 146); - t2.call$3(t5, _s1_3, 172); - t2.call$3(t5, _s1_4, 205); - t5 = t4._as(t1.call$2(3, 235)); - t2.call$3(t5, _s77_, 11); - t2.call$3(t5, _s1_1, 68); - t2.call$3(t5, _s1_2, 68); - t2.call$3(t5, _s1_, 18); - t2.call$3(t5, _s1_3, 172); - t2.call$3(t5, _s1_4, 205); - t5 = t4._as(t1.call$2(4, 229)); - t2.call$3(t5, _s77_, 5); - t3.call$3(t5, "AZ", 229); - t2.call$3(t5, _s1_0, 102); - t2.call$3(t5, "@", 68); - t2.call$3(t5, "[", 232); - t2.call$3(t5, _s1_1, 138); - t2.call$3(t5, _s1_2, 138); - t2.call$3(t5, _s1_3, 172); - t2.call$3(t5, _s1_4, 205); - t5 = t4._as(t1.call$2(5, 229)); - t2.call$3(t5, _s77_, 5); - t3.call$3(t5, "AZ", 229); - t2.call$3(t5, _s1_0, 102); - t2.call$3(t5, "@", 68); - t2.call$3(t5, _s1_1, 138); - t2.call$3(t5, _s1_2, 138); - t2.call$3(t5, _s1_3, 172); - t2.call$3(t5, _s1_4, 205); - t5 = t4._as(t1.call$2(6, 231)); - t3.call$3(t5, "19", 7); - t2.call$3(t5, "@", 68); - t2.call$3(t5, _s1_1, 138); - t2.call$3(t5, _s1_2, 138); - t2.call$3(t5, _s1_3, 172); - t2.call$3(t5, _s1_4, 205); - t5 = t4._as(t1.call$2(7, 231)); - t3.call$3(t5, "09", 7); - t2.call$3(t5, "@", 68); - t2.call$3(t5, _s1_1, 138); - t2.call$3(t5, _s1_2, 138); - t2.call$3(t5, _s1_3, 172); - t2.call$3(t5, _s1_4, 205); - t2.call$3(t4._as(t1.call$2(8, 8)), "]", 5); - t5 = t4._as(t1.call$2(9, 235)); - t2.call$3(t5, _s77_, 11); - t2.call$3(t5, _s1_, 16); - t2.call$3(t5, _s2_, 234); - t2.call$3(t5, _s1_3, 172); - t2.call$3(t5, _s1_4, 205); - t5 = t4._as(t1.call$2(16, 235)); - t2.call$3(t5, _s77_, 11); - t2.call$3(t5, _s1_, 17); - t2.call$3(t5, _s2_, 234); - t2.call$3(t5, _s1_3, 172); - t2.call$3(t5, _s1_4, 205); - t5 = t4._as(t1.call$2(17, 235)); - t2.call$3(t5, _s77_, 11); - t2.call$3(t5, _s1_1, 9); - t2.call$3(t5, _s1_2, 233); - t2.call$3(t5, _s1_3, 172); - t2.call$3(t5, _s1_4, 205); - t5 = t4._as(t1.call$2(10, 235)); - t2.call$3(t5, _s77_, 11); - t2.call$3(t5, _s1_, 18); - t2.call$3(t5, _s1_1, 10); - t2.call$3(t5, _s1_2, 234); - t2.call$3(t5, _s1_3, 172); - t2.call$3(t5, _s1_4, 205); - t5 = t4._as(t1.call$2(18, 235)); - t2.call$3(t5, _s77_, 11); - t2.call$3(t5, _s1_, 19); - t2.call$3(t5, _s2_, 234); - t2.call$3(t5, _s1_3, 172); - t2.call$3(t5, _s1_4, 205); - t5 = t4._as(t1.call$2(19, 235)); - t2.call$3(t5, _s77_, 11); - t2.call$3(t5, _s2_, 234); - t2.call$3(t5, _s1_3, 172); - t2.call$3(t5, _s1_4, 205); - t5 = t4._as(t1.call$2(11, 235)); - t2.call$3(t5, _s77_, 11); - t2.call$3(t5, _s1_1, 10); - t2.call$3(t5, _s1_2, 234); - t2.call$3(t5, _s1_3, 172); - t2.call$3(t5, _s1_4, 205); - t5 = t4._as(t1.call$2(12, 236)); - t2.call$3(t5, _s77_, 12); - t2.call$3(t5, _s1_3, 12); - t2.call$3(t5, _s1_4, 205); - t5 = t4._as(t1.call$2(13, 237)); - t2.call$3(t5, _s77_, 13); - t2.call$3(t5, _s1_3, 13); - t3.call$3(t4._as(t1.call$2(20, 245)), "az", 21); - t1 = t4._as(t1.call$2(21, 245)); - t3.call$3(t1, "az", 21); - t3.call$3(t1, "09", 21); - t2.call$3(t1, "+-.", 21); + b = t1.call$2(0, 225); + t2.call$3(b, _s77_, 1); + t2.call$3(b, _s1_, 14); + t2.call$3(b, _s1_0, 34); + t2.call$3(b, _s1_1, 3); + t2.call$3(b, _s1_2, 227); + t2.call$3(b, _s1_3, 172); + t2.call$3(b, _s1_4, 205); + b = t1.call$2(14, 225); + t2.call$3(b, _s77_, 1); + t2.call$3(b, _s1_, 15); + t2.call$3(b, _s1_0, 34); + t2.call$3(b, _s2_, 234); + t2.call$3(b, _s1_3, 172); + t2.call$3(b, _s1_4, 205); + b = t1.call$2(15, 225); + t2.call$3(b, _s77_, 1); + t2.call$3(b, "%", 225); + t2.call$3(b, _s1_0, 34); + t2.call$3(b, _s1_1, 9); + t2.call$3(b, _s1_2, 233); + t2.call$3(b, _s1_3, 172); + t2.call$3(b, _s1_4, 205); + b = t1.call$2(1, 225); + t2.call$3(b, _s77_, 1); + t2.call$3(b, _s1_0, 34); + t2.call$3(b, _s1_1, 10); + t2.call$3(b, _s1_2, 234); + t2.call$3(b, _s1_3, 172); + t2.call$3(b, _s1_4, 205); + b = t1.call$2(2, 235); + t2.call$3(b, _s77_, 139); + t2.call$3(b, _s1_1, 131); + t2.call$3(b, _s1_2, 131); + t2.call$3(b, _s1_, 146); + t2.call$3(b, _s1_3, 172); + t2.call$3(b, _s1_4, 205); + b = t1.call$2(3, 235); + t2.call$3(b, _s77_, 11); + t2.call$3(b, _s1_1, 68); + t2.call$3(b, _s1_2, 68); + t2.call$3(b, _s1_, 18); + t2.call$3(b, _s1_3, 172); + t2.call$3(b, _s1_4, 205); + b = t1.call$2(4, 229); + t2.call$3(b, _s77_, 5); + t3.call$3(b, "AZ", 229); + t2.call$3(b, _s1_0, 102); + t2.call$3(b, "@", 68); + t2.call$3(b, "[", 232); + t2.call$3(b, _s1_1, 138); + t2.call$3(b, _s1_2, 138); + t2.call$3(b, _s1_3, 172); + t2.call$3(b, _s1_4, 205); + b = t1.call$2(5, 229); + t2.call$3(b, _s77_, 5); + t3.call$3(b, "AZ", 229); + t2.call$3(b, _s1_0, 102); + t2.call$3(b, "@", 68); + t2.call$3(b, _s1_1, 138); + t2.call$3(b, _s1_2, 138); + t2.call$3(b, _s1_3, 172); + t2.call$3(b, _s1_4, 205); + b = t1.call$2(6, 231); + t3.call$3(b, "19", 7); + t2.call$3(b, "@", 68); + t2.call$3(b, _s1_1, 138); + t2.call$3(b, _s1_2, 138); + t2.call$3(b, _s1_3, 172); + t2.call$3(b, _s1_4, 205); + b = t1.call$2(7, 231); + t3.call$3(b, "09", 7); + t2.call$3(b, "@", 68); + t2.call$3(b, _s1_1, 138); + t2.call$3(b, _s1_2, 138); + t2.call$3(b, _s1_3, 172); + t2.call$3(b, _s1_4, 205); + t2.call$3(t1.call$2(8, 8), "]", 5); + b = t1.call$2(9, 235); + t2.call$3(b, _s77_, 11); + t2.call$3(b, _s1_, 16); + t2.call$3(b, _s2_, 234); + t2.call$3(b, _s1_3, 172); + t2.call$3(b, _s1_4, 205); + b = t1.call$2(16, 235); + t2.call$3(b, _s77_, 11); + t2.call$3(b, _s1_, 17); + t2.call$3(b, _s2_, 234); + t2.call$3(b, _s1_3, 172); + t2.call$3(b, _s1_4, 205); + b = t1.call$2(17, 235); + t2.call$3(b, _s77_, 11); + t2.call$3(b, _s1_1, 9); + t2.call$3(b, _s1_2, 233); + t2.call$3(b, _s1_3, 172); + t2.call$3(b, _s1_4, 205); + b = t1.call$2(10, 235); + t2.call$3(b, _s77_, 11); + t2.call$3(b, _s1_, 18); + t2.call$3(b, _s1_1, 10); + t2.call$3(b, _s1_2, 234); + t2.call$3(b, _s1_3, 172); + t2.call$3(b, _s1_4, 205); + b = t1.call$2(18, 235); + t2.call$3(b, _s77_, 11); + t2.call$3(b, _s1_, 19); + t2.call$3(b, _s2_, 234); + t2.call$3(b, _s1_3, 172); + t2.call$3(b, _s1_4, 205); + b = t1.call$2(19, 235); + t2.call$3(b, _s77_, 11); + t2.call$3(b, _s2_, 234); + t2.call$3(b, _s1_3, 172); + t2.call$3(b, _s1_4, 205); + b = t1.call$2(11, 235); + t2.call$3(b, _s77_, 11); + t2.call$3(b, _s1_1, 10); + t2.call$3(b, _s1_2, 234); + t2.call$3(b, _s1_3, 172); + t2.call$3(b, _s1_4, 205); + b = t1.call$2(12, 236); + t2.call$3(b, _s77_, 12); + t2.call$3(b, _s1_3, 12); + t2.call$3(b, _s1_4, 205); + b = t1.call$2(13, 237); + t2.call$3(b, _s77_, 13); + t2.call$3(b, _s1_3, 13); + t3.call$3(t1.call$2(20, 245), "az", 21); + b = t1.call$2(21, 245); + t3.call$3(b, "az", 21); + t3.call$3(b, "09", 21); + t2.call$3(b, "+-.", 21); return tables; }, _scan(uri, start, end, state, indices) { @@ -5800,7 +5796,7 @@ main$body(args) { var $async$goto = 0, $async$completer = A._makeAsyncAwaitCompleter(type$.dynamic), - $async$returnValue, $async$handler = 2, $async$currentError, sdk, flavor, raw, os, architecture, version, channel, url, toolName, sdkPath, archivePath, extractedFolder, pubCache, e, t1, t2, exception, t3, t4, versionFilePath, $async$exception, $async$exception1; + $async$handler = 1, $async$currentError, e, exception, $async$exception; var $async$main = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { if ($async$errorCode === 1) { $async$currentError = $async$result; @@ -5810,15 +5806,63 @@ switch ($async$goto) { case 0: // Function start - $async$handler = 4; + $async$handler = 3; + $async$goto = 6; + return A._asyncAwait(A._impl(args), $async$main); + case 6: + // returning from await. + $async$handler = 1; + // goto after finally + $async$goto = 5; + break; + case 3: + // catch + $async$handler = 2; + $async$exception = $async$currentError; + e = A.unwrapException($async$exception); + A._fail(A.S(e)); + // goto after finally + $async$goto = 5; + break; + case 2: + // uncaught + // goto rethrow + $async$goto = 1; + break; + case 5: + // after finally + // implicit return + return A._asyncReturn(null, $async$completer); + case 1: + // rethrow + return A._asyncRethrow($async$currentError, $async$completer); + } + }); + return A._asyncStartSync($async$main, $async$completer); + }, + _impl(args) { + var $async$goto = 0, + $async$completer = A._makeAsyncAwaitCompleter(type$.void), + $async$returnValue, $async$handler = 2, $async$currentError, flavor, channel, raw, os, architecture, version, exception, url, toolName, sdkPath, t3, archivePath, extractedFolder, t4, pubCache, versionFilePath, t1, t2, sdk, $async$exception, $async$temp1; + var $async$_impl = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) { + if ($async$errorCode === 1) { + $async$currentError = $async$result; + $async$goto = $async$handler; + } + while (true) + switch ($async$goto) { + case 0: + // Function start t1 = self; t2 = type$.JSObject; sdk = A._asString(t2._as(t1.core).getInput("sdk")); - if (J.get$length$asx(sdk) === 0) + if (sdk.length === 0) sdk = "stable"; + if (A.Primitives_parseInt(sdk, null) != null && !B.JSString_methods.contains$1(sdk, ".")) + sdk += ".0"; flavor = A._asString(t2._as(t1.core).getInput("flavor")); if (J.get$length$asx(flavor) === 0) - flavor = J.$eq$(sdk, "main") ? "raw" : "release"; + flavor = sdk === "main" ? "raw" : "release"; else if (!J.$eq$(flavor, "raw") && !J.$eq$(flavor, "release")) { A._fail("Unrecognized build flavor '" + A.S(flavor) + "'."); // goto return @@ -5828,141 +5872,140 @@ raw = J.$eq$(flavor, "raw"); os = A.getPlatform(); architecture = A._asString(t2._as(t1.core).getInput("architecture")); - if (J.get$length$asx(architecture) === 0) + if (architecture.length === 0) architecture = B.JSArray_methods.contains$1(B.List_x64_ia32_arm_arm64, A._asString(t2._as(t1.os).arch())) ? A._asString(t2._as(t1.os).arch()) : "x64"; - version = null; channel = null; - $async$goto = J.split$1$s(sdk, ".").length === 2 ? 7 : 9; + $async$goto = sdk.split(".").length === 2 ? 3 : 5; break; - case 7: + case 3: // then channel = "stable"; - $async$goto = 10; - return A._asyncAwait(A.findLatestSdkForRelease(sdk), $async$main); - case 10: + $async$goto = 6; + return A._asyncAwait(A.findLatestSdkForRelease(sdk), $async$_impl); + case 6: // returning from await. version = $async$result; // goto join - $async$goto = 8; + $async$goto = 4; break; - case 9: + case 5: // else - $async$goto = J.$eq$(sdk, "stable") || J.$eq$(sdk, "beta") || J.$eq$(sdk, "dev") ? 11 : 13; + $async$goto = sdk === "stable" || sdk === "beta" || sdk === "dev" ? 7 : 9; break; - case 11: + case 7: // then channel = sdk; - $async$goto = A.boolConversionCheck(raw) ? 14 : 16; + $async$goto = raw ? 10 : 12; break; - case 14: + case 10: // then $async$result = "latest"; // goto join - $async$goto = 15; + $async$goto = 11; break; - case 16: + case 12: // else - $async$goto = 17; - return A._asyncAwait(A.latestPublishedVersion(channel, flavor), $async$main); - case 17: + $async$goto = 13; + return A._asyncAwait(A.latestPublishedVersion(channel, flavor), $async$_impl); + case 13: // returning from await. - case 15: + case 11: // join version = $async$result; // goto join - $async$goto = 12; + $async$goto = 8; break; - case 13: + case 9: // else - $async$goto = J.$eq$(sdk, "main") ? 18 : 20; + $async$goto = sdk === "main" ? 14 : 16; break; - case 18: + case 14: // then - $async$handler = 22; + $async$handler = 18; channel = "main"; - $async$goto = 25; - return A._asyncAwait(A.latestPublishedVersion(channel, flavor), $async$main); - case 25: + $async$goto = 21; + return A._asyncAwait(A.latestPublishedVersion(channel, flavor), $async$_impl); + case 21: // returning from await. - $async$handler = 4; + $async$handler = 2; // goto after finally - $async$goto = 24; + $async$goto = 20; break; - case 22: + case 18: // catch - $async$handler = 21; + $async$handler = 17; $async$exception = $async$currentError; channel = "be"; // goto after finally - $async$goto = 24; + $async$goto = 20; break; - case 21: + case 17: // uncaught - // goto catch - $async$goto = 4; + // goto rethrow + $async$goto = 2; break; - case 24: + case 20: // after finally version = "latest"; // goto join - $async$goto = 19; + $async$goto = 15; break; - case 20: + case 16: // else - version = sdk; - if (J.contains$1$asx(sdk, "dev")) + if (B.JSString_methods.contains$1(sdk, "dev")) channel = "dev"; - else if (J.contains$1$asx(sdk, "beta")) + else if (B.JSString_methods.contains$1(sdk, "beta")) channel = "beta"; - else if (J.contains$1$asx(sdk, "main")) { + else if (B.JSString_methods.contains$1(sdk, "main")) { A._fail("Versions cannot be specified for main channel builds."); // goto return $async$goto = 1; break; } else channel = "stable"; - case 19: - // join - case 12: + version = sdk; + case 15: // join case 8: // join - t2._as(t1.core).info("Installing the " + A.S(os) + "-" + A.S(architecture) + " Dart SDK version " + A.S(version) + " from the " + A.S(channel) + " (" + A.S(flavor) + ") channel."); - url = string$.https_ + A.S(channel) + "/" + A.S(flavor) + "/" + A.S(version) + "/sdk/dartsdk-" + A.S(os) + "-" + A.S(architecture) + "-release.zip"; - toolName = A.boolConversionCheck(raw) ? "dart_raw" : "dart"; - sdkPath = !A.boolConversionCheck(raw) ? A._asString(t2._as(t1.toolCache).find(toolName, version, architecture)) : ""; - $async$goto = J.get$length$asx(sdkPath) !== 0 ? 26 : 28; + case 4: + // join + t2._as(t1.core).info("Installing the " + os + "-" + architecture + " Dart SDK version " + version + " from the " + A.S(channel) + " (" + A.S(flavor) + ") channel."); + url = string$.https_ + A.S(channel) + "/" + A.S(flavor) + "/" + version + "/sdk/dartsdk-" + os + "-" + architecture + "-release.zip"; + toolName = raw ? "dart_raw" : "dart"; + sdkPath = !raw ? A._asString(t2._as(t1.toolCache).find(toolName, version, architecture)) : ""; + $async$goto = sdkPath.length !== 0 ? 22 : 24; break; - case 26: + case 22: // then - t2._as(t1.core).info("Using cached sdk from " + A.S(sdkPath) + "."); + t2._as(t1.core).info("Using cached sdk from " + sdkPath + "."); // goto join - $async$goto = 27; + $async$goto = 23; break; - case 28: + case 24: // else - t2._as(t1.core).info(A.S(url) + " ..."); + t2._as(t1.core).info(url + " ..."); t3 = type$.String; - $async$goto = 29; - return A._asyncAwait(A.promiseToFuture(t2._as(t2._as(t1.toolCache).downloadTool(url)), t3), $async$main); - case 29: + $async$goto = 25; + return A._asyncAwait(A.promiseToFuture(t2._as(t2._as(t1.toolCache).downloadTool(url)), t3), $async$_impl); + case 25: // returning from await. archivePath = $async$result; - $async$goto = 30; - return A._asyncAwait(A.promiseToFuture(t2._as(t2._as(t1.toolCache).extractZip(archivePath)), t3), $async$main); - case 30: + $async$temp1 = A; + $async$goto = 26; + return A._asyncAwait(A.promiseToFuture(t2._as(t2._as(t1.toolCache).extractZip(archivePath)), t3), $async$_impl); + case 26: // returning from await. - extractedFolder = $async$result; - extractedFolder = A.join(extractedFolder, "dart-sdk"); - $async$goto = 31; - return A._asyncAwait(A.promiseToFuture(t2._as(t2._as(t1.toolCache).cacheDir(extractedFolder, toolName, version, architecture)), t3), $async$main); - case 31: + extractedFolder = $async$temp1.join($async$result, "dart-sdk"); + $async$goto = 27; + return A._asyncAwait(A.promiseToFuture(t2._as(t2._as(t1.toolCache).cacheDir(extractedFolder, toolName, version, architecture)), t3), $async$_impl); + case 27: // returning from await. sdkPath = $async$result; - case 27: + case 23: // join t3 = t2._as(t1.process); - t4 = J.$eq$(os, "windows") ? "USERPROFILE" : "HOME"; + t4 = os === "windows" ? "USERPROFILE" : "HOME"; t4 = A._asStringQ(t2._as(t3.env)[t4]); t4.toString; pubCache = A.join(t4, ".pub-cache"); @@ -5970,37 +6013,17 @@ t2._as(t1.core).addPath(A.join(sdkPath, "bin")); t2._as(t1.core).exportVariable("PUB_CACHE", pubCache); t2._as(t1.core).addPath(A.join(pubCache, "bin")); - $async$goto = 32; - return A._asyncAwait(A.createPubOIDCToken(), $async$main); - case 32: + $async$goto = 28; + return A._asyncAwait(A.createPubOIDCToken(), $async$_impl); + case 28: // returning from await. t4 = t2._as(t1.core); versionFilePath = A.join(sdkPath, "version"); t4.setOutput("dart-version", B.JSString_methods.trim$0(A._asString(t2._as(t1.fs).readFileSync(versionFilePath, "utf8")))); - $async$goto = 33; - return A._asyncAwait(A.promiseToFuture(t2._as(t2._as(t1.exec).exec("dart", A._setArrayType(["--version"], type$.JSArray_String))), type$.void), $async$main); - case 33: + $async$goto = 29; + return A._asyncAwait(A.promiseToFuture(t2._as(t2._as(t1.exec).exec("dart", A._setArrayType(["--version"], type$.JSArray_String))), type$.void), $async$_impl); + case 29: // returning from await. - $async$handler = 2; - // goto after finally - $async$goto = 6; - break; - case 4: - // catch - $async$handler = 3; - $async$exception1 = $async$currentError; - e = A.unwrapException($async$exception1); - A._fail(A.S(e)); - // goto after finally - $async$goto = 6; - break; - case 3: - // uncaught - // goto rethrow - $async$goto = 2; - break; - case 6: - // after finally case 1: // return return A._asyncReturn($async$returnValue, $async$completer); @@ -6009,7 +6032,7 @@ return A._asyncRethrow($async$currentError, $async$completer); } }); - return A._asyncStartSync($async$main, $async$completer); + return A._asyncStartSync($async$_impl, $async$completer); }, getPlatform() { var t1, @@ -6137,7 +6160,7 @@ var t1 = self, t2 = type$.JSObject; t2._as(t1.core).error(message); - t2._as(t1.core).setFailed(message); + t2._as(t1.process).exitCode = 1; }, findLatestSdkForRelease_closure: function findLatestSdkForRelease_closure() { }, @@ -6539,10 +6562,6 @@ return false; return other === this.substring$1(receiver, t1 - otherLength); }, - split$1(receiver, pattern) { - var t1 = A._setArrayType(receiver.split(pattern), type$.JSArray_String); - return t1; - }, replaceRange$3(receiver, start, end, replacement) { var e = A.RangeError_checkValidRange(start, end, receiver.length); return receiver.substring(0, start) + replacement + receiver.substring(e); @@ -6708,10 +6727,10 @@ }; A.CodeUnits.prototype = { get$length(_) { - return this.__internal$_string.length; + return this._string.length; }, $index(_, i) { - var t1 = this.__internal$_string; + var t1 = this._string; if (!(i >= 0 && i < t1.length)) return A.ioore(t1, i); return t1.charCodeAt(i); @@ -7210,7 +7229,7 @@ A._MatchImplementation.prototype = {$isMatch: 1, $isRegExpMatch: 1}; A._AllMatchesIterable.prototype = { get$iterator(_) { - return new A._AllMatchesIterator(this._re, this._string, this.__js_helper$_start); + return new A._AllMatchesIterator(this._re, this.__js_helper$_string, this.__js_helper$_start); } }; A._AllMatchesIterator.prototype = { @@ -7220,7 +7239,7 @@ }, moveNext$0() { var t1, t2, t3, match, t4, nextIndex, _this = this, - string = _this._string; + string = _this.__js_helper$_string; if (string == null) return false; t1 = _this._nextIndex; @@ -7258,7 +7277,7 @@ return true; } } - _this._string = _this.__js_helper$_current = null; + _this.__js_helper$_string = _this.__js_helper$_current = null; return false; }, $isIterator: 1 diff --git a/dist/sig.txt b/dist/sig.txt index 4d8bc24..898731d 100644 --- a/dist/sig.txt +++ b/dist/sig.txt @@ -1 +1 @@ -593DCF2BE4538C54412F6D8B0953D4B3 +753FFE376D98E81DAB70B208671C19C2 diff --git a/lib/main.dart b/lib/main.dart index 7e58c1d..23dc299 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -18,120 +18,130 @@ import 'node/process.dart'; void main(List args) async { try { - // sdk - var sdk = core.getInput('sdk'); - if (sdk.isEmpty) { - sdk = 'stable'; - } + await _impl(args); + } catch (e) { + _fail('$e'); + } +} - // flavor - var flavor = core.getInput('flavor'); - if (flavor.isEmpty) { - flavor = sdk == 'main' ? 'raw' : 'release'; - } else if (flavor != 'raw' && flavor != 'release') { - _fail("Unrecognized build flavor '$flavor'."); - return; - } - final raw = flavor == 'raw'; +Future _impl(List args) async { + // sdk + var sdk = core.getInput('sdk'); + if (sdk.isEmpty) { + sdk = 'stable'; + } - // os - final os = getPlatform(); + // A `3.0` in a workflow file reaches us as a `3` here; to work around that, + // we promote any int value back to a double. + if (int.tryParse(sdk) != null && !sdk.contains('.')) { + // Convert a '3' to a '3.0'. + sdk = '$sdk.0'; + } - // architecture - var architecture = core.getInput('architecture'); - if (architecture.isEmpty) { - architecture = getArch(); - } + // flavor + var flavor = core.getInput('flavor'); + if (flavor.isEmpty) { + flavor = sdk == 'main' ? 'raw' : 'release'; + } else if (flavor != 'raw' && flavor != 'release') { + _fail("Unrecognized build flavor '$flavor'."); + return; + } + final raw = flavor == 'raw'; - // calculate version and channel - String version; - String channel; + // os + final os = getPlatform(); - if (sdk.split('.').length == 2) { - // Handle the wildcard (`2.19`, `3.1`, ...) format. - channel = 'stable'; + // architecture + var architecture = core.getInput('architecture'); + if (architecture.isEmpty) { + architecture = getArch(); + } - // Find the latest version for the given sdk release. - version = await findLatestSdkForRelease(sdk); - } else if (sdk == 'stable' || sdk == 'beta' || sdk == 'dev') { - channel = sdk; - version = - raw ? 'latest' : (await latestPublishedVersion(channel, flavor)); - } else if (sdk == 'main') { - // Check for `main` first and fall back to `be`. This handles the channel - // rename from `be` to `main` (also tracked as b/299435467). - try { - channel = 'main'; - await latestPublishedVersion(channel, flavor); - } catch (_) { - channel = 'be'; - } - version = 'latest'; - } else { - version = sdk; - - // Derive the channel from the version string. - if (sdk.contains('dev')) { - channel = 'dev'; - } else if (sdk.contains('beta')) { - channel = 'beta'; - } else if (sdk.contains('main')) { - _fail('Versions cannot be specified for main channel builds.'); - return; - } else { - channel = 'stable'; - } + // calculate version and channel + String version; + String channel; + + if (sdk.split('.').length == 2) { + // Handle the wildcard (`2.19`, `3.1`, ...) format. + channel = 'stable'; + + // Find the latest version for the given sdk release. + version = await findLatestSdkForRelease(sdk); + } else if (sdk == 'stable' || sdk == 'beta' || sdk == 'dev') { + channel = sdk; + version = raw ? 'latest' : (await latestPublishedVersion(channel, flavor)); + } else if (sdk == 'main') { + // Check for `main` first and fall back to `be`. This handles the channel + // rename from `be` to `main` (also tracked as b/299435467). + try { + channel = 'main'; + await latestPublishedVersion(channel, flavor); + } catch (_) { + channel = 'be'; } - - core.info('Installing the $os-$architecture Dart SDK version $version from ' - 'the $channel ($flavor) channel.'); - - // Calculate url based on https://dart.dev/tools/sdk/archive#download-urls. - final url = 'https://storage.googleapis.com/dart-archive/' - 'channels/$channel/$flavor/$version/sdk/' - 'dartsdk-$os-$architecture-release.zip'; - - // Use a cached sdk or download and cache the sdk; using a 'raw' sdk flavor - // disables caching. - final toolName = raw ? 'dart_raw' : 'dart'; - var sdkPath = !raw ? toolCache.find(toolName, version, architecture) : ''; - if (sdkPath.isNotEmpty) { - core.info('Using cached sdk from $sdkPath.'); + version = 'latest'; + } else { + version = sdk; + + // Derive the channel from the version string. + if (sdk.contains('dev')) { + channel = 'dev'; + } else if (sdk.contains('beta')) { + channel = 'beta'; + } else if (sdk.contains('main')) { + _fail('Versions cannot be specified for main channel builds.'); + return; } else { - core.info('$url ...'); - - final archivePath = - await promiseToFuture(toolCache.downloadTool(url)); - var extractedFolder = - await promiseToFuture(toolCache.extractZip(archivePath)); - extractedFolder = path.join(extractedFolder, 'dart-sdk'); - - sdkPath = await promiseToFuture( - toolCache.cacheDir(extractedFolder, toolName, version, architecture)); + channel = 'stable'; } + } + + core.info('Installing the $os-$architecture Dart SDK version $version from ' + 'the $channel ($flavor) channel.'); + + // Calculate url based on https://dart.dev/tools/sdk/archive#download-urls. + final url = 'https://storage.googleapis.com/dart-archive/' + 'channels/$channel/$flavor/$version/sdk/' + 'dartsdk-$os-$architecture-release.zip'; + + // Use a cached sdk or download and cache the sdk; using a 'raw' sdk flavor + // disables caching. + final toolName = raw ? 'dart_raw' : 'dart'; + var sdkPath = !raw ? toolCache.find(toolName, version, architecture) : ''; + if (sdkPath.isNotEmpty) { + core.info('Using cached sdk from $sdkPath.'); + } else { + core.info('$url ...'); + + final archivePath = + await promiseToFuture(toolCache.downloadTool(url)); + var extractedFolder = + await promiseToFuture(toolCache.extractZip(archivePath)); + extractedFolder = path.join(extractedFolder, 'dart-sdk'); + + sdkPath = await promiseToFuture( + toolCache.cacheDir(extractedFolder, toolName, version, architecture)); + } - final pubCache = path.join( - process.env(os == 'windows' ? 'USERPROFILE' : 'HOME')!, '.pub-cache'); + final pubCache = path.join( + process.env(os == 'windows' ? 'USERPROFILE' : 'HOME')!, '.pub-cache'); - core.exportVariable('DART_HOME', sdkPath); - core.addPath(path.join(sdkPath, 'bin')); - core.exportVariable('PUB_CACHE', pubCache); - core.addPath(path.join(pubCache, 'bin')); + core.exportVariable('DART_HOME', sdkPath); + core.addPath(path.join(sdkPath, 'bin')); + core.exportVariable('PUB_CACHE', pubCache); + core.addPath(path.join(pubCache, 'bin')); - // Create the OIDC token used for pub.dev publishing. - await createPubOIDCToken(); + // Create the OIDC token used for pub.dev publishing. + await createPubOIDCToken(); - // Configure the outputs. - core.setOutput('dart-version', getVersionFromSdk(sdkPath)); + // Configure the outputs. + core.setOutput('dart-version', getVersionFromSdk(sdkPath)); - // Report success; print version. - await promiseToFuture(exec.exec( - 'dart', - ['--version'.toJS].toJS, - )); - } catch (e) { - _fail('$e'); - } + // Report success; print version. + await promiseToFuture(exec.exec( + 'dart', + ['--version'.toJS].toJS, + )); } String getVersionFromSdk(String sdkPath) { @@ -252,6 +262,9 @@ Future findLatestSdkForRelease(String sdkRelease) async { } void _fail(String message) { + // 'core.setFailed' throws when we call it; see #107. + // core.setFailed(message); + core.error(message); - core.setFailed(message); + process.exitCode = 1; } diff --git a/lib/main.mjs b/lib/main.mjs index c158205..6194fdf 100644 --- a/lib/main.mjs +++ b/lib/main.mjs @@ -9,7 +9,7 @@ import * as toolCache from '@actions/tool-cache'; import * as fs from 'fs'; import * as module from 'module'; import * as os from 'os'; -import * as process from 'process'; +import process from 'process'; const require = module.createRequire(import.meta.url); diff --git a/lib/node/actions/core.dart b/lib/node/actions/core.dart index 575f6cc..e9e37a2 100644 --- a/lib/node/actions/core.dart +++ b/lib/node/actions/core.dart @@ -21,8 +21,6 @@ extension type Core (JSObject obj) { external void exportVariable(String name, String value); - external void setFailed(String name); - // JSPromise external JSPromise getIDToken(String audience); } diff --git a/lib/node/process.dart b/lib/node/process.dart index e78c3d7..867988d 100644 --- a/lib/node/process.dart +++ b/lib/node/process.dart @@ -18,4 +18,6 @@ extension type Process (JSObject obj) { /// Read the environment variable [variable]. String? env(String variable) => getProperty(_env, variable); + + external int exitCode; } diff --git a/pubspec.yaml b/pubspec.yaml index 2fe441f..9a9437a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -4,7 +4,7 @@ description: The setup-dart GitHub Action - download and setup the Dart SDK. publish_to: none environment: - sdk: ^3.2.0-0 + sdk: ^3.3.0-0 dependencies: path: ^1.8.0