mirror of
				https://github.com/tc39/test262.git
				synced 2025-11-04 05:33:50 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			87 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env python
 | 
						|
# Copyright (C) 2016 the V8 project authors. All rights reserved.
 | 
						|
# This code is governed by the BSD license found in the LICENSE file.
 | 
						|
 | 
						|
from __future__ import print_function
 | 
						|
import os, shutil, subprocess, sys
 | 
						|
 | 
						|
OUT_DIR = os.environ.get('OUT_DIR') or 'test'
 | 
						|
SRC_DIR = os.environ.get('SRC_DIR') or 'src'
 | 
						|
UPSTREAM = os.environ.get('UPSTREAM') or 'git@github.com:tc39/test262.git'
 | 
						|
MAINTAINER = os.environ.get('MAINTAINER') or 'test262@ecma-international.org'
 | 
						|
 | 
						|
def shell(*args):
 | 
						|
    sp = subprocess.Popen(list(args), stdout=subprocess.PIPE, universal_newlines=True)
 | 
						|
    cmd_str = ' '.join(args)
 | 
						|
 | 
						|
    print('> ' + cmd_str)
 | 
						|
 | 
						|
    for line in iter(sp.stdout.readline, ''):
 | 
						|
        sys.stdout.write(line)
 | 
						|
 | 
						|
    sp.communicate()
 | 
						|
 | 
						|
    if sp.returncode == 1:
 | 
						|
        raise Exception('Command failed: ' + cmd_str)
 | 
						|
 | 
						|
targets = dict()
 | 
						|
def target(*deps):
 | 
						|
    def other(orig):
 | 
						|
        def wrapped():
 | 
						|
            print('Running target: ' + orig.__name__)
 | 
						|
 | 
						|
            for dep in deps:
 | 
						|
                targets[dep]()
 | 
						|
            return orig()
 | 
						|
        wrapped.__name__ = orig.__name__
 | 
						|
        targets[orig.__name__] = wrapped
 | 
						|
        return wrapped
 | 
						|
    return other
 | 
						|
 | 
						|
@target()
 | 
						|
def build():
 | 
						|
    shell(sys.executable, 'tools/generation/generator.py',
 | 
						|
          'create',
 | 
						|
          '--out', OUT_DIR,
 | 
						|
          SRC_DIR)
 | 
						|
 | 
						|
@target()
 | 
						|
def clean():
 | 
						|
    shell(sys.executable, 'tools/generation/generator.py', 'clean', OUT_DIR)
 | 
						|
 | 
						|
@target('clean', 'build')
 | 
						|
def deploy():
 | 
						|
    shell('git', 'add', '--all', OUT_DIR)
 | 
						|
    shell('git', 'commit', '--message', '"Re-build from source"')
 | 
						|
    shell('git', 'push', UPSTREAM, 'main')
 | 
						|
    shell('git', 'checkout', '-')
 | 
						|
 | 
						|
# Generate a deploy key for use in a continuous integration system, allowing
 | 
						|
# for automated deployment in response to merge events.
 | 
						|
@target()
 | 
						|
def github_deploy_key():
 | 
						|
    shell('ssh-keygen',
 | 
						|
          '-t', 'rsa',
 | 
						|
          '-b', '4096',
 | 
						|
          '-C', MAINTAINER,
 | 
						|
          '-f', 'github-deploy-key')
 | 
						|
 | 
						|
# Encrypt the deploy key so that it may be included in the repository (to be
 | 
						|
# decrypted by the continuous integration server during automated deployment)
 | 
						|
# This requires the "travis" Ruby gem
 | 
						|
# Source: https://docs.travis-ci.com/user/encrypting-files/
 | 
						|
@target('github_deploy_key')
 | 
						|
def github_deploy_key_enc():
 | 
						|
    shell('travis', 'login')
 | 
						|
    shell('travis', 'encrypt-file', 'github-deploy-key')
 | 
						|
 | 
						|
if len(sys.argv) == 1:
 | 
						|
    targets['build']()
 | 
						|
 | 
						|
for target in sys.argv[1:]:
 | 
						|
    if not target in targets:
 | 
						|
        sys.stderr.write('No target named: "' + target + '".\n' +
 | 
						|
            'Available targets: ' + ', '.join(list(targets)) + '\n')
 | 
						|
        sys.exit(1)
 | 
						|
    targets[target]()
 |