diff options
author | 2012-06-19 20:16:01 +0200 | |
---|---|---|
committer | 2012-06-19 20:16:01 +0200 | |
commit | 2afa2439d20402b7cb7af0ca12edd5bb0c269bdc (patch) | |
tree | 126fe6c1ab0725917d1681ed43cfa65e99859922 /roverlay/metadata/__init__.py | |
parent | overlay creation (diff) | |
download | R_overlay-2afa2439d20402b7cb7af0ca12edd5bb0c269bdc.tar.gz R_overlay-2afa2439d20402b7cb7af0ca12edd5bb0c269bdc.tar.bz2 R_overlay-2afa2439d20402b7cb7af0ca12edd5bb0c269bdc.zip |
roverlay, 2012-06-19
* added Manifest creation to the overlay module
* code moved/adjusted for R package -> overlay conversion
* removed unnecessary code in ebuild module
new file: roverlay/ebuild/__init__.py
renamed: roverlay/portage/ebuild.py -> roverlay/ebuild/construction.py
new file: roverlay/ebuild/creation.py
renamed: roverlay/portage/manifest.py -> roverlay/manifest/__init__.py
renamed: roverlay/portage/manifesthelpers.py -> roverlay/manifest/helpers.py
renamed: roverlay/portage/metadata/creation.py -> roverlay/metadata/__init__.py
renamed: roverlay/portage/metadata/abstractnodes.py -> roverlay/metadata/abstractnodes.py
renamed: roverlay/portage/metadata/nodes.py -> roverlay/metadata/nodes.py
renamed: roverlay/portage/overlay/root.py -> roverlay/overlay/__init__.py
renamed: roverlay/portage/overlay/category.py -> roverlay/overlay/category.py
renamed: roverlay/portage/overlay/package.py -> roverlay/overlay/package.py
renamed: roverlay/portage/packageinfo.py -> roverlay/packageinfo.py
deleted: roverlay/portage/__init__.py
deleted: roverlay/portage/ebuildcreator.py
deleted: roverlay/portage/ebuildjob.py
deleted: roverlay/portage/metadata/__init__.py
deleted: roverlay/portage/overlay/__init__.py
new file: roverlay/static/__init__.py
new file: roverlay/static/depres.py
Diffstat (limited to 'roverlay/metadata/__init__.py')
-rw-r--r-- | roverlay/metadata/__init__.py | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/roverlay/metadata/__init__.py b/roverlay/metadata/__init__.py new file mode 100644 index 0000000..82821bb --- /dev/null +++ b/roverlay/metadata/__init__.py @@ -0,0 +1,90 @@ +# R Overlay -- ebuild creation, metadata creation +# Copyright 2006-2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +import roverlay.config + +from roverlay.metadata import nodes + +class MetadataJob ( object ): + """R package description data -> metadata.xml interface.""" + + def __init__ ( self, logger ): + """Initializes a MetadataJob. + + arguments: + (((* package_info -- reserved for future usage))) + * logger -- parent logger to use + """ + self.logger = logger.getChild ( 'metadata' ) + self._metadata = nodes.MetadataRoot() + # reserved for future usage ("dominant ebuilds": when ebuildjobs + # share one metadata instance etc.) + self.package_info = None + self.filename = 'metadata.xml' + # --- end of __init__ (...) --- + + def update ( self, package_info ): + """Updates the metadata using the given description data. + + It's expected that this method is called when Ebuild creation is done. + + arguments: + * desc_data -- description data read from R package + * package_info -- reserved for future usage + + returns: None (implicit) + """ + desc_data = package_info ['desc_data'] + + mref = self._metadata + + max_textline_width = roverlay.config.get ( 'METADATA.linewidth', 65 ) + + have_desc = False + + if 'Title' in desc_data: + mref.add ( nodes.DescriptionNode ( + desc_data ['Title'], + is_long=have_desc, + linewidth=max_textline_width + ) ) + have_desc = True + + if 'Description' in desc_data: + # passing have_desc for DescriptionNode's is_long parameter redirects + # the second description info into <longdescription.../> + mref.add ( nodes.DescriptionNode ( + desc_data ['Description'], + is_long=have_desc, + linewidth=max_textline_width + ) ) + have_desc = True + + mref.add_useflag ( 'byte-compile', 'enable byte-compiling' ) + + if package_info ['has_suggests']: + mref.add_useflag ( 'R_suggests', 'install optional dependencies' ) + + # --- end of update (...) --- + + # used in some test scripts + update_metadata = update + + def write ( self, _file ): + """Writes the metadata into a file. + + arguments: + * _file -- file to write, either a file handle or string in which case + a file object will be created + + returns: True if writing succeeds, else False + + raises: Exception if no metadata to write + """ + if self._metadata.empty(): + raise Exception ( "not enough metadata to write!" ) + #return False + else: + return self._metadata.write_file ( _file ) + # --- end of write (...) --- |