Create some files
This commit is contained in:
parent
a7354264cc
commit
cd1794a16e
21
src/inputs/index.ts
Normal file
21
src/inputs/index.ts
Normal file
@ -0,0 +1,21 @@
|
||||
import { getInput, InputOptions } from '@actions/core'
|
||||
|
||||
export interface Inputs {
|
||||
readonly version: string
|
||||
readonly dest: string
|
||||
readonly binDest: string
|
||||
readonly registry: string
|
||||
}
|
||||
|
||||
const options: InputOptions = {
|
||||
required: true,
|
||||
}
|
||||
|
||||
export const getInputs = (): Inputs => ({
|
||||
version: getInput('version', options),
|
||||
dest: getInput('dest', options),
|
||||
binDest: getInput('bin_dest', options),
|
||||
registry: getInput('registry', options),
|
||||
})
|
||||
|
||||
export default getInputs
|
17
src/install/index.ts
Normal file
17
src/install/index.ts
Normal file
@ -0,0 +1,17 @@
|
||||
import { setFailed } from '@actions/core'
|
||||
import { getInputs } from '../inputs'
|
||||
import runSelfInstaller from './run'
|
||||
|
||||
export { runSelfInstaller }
|
||||
|
||||
export async function install() {
|
||||
const { error, status } = await runSelfInstaller(getInputs())
|
||||
|
||||
if (error) return setFailed(error)
|
||||
|
||||
if (status) {
|
||||
return setFailed(`Something does wrong, self-installer exits with code ${status}`)
|
||||
}
|
||||
}
|
||||
|
||||
export default install
|
18
src/install/run.ts
Normal file
18
src/install/run.ts
Normal file
@ -0,0 +1,18 @@
|
||||
import { spawnSync } from 'child_process'
|
||||
import { downloadSelfInstaller } from '../self-installer'
|
||||
import { Inputs } from '../inputs'
|
||||
|
||||
export async function runSelfInstaller(inputs: Inputs) {
|
||||
return spawnSync('node', {
|
||||
env: {
|
||||
PNPM_VERSION: inputs.version,
|
||||
PNPM_DEST: inputs.dest,
|
||||
PNPM_BIN_DEST: inputs.binDest,
|
||||
PNPM_REGISTRY: inputs.registry,
|
||||
},
|
||||
input: await downloadSelfInstaller(),
|
||||
stdio: 'inherit',
|
||||
})
|
||||
}
|
||||
|
||||
export default runSelfInstaller
|
4
src/self-installer/download.ts
Normal file
4
src/self-installer/download.ts
Normal file
@ -0,0 +1,4 @@
|
||||
import download from 'download'
|
||||
import url from './url'
|
||||
export const downloadSelfInstaller = () => download(url)
|
||||
export default downloadSelfInstaller
|
2
src/self-installer/index.ts
Normal file
2
src/self-installer/index.ts
Normal file
@ -0,0 +1,2 @@
|
||||
export * from './url'
|
||||
export * from './download'
|
3
src/self-installer/url.ts
Normal file
3
src/self-installer/url.ts
Normal file
@ -0,0 +1,3 @@
|
||||
export const ref = '301414cec74a2b6b63c95b42f2ad1790ccb980ed'
|
||||
export const url = `https://raw.githubusercontent.com/pnpm/self-installer/${ref}/install.js`
|
||||
export default url
|
Loading…
Reference in New Issue
Block a user