| OLD | NEW | 
|---|
| 1 # This Source Code Form is subject to the terms of the Mozilla Public | 1 # This Source Code Form is subject to the terms of the Mozilla Public | 
| 2 # License, v. 2.0. If a copy of the MPL was not distributed with this | 2 # License, v. 2.0. If a copy of the MPL was not distributed with this | 
| 3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. | 3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. | 
| 4 | 4 | 
| 5 import argparse | 5 import argparse | 
| 6 import logging | 6 import logging | 
| 7 import os | 7 import os | 
| 8 import re | 8 import re | 
| 9 import shutil | 9 import shutil | 
| 10 import subprocess | 10 import subprocess | 
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 129             '-b', '--build-num', dest='build_num', | 129             '-b', '--build-num', dest='build_num', | 
| 130             help='Use given build number (if omitted the build number will ' | 130             help='Use given build number (if omitted the build number will ' | 
| 131                  'be retrieved from Mercurial)'), | 131                  'be retrieved from Mercurial)'), | 
| 132         make_argument( | 132         make_argument( | 
| 133             '-k', '--key', dest='key_file', | 133             '-k', '--key', dest='key_file', | 
| 134             help='File containing private key and certificates required to ' | 134             help='File containing private key and certificates required to ' | 
| 135                   'sign the package'), | 135                   'sign the package'), | 
| 136         make_argument( | 136         make_argument( | 
| 137             '-r', '--release', action='store_true', | 137             '-r', '--release', action='store_true', | 
| 138             help='Create a release build'), | 138             help='Create a release build'), | 
| 139         make_argument('output_file', nargs='?') | 139         make_argument('output_file', nargs='?'), | 
| 140     ) | 140     ), | 
| 141 ) | 141 ) | 
| 142 def build(base_dir, build_num, key_file, release, output_file, platform, | 142 def build(base_dir, build_num, key_file, release, output_file, platform, | 
| 143           **kwargs): | 143           **kwargs): | 
| 144     """ | 144     """ | 
| 145     Create a build. | 145     Create a build. | 
| 146 | 146 | 
| 147     Creates an extension build with given file name. If output_file is missing | 147     Creates an extension build with given file name. If output_file is missing | 
| 148     a default name will be chosen. | 148     a default name will be chosen. | 
| 149     """ | 149     """ | 
| 150     kwargs = {} | 150     kwargs = {} | 
| 151     if platform == 'edge': | 151     if platform == 'edge': | 
| 152         import buildtools.packagerEdge as packager | 152         import buildtools.packagerEdge as packager | 
| 153     else: | 153     else: | 
| 154         import buildtools.packagerChrome as packager | 154         import buildtools.packagerChrome as packager | 
| 155 | 155 | 
| 156     kwargs['keyFile'] = key_file | 156     kwargs['keyFile'] = key_file | 
| 157     kwargs['outFile'] = output_file | 157     kwargs['outFile'] = output_file | 
| 158     kwargs['releaseBuild'] = release | 158     kwargs['releaseBuild'] = release | 
| 159     kwargs['buildNum'] = build_num | 159     kwargs['buildNum'] = build_num | 
| 160 | 160 | 
| 161     packager.createBuild(base_dir, type=platform, **kwargs) | 161     packager.createBuild(base_dir, type=platform, **kwargs) | 
| 162 | 162 | 
| 163 | 163 | 
| 164 @argparse_command( | 164 @argparse_command( | 
| 165     valid_platforms={'chrome', 'gecko', 'edge'} | 165     valid_platforms={'chrome', 'gecko', 'edge'}, | 
| 166 ) | 166 ) | 
| 167 def devenv(base_dir, platform, **kwargs): | 167 def devenv(base_dir, platform, **kwargs): | 
| 168     """ | 168     """ | 
| 169     Set up a development environment. | 169     Set up a development environment. | 
| 170 | 170 | 
| 171     Will set up or update the devenv folder as an unpacked extension folder ' | 171     Will set up or update the devenv folder as an unpacked extension folder ' | 
| 172     for development. | 172     for development. | 
| 173     """ | 173     """ | 
| 174     if platform == 'edge': | 174     if platform == 'edge': | 
| 175         import buildtools.packagerEdge as packager | 175         import buildtools.packagerEdge as packager | 
| 176     else: | 176     else: | 
| 177         import buildtools.packagerChrome as packager | 177         import buildtools.packagerChrome as packager | 
| 178 | 178 | 
| 179     file = StringIO() | 179     file = StringIO() | 
| 180     packager.createBuild(base_dir, type=platform, outFile=file, devenv=True, | 180     packager.createBuild(base_dir, type=platform, outFile=file, devenv=True, | 
| 181                          releaseBuild=True) | 181                          releaseBuild=True) | 
| 182 | 182 | 
| 183     from buildtools.packager import getDevEnvPath | 183     from buildtools.packager import getDevEnvPath | 
| 184     devenv_dir = getDevEnvPath(base_dir, platform) | 184     devenv_dir = getDevEnvPath(base_dir, platform) | 
| 185 | 185 | 
| 186     shutil.rmtree(devenv_dir, ignore_errors=True) | 186     shutil.rmtree(devenv_dir, ignore_errors=True) | 
| 187 | 187 | 
| 188     file.seek(0) | 188     file.seek(0) | 
| 189     with ZipFile(file, 'r') as zip_file: | 189     with ZipFile(file, 'r') as zip_file: | 
| 190         zip_file.extractall(devenv_dir) | 190         zip_file.extractall(devenv_dir) | 
| 191 | 191 | 
| 192 | 192 | 
| 193 project_key_argument = make_argument( | 193 project_key_argument = make_argument( | 
| 194     'project_key', help='The crowdin project key.' | 194     'project_key', help='The crowdin project key.', | 
| 195 ) | 195 ) | 
| 196 | 196 | 
| 197 | 197 | 
| 198 @argparse_command( | 198 @argparse_command( | 
| 199     arguments=(project_key_argument, ) | 199     arguments=(project_key_argument, ), | 
| 200 ) | 200 ) | 
| 201 def setuptrans(base_dir, project_key, platform, **kwargs): | 201 def setuptrans(base_dir, project_key, platform, **kwargs): | 
| 202     """ | 202     """ | 
| 203     Set up translation languages. | 203     Set up translation languages. | 
| 204 | 204 | 
| 205     Set up translation languages for the project on crowdin.com. | 205     Set up translation languages for the project on crowdin.com. | 
| 206     """ | 206     """ | 
| 207     from buildtools.packager import readMetadata | 207     from buildtools.packager import readMetadata | 
| 208     metadata = readMetadata(base_dir, platform) | 208     metadata = readMetadata(base_dir, platform) | 
| 209 | 209 | 
| 210     basename = metadata.get('general', 'basename') | 210     basename = metadata.get('general', 'basename') | 
| 211     locale_config = read_locale_config(base_dir, platform, metadata) | 211     locale_config = read_locale_config(base_dir, platform, metadata) | 
| 212 | 212 | 
| 213     import buildtools.localeTools as localeTools | 213     import buildtools.localeTools as localeTools | 
| 214     localeTools.setupTranslations(locale_config, basename, project_key) | 214     localeTools.setupTranslations(locale_config, basename, project_key) | 
| 215 | 215 | 
| 216 | 216 | 
| 217 @argparse_command( | 217 @argparse_command( | 
| 218     arguments=(project_key_argument, ) | 218     arguments=(project_key_argument, ), | 
| 219 ) | 219 ) | 
| 220 def translate(base_dir, project_key, platform, **kwargs): | 220 def translate(base_dir, project_key, platform, **kwargs): | 
| 221     """ | 221     """ | 
| 222     Update translation master files. | 222     Update translation master files. | 
| 223 | 223 | 
| 224     Update the translation master files in the project on crowdin.com. | 224     Update the translation master files in the project on crowdin.com. | 
| 225     """ | 225     """ | 
| 226     from buildtools.packager import readMetadata | 226     from buildtools.packager import readMetadata | 
| 227     metadata = readMetadata(base_dir, platform) | 227     metadata = readMetadata(base_dir, platform) | 
| 228 | 228 | 
| 229     basename = metadata.get('general', 'basename') | 229     basename = metadata.get('general', 'basename') | 
| 230     locale_config = read_locale_config(base_dir, platform, metadata) | 230     locale_config = read_locale_config(base_dir, platform, metadata) | 
| 231 | 231 | 
| 232     default_locale_dir = os.path.join(locale_config['base_path'], | 232     default_locale_dir = os.path.join(locale_config['base_path'], | 
| 233                                       locale_config['default_locale']) | 233                                       locale_config['default_locale']) | 
| 234 | 234 | 
| 235     import buildtools.localeTools as localeTools | 235     import buildtools.localeTools as localeTools | 
| 236     localeTools.updateTranslationMaster(locale_config, metadata, | 236     localeTools.updateTranslationMaster(locale_config, metadata, | 
| 237                                         default_locale_dir, basename, | 237                                         default_locale_dir, basename, | 
| 238                                         project_key) | 238                                         project_key) | 
| 239 | 239 | 
| 240 | 240 | 
| 241 @argparse_command( | 241 @argparse_command( | 
| 242     arguments=(project_key_argument, ) | 242     arguments=(project_key_argument, ), | 
| 243 ) | 243 ) | 
| 244 def uploadtrans(base_dir, project_key, platform, **kwargs): | 244 def uploadtrans(base_dir, project_key, platform, **kwargs): | 
| 245     """ | 245     """ | 
| 246     Upload existing translations. | 246     Upload existing translations. | 
| 247 | 247 | 
| 248     Upload already existing translations to the project on crowdin.com. | 248     Upload already existing translations to the project on crowdin.com. | 
| 249     """ | 249     """ | 
| 250     from buildtools.packager import readMetadata | 250     from buildtools.packager import readMetadata | 
| 251     metadata = readMetadata(base_dir, platform) | 251     metadata = readMetadata(base_dir, platform) | 
| 252 | 252 | 
| 253     basename = metadata.get('general', 'basename') | 253     basename = metadata.get('general', 'basename') | 
| 254     locale_config = read_locale_config(base_dir, platform, metadata) | 254     locale_config = read_locale_config(base_dir, platform, metadata) | 
| 255 | 255 | 
| 256     import buildtools.localeTools as localeTools | 256     import buildtools.localeTools as localeTools | 
| 257     for locale, locale_dir in locale_config['locales'].iteritems(): | 257     for locale, locale_dir in locale_config['locales'].iteritems(): | 
| 258         if locale != locale_config['default_locale'].replace('_', '-'): | 258         if locale != locale_config['default_locale'].replace('_', '-'): | 
| 259             localeTools.uploadTranslations(locale_config, metadata, locale_dir, | 259             localeTools.uploadTranslations(locale_config, metadata, locale_dir, | 
| 260                                            locale, basename, project_key) | 260                                            locale, basename, project_key) | 
| 261 | 261 | 
| 262 | 262 | 
| 263 @argparse_command( | 263 @argparse_command( | 
| 264     arguments=(project_key_argument, ) | 264     arguments=(project_key_argument, ), | 
| 265 ) | 265 ) | 
| 266 def gettranslations(base_dir, project_key, platform, **kwargs): | 266 def gettranslations(base_dir, project_key, platform, **kwargs): | 
| 267     """ | 267     """ | 
| 268     Download translation updates. | 268     Download translation updates. | 
| 269 | 269 | 
| 270     Download updated translations from crowdin.com. | 270     Download updated translations from crowdin.com. | 
| 271     """ | 271     """ | 
| 272     from buildtools.packager import readMetadata | 272     from buildtools.packager import readMetadata | 
| 273     metadata = readMetadata(base_dir, platform) | 273     metadata = readMetadata(base_dir, platform) | 
| 274 | 274 | 
| 275     basename = metadata.get('general', 'basename') | 275     basename = metadata.get('general', 'basename') | 
| 276     locale_config = read_locale_config(base_dir, platform, metadata) | 276     locale_config = read_locale_config(base_dir, platform, metadata) | 
| 277 | 277 | 
| 278     import buildtools.localeTools as localeTools | 278     import buildtools.localeTools as localeTools | 
| 279     localeTools.getTranslations(locale_config, basename, project_key) | 279     localeTools.getTranslations(locale_config, basename, project_key) | 
| 280 | 280 | 
| 281 | 281 | 
| 282 @argparse_command( | 282 @argparse_command( | 
| 283     valid_platforms={'chrome'}, | 283     valid_platforms={'chrome'}, | 
| 284     arguments=( | 284     arguments=( | 
| 285         make_argument('target_dir'), | 285         make_argument('target_dir'), | 
| 286         make_argument('-q', '--quiet', help='Suppress JsDoc output', | 286         make_argument('-q', '--quiet', help='Suppress JsDoc output', | 
| 287                       action='store_true', default=False), | 287                       action='store_true', default=False), | 
| 288     ) | 288     ), | 
| 289 ) | 289 ) | 
| 290 def docs(base_dir, target_dir, quiet, platform, **kwargs): | 290 def docs(base_dir, target_dir, quiet, platform, **kwargs): | 
| 291     """ | 291     """ | 
| 292     Generate documentation (requires node.js). | 292     Generate documentation (requires node.js). | 
| 293 | 293 | 
| 294     Generate documentation files and write them into the specified directory. | 294     Generate documentation files and write them into the specified directory. | 
| 295     """ | 295     """ | 
| 296     source_dir = os.path.join(base_dir, 'lib') | 296     source_dir = os.path.join(base_dir, 'lib') | 
| 297 | 297 | 
| 298     # JSDoc struggles wih huge objects: | 298     # JSDoc struggles wih huge objects: | 
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 331         make_argument( | 331         make_argument( | 
| 332             '-k', '--key', dest='key_file', | 332             '-k', '--key', dest='key_file', | 
| 333             help='File containing private key and certificates required to ' | 333             help='File containing private key and certificates required to ' | 
| 334                   'sign the release.'), | 334                   'sign the release.'), | 
| 335         make_argument( | 335         make_argument( | 
| 336             '-d', '--downloads-repository', dest='downloads_repository', | 336             '-d', '--downloads-repository', dest='downloads_repository', | 
| 337             help='Directory containing downloads repository (if omitted ' | 337             help='Directory containing downloads repository (if omitted ' | 
| 338                   '../downloads is assumed)'), | 338                   '../downloads is assumed)'), | 
| 339         make_argument( | 339         make_argument( | 
| 340             'version', help='Version number of the release', | 340             'version', help='Version number of the release', | 
| 341             type=valid_version_format) | 341             type=valid_version_format), | 
| 342     ) | 342     ), | 
| 343 ) | 343 ) | 
| 344 def release(base_dir, downloads_repository, key_file, platform, version, | 344 def release(base_dir, downloads_repository, key_file, platform, version, | 
| 345             **kwargs): | 345             **kwargs): | 
| 346     """ | 346     """ | 
| 347     Run release automation. | 347     Run release automation. | 
| 348 | 348 | 
| 349     Note: If you are not the project owner then you probably don't want to run | 349     Note: If you are not the project owner then you probably don't want to run | 
| 350     this! | 350     this! | 
| 351 | 351 | 
| 352     Run release automation: create downloads for the new version, tag source | 352     Run release automation: create downloads for the new version, tag source | 
| (...skipping 26 matching lines...) Expand all  Loading... | 
| 379     if build_available_subcommands(base_dir): | 379     if build_available_subcommands(base_dir): | 
| 380         MAIN_PARSER.set_defaults(base_dir=base_dir) | 380         MAIN_PARSER.set_defaults(base_dir=base_dir) | 
| 381 | 381 | 
| 382         # If no args are provided, this module is run directly from the command | 382         # If no args are provided, this module is run directly from the command | 
| 383         # line. argparse will take care of consuming sys.argv. | 383         # line. argparse will take care of consuming sys.argv. | 
| 384         arguments = MAIN_PARSER.parse_args(args if len(args) > 0 else None) | 384         arguments = MAIN_PARSER.parse_args(args if len(args) > 0 else None) | 
| 385 | 385 | 
| 386         function = arguments.function | 386         function = arguments.function | 
| 387         del arguments.function | 387         del arguments.function | 
| 388         function(**vars(arguments)) | 388         function(**vars(arguments)) | 
| OLD | NEW | 
|---|