mirror of
https://github.com/ruby/setup-ruby.git
synced 2026-09-13 22:44:20 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e648fd85b4 | ||
|
|
fb9d6fbc69 | ||
|
|
9c77d1b41f | ||
|
|
2641afc25c |
+20
-6
@@ -976,6 +976,8 @@ async function run() {
|
||||
const engineVersions = installer.getAvailableVersions(platform, engine)
|
||||
const ruby = validateRubyEngineAndVersion(platform, engineVersions, engine, version)
|
||||
|
||||
createGemRC()
|
||||
|
||||
const [rubyPrefix, newPathEntries] = await installer.install(platform, ruby)
|
||||
|
||||
setupPath(ruby, newPathEntries)
|
||||
@@ -1040,6 +1042,13 @@ function validateRubyEngineAndVersion(platform, engineVersions, engine, version)
|
||||
return engine + '-' + version
|
||||
}
|
||||
|
||||
function createGemRC() {
|
||||
const gemrc = path.join(os.homedir(), '.gemrc')
|
||||
if (!fs.existsSync(gemrc)) {
|
||||
fs.writeFileSync(gemrc, `gem: --no-document${os.EOL}`)
|
||||
}
|
||||
}
|
||||
|
||||
function setupPath(ruby, newPathEntries) {
|
||||
const originalPath = process.env['PATH'].split(path.delimiter)
|
||||
let cleanPath = originalPath.filter(entry => !/\bruby\b/i.test(entry))
|
||||
@@ -3415,7 +3424,7 @@ function getAvailableVersions(platform, engine) {
|
||||
|
||||
async function install(platform, ruby) {
|
||||
const rubyPrefix = await downloadAndExtract(platform, ruby)
|
||||
let newPathEntries;
|
||||
let newPathEntries
|
||||
if (ruby.startsWith('rubinius')) {
|
||||
newPathEntries = [path.join(rubyPrefix, 'bin'), path.join(rubyPrefix, 'gems', 'bin')]
|
||||
} else {
|
||||
@@ -4801,12 +4810,16 @@ __webpack_require__.r(__webpack_exports__);
|
||||
// https://github.com/MSP-Greg/actions-ruby/blob/master/lib/main.js
|
||||
|
||||
const fs = __webpack_require__(747)
|
||||
const path = __webpack_require__(622)
|
||||
const cp = __webpack_require__(129)
|
||||
const core = __webpack_require__(470)
|
||||
const exec = __webpack_require__(986)
|
||||
const tc = __webpack_require__(533)
|
||||
const rubyInstallerVersions = __webpack_require__(471).versions
|
||||
|
||||
// Extract to SSD, see https://github.com/ruby/setup-ruby/pull/14
|
||||
const drive = (process.env['GITHUB_WORKSPACE'] || 'C')[0]
|
||||
|
||||
// needed for 2.2, 2.3, and mswin, cert file used by Git for Windows
|
||||
const certFile = 'C:\\Program Files\\Git\\mingw64\\ssl\\cert.pem'
|
||||
|
||||
@@ -4815,7 +4828,7 @@ const msys2 = 'C:\\msys64'
|
||||
const msys2PathEntries = [`${msys2}\\mingw64\\bin`, `${msys2}\\usr\\bin`]
|
||||
|
||||
// location & path for old RubyInstaller DevKit (MSYS), Ruby 2.2 and 2.3
|
||||
const msys = 'C:\\DevKit64'
|
||||
const msys = `${drive}:\\DevKit64`
|
||||
const msysPathEntries = [`${msys}\\mingw\\x86_64-w64-mingw32\\bin`,
|
||||
`${msys}\\mingw\\bin`, `${msys}\\bin`]
|
||||
|
||||
@@ -4837,9 +4850,6 @@ async function install(platform, ruby) {
|
||||
}
|
||||
const base = url.slice(url.lastIndexOf('/') + 1, url.length - '.7z'.length)
|
||||
|
||||
// Extract to SSD, see https://github.com/ruby/setup-ruby/pull/14
|
||||
const drive = (process.env['GITHUB_WORKSPACE'] || 'C')[0]
|
||||
|
||||
const downloadPath = await tc.downloadTool(url)
|
||||
await exec.exec('7z', ['x', downloadPath, `-xr!${base}\\share\\doc`, `-o${drive}:\\`], { silent: true })
|
||||
const rubyPrefix = `${drive}:\\${base}`
|
||||
@@ -4869,6 +4879,8 @@ async function symLinkToEmbeddedMSYS2() {
|
||||
}
|
||||
|
||||
async function setupMingw(version) {
|
||||
core.exportVariable('MAKE', 'make.exe')
|
||||
|
||||
if (version.startsWith('2.2') || version.startsWith('2.3')) {
|
||||
core.exportVariable('SSL_CERT_FILE', certFile)
|
||||
await installMSYS(version)
|
||||
@@ -4899,6 +4911,8 @@ async function installMSYS(version) {
|
||||
}
|
||||
|
||||
async function setupMSWin() {
|
||||
core.exportVariable('MAKE', 'nmake.exe')
|
||||
|
||||
// All standard MSVC OpenSSL builds use C:\Program Files\Common Files\SSL
|
||||
const certsDir = 'C:\\Program Files\\Common Files\\SSL\\certs'
|
||||
if (!fs.existsSync(certsDir)) {
|
||||
@@ -4940,7 +4954,7 @@ function addVCVARSEnv() {
|
||||
for (let [k, v] of newEnv) {
|
||||
if (process.env[k] !== v) {
|
||||
if (k === 'Path') {
|
||||
newPathEntries = v.replace(process.env['Path'], '').split(';')
|
||||
newPathEntries = v.replace(process.env['Path'], '').split(path.delimiter)
|
||||
} else {
|
||||
core.exportVariable(k, v)
|
||||
}
|
||||
|
||||
@@ -18,6 +18,8 @@ export async function run() {
|
||||
const engineVersions = installer.getAvailableVersions(platform, engine)
|
||||
const ruby = validateRubyEngineAndVersion(platform, engineVersions, engine, version)
|
||||
|
||||
createGemRC()
|
||||
|
||||
const [rubyPrefix, newPathEntries] = await installer.install(platform, ruby)
|
||||
|
||||
setupPath(ruby, newPathEntries)
|
||||
@@ -82,6 +84,13 @@ function validateRubyEngineAndVersion(platform, engineVersions, engine, version)
|
||||
return engine + '-' + version
|
||||
}
|
||||
|
||||
function createGemRC() {
|
||||
const gemrc = path.join(os.homedir(), '.gemrc')
|
||||
if (!fs.existsSync(gemrc)) {
|
||||
fs.writeFileSync(gemrc, `gem: --no-document${os.EOL}`)
|
||||
}
|
||||
}
|
||||
|
||||
function setupPath(ruby, newPathEntries) {
|
||||
const originalPath = process.env['PATH'].split(path.delimiter)
|
||||
let cleanPath = originalPath.filter(entry => !/\bruby\b/i.test(entry))
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@ export function getAvailableVersions(platform, engine) {
|
||||
|
||||
export async function install(platform, ruby) {
|
||||
const rubyPrefix = await downloadAndExtract(platform, ruby)
|
||||
let newPathEntries;
|
||||
let newPathEntries
|
||||
if (ruby.startsWith('rubinius')) {
|
||||
newPathEntries = [path.join(rubyPrefix, 'bin'), path.join(rubyPrefix, 'gems', 'bin')]
|
||||
} else {
|
||||
|
||||
+10
-5
@@ -2,12 +2,16 @@
|
||||
// https://github.com/MSP-Greg/actions-ruby/blob/master/lib/main.js
|
||||
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
const cp = require('child_process')
|
||||
const core = require('@actions/core')
|
||||
const exec = require('@actions/exec')
|
||||
const tc = require('@actions/tool-cache')
|
||||
const rubyInstallerVersions = require('./windows-versions').versions
|
||||
|
||||
// Extract to SSD, see https://github.com/ruby/setup-ruby/pull/14
|
||||
const drive = (process.env['GITHUB_WORKSPACE'] || 'C')[0]
|
||||
|
||||
// needed for 2.2, 2.3, and mswin, cert file used by Git for Windows
|
||||
const certFile = 'C:\\Program Files\\Git\\mingw64\\ssl\\cert.pem'
|
||||
|
||||
@@ -16,7 +20,7 @@ const msys2 = 'C:\\msys64'
|
||||
const msys2PathEntries = [`${msys2}\\mingw64\\bin`, `${msys2}\\usr\\bin`]
|
||||
|
||||
// location & path for old RubyInstaller DevKit (MSYS), Ruby 2.2 and 2.3
|
||||
const msys = 'C:\\DevKit64'
|
||||
const msys = `${drive}:\\DevKit64`
|
||||
const msysPathEntries = [`${msys}\\mingw\\x86_64-w64-mingw32\\bin`,
|
||||
`${msys}\\mingw\\bin`, `${msys}\\bin`]
|
||||
|
||||
@@ -38,9 +42,6 @@ export async function install(platform, ruby) {
|
||||
}
|
||||
const base = url.slice(url.lastIndexOf('/') + 1, url.length - '.7z'.length)
|
||||
|
||||
// Extract to SSD, see https://github.com/ruby/setup-ruby/pull/14
|
||||
const drive = (process.env['GITHUB_WORKSPACE'] || 'C')[0]
|
||||
|
||||
const downloadPath = await tc.downloadTool(url)
|
||||
await exec.exec('7z', ['x', downloadPath, `-xr!${base}\\share\\doc`, `-o${drive}:\\`], { silent: true })
|
||||
const rubyPrefix = `${drive}:\\${base}`
|
||||
@@ -70,6 +71,8 @@ async function symLinkToEmbeddedMSYS2() {
|
||||
}
|
||||
|
||||
async function setupMingw(version) {
|
||||
core.exportVariable('MAKE', 'make.exe')
|
||||
|
||||
if (version.startsWith('2.2') || version.startsWith('2.3')) {
|
||||
core.exportVariable('SSL_CERT_FILE', certFile)
|
||||
await installMSYS(version)
|
||||
@@ -100,6 +103,8 @@ async function installMSYS(version) {
|
||||
}
|
||||
|
||||
async function setupMSWin() {
|
||||
core.exportVariable('MAKE', 'nmake.exe')
|
||||
|
||||
// All standard MSVC OpenSSL builds use C:\Program Files\Common Files\SSL
|
||||
const certsDir = 'C:\\Program Files\\Common Files\\SSL\\certs'
|
||||
if (!fs.existsSync(certsDir)) {
|
||||
@@ -141,7 +146,7 @@ export function addVCVARSEnv() {
|
||||
for (let [k, v] of newEnv) {
|
||||
if (process.env[k] !== v) {
|
||||
if (k === 'Path') {
|
||||
newPathEntries = v.replace(process.env['Path'], '').split(';')
|
||||
newPathEntries = v.replace(process.env['Path'], '').split(path.delimiter)
|
||||
} else {
|
||||
core.exportVariable(k, v)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user