mirror of
				https://github.com/pnpm/action-setup.git
				synced 2025-11-04 11:48:19 +08:00 
			
		
		
		
	Add pnpm install
This commit is contained in:
		
							
								
								
									
										2
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -2,12 +2,14 @@ import { setFailed } from '@actions/core'
 | 
			
		||||
import getInputs from './inputs'
 | 
			
		||||
import setOutputs from './outputs'
 | 
			
		||||
import installPnpm from './install-pnpm'
 | 
			
		||||
import pnpmInstall from './pnpm-install'
 | 
			
		||||
 | 
			
		||||
async function main() {
 | 
			
		||||
  const inputs = getInputs()
 | 
			
		||||
  await installPnpm(inputs)
 | 
			
		||||
  console.log('Installation Completed!')
 | 
			
		||||
  setOutputs(inputs)
 | 
			
		||||
  pnpmInstall(inputs)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
main().catch(error => {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										40
									
								
								src/pnpm-install/index.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								src/pnpm-install/index.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
			
		||||
import process from 'process'
 | 
			
		||||
import path from 'path'
 | 
			
		||||
import { spawnSync } from 'child_process'
 | 
			
		||||
import { setFailed } from '@actions/core'
 | 
			
		||||
import { Inputs } from '../inputs'
 | 
			
		||||
 | 
			
		||||
export function runPnpmInstall(inputs: Inputs) {
 | 
			
		||||
  const env = {
 | 
			
		||||
    ...process.env,
 | 
			
		||||
    PATH: inputs.binDest + path.delimiter + process.env.PATH
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  for (const options of inputs.runInstall) {
 | 
			
		||||
    const args = ['install']
 | 
			
		||||
    if (options.recursive) args.unshift('recursive')
 | 
			
		||||
    if (options.args) args.push(...options.args)
 | 
			
		||||
 | 
			
		||||
    const cmdStr = ['pnpm', ...args].join(' ')
 | 
			
		||||
    console.log('Running', cmdStr)
 | 
			
		||||
 | 
			
		||||
    const { error, status } = spawnSync('pnpm', args, {
 | 
			
		||||
      stdio: 'inherit',
 | 
			
		||||
      cwd: options.cwd,
 | 
			
		||||
      shell: true,
 | 
			
		||||
      env,
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    if (error) {
 | 
			
		||||
      setFailed(error)
 | 
			
		||||
      continue
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (status) {
 | 
			
		||||
      setFailed(`Command ${cmdStr} (cwd: ${options.cwd}) exits with status ${status}`)
 | 
			
		||||
      continue
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default runPnpmInstall
 | 
			
		||||
		Reference in New Issue
	
	Block a user