import argparse
import os
import shutil
import subprocess
import sys
import tarfile
def copy_files(source_path, dest_path, is_file=False):
try:
if is_file:
os.makedirs(os.path.dirname(dest_path), exist_ok=True)
shutil.copy(source_path, dest_path)
else:
shutil.copytree(source_path, dest_path, dirs_exist_ok=True,
symlinks=True)
except Exception as err:
raise Exception("Copy files failed. Error: " + str(err)) from err
def run_cmd(cmd, execution_path=None):
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE,
stdin=subprocess.PIPE,
stderr=subprocess.PIPE,
cwd=execution_path)
stdout, stderr = proc.communicate(timeout=1000)
if proc.returncode != 0:
raise Exception(stderr.decode())
def build(options):
build_cmd = [options.npm, 'run', 'compile:plugins']
run_cmd(build_cmd, options.source_path)
def copy_output(options):
copy_files(os.path.join(options.source_path, './lib'),
os.path.join(options.output_path, 'api-check-plugin'))
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument('--npm', help='path to a npm exetuable')
parser.add_argument('--source_path', help='path to api_check_plugin source')
parser.add_argument('--output_path', help='path to output')
options = parser.parse_args()
return options
def main():
options = parse_args()
build(options)
copy_output(options)
if __name__ == '__main__':
sys.exit(main())