Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: build.py

Issue 4810270182473728: Issue 2231 - Use system JsDoc 3 instead our JsDoc 2 fork (Closed)
Patch Set: Explicitly mention JsDoc 3 Created March 31, 2015, 1:17 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # coding: utf-8 1 # coding: utf-8
2 2
3 # This Source Code Form is subject to the terms of the Mozilla Public 3 # This Source Code Form is subject to the terms of the Mozilla Public
4 # License, v. 2.0. If a copy of the MPL was not distributed with this 4 # License, v. 2.0. If a copy of the MPL was not distributed with this
5 # file, You can obtain one at http://mozilla.org/MPL/2.0/. 5 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
6 6
7 import os, sys, re, subprocess, shutil, buildtools 7 import os, sys, re, subprocess, shutil, buildtools
8 from getopt import getopt, GetoptError 8 from getopt import getopt, GetoptError
9 from StringIO import StringIO 9 from StringIO import StringIO
10 from zipfile import ZipFile 10 from zipfile import ZipFile
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 )).encode('utf-8') 362 )).encode('utf-8')
363 363
364 364
365 def generateDocs(baseDir, scriptName, opts, args, type): 365 def generateDocs(baseDir, scriptName, opts, args, type):
366 if len(args) == 0: 366 if len(args) == 0:
367 print 'No target directory specified for the documentation' 367 print 'No target directory specified for the documentation'
368 usage(scriptName, type, 'docs') 368 usage(scriptName, type, 'docs')
369 return 369 return
370 targetDir = args[0] 370 targetDir = args[0]
371 371
372 toolkit = None 372 command = ['jsdoc',
373 quiet = False 373 '--destination', targetDir,
374 for option, value in opts: 374 '--access', 'all',
375 if option in ('-t', '--toolkit'):
376 toolkit = value
377 elif option in ('-q', '--quiet'):
378 quiet = True
379
380 if toolkit == None:
381 toolkit = os.path.join(baseDir, 'jsdoc-toolkit')
382 if not os.path.exists(toolkit):
383 subprocess.check_call(['hg', 'clone', 'https://hg.adblockplus.org/jsdoc-to olkit/', toolkit])
384
385 command = [os.path.join(toolkit, 'jsrun.js'),
386 '-t=' + os.path.join(toolkit, 'templates', 'jsdoc'),
387 '-d=' + targetDir,
388 '-a',
389 '-p',
390 '-x=js,jsm',
391 os.path.join(baseDir, 'lib')] 375 os.path.join(baseDir, 'lib')]
392 if quiet: 376 if any(opt in ('-q', '--quiet') for opt, _ in opts):
393 subprocess.check_output(command) 377 subprocess.check_output(command)
394 else: 378 else:
395 subprocess.check_call(command) 379 subprocess.check_call(command)
396 380
397 def runReleaseAutomation(baseDir, scriptName, opts, args, type): 381 def runReleaseAutomation(baseDir, scriptName, opts, args, type):
398 keyFiles = [] 382 keyFiles = []
399 downloadsRepo = os.path.join(baseDir, '..', 'downloads') 383 downloadsRepo = os.path.join(baseDir, '..', 'downloads')
400 for option, value in opts: 384 for option, value in opts:
401 if option in ('-k', '--key'): 385 if option in ('-k', '--key'):
402 keyFiles.append(value) 386 keyFiles.append(value)
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 468
485 with addCommand(showDescriptions, 'showdesc') as command: 469 with addCommand(showDescriptions, 'showdesc') as command:
486 command.shortDescription = 'Print description strings for all locales' 470 command.shortDescription = 'Print description strings for all locales'
487 command.description = 'Display description strings for all locales as specifie d in the corresponding meta.properties files.' 471 command.description = 'Display description strings for all locales as specifie d in the corresponding meta.properties files.'
488 command.addOption('Only include the given locales', short='l', long='locales', value='l1,l2,l3') 472 command.addOption('Only include the given locales', short='l', long='locales', value='l1,l2,l3')
489 command.params = '[options]' 473 command.params = '[options]'
490 command.supportedTypes = ('gecko') 474 command.supportedTypes = ('gecko')
491 475
492 with addCommand(generateDocs, 'docs') as command: 476 with addCommand(generateDocs, 'docs') as command:
493 command.shortDescription = 'Generate documentation (requires node.js)' 477 command.shortDescription = 'Generate documentation (requires node.js)'
494 command.description = 'Generate documentation files and write them into the sp ecified directory. This operation requires node.js to be installed.' 478 command.description = 'Generate documentation files and write them into the sp ecified directory. This operation requires JsDoc 3 to be installed.'
495 command.addOption('JsDoc Toolkit location', short='t', long='toolkit', value=' dir') 479 command.addOption('Suppress JsDoc output', short='q', long='quiet')
496 command.addOption('Suppress JsDoc Toolkit output', short='q', long='quiet')
497 command.params = '[options] <directory>' 480 command.params = '[options] <directory>'
498 command.supportedTypes = ('gecko') 481 command.supportedTypes = ('gecko')
499 482
500 with addCommand(runReleaseAutomation, 'release') as command: 483 with addCommand(runReleaseAutomation, 'release') as command:
501 command.shortDescription = 'Run release automation' 484 command.shortDescription = 'Run release automation'
502 command.description = 'Note: If you are not the project owner then you '\ 485 command.description = 'Note: If you are not the project owner then you '\
503 'probably don\'t want to run this!\n\n'\ 486 'probably don\'t want to run this!\n\n'\
504 'Runs release automation: creates downloads for the new version, tags '\ 487 'Runs release automation: creates downloads for the new version, tags '\
505 'source code repository as well as downloads and buildtools repository.' 488 'source code repository as well as downloads and buildtools repository.'
506 command.addOption('File containing private key and certificates required to si gn the release. Note that for Chrome releases this option needs to be specified twice: first a key to sign Chrome/Opera builds, then another to sign the Safari build.', short='k', long='key', value='file', types=('gecko', 'chrome')) 489 command.addOption('File containing private key and certificates required to si gn the release. Note that for Chrome releases this option needs to be specified twice: first a key to sign Chrome/Opera builds, then another to sign the Safari build.', short='k', long='key', value='file', types=('gecko', 'chrome'))
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
577 if option in ('-h', '--help'): 560 if option in ('-h', '--help'):
578 usage(scriptName, type, command) 561 usage(scriptName, type, command)
579 sys.exit() 562 sys.exit()
580 commands[command](baseDir, scriptName, opts, args, type) 563 commands[command](baseDir, scriptName, opts, args, type)
581 else: 564 else:
582 print 'Command %s is not supported for this application type' % command 565 print 'Command %s is not supported for this application type' % command
583 usage(scriptName, type) 566 usage(scriptName, type)
584 else: 567 else:
585 print 'Command %s is unrecognized' % command 568 print 'Command %s is unrecognized' % command
586 usage(scriptName, type) 569 usage(scriptName, type)
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld