| Index: build.py |
| =================================================================== |
| --- a/build.py |
| +++ b/build.py |
| @@ -13,16 +13,18 @@ |
| # GNU General Public License for more details. |
| # |
| # You should have received a copy of the GNU General Public License |
| # along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
| import os, sys, re, subprocess, buildtools |
| from getopt import getopt, GetoptError |
| +knownTypes = ('gecko', 'chrome') |
| + |
| class Command(object): |
| name = property(lambda self: self._name) |
| shortDescription = property(lambda self: self._shortDescription, |
| lambda self, value: self.__dict__.update({'_shortDescription': value})) |
| description = property(lambda self: self._description, |
| lambda self, value: self.__dict__.update({'_description': value})) |
| params = property(lambda self: self._params, |
| lambda self, value: self.__dict__.update({'_params': value})) |
| @@ -350,17 +352,17 @@ def generateDocs(baseDir, scriptName, op |
| if len(args) == 0: |
| print 'No target directory specified for the documentation' |
| usage(scriptName, type, 'docs') |
| return |
| targetDir = args[0] |
| toolkit = None |
| for option, value in opts: |
| - if option in ('-t', '--toolkit'): |
| + if option in ('-k', '--toolkit'): |
| toolkit = value |
| if toolkit == None: |
| toolkit = os.path.join(baseDir, 'jsdoc-toolkit') |
| if not os.path.exists(toolkit): |
| subprocess.Popen(['hg', 'clone', 'https://hg.adblockplus.org/jsdoc-toolkit/', toolkit]).communicate() |
| command = [sys.executable, |
| @@ -471,17 +473,17 @@ with addCommand(showDescriptions, 'showd |
| command.description = 'Display description strings for all locales as specified in the corresponding meta.properties files.' |
| command.addOption('Only include the given locales', short='l', long='locales', value='l1,l2,l3') |
| command.params = '[options]' |
| command.supportedTypes = ('gecko') |
| with addCommand(generateDocs, 'docs') as command: |
| command.shortDescription = 'Generate documentation' |
| command.description = 'Generate documentation files and write them into the specified directory.' |
| - command.addOption('JsDoc Toolkit location', short='t', long='toolkit', value='dir') |
| + command.addOption('JsDoc Toolkit location', short='k', long='toolkit', value='dir') |
| command.params = '[options] <directory>' |
| command.supportedTypes = ('gecko') |
| with addCommand(runReleaseAutomation, 'release') as command: |
| command.shortDescription = 'Run release automation' |
| command.description = 'Note: If you are not the project owner then you '\ |
| 'probably don\'t want to run this!\n\n'\ |
| 'Runs release automation: creates downloads for the new version, tags '\ |
| @@ -497,21 +499,61 @@ with addCommand(syncLocales, 'synclocale |
| command.params = '<firefox_addon_directory>' |
| command.supportedTypes = ('chrome') |
| with addCommand(updatePSL, 'updatepsl') as command: |
| command.shortDescription = 'Updates Public Suffix List' |
| command.description = 'Downloads Public Suffix List (see http://publicsuffix.org/) and generates lib/publicSuffixList.js from it.' |
| command.supportedTypes = ('chrome') |
| -def processArgs(baseDir, args, type='gecko'): |
| +def getType(baseDir, args): |
| + # Look for an explicit type parameter |
| + for i in range(len(args)): |
| + if args[i] == '-t' and i < len(args) - 1: |
|
Felix Dahlke
2013/01/25 07:49:43
While there doesn't seem to be a problem with this
Wladimir Palant
2013/01/25 08:23:10
Yes, that would be nice indeed. The problem is tha
|
| + type = args[i + 1] |
| + del args[i + 1] |
| + del args[i] |
| + if type not in knownTypes: |
| + print ''' |
| +Unknown type %s specified, supported types are: %s |
| +''' % (type, ', '.join(knownTypes)) |
| + return None |
| + else: |
|
Felix Dahlke
2013/01/25 07:49:43
The Mozilla Coding Style says: "Don't put an else
|
| + return type |
| + |
| + # Try to guess repository type |
| + types = [] |
| + for t in knownTypes: |
| + if os.path.exists(os.path.join(baseDir, 'metadata.%s' % t)): |
| + types.append(t) |
| + |
| + if len(types) == 1: |
| + return types[0] |
| + elif len(types) > 1: |
| + print ''' |
| +Ambiguous repository type, please specify -t parameter explicitly, e.g. |
| +-t %s |
| +''' % types[0] |
| + return None |
| + else: |
| + print ''' |
| +No metadata file found in this repository, a metadata file like |
| +metadata.%s is required. |
| +''' % knownTypes[0] |
| + return None |
| + |
| +def processArgs(baseDir, args): |
| global commands |
| scriptName = os.path.basename(args[0]) |
| args = args[1:] |
| + type = getType(baseDir, args) |
| + if type == None: |
| + return |
| + |
| if len(args) == 0: |
| args = ['build'] |
| print ''' |
| No command given, assuming "build". For a list of commands run: |
| %s help |
| ''' % scriptName |