 7999527b7b
			
		
	
	7999527b7b
	
	
	
		
			
			Test Plan: buck targets --show_output polygerrit-ui/app:gr-app | \ cut -d " " -f 2 produces: buck-out/gen/polygerrit-ui/app/gr-app/gr-app.vulcanized.zip instead of: buck-out/gen/polygerrit-ui/app/gr-app/%s.vulcanized.zip Change-Id: I66d8a5d20434ae1f8911deac675afdd88a92224d
		
			
				
	
	
		
			170 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			170 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # Copyright (C) 2015 The Android Open Source Project
 | |
| #
 | |
| # 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.
 | |
| 
 | |
| NPMJS = 'NPMJS'
 | |
| GERRIT = 'GERRIT'
 | |
| 
 | |
| # NOTE: npm_binary rules do not get their licenses checked by gen_licenses.py,
 | |
| # as we would have to cut too many edges. DO NOT include these binaries in
 | |
| # build outputs. Using them in the build _process_ is ok.
 | |
| def npm_binary(
 | |
|     name,
 | |
|     version,
 | |
|     sha1 = '',
 | |
|     repository = NPMJS,
 | |
|     visibility = ['PUBLIC']):
 | |
| 
 | |
|   dir = '%s-%s' % (name, version)
 | |
|   filename = '%s.tgz' % dir
 | |
|   dest = '%s@%s.npm_binary.tgz' % (name, version)
 | |
|   if repository == GERRIT:
 | |
|     url = 'http://gerrit-maven.storage.googleapis.com/npm-packages/%s' % filename
 | |
|   elif repository == NPMJS:
 | |
|     url = 'http://registry.npmjs.org/%s/-/%s' % (name, filename)
 | |
|   else:
 | |
|     raise ValueError('invalid repository: %s' % repository)
 | |
|   cmd = ['$(exe //tools:download_file)', '-o', '$OUT', '-u', url]
 | |
|   if sha1:
 | |
|     cmd.extend(['-v', sha1])
 | |
|   genrule(
 | |
|     name = name,
 | |
|     cmd = ' '.join(cmd),
 | |
|     out = dest,
 | |
|     visibility = visibility,
 | |
|   )
 | |
| 
 | |
| 
 | |
| def run_npm_binary(target):
 | |
|   return '$(location //tools/js:run_npm_binary) $(location %s)' % target
 | |
| 
 | |
| 
 | |
| def bower_component(
 | |
|     name,
 | |
|     package,
 | |
|     version,
 | |
|     license,
 | |
|     deps = [],
 | |
|     semver = None,
 | |
|     sha1 = '',
 | |
|     visibility = ['PUBLIC']):
 | |
|   download_name = '%s__download_bower' % name
 | |
|   genrule(
 | |
|     name = download_name,
 | |
|     cmd = ' '.join([
 | |
|       '$(exe //tools/js:download_bower)',
 | |
|       '-b', '"%s"' % run_npm_binary('//lib/js:bower'),
 | |
|       '-n', name,
 | |
|       '-p', package,
 | |
|       '-v', version,
 | |
|       '-s', sha1,
 | |
|       '-o', '$OUT',
 | |
|     ]),
 | |
|     out = '%s.zip' % download_name,
 | |
|     license = license,
 | |
|     visibility = [],
 | |
|   )
 | |
| 
 | |
|   renamed_name = '%s__renamed' % name
 | |
|   genrule(
 | |
|     name = renamed_name,
 | |
|     cmd = ' && '.join([
 | |
|       'cd $TMP',
 | |
|       'mkdir bower_components',
 | |
|       'cd bower_components',
 | |
|       'unzip $(location :%s)' % download_name,
 | |
|       'cd ..',
 | |
|       'zip -r $OUT bower_components',
 | |
|     ]),
 | |
|     out = '%s.zip' % renamed_name,
 | |
|     visibility = [],
 | |
|   )
 | |
| 
 | |
|   genrule(
 | |
|     name = name,
 | |
|     cmd = _combine_components([':%s' % renamed_name] + deps),
 | |
|     out = '%s-%s.zip' % (name, version),
 | |
|     visibility = visibility,
 | |
|   )
 | |
| 
 | |
|   version_name = '%s__bower_version' % name
 | |
|   dep_version = semver if semver is not None else version
 | |
|   deps_json = '{"%s": "%s#%s"}' % (name, package, dep_version)
 | |
|   genrule(
 | |
|     name = version_name,
 | |
|     cmd = "echo '%s' > $OUT" % deps_json,
 | |
|     out = version_name,
 | |
|     visibility = visibility,
 | |
|   )
 | |
| 
 | |
| 
 | |
| def bower_components(
 | |
|     name,
 | |
|     deps,
 | |
|     visibility = ['PUBLIC']):
 | |
|   genrule(
 | |
|     name = name,
 | |
|     cmd = _combine_components(deps),
 | |
|     out = '%s.bower_components.zip' % name,
 | |
|     visibility = visibility,
 | |
|   )
 | |
| 
 | |
| 
 | |
| def _combine_components(deps):
 | |
|   cmds = ['cd $TMP']
 | |
|   for d in deps:
 | |
|     cmds.append('unzip -qo $(location %s)' % d)
 | |
|   cmds.append('zip -r $OUT bower_components')
 | |
|   return ' && '.join(cmds)
 | |
| 
 | |
| 
 | |
| VULCANIZE_FLAGS = [
 | |
|   '--inline-scripts',
 | |
|   '--inline-css',
 | |
|   '--strip-comments',
 | |
| ]
 | |
| 
 | |
| def vulcanize(
 | |
|     name,
 | |
|     app,
 | |
|     srcs,
 | |
|     components,
 | |
|     extra_flags = [],
 | |
|     visibility = ['PUBLIC']):
 | |
|   genrule(
 | |
|     name = '%s__vulcanized' % name,
 | |
|     cmd = ' '.join([
 | |
|       'unzip', '-qd', '$SRCDIR', '$(location %s)' % components,
 | |
|       '&&', run_npm_binary('//lib/js:vulcanize')
 | |
|     ] + VULCANIZE_FLAGS + extra_flags + [
 | |
|       '--out-html', '$OUT',
 | |
|       '$SRCDIR/%s' % app,
 | |
|     ]),
 | |
|     srcs = srcs,
 | |
|     out = '%s.vulcanized.html' % name,
 | |
|     visibility = visibility,
 | |
|   )
 | |
| 
 | |
|   genrule(
 | |
|     name = name,
 | |
|     cmd = ' '.join([
 | |
|       'cd', '$TMP',
 | |
|       '&&', run_npm_binary('//lib/js:crisper'), '--always-write-script',
 | |
|       '--source', '$(location :%s__vulcanized)' % name,
 | |
|       '--html', '%s.html' % name,
 | |
|       '--js', '%s.js' % name,
 | |
|       '&&', 'zip', '$OUT', '%s.html' % name, '%s.js' % name,
 | |
|     ]),
 | |
|     out = '%s.vulcanized.zip' % name,
 | |
|   )
 |