Страницы: 1
надоело по 10 раз в день собирать пакеты вручную
кто-нибудь встречал sh скрипты для автоматизации сборки расширений?
минимальный функционал: упаковка согласно данным из chrome.manifest, увеличение версии в install.rdf.
это далеко не всё, что мне нужно, но, думаю, нужное смогу дописать сам.
Отсутствует
http://kb.mozillazine.org/Bash_build_script
http://kb.mozillazine.org/Makefile_for_packaging_an_extension
не знаю, как у них там с упаковкой по chrome.manifest
сам пользуюсь ant'ом
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton
Forest
спасибо. так и думал, что ничего подходящего не найду
пришлось немного под учить sh, но и получилось вроде не плохо.
реализовал ещё не всё, что хотел, но уже больше, чем в скриптах выше. со временем допишу, возможно флаги добавлю
залил сюда, вдруг кому-то пригодится. на всякий случай, в том же каталоге положил тесткейс
чего сейчас делает:
- проверяем существование instal.rdf, chrome.manifes и каталога chrome
- делаем копию во временный каталог
- правим версию в install.rdf (причём работает с двумя типами данного файла)
- правим пути с file на jar в chrome.manifest
- пакуем jar, обзываем именем из chrome.manifest
- пакуем xpi, обзываем именем аддона + версия
Отсутствует
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)
Все права принадлежат Комодо, если что
--- ---
Отсутствует
Shutnik
Рылся в статьях про разработку на XUL - нашел несколько интересных в данном контексте описаний:
1. Командными файлами из туториала про тулбар(мне он кстати тоже очень понравился):
2. Ant-ом здесь;
3. И перловым скриптом в известном Creating Applications with Mozilla (например здесь - Appendix B)
Кстати, приведенный питоновый скрипт из Комодо какой-то неправильный - в Комодо с нормальными гуидами работать не хочет
--- ---
Отсутствует
Chatzilla собирается через http://lxr.mozilla.org/mozilla/source/e … makexpi.sh
Do not meddle in the affairs of Wizards, for they are subtle and quick to anger.
Отсутствует
Страницы: 1