Script para empaquetar Extensiones

Discute el uso de extensiones desarrolladas por terceros dentro de Apache OpenOffice
Avatar de Usuario
jza
Mensajes: 142
Registrado: Vie Nov 21, 2008 1:36 am
Ubicación: Cancun, Mexico
Contactar:

Script para empaquetar Extensiones

Mensaje por jza »

Quizas este post seria algo entre tutoria, Macros y API y este foro. Pero creo que en sera util. Este es un script para auotmatizar el empaquetamiento de codigo. Siguiendo las especificaciones de esta pagina, podemos crear una extension con este codigo hecho en python.

Código: Seleccionar todo

# -*- coding: iso-8859-1 -*-
# Empaquetador de extensiones python para OOo

import sys
import zipfile
import os
import os.path
import tempfile

class Empaquetador:
  def __init__(self, dir):
    # Primero comprobamos que el path pasado sea un directorio
    if os.path.isdir(dir):
      # separamos la cabecera del nombre del directorio en si
      (parent, self.paquete) = os.path.split(dir)
      # Creamos el archivo comprimido
      self.zipfile = zipfile.ZipFile(self.paquete+'.pkg', 'w')
      # Vamos al directorio padre del paquete  
      os.chdir(parent)
      # Listamos el contenido del directorio del paquete ...
      for fich in os.listdir(dir):
        # ... y añadimos cada fichero al zip
        self.zipfile.write(os.path.join(self.paquete, fich))
      
      self.grabaMeta()
      self.zipfile.close()
        
  def grabaMeta(self):
    'Escribe el fichero manifest.xml en el directorio META-INF'
    # obtener el directorio temporal
    tmp = tempfile.gettempdir() 
    #ir al directorio temporal
    os.chdir(tmp) 
    # Crear ahí el directorio META-INF
    os.mkdir('META-INF') 
    # Escribir el xml
    fo = file(os.path.join('META-INF','manifest.xml'), 'w') 
    fo.write('<?xml version="1.0" encoding="UTF-8"?>\n')
    fo.write('<!DOCTYPE manifest:manifest PUBLIC "-//OpenOffice.org//DTD Manifest 1.0//EN" "Manifest.dtd">\n')
    fo.write('<manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest">\n')
    fo.write('<manifest:file-entry manifest:media-type="application/vnd.sun.star.framework-script" manifest:full-path="%s"/>\n' % self.paquete)
    fo.write('</manifest:manifest>')
    fo.close()
    # añadirlo al fichero zip
    self.zipfile.write(fo.name) 
    # borrar el fichero xml de la carpeta temporal
    os.remove(fo.name) 
    # borrar el directorio de la carpeta temporal
    os.rmdir('META-INF') 
    
    
if len(sys.argv) != 2:
  print "uso: %s directorio_del_paquete"
  sys.exit(-1)
p = Empaquetador(sys.argv[1])
Alexandro Colorado
http://es.openoffice.org
Responder