[Python] Primeras líneas de libnhopkg

Las siguientes líneas son un pequeño anticipo de lo que será libnhopkg, la librería básica de Nhopkg escrita en Python, tal y como anuncié en la entrada anterior.

Tan solo es el script y la clase encargados de obtener la información que necesitará Nhopkg para funcionar. Esta información la recoge, en primer lugar del sistema, datos como la arquitectura, la versión del kernle, etc. y por otro lado del archivo de configuración nhopkg.conf. Se trata de una parte muy básica de la librería, pero indispensable (creo yo) para seguir trabajando. Además, aunque no lo postee aquí, estoy trabajando en las clases necesarias para leer y obtener la información de los archivos nhoid, presentes en los paquetes.

Antes de nada también aprovecho para mostraros una plantilla (sin datos) de lo que será el archivo nhopkg.conf, con algunos cambios significativos desde la última versión estable. Aunque está bastante completo, no descarto que se le añadan más campos al archivo.

[main]
sysconfdir =
datadir =
localstatedir =
tmpdir =
buildir =
lockfile =

[database]
database =

[server]
server =

[packaging]
find_dirs =
no_upgrade_file =

[options]
check_deps =
check_inverse_deps =
check_md5sum =
verbose_mode =
nls_support =
nls_support_textdomain =
nls_support_textdomaindir =
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Nhopkg is a universal package manager for unix systems.
# Copyright (C) 2009 Jaime Gil de Sagredo Luna <jaimegildesagredo@gmail.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

"""Default Nhopkg configuration."""

import os
import ConfigParser

class config_parse:
  """Get data from Nhopkg configuration file."""
  def __init__(self, config):
    """config: Nhopkg configuration file."""
    self.config_file = config
    (self.sysname, self.hostname, self.sysrelease, self.sysversion, \
      self.machine) = os.uname()

    self.read_file()
    self.parse()

  def read_file(self):
    """Read Nhopkg configuration file."""
    self.config = ConfigParser.ConfigParser()
    self.config.read(self.config_file)

  def parse(self):
    """Parse Nhopkg configuration file."""
    self.sysconfdir = self.config.get('main', 'sysconfdir')
    self.datadir = self.config.get('main', 'datadir')
    self.localstatedir = self.config.get('main', 'localstatedir')
    self.tmpdir = self.config.get('main', 'tmpdir')
    self.buildir = self.config.get('main', 'buildir')
    self.lockfile = self.config.get('main', 'lockfile')
    self.database = self.config.get('database', 'database')
    self.server = self.config.get('server', 'server')
    self.find_dirs = self.config.get('packaging', 'find_dirs')
    self.no_upgrade_file = self.config.get('packaging', 'no_upgrade_file')
    self.check_deps = self.config.get('options', 'check_deps')
    self.check_inverse_deps = self.config.get('options', 'check_inverse_deps')
    self.check_md5sum = self.config.get('options', 'check_md5sum')
    self.verbose_mode = self.config.get('options', 'verbose_mode')
    self.nls_support = self.config.get('options', 'nls_support')
    self.nls_support_textdomain = self.config.get('options', \
      'nls_support_textdomain')
    self.nls_support_textdomaindir = self.config.get('options', \
      'nls_support_textdomaindir')

En breve subiré las primeras líneas de este código al nuevo repositorio bazaar de Nhopkg, mucho más cómodo y en mi opinión mejor que el anterior svn. http://nhopkg.bzr.sourceforge.net/bzr/nhopkg/changes

Además la lista de correo de desarrollo de Nhopkg está ya activa, si quieres unirte al desarrollo o estar informado de las últimas novedades de éste, no dudes en suscribirte: https://lists.sourceforge.net/lists/listinfo/nhopkg-svn

Llevamos 7 Comentarios

  1. mrcomputer ha dicho:

    26 mayo 09 a las 12:46

    Bien bien pinta bien, sobre todo es bueno que tenga archivo de configuracion, asi facilita las cosas a nhopkg-fe ;)

    Saludos

  2. jotahacker ha dicho:

    26 mayo 09 a las 12:51

    Gracias @mrcomputer ;) Por cierto, Nhopkg 0.5 también tiene archivo de configuración majete, así que no hay escusa :D

  3. mrcomputer ha dicho:

    26 mayo 09 a las 13:12

    Ouch, a buenas horas me avisas XD

  4. HacKreatorz ha dicho:

    26 mayo 09 a las 20:08

    Yo no entiendo de Python asi que no te se decir nada del codigo. Pero veo que puede ser una muy buena mejora, aunque tiene que costar pasar todo un programa a otro lenguaje de programacion.

    Le vas a cambiar el nombre a libnhopkg??

  5. jotahacker ha dicho:

    26 mayo 09 a las 20:21

    @HacKreatorz así es, es bastante trabajo pasar un programa a otro lenguaje, pero creo que merecerá la pena y además este paso también incluye mejoras (nuevas funciones).

    En cuanto a libnhopkg tan solo es el nombre de la librería, pero lo que es Nhopkg se seguirá llamando Nhopkg (por el momento) :D

    Un saludo!

  6. Dertin ha dicho:

    3 junio 09 a las 22:15

    Excelente Jaime! yo ando por empezar un curso de python completo! tambien busco hacer lo mismo en mi proyecto! dertin gnu/linux!

    Éxitos, amigo!

  7. jotahacker ha dicho:

    3 junio 09 a las 22:34

    Hola @Dertin y gracias por comentar ;) Por lo poco que llevo recorrido con Python te lo recomiendo 100%. Es tremendamente potente, limpio y fácil de usar.

    A ver si tengo más tiempo dentro de no mucho para seguir con Nhopkg e intentar aportar algo a Dertin ;)

    Un saludo!