diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0328a1f..5077114 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -34,7 +34,7 @@ jobs: ruby-version: ${{ matrix.ruby }} - run: ruby --version - run: ridk version - if: matrix.os == 'windows-latest' && !startsWith(matrix.ruby, '2.3') && !startsWith(matrix.ruby, '2.2') + if: matrix.os == 'windows-latest' && !startsWith(matrix.ruby, 'jruby') && !startsWith(matrix.ruby, '2.3') && !startsWith(matrix.ruby, '2.2') - name: Subprocess test run: ruby test_subprocess.rb - name: OpenSSL version diff --git a/dist/index.js b/dist/index.js index 8d53d1e..6bb583f 100644 --- a/dist/index.js +++ b/dist/index.js @@ -5160,9 +5160,13 @@ function getAvailableVersions(platform, engine) { async function install(platform, ruby) { const rubyPrefix = await downloadAndExtract(platform, ruby) - core.addPath(path.join(rubyPrefix, 'bin')) - if (ruby.startsWith('rubinius')) { - core.addPath(path.join(rubyPrefix, 'gems', 'bin')) + if (platform === 'windows-latest') { + __webpack_require__(826).setupPath(undefined, rubyPrefix) + } else { + core.addPath(path.join(rubyPrefix, 'bin')) + if (ruby.startsWith('rubinius')) { + core.addPath(path.join(rubyPrefix, 'gems', 'bin')) + } } return rubyPrefix @@ -7860,6 +7864,7 @@ module.exports = function mergeConfig(config1, config2) { __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAvailableVersions", function() { return getAvailableVersions; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "install", function() { return install; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setupPath", function() { return setupPath; }); // Most of this logic is from // https://github.com/MSP-Greg/actions-ruby/blob/master/lib/main.js @@ -7895,8 +7900,7 @@ async function install(platform, ruby) { const rubyPrefix = `${drive}:\\${base}` const [hostedRuby, msys2] = await linkMSYS2() - const newPath = setupPath(msys2, rubyPrefix) - core.exportVariable('PATH', newPath) + setupPath(msys2, rubyPrefix) if (version.startsWith('2.2') || version.startsWith('2.3')) { core.exportVariable('SSL_CERT_FILE', `${hostedRuby}\\ssl\\cert.pem`) @@ -7933,13 +7937,16 @@ function setupPath(msys2, rubyPrefix) { // Remove default Ruby in PATH path = path.filter(e => !e.match(/\bRuby\b/)) - // Add MSYS2 in PATH - path.unshift(`${msys2}\\mingw64\\bin`, `${msys2}\\usr\\bin`) + if (msys2) { + // Add MSYS2 in PATH + path.unshift(`${msys2}\\mingw64\\bin`, `${msys2}\\usr\\bin`) + } // Add the downloaded Ruby in PATH path.unshift(`${rubyPrefix}\\bin`) - return path.join(';') + const newPath = path.join(';') + core.exportVariable('PATH', newPath) } diff --git a/ruby-builder.js b/ruby-builder.js index 0f981eb..5516892 100644 --- a/ruby-builder.js +++ b/ruby-builder.js @@ -16,9 +16,13 @@ export function getAvailableVersions(platform, engine) { export async function install(platform, ruby) { const rubyPrefix = await downloadAndExtract(platform, ruby) - core.addPath(path.join(rubyPrefix, 'bin')) - if (ruby.startsWith('rubinius')) { - core.addPath(path.join(rubyPrefix, 'gems', 'bin')) + if (platform === 'windows-latest') { + require('./windows').setupPath(undefined, rubyPrefix) + } else { + core.addPath(path.join(rubyPrefix, 'bin')) + if (ruby.startsWith('rubinius')) { + core.addPath(path.join(rubyPrefix, 'gems', 'bin')) + } } return rubyPrefix diff --git a/windows.js b/windows.js index 09b1ac9..19874db 100644 --- a/windows.js +++ b/windows.js @@ -33,8 +33,7 @@ export async function install(platform, ruby) { const rubyPrefix = `${drive}:\\${base}` const [hostedRuby, msys2] = await linkMSYS2() - const newPath = setupPath(msys2, rubyPrefix) - core.exportVariable('PATH', newPath) + setupPath(msys2, rubyPrefix) if (version.startsWith('2.2') || version.startsWith('2.3')) { core.exportVariable('SSL_CERT_FILE', `${hostedRuby}\\ssl\\cert.pem`) @@ -62,7 +61,7 @@ async function linkMSYS2() { return [latestHostedRuby, msys2] } -function setupPath(msys2, rubyPrefix) { +export function setupPath(msys2, rubyPrefix) { let path = process.env['PATH'].split(';') // Remove conflicting dev tools from PATH @@ -71,11 +70,14 @@ function setupPath(msys2, rubyPrefix) { // Remove default Ruby in PATH path = path.filter(e => !e.match(/\bRuby\b/)) - // Add MSYS2 in PATH - path.unshift(`${msys2}\\mingw64\\bin`, `${msys2}\\usr\\bin`) + if (msys2) { + // Add MSYS2 in PATH + path.unshift(`${msys2}\\mingw64\\bin`, `${msys2}\\usr\\bin`) + } // Add the downloaded Ruby in PATH path.unshift(`${rubyPrefix}\\bin`) - return path.join(';') + const newPath = path.join(';') + core.exportVariable('PATH', newPath) }