>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >sh скрипты для сборки расширений http://forum.mozilla-russia.org/viewtopic.php?id=24223 |
Shutnik > 23-06-2008 13:26:27 |
надоело по 10 раз в день собирать пакеты вручную минимальный функционал: упаковка согласно данным из chrome.manifest, увеличение версии в install.rdf. |
Anton > 23-06-2008 14:02:57 |
http://kb.mozillazine.org/Bash_build_script не знаю, как у них там с упаковкой по chrome.manifest |
Forest > 24-06-2008 13:41:01 |
Komodo вроде умеет собирать. |
Shutnik > 24-06-2008 18:21:14 |
Anton пришлось немного под учить sh, но и получилось вроде не плохо. чего сейчас делает: |
Forest > 25-06-2008 10:38:35 |
Shutnik
Могу выложить скрипт на Питоне, которым это реализовано в Комодо. |
Shutnik > 25-06-2008 11:27:57 |
Forest |
Forest > 26-06-2008 07:53:16 |
Shutnik Выделить код Код:import sys, os, which import process import koprocessutils from xpcom import components, COMException, nsError from xml.dom.minidom import parseString wwatch = components.classes["@mozilla.org/embedcomp/window-watcher;1"].getService(components.interfaces.nsIWindowWatcher) prompt = wwatch.getNewPrompter(wwatch.activeWindow) userEnv = koprocessutils.getUserEnv() userPath = userEnv["PATH"].split(os.pathsep) def executeCmd(argv, cwd=None): try: p = process.ProcessOpen(argv, cwd=cwd, env=userEnv) return [p.stdout.read(), p.stderr.read()] finally: p.close() def findZipper(): # look for zip or 7z if sys.platform.startswith('win'): exts = ['.exe'] else: exts = None # get the current valid environment which is a combination of # the startup environment and modifications in komodo preferences for exe in [['zip','-Dr'], ['7z','a','-tzip']]: zip = which.whichall(exe[0], exts=exts, path=userPath) if zip: return exe else: prompt.alert("XPI Build Error","Unable to find 'zip' or '7z' on path") raise COMException(nsError.NS_ERROR_UNEXPECTED, "Unable to find 'zip' or '7z' on path") def getExtVars(rdf_file): # parse install.rdf for the vars we want rdf_obj = parseString(open(rdf_file, 'r').read()) ext_id = rdf_obj.getElementsByTagName('em:id')[0].firstChild.data ext_name = rdf_obj.getElementsByTagName('em:name')[0].firstChild.data ext_version = rdf_obj.getElementsByTagName('em:version')[0].firstChild.data return { 'ext_id': ext_id, 'ext_name': ext_name, 'ext_version': ext_version } # get extension data from install.rdf projectFile = komodo.macro.project.getFile() vars = getExtVars(os.path.join(projectFile.dirName, 'install.rdf')) # build the xpi dirs = ['content', 'skin', 'locale', 'components'] cmd = [] zipper = findZipper() for dir in dirs: path = os.path.join(projectFile.dirName, dir); if os.path.exists(path): cmd = zipper + ['%s.jar' % vars['ext_name'], dir] executeCmd(cmd, projectFile.dirName) cmd = zipper + ["%s-%s.xpi" % (vars['ext_name'], vars['ext_version']), '%s.jar' % vars['ext_name'], "install.rdf", "chrome.manifest"] executeCmd(cmd, projectFile.dirName) Все права принадлежат Комодо, если что |
Forest > 06-07-2008 05:40:11 |
Shutnik Кстати, приведенный питоновый скрипт из Комодо какой-то неправильный - в Комодо с нормальными гуидами работать не хочет |
Shutnik > 06-07-2008 14:12:43 |
Forest |
Unghost > 06-07-2008 18:12:34 |
Chatzilla собирается через http://lxr.mozilla.org/mozilla/source/e … makexpi.sh |