]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.rpmfactory/src/main/java/org/argeo/slc/rpmfactory/core/RpmFactory.java
Create distribution working.
[gpl/argeo-slc.git] / runtime / org.argeo.slc.rpmfactory / src / main / java / org / argeo / slc / rpmfactory / core / RpmFactory.java
index 8396a9bbe0fd9da31ad21518178a0e82f2cccc97..4daf3b1eadb239839b3700f55cf18201e1032ec9 100644 (file)
@@ -17,7 +17,11 @@ package org.argeo.slc.rpmfactory.core;
 
 import java.io.File;
 import java.io.IOException;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -52,6 +56,8 @@ public class RpmFactory {
        private String mockVar = "/var/lib/mock";
        private String mockEtc = "/etc/mock";
 
+       private DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd_HHmm");
+
        private String gitWorkspace = "git";
 
        private String localUrlBase = "http://localhost:7070/";
@@ -144,6 +150,26 @@ public class RpmFactory {
                }
        }
 
+       /** Caller must logout the underlying session. */
+       protected Node newDistribution(String distributionId) {
+               Session session = null;
+               try {
+                       session = JcrUtils.loginOrCreateWorkspace(rpmRepository,
+                                       distributionId);
+                       JcrUtils.addPrivilege(session, "/", "anonymous", "jcr:read");
+                       JcrUtils.addPrivilege(session, "/", SlcConstants.ROLE_SLC,
+                                       "jcr:all");
+
+                       Calendar now = new GregorianCalendar();
+                       String folderName = dateFormat.format(now.getTime());
+                       return JcrUtils.mkfolders(session, "/" + folderName);
+               } catch (Exception e) {
+                       JcrUtils.logoutQuietly(session);
+                       throw new SlcException("Cannot initialize distribution workspace "
+                                       + distributionId, e);
+               }
+       }
+
        protected void initGitWorkspace() {
                Session session = null;
                try {
@@ -217,6 +243,10 @@ public class RpmFactory {
                                buf.append("baseurl=").append(proxiedReposBase)
                                                .append(repository.getId()).append('/').append(arch)
                                                .append('/').append("\n");
+                               if (((ThirdPartyRpmRepository) repository).getYumConf() != null)
+                                       buf.append(
+                                                       ((ThirdPartyRpmRepository) repository).getYumConf()
+                                                                       .trim()).append('\n');
                        }
                }
 
@@ -233,6 +263,7 @@ public class RpmFactory {
                buf.append('[').append(workspace).append("]\n");
                buf.append("baseurl=").append(managedReposBase).append(workspace)
                                .append('/').append(arch).append('/').append("\n");
+               buf.append("gpgcheck=0").append("\n");
        }
 
        /** Creates a mock config file. */
@@ -258,8 +289,8 @@ public class RpmFactory {
        }
 
        /** Creates a yum config file. */
-       public File getYumConfigFile(String arch) {
-               File yumConfigFile = new File(yumConfDir, getIdWithArch(arch) + ".conf");
+       public File getYumRepoFile(String arch) {
+               File yumConfigFile = new File(yumConfDir, getIdWithArch(arch) + ".repo");
                try {
                        FileUtils.writeStringToFile(yumConfigFile,
                                        generateYumConfigFile(arch));
@@ -279,7 +310,7 @@ public class RpmFactory {
        }
 
        public File getSourcesDir() {
-               return new File(distBase + "/" + stagingWorkspace);
+               return new File(distBase + "/" + stableWorkspace);
        }
 
        public String getMockConfig(String arch) {