53 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
		
			
		
	
	
			53 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Copyright (c) Microsoft Corporation.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Licensed under the Apache License, Version 2.0 (the "License");
							 | 
						||
| 
								 | 
							
								 * you may not use this file except in compliance with the License.
							 | 
						||
| 
								 | 
							
								 * You may obtain a copy of the License at
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *     http://www.apache.org/licenses/LICENSE-2.0
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Unless required by applicable law or agreed to in writing, software
							 | 
						||
| 
								 | 
							
								 * distributed under the License is distributed on an "AS IS" BASIS,
							 | 
						||
| 
								 | 
							
								 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
							 | 
						||
| 
								 | 
							
								 * See the License for the specific language governing permissions and
							 | 
						||
| 
								 | 
							
								 * limitations under the License.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const fs = require('fs');
							 | 
						||
| 
								 | 
							
								const os = require('os');
							 | 
						||
| 
								 | 
							
								const path = require('path');
							 | 
						||
| 
								 | 
							
								const { spawnSync } = require('child_process');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 1. Parse CLI arguments
							 | 
						||
| 
								 | 
							
								const args = process.argv.slice(2);
							 | 
						||
| 
								 | 
							
								if (args.some(arg => arg === '--help')) {
							 | 
						||
| 
								 | 
							
								  console.log(usage());
							 | 
						||
| 
								 | 
							
								  process.exit(1);
							 | 
						||
| 
								 | 
							
								} else if (args.length < 1) {
							 | 
						||
| 
								 | 
							
								  console.log(`Please specify package name, e.g. 'playwright' or 'playwright-chromium'.`);
							 | 
						||
| 
								 | 
							
								  console.log(`Try running ${SCRIPT_NAME} --help`);
							 | 
						||
| 
								 | 
							
								  process.exit(1);
							 | 
						||
| 
								 | 
							
								} else if (args.length < 2) {
							 | 
						||
| 
								 | 
							
								  console.log(`Please specify output path`);
							 | 
						||
| 
								 | 
							
								  console.log(`Try running ${SCRIPT_NAME} --help`);
							 | 
						||
| 
								 | 
							
								  process.exit(1);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const packageName = args[0];
							 | 
						||
| 
								 | 
							
								const outputPath = path.resolve(args[1]);
							 | 
						||
| 
								 | 
							
								const packagePath = path.join(__dirname, '..', 'packages', packageName);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const shell = os.platform() === 'win32';
							 | 
						||
| 
								 | 
							
								const { stdout, stderr, status } = spawnSync('npm', ['pack'], { cwd: packagePath, encoding: 'utf8', shell });
							 | 
						||
| 
								 | 
							
								if (status !== 0) {
							 | 
						||
| 
								 | 
							
								  console.log(`ERROR: "npm pack" failed`);
							 | 
						||
| 
								 | 
							
								  console.log(stderr);
							 | 
						||
| 
								 | 
							
								  process.exit(1);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								const tgzName = stdout.trim();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 7. Move result to the outputPath
							 | 
						||
| 
								 | 
							
								fs.renameSync(path.join(packagePath, tgzName), outputPath);
							 | 
						||
| 
								 | 
							
								console.log(outputPath);
							 |