| # Copyright (C) 2013 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. | 
 |  | 
 | sh_bang_template = (' && '.join([ | 
 |   "echo '#!/bin/bash -e' > $OUT", | 
 |   'echo "# this script should run from the root of your workspace." >> $OUT', | 
 |   'echo "" >> $OUT', | 
 |   "echo 'if [[ \"${VERBOSE}\" ]]; then set -x ; fi' >> $OUT", | 
 |   'echo "" >> $OUT', | 
 |   'echo %s >> $OUT', | 
 |   'echo "" >> $OUT', | 
 |   'echo %s >> $OUT', | 
 |   # This is supposed to be handled by executable=True, but it doesn't | 
 |   # work. Bug? | 
 |   'chmod +x $OUT' ])) | 
 |  | 
 | def maven_package( | 
 |     version, | 
 |     repository = None, | 
 |     url = None, | 
 |     jar = {}, | 
 |     src = {}, | 
 |     doc = {}, | 
 |     war = {}): | 
 |  | 
 |   build_cmd = ['buck', 'build'] | 
 |  | 
 |   # This is not using python_binary() to avoid the baggage and bugs | 
 |   # that PEX brings along. | 
 |   mvn_cmd = ['python', 'tools/maven/mvn.py', '-v', version] | 
 |   api_cmd = mvn_cmd[:] | 
 |   api_targets = [] | 
 |   for type,d in [('jar', jar), ('java-source', src), ('javadoc', doc)]: | 
 |     for a,t in sorted(d.iteritems()): | 
 |       api_cmd.append('-s %s:%s:$(location %s)' % (a,type,t)) | 
 |       api_targets.append(t) | 
 |  | 
 |   genrule( | 
 |     name = 'gen_api_install', | 
 |     cmd = sh_bang_template % ( | 
 |       ' '.join(build_cmd + api_targets), | 
 |       ' '.join(api_cmd + ['-a', 'install'])), | 
 |     out = 'api_install.sh', | 
 |     executable = True, | 
 |   ) | 
 |  | 
 |   if repository and url: | 
 |     genrule( | 
 |       name = 'gen_api_deploy', | 
 |       cmd = sh_bang_template % ( | 
 |         ' '.join(build_cmd + api_targets), | 
 |         ' '.join(api_cmd + ['-a', 'deploy', | 
 |                             '--repository', repository, | 
 |                             '--url', url])), | 
 |       out = 'api_deploy.sh', | 
 |       executable = True, | 
 |     ) | 
 |  | 
 |   war_cmd = mvn_cmd[:] | 
 |   war_targets = [] | 
 |   for a,t in sorted(war.iteritems()): | 
 |     war_cmd.append('-s %s:war:$(location %s)' % (a,t)) | 
 |     war_targets.append(t) | 
 |  | 
 |   genrule( | 
 |     name = 'gen_war_install', | 
 |     cmd = sh_bang_template % (' '.join(build_cmd + war_targets), | 
 |                               ' '.join(war_cmd + ['-a', 'install'])), | 
 |     out = 'war_install.sh', | 
 |     executable = True, | 
 |   ) | 
 |  | 
 |   if repository and url: | 
 |     genrule( | 
 |       name = 'gen_war_deploy', | 
 |       cmd = sh_bang_template % ( | 
 |           ' '.join(build_cmd + war_targets), | 
 |           ' '.join(war_cmd + [ | 
 |         '-a', 'deploy', | 
 |         '--repository', repository, | 
 |         '--url', url])), | 
 |       out = 'war_deploy.sh', | 
 |       executable = True, | 
 |     ) |