Полезная информация

Заказывай стафф с атрибутикой Mozilla и... пусть все вокруг завидуют тебе! Быть уникальным - быть с Mozilla!

№123-06-2008 13:26:27

Shutnik
Участник
 
Группа: Extensions
Зарегистрирован: 12-11-2005
Сообщений: 3785
UA: Firefox 3.0

sh скрипты для сборки расширений

надоело по 10 раз в день собирать пакеты вручную :/
кто-нибудь встречал sh скрипты для автоматизации сборки расширений?

минимальный функционал: упаковка согласно данным из chrome.manifest, увеличение версии в install.rdf.
это далеко не всё, что мне нужно, но, думаю, нужное смогу дописать сам.

Отсутствует

 

№223-06-2008 14:02:57

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 2.0
Веб-сайт

Re: sh скрипты для сборки расширений

http://kb.mozillazine.org/Bash_build_script
http://kb.mozillazine.org/Makefile_for_packaging_an_extension

не знаю, как у них там с упаковкой по chrome.manifest
сам пользуюсь ant'ом


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№324-06-2008 13:41:01

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: sh скрипты для сборки расширений

Komodo вроде умеет собирать.
Правда я пробовал только на самых простых вариантах.
На самом деле на любой среде можно скрипт написать...


---  ---

Отсутствует

 

№424-06-2008 18:21:14

Shutnik
Участник
 
Группа: Extensions
Зарегистрирован: 12-11-2005
Сообщений: 3785
UA: Firefox 3.0

Re: sh скрипты для сборки расширений

Anton
Forest
спасибо. так и думал, что ничего подходящего не найду :)

пришлось немного под учить sh, но и получилось вроде не плохо.
реализовал ещё не всё, что хотел, но уже больше, чем в скриптах выше. со временем допишу, возможно флаги добавлю
залил сюда, вдруг кому-то пригодится. на всякий случай, в том же каталоге положил тесткейс

чего сейчас делает:
- проверяем существование instal.rdf, chrome.manifes и каталога chrome
- делаем копию во временный каталог
- правим версию в install.rdf (причём работает с двумя типами данного файла)
- правим пути с file на jar в chrome.manifest
- пакуем jar, обзываем именем из chrome.manifest
- пакуем xpi, обзываем именем аддона + версия

Отсутствует

 

№525-06-2008 10:38:35

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: sh скрипты для сборки расширений

Shutnik

так и думал, что ничего подходящего не найду

Могу выложить скрипт на Питоне, которым это реализовано в Комодо.


---  ---

Отсутствует

 

№625-06-2008 11:27:57

Shutnik
Участник
 
Группа: Extensions
Зарегистрирован: 12-11-2005
Сообщений: 3785
UA: Firefox 3.0

Re: sh скрипты для сборки расширений

Forest
ну меня мой вариант уже устраивает, хотя идеи можно будет стянуть :)
выложи, посмотрим

Отсутствует

 

№726-06-2008 07:53:16

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: sh скрипты для сборки расширений

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)

Все права принадлежат Комодо, если что ;)


---  ---

Отсутствует

 

№806-07-2008 05:40:11

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: sh скрипты для сборки расширений

Shutnik
Рылся в статьях про разработку на XUL - нашел несколько интересных в данном контексте описаний:
1. Командными файлами из туториала про тулбар(мне он кстати тоже очень понравился):
2. Ant-ом здесь;
3. И перловым скриптом в известном Creating Applications with Mozilla (например здесь - Appendix B)

Кстати, приведенный питоновый скрипт из Комодо какой-то неправильный - в Комодо с нормальными гуидами работать не хочет :(


---  ---

Отсутствует

 

№906-07-2008 14:12:43

Shutnik
Участник
 
Группа: Extensions
Зарегистрирован: 12-11-2005
Сообщений: 3785
UA: Firefox 3.0

Re: sh скрипты для сборки расширений

Forest
там везде кроме упаковки нету ничего. меня мой вариант устраивает уже :)

Отсутствует

 

№1006-07-2008 18:12:34

Unghost
Призрак-админ
 
Группа: Administrators
Откуда: Moscow, Russia
Зарегистрирован: 08-10-2004
Сообщений: 11771
UA: Minefield 3.1

Re: sh скрипты для сборки расширений

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.

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]