aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndré Erdmann <dywi@mailerd.de>2012-06-19 20:16:01 +0200
committerAndré Erdmann <dywi@mailerd.de>2012-06-19 20:16:01 +0200
commit2afa2439d20402b7cb7af0ca12edd5bb0c269bdc (patch)
tree126fe6c1ab0725917d1681ed43cfa65e99859922 /roverlay/metadata/__init__.py
parentoverlay creation (diff)
downloadR_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__.py90
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 (...) ---