[Gelistirici] pisi rubymodules
Fatih Aşıcı
fatih at pardus.org.tr
12 Tem 2010 Pzt 09:49:01 EEST
On Monday 12 July 2010 02:08:17 Gökmen Görgen wrote:
> # -*- coding: utf-8 -*-
> #
> # Copyright (C) 2005-2010 TUBITAK/UEKAE
2005'te yazmaya başlamadıysan burayı düzeltmen gerekiyor :)
> #
> # 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 2 of the License, or (at your
> option) # any later version.
> #
> # Please read the COPYING file.
> # Author: Gökmen Görgen, gkmngrgn [at] gmail.com
>
> # standard python modules
> from glob import glob
> from gettext import translation
> from os import path
> from os import popen
"import os" daha iyi.
>
> __trans = translation('pisi', fallback=True)
> _ = __trans.ugettext
>
> # Pisi Modules
> import pisi.context as ctx
>
> # ActionsAPI Modules
> import pisi.actionsapi
> import pisi.actionsapi.get as get
> from pisi.actionsapi.shelltools import export
> from pisi.actionsapi.shelltools import isEmpty
> from pisi.actionsapi.shelltools import system
>
> class ConfigureError(pisi.actionsapi.Error):
> def __init__(self, value=''):
> pisi.actionsapi.Error.__init__(self, value)
> self.value = value
> ctx.ui.error(value)
>
> class CompileError(pisi.actionsapi.Error):
> def __init__(self, value=''):
> pisi.actionsapi.Error.__init__(self, value)
> self.value = value
> ctx.ui.error(value)
>
> class InstallError(pisi.actionsapi.Error):
> def __init__(self, value=''):
> pisi.actionsapi.Error.__init__(self, value)
> self.value = value
> ctx.ui.error(value)
>
> class RunTimeError(pisi.actionsapi.Error):
> def __init__(self, value=''):
> pisi.actionsapi.Error.__init__(self, value)
> self.value = value
> ctx.ui.error(value)
>
pythonmodules içinde de bu kısım aynı. Ekrana hata mesajı basmak için pisi.Error
sınıfını miras almak yetiyor aslında. Sandbox için belki böyle bir şey yapılmış
olabilir. Şimdilik böyle kalsın; sonra bakarız.
> def getconfig(config):
ActionsAPI modüllerinin kendine has garip bir isimlendirme stili var. Bu modül Pisi'nin
yazım stilini izliyor. Bence güzel.
Yalnız getconfig'i de diğerlerine benzer şekilde get_config yapalım.
> return popen("ruby -rrbconfig -e 'puts Config::CONFIG[\"%s\"]'" %
> config).read().strip()
Bu kısımda olası Exception'ları yakalamak gerekir mi acaba?
> def get_ruby_version():
> return getconfig('ruby_version')
>
> def get_rubylibdir():
> return getconfig('rubylibdir')
>
> def get_sitedir():
> return getconfig('sitedir')
>
> def get_ruby_install_name():
> return getconfig('ruby_install_name')
>
> def get_gemhome():
> (rubylibdir, ruby_version) = path.split(get_rubylibdir())
>
> return path.join(get.installDIR(), rubylibdir.lstrip('/'), 'gems',
> ruby_version)
>
> def get_sitelibdir():
> return getconfig('sitelibdir')
>
> def rdodoc():
> from pisi.actionsapi.pisitools import dodoc
>
>
> docs = ('AUTHORS', 'CHANGELOG', 'CONTRIBUTORS', 'Change*',
> 'KNOWN_BUGS', 'MAINTAINERS', 'NEWS', 'README*', 'History.txt')
>
> for doc_glob in docs:
> for doc in glob(doc_glob):
> if not isEmpty(doc):
> dodoc(doc)
Bu fonksiyona daha anlaşılır bir isim bulunabilir. auto_dodoc gibi mesela?
> def install(parameters = ''):
> '''does ruby setup.rb install'''
> if system('ruby -w setup.rb --prefix=/usr --destdir=%s %s' %
> (get.installDIR(), parameters)): raise InstallError, _('Install failed.')
>
> rdodoc()
/usr öneki hardcode edilmemeli. get.defaultprefixDIR() var bunun için.
> def rake_install(parameters = ''):
> '''execute rake script for installation'''
Başka fonksiyonlarda da aynı durum söz konusu. Argümanlara öntanımlı değer atanırken
eşittir işaretinin etrafında boşluk olmamalı.
> if system('rake -t -l /usr/lib %s' % parameters):
> raise InstallError, _('Install failed.')
>
> rdodoc()
/lib kısmını hardcode etmemek şu an mümkün değil sanırım. Şimdilik sadece get.defaultprefixDIR'ı
kullanalım.
> def run(parameters = ''):
> '''executes parameters with ruby'''
> export('DESTDIR', get.installDIR())
>
> if system('ruby %s' % parameters):
> raise RuntimeError, _("Running %s failed.") % parameters
Hata mesajı "Running 'ruby %s' failed." şeklinde olacaktı sanırım.
Gelistirici mesaj listesiyle ilgili
daha fazla bilgi