[Fusionforge-commits] r7606 - in trunk/gforge: packaging/install utils

Roland Mas lolando at libremir.placard.fr.eu.org
Tue May 5 13:31:32 CEST 2009


Author: lolando
Date: 2009-05-05 13:31:32 +0200 (Tue, 05 May 2009)
New Revision: 7606

Added:
   trunk/gforge/utils/inject-files.php
Modified:
   trunk/gforge/packaging/install/db-postgresql
Log:
First try at a file injector

Modified: trunk/gforge/packaging/install/db-postgresql
===================================================================
--- trunk/gforge/packaging/install/db-postgresql	2009-05-05 11:31:24 UTC (rev 7605)
+++ trunk/gforge/packaging/install/db-postgresql	2009-05-05 11:31:32 UTC (rev 7606)
@@ -58,3 +58,4 @@
 #
 utils/inject-users.php usr/share/gforge/bin/
 utils/inject-groups.php usr/share/gforge/bin/
+utils/inject-files.php usr/share/gforge/bin/

Added: trunk/gforge/utils/inject-files.php
===================================================================
--- trunk/gforge/utils/inject-files.php	                        (rev 0)
+++ trunk/gforge/utils/inject-files.php	2009-05-05 11:31:32 UTC (rev 7606)
@@ -0,0 +1,134 @@
+#! /usr/bin/php5 -f
+<?php
+/**
+ * Copyright 2009, Roland Mas
+ *
+ * This file is part of FusionForge.
+ *
+ * FusionForge 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.
+ * 
+ * FusionForge 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 FusionForge; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA
+ */
+
+require (dirname (__FILE__).'/../www/env.inc.php');
+require $gfwww.'include/squal_pre.php';
+require_once $gfcommon.'frs/FRSPackage.class.php';
+require_once $gfcommon.'frs/FRSRelease.class.php';
+require_once $gfcommon.'frs/FRSFile.class.php';
+
+db_begin ();
+
+/*
+ * Line format:
+ * project:packagename:releasename:filepath:notes:changes:type:processor
+ * type taken from SELECT * from frs_filetype:
+ 1000 | .deb
+[...]
+ 5000 | Source .zip
+ 5010 | Source .bz2
+ 5020 | Source .gz
+[...]
+ 5900 | Other Source File
+[...]
+ 9999 | Other
+ * processor taken from SELECT * from frs_processor:
+ 1000 | i386
+ 6000 | IA64
+[...]
+ 8000 | Any
+[...]
+ 9999 | Other
+*/
+
+$f = fopen ('files.txt', 'r') ;
+while (! feof ($f)) {
+        $l = trim (fgets ($f, 1024)) ;
+	if ($l == "") { continue ; } ;
+	$array = explode (':', $l) ;
+	$projectname = $array[0] ;
+	$packagename = $array[1] ;
+	$releasename = $array[2] ;
+	$filepath = $array[3] ;
+	$notes = $array[4] ;
+	$changes = $array[5] ;
+	$type = $array[6] ;
+	$processorid = $array[7] ;
+
+	$g = group_get_object_by_name ($projectname);
+	if (! $g) {
+		print "Error: invalid group\n" ;
+		db_rollback () ;
+		exit (1) ;
+	}
+
+	$packages = get_frs_packages ($g) ;
+	$package = false ;
+	if ($packages) {
+		foreach ($packages as $cur) {
+			if ($cur->getName () == $packagename) {
+				$package = $cur ;
+				break ;
+			}
+		}
+	}
+	if (!$package) {
+		$package = new FRSPackage ($g) ;
+		$r = $package->create ($packagename) ;
+	}
+	if (!$r || !$package) {
+		print "Error when creating FRS package\n" ;
+		db_rollback () ;
+		exit (1) ;
+	}
+
+	$releases = $package->getReleases () ;
+	$release = false ;
+	foreach ($releases as $cur) {
+		if ($cur->getName () == $releasename) {
+			$release = $cur ;
+			break ;
+		}
+	}
+	if (!$release) {
+		$release = new FRSRelease ($g) ;
+		$r = $release->create ($releasename, $notes, $changes, false) ;
+	}
+	if (!$r || !$release) {
+		print "Error when creating FRS release\n" ;
+		db_rollback () ;
+		exit (1) ;
+	}
+
+	$file = new FRSFile ($release) ;
+	$pathcomponents = explode ('/', $filepath) ;
+	$filename = $pathcomponents[count($pathcomponents)-1] ;
+	$r = $file->create ($filename, $filepath, $typeid, $processorid) ;
+
+	if (!$r) {
+		print "Error when creating FRS file\n" ;
+		db_rollback () ;
+		exit (1) ;
+	}
+}
+fclose ($f);
+
+// If everything went well so far, we can commit
+db_commit () ;
+
+// Local Variables:
+// mode: php
+// c-file-style: "bsd"
+// End:
+
+?>




More information about the Fusionforge-commits mailing list