diff --git a/.github/workflows/versions.yml b/.github/workflows/versions.yml index b25d1d7..1fd581c 100644 --- a/.github/workflows/versions.yml +++ b/.github/workflows/versions.yml @@ -139,7 +139,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ ubuntu-latest, windows-latest, macos-latest ] + os: [ubuntu-latest, windows-latest, macos-latest] steps: - uses: actions/checkout@v3 - name: Setup Go and check latest diff --git a/dist/setup/index.js b/dist/setup/index.js index 0dcd234..56b4268 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -61337,7 +61337,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.resolveStableVersionInput = exports.parseGoVersionFile = exports.makeSemver = exports.getVersionsDist = exports.findMatch = exports.getInfoFromManifest = exports.getManifest = exports.extractGoArchive = exports.getGo = void 0; +exports.resolveStableVersionInput = exports.parseToolVersionsFile = exports.parseGoVersionFile = exports.makeSemver = exports.getVersionsDist = exports.findMatch = exports.getInfoFromManifest = exports.getManifest = exports.extractGoArchive = exports.getGo = void 0; const tc = __importStar(__nccwpck_require__(7784)); const core = __importStar(__nccwpck_require__(2186)); const path = __importStar(__nccwpck_require__(1017)); @@ -61598,6 +61598,12 @@ function parseGoVersionFile(versionFilePath) { return contents.trim(); } exports.parseGoVersionFile = parseGoVersionFile; +function parseToolVersionsFile(toolVersionsPath) { + const contents = fs_1.default.readFileSync(toolVersionsPath).toString(); + const match = contents.match(/^golang (\d+(\.\d+)*)/m); + return match ? match[1] : ''; +} +exports.parseToolVersionsFile = parseToolVersionsFile; function resolveStableVersionDist(versionSpec, arch) { return __awaiter(this, void 0, void 0, function* () { const archFilter = sys.getArch(arch); @@ -61794,18 +61800,32 @@ exports.parseGoVersion = parseGoVersion; function resolveVersionInput() { let version = core.getInput('go-version'); const versionFilePath = core.getInput('go-version-file'); - if (version && versionFilePath) { - core.warning('Both go-version and go-version-file inputs are specified, only go-version will be used'); + let toolVersionsPath = core.getInput('tool-versions-file'); + if (version && (versionFilePath || toolVersionsPath)) { + core.warning('Multiple version inputs are specified, only go-version will be used'); } if (version) { return version; } - if (versionFilePath) { + else if (versionFilePath) { if (!fs_1.default.existsSync(versionFilePath)) { throw new Error(`The specified go version file at: ${versionFilePath} does not exist`); } version = installer.parseGoVersionFile(versionFilePath); } + else { + // in the case of no version specification, reach for .tool-versions + if (toolVersionsPath && !fs_1.default.existsSync(toolVersionsPath)) { + throw new Error(`The specified .tool-versions file at ${toolVersionsPath} does not exist`); + } + if (!toolVersionsPath) { + toolVersionsPath = '.tool-versions'; + if (!fs_1.default.existsSync(toolVersionsPath)) { + throw new Error(`No .tool-versions file was found in the project path. Please specify using tool-versions-file`); + } + } + version = installer.parseToolVersionsFile(toolVersionsPath); + } return version; } diff --git a/src/main.ts b/src/main.ts index a0bea01..8be7c6e 100644 --- a/src/main.ts +++ b/src/main.ts @@ -157,17 +157,17 @@ function resolveVersionInput(): string { version = installer.parseGoVersionFile(versionFilePath); } else { // in the case of no version specification, reach for .tool-versions - if(toolVersionsPath && !fs.existsSync(toolVersionsPath)) { + if (toolVersionsPath && !fs.existsSync(toolVersionsPath)) { throw new Error( - `The specified .tool-versions file at ${toolVersionsPath} does not exist` + `The specified .tool-versions file at ${toolVersionsPath} does not exist` ); } if (!toolVersionsPath) { toolVersionsPath = '.tool-versions'; - if(!fs.existsSync(toolVersionsPath)) { + if (!fs.existsSync(toolVersionsPath)) { throw new Error( - `No .tool-versions file was found in the project path. Please specify using tool-versions-file` + `No .tool-versions file was found in the project path. Please specify using tool-versions-file` ); } }