| 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 io | 7 import io | 
| 8 import json | 8 import json | 
| 9 import os | 9 import os | 
| 10 import re | 10 import re | 
| 11 import shutil | 11 import shutil | 
| 12 import subprocess |  | 
| 13 import sys |  | 
| 14 from urllib import urlencode | 12 from urllib import urlencode | 
| 15 import urllib2 | 13 import urllib2 | 
| 16 from functools import partial | 14 from functools import partial | 
| 17 from StringIO import StringIO | 15 from StringIO import StringIO | 
| 18 from zipfile import ZipFile | 16 from zipfile import ZipFile | 
| 19 from buildtools.localeTools import read_locale_config | 17 from buildtools.localeTools import read_locale_config | 
| 20 | 18 | 
| 21 KNOWN_PLATFORMS = {'chrome', 'gecko', 'edge', 'generic'} | 19 KNOWN_PLATFORMS = {'chrome', 'gecko', 'edge', 'generic'} | 
| 22 | 20 | 
| 23 MAIN_PARSER = argparse.ArgumentParser( | 21 MAIN_PARSER = argparse.ArgumentParser( | 
| (...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 279     from buildtools.packager import readMetadata | 277     from buildtools.packager import readMetadata | 
| 280     metadata = readMetadata(base_dir, platform) | 278     metadata = readMetadata(base_dir, platform) | 
| 281 | 279 | 
| 282     basename = metadata.get('general', 'basename') | 280     basename = metadata.get('general', 'basename') | 
| 283     locale_config = read_locale_config(base_dir, platform, metadata) | 281     locale_config = read_locale_config(base_dir, platform, metadata) | 
| 284 | 282 | 
| 285     import buildtools.localeTools as localeTools | 283     import buildtools.localeTools as localeTools | 
| 286     localeTools.getTranslations(locale_config, basename, project_key) | 284     localeTools.getTranslations(locale_config, basename, project_key) | 
| 287 | 285 | 
| 288 | 286 | 
| 289 @argparse_command( |  | 
| 290     valid_platforms={'chrome'}, |  | 
| 291     arguments=( |  | 
| 292         make_argument('target_dir'), |  | 
| 293         make_argument('-q', '--quiet', help='Suppress JsDoc output', |  | 
| 294                       action='store_true', default=False), |  | 
| 295     ), |  | 
| 296 ) |  | 
| 297 def docs(base_dir, target_dir, quiet, platform, **kwargs): |  | 
| 298     """ |  | 
| 299     Generate documentation (requires node.js). |  | 
| 300 |  | 
| 301     Generate documentation files and write them into the specified directory. |  | 
| 302     """ |  | 
| 303     source_dir = os.path.join(base_dir, 'lib') |  | 
| 304 |  | 
| 305     # JSDoc struggles wih huge objects: |  | 
| 306     # https://github.com/jsdoc3/jsdoc/issues/976 |  | 
| 307     sources = [os.path.join(source_dir, filename) |  | 
| 308                for filename in os.listdir(source_dir) |  | 
| 309                if filename != 'publicSuffixList.js'] |  | 
| 310 |  | 
| 311     buildtools_path = os.path.dirname(__file__) |  | 
| 312     config = os.path.join(buildtools_path, 'jsdoc.conf') |  | 
| 313 |  | 
| 314     command = ['npm', 'run-script', 'jsdoc', '--', '--destination', target_dir, |  | 
| 315                '--configure', config] + sources |  | 
| 316     if quiet: |  | 
| 317         process = subprocess.Popen(command, stdout=subprocess.PIPE, |  | 
| 318                                    stderr=subprocess.PIPE, cwd=buildtools_path) |  | 
| 319         stderr = process.communicate()[1] |  | 
| 320         retcode = process.poll() |  | 
| 321         if retcode: |  | 
| 322             sys.stderr.write(stderr) |  | 
| 323             raise subprocess.CalledProcessError(command, retcode) |  | 
| 324     else: |  | 
| 325         subprocess.check_call(command, cwd=buildtools_path) |  | 
| 326 |  | 
| 327 |  | 
| 328 def valid_version_format(value): | 287 def valid_version_format(value): | 
| 329     if re.search(r'[^\d\.]', value): | 288     if re.search(r'[^\d\.]', value): | 
| 330         raise argparse.ArgumentTypeError('Wrong version number format') | 289         raise argparse.ArgumentTypeError('Wrong version number format') | 
| 331 | 290 | 
| 332     return value | 291     return value | 
| 333 | 292 | 
| 334 | 293 | 
| 335 @argparse_command( | 294 @argparse_command( | 
| 336     valid_platforms={'chrome', 'gecko', 'edge'}, multi_platform=True, | 295     valid_platforms={'chrome', 'gecko', 'edge'}, multi_platform=True, | 
| 337     arguments=( | 296     arguments=( | 
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 396     if build_available_subcommands(base_dir): | 355     if build_available_subcommands(base_dir): | 
| 397         MAIN_PARSER.set_defaults(base_dir=base_dir) | 356         MAIN_PARSER.set_defaults(base_dir=base_dir) | 
| 398 | 357 | 
| 399         # If no args are provided, this module is run directly from the command | 358         # If no args are provided, this module is run directly from the command | 
| 400         # line. argparse will take care of consuming sys.argv. | 359         # line. argparse will take care of consuming sys.argv. | 
| 401         arguments = MAIN_PARSER.parse_args(args if len(args) > 0 else None) | 360         arguments = MAIN_PARSER.parse_args(args if len(args) > 0 else None) | 
| 402 | 361 | 
| 403         function = arguments.function | 362         function = arguments.function | 
| 404         del arguments.function | 363         del arguments.function | 
| 405         function(**vars(arguments)) | 364         function(**vars(arguments)) | 
| OLD | NEW | 
|---|