mirror of
				https://github.com/docker/setup-qemu-action.git
				synced 2025-10-31 01:00:11 +08:00 
			
		
		
		
	Merge pull request #61 from crazy-max/exec-output
Use built-in getExecOutput
This commit is contained in:
		
						commit
						8c1e35a8c6
					
				
							
								
								
									
										27
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								README.md
									
									
									
									
									
								
							| @ -13,7 +13,7 @@ ___ | |||||||
| * [Usage](#usage) | * [Usage](#usage) | ||||||
| * [Customizing](#customizing) | * [Customizing](#customizing) | ||||||
|   * [inputs](#inputs) |   * [inputs](#inputs) | ||||||
| * [Keep up-to-date with GitHub Dependabot](#keep-up-to-date-with-github-dependabot) | * [Contributing](#contributing) | ||||||
| 
 | 
 | ||||||
| ## Usage | ## Usage | ||||||
| 
 | 
 | ||||||
| @ -38,10 +38,10 @@ jobs: | |||||||
| 
 | 
 | ||||||
| Following inputs can be used as `step.with` keys | Following inputs can be used as `step.with` keys | ||||||
| 
 | 
 | ||||||
| | Name             | Type    | Description                        | | | Name        | Type   | Description                                                                                                               | | ||||||
| |------------------|---------|------------------------------------| | |-------------|--------|---------------------------------------------------------------------------------------------------------------------------| | ||||||
| | `image`          | String  | QEMU static binaries Docker image (default [`tonistiigi/binfmt:latest`](https://hub.docker.com/r/tonistiigi/binfmt/tags)) | | | `image`     | String | QEMU static binaries Docker image (default [`tonistiigi/binfmt:latest`](https://hub.docker.com/r/tonistiigi/binfmt/tags)) | | ||||||
| | `platforms`      | String  | Platforms to install (e.g. `arm64,riscv64,arm` ; default `all`) | | | `platforms` | String | Platforms to install (e.g. `arm64,riscv64,arm` ; default `all`)                                                           | | ||||||
| 
 | 
 | ||||||
| ### outputs | ### outputs | ||||||
| 
 | 
 | ||||||
| @ -51,18 +51,7 @@ Following outputs are available | |||||||
| |---------------|---------|---------------------------------------| | |---------------|---------|---------------------------------------| | ||||||
| | `platforms`   | String  | Available platforms (comma separated) | | | `platforms`   | String  | Available platforms (comma separated) | | ||||||
| 
 | 
 | ||||||
| ## Keep up-to-date with GitHub Dependabot | ## Contributing | ||||||
| 
 | 
 | ||||||
| Since [Dependabot](https://docs.github.com/en/github/administering-a-repository/keeping-your-actions-up-to-date-with-github-dependabot) | Want to contribute? Awesome! You can find information about contributing to | ||||||
| has [native GitHub Actions support](https://docs.github.com/en/github/administering-a-repository/configuration-options-for-dependency-updates#package-ecosystem), | this project in the [CONTRIBUTING.md](/.github/CONTRIBUTING.md) | ||||||
| to enable it on your GitHub repo all you need to do is add the `.github/dependabot.yml` file: |  | ||||||
| 
 |  | ||||||
| ```yaml |  | ||||||
| version: 2 |  | ||||||
| updates: |  | ||||||
|   # Maintain dependencies for GitHub Actions |  | ||||||
|   - package-ecosystem: "github-actions" |  | ||||||
|     directory: "/" |  | ||||||
|     schedule: |  | ||||||
|       interval: "daily" |  | ||||||
| ``` |  | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/index.js.map
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/index.js.map
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										34
									
								
								src/exec.ts
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								src/exec.ts
									
									
									
									
									
								
							| @ -1,34 +0,0 @@ | |||||||
| import * as actionsExec from '@actions/exec'; |  | ||||||
| import {ExecOptions} from '@actions/exec'; |  | ||||||
| 
 |  | ||||||
| export interface ExecResult { |  | ||||||
|   success: boolean; |  | ||||||
|   stdout: string; |  | ||||||
|   stderr: string; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| export const exec = async (command: string, args: string[] = [], silent: boolean): Promise<ExecResult> => { |  | ||||||
|   let stdout = ''; |  | ||||||
|   let stderr = ''; |  | ||||||
| 
 |  | ||||||
|   const options: ExecOptions = { |  | ||||||
|     silent: silent, |  | ||||||
|     ignoreReturnCode: true |  | ||||||
|   }; |  | ||||||
|   options.listeners = { |  | ||||||
|     stdout: (data: Buffer) => { |  | ||||||
|       stdout += data.toString(); |  | ||||||
|     }, |  | ||||||
|     stderr: (data: Buffer) => { |  | ||||||
|       stderr += data.toString(); |  | ||||||
|     } |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   const returnCode: number = await actionsExec.exec(command, args, options); |  | ||||||
| 
 |  | ||||||
|   return { |  | ||||||
|     success: returnCode === 0, |  | ||||||
|     stdout: stdout.trim(), |  | ||||||
|     stderr: stderr.trim() |  | ||||||
|   }; |  | ||||||
| }; |  | ||||||
							
								
								
									
										22
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								src/main.ts
									
									
									
									
									
								
							| @ -1,4 +1,3 @@ | |||||||
| import * as mexec from './exec'; |  | ||||||
| import * as core from '@actions/core'; | import * as core from '@actions/core'; | ||||||
| import * as exec from '@actions/exec'; | import * as exec from '@actions/exec'; | ||||||
| import {issueCommand} from '@actions/core/lib/command'; | import {issueCommand} from '@actions/core/lib/command'; | ||||||
| @ -31,14 +30,19 @@ async function run(): Promise<void> { | |||||||
|     core.endGroup(); |     core.endGroup(); | ||||||
| 
 | 
 | ||||||
|     core.startGroup(`Extracting available platforms`); |     core.startGroup(`Extracting available platforms`); | ||||||
|     await mexec.exec(`docker`, ['run', '--rm', '--privileged', image], true).then(res => { |     await exec | ||||||
|       if (res.stderr != '' && !res.success) { |       .getExecOutput('docker', ['run', '--rm', '--privileged', image], { | ||||||
|         throw new Error(res.stderr); |         ignoreReturnCode: true, | ||||||
|       } |         silent: true | ||||||
|       const platforms: Platforms = JSON.parse(res.stdout.trim()); |       }) | ||||||
|       core.info(`${platforms.supported.join(',')}`); |       .then(res => { | ||||||
|       setOutput('platforms', platforms.supported.join(',')); |         if (res.stderr.length > 0 && res.exitCode != 0) { | ||||||
|     }); |           throw new Error(res.stderr.trim()); | ||||||
|  |         } | ||||||
|  |         const platforms: Platforms = JSON.parse(res.stdout.trim()); | ||||||
|  |         core.info(`${platforms.supported.join(',')}`); | ||||||
|  |         setOutput('platforms', platforms.supported.join(',')); | ||||||
|  |       }); | ||||||
|     core.endGroup(); |     core.endGroup(); | ||||||
|   } catch (error) { |   } catch (error) { | ||||||
|     core.setFailed(error.message); |     core.setFailed(error.message); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 CrazyMax
						CrazyMax