]> Creatis software - crea.git/blobdiff - lib/creaDevManagerLib/modelCDMMain.cpp
open project fixed for model creation. Model not created yet
[crea.git] / lib / creaDevManagerLib / modelCDMMain.cpp
index 307decac4eb4bbcc96bcf191523abf5b7dc0409b..e9df13ed38242c21fced54e9a490bdf032ea6ea5 100644 (file)
 
 #include "modelCDMMain.h"
 
-#include<iostream>
-#include<string>
+
+#include <cstdlib>
+#include <iostream>
+#include <string>
 #include <cstdio>
 #include <fstream>
 
@@ -64,7 +66,75 @@ bool modelCDMMain::CreateProject(
     const std::string& author,
     const std::string& description)
 {
-  //TODO: implement method
+  std::cout << "Open selection path: "<< location << std::endl;
+  //get fixed location
+  std::string locationFixed = CDMUtilities::fixPath(location);
+  std::cout << "Opening path: "<< locationFixed << std::endl;
+
+  //TODO: create Project given the source folder
+
+#if(_WIN32)
+
+  std::string command("creaNewProject.bat ");
+  std::string command1("creaSed.exe ");
+  std::string command2("del ");
+
+  command  += "\"" + locationFixed + "\" \"" + name + "\"";
+  command1 += "\"" + locationFixed +"\\"+name+"\\CMakeLists.txt.in\" " + "NameOfTheProject " + name + "> \"" + locationFixed + "\\" + name + "\\CMakeLists.txt\"";
+  command2 += "\"" + locationFixed +"\\"+name+"\\CMakeLists.txt.in\"";
+  if ( ! system ( command.c_str() ) )
+    {
+      system ( command1.c_str() );
+      system ( command2.c_str() );
+
+      // Create a Package at the same time.   JPR
+      char *author = author.c_str();
+      std::string nomDirectory = locationFixed + "\\" + name;
+      std::string nomPackageDirectory = nomDirectory + "\\" + "bbtk_" + name + "_PKG";
+      std::string bbCreatePackage("bbCreatePackage ");
+      bbCreatePackage += nomDirectory + " " + name + " " + author + " " + description;
+      system (bbCreatePackage.c_str());
+      std::string add;
+      add = "echo ADD_SUBDIRECTORY(bbtk_" + name  + "_PKG) >> " + nomDirectory + "/CMakeLists.txt";
+      system(add.c_str());
+    }
+  else
+    {
+      result = new std::string("An error occured while running '" + command + "'.");
+      return false;
+    }
+
+#else
+  // ------ LINUX / MacOS
+  std::string command("creaNewProject.sh ");
+  command += "\"" + locationFixed + "\"" +" " + name;
+  std::cout << "executing " << command << std::endl;
+  if ( ! system ( command.c_str() ) )
+    {
+      std::string nomDirectory = locationFixed + "/" + name;
+      std::string nomPackageDirectory = nomDirectory + "/" + "bbtk_" + name + "_PKG";
+
+      std::string bbCreatePackage("bbCreatePackage ");
+      bbCreatePackage += nomDirectory + " " + name + " " + author + " " + description;
+      std::cout << "executing " << bbCreatePackage << std::endl;
+      system (bbCreatePackage.c_str());
+
+      std::string add;
+      add = "echo 'ADD_SUBDIRECTORY(bbtk_" + name  + "_PKG)' >> " + nomDirectory + "/CMakeLists.txt";
+      //std::cout << add << std::endl;
+      std::cout << "executing " << add << std::endl;
+      system(add.c_str());
+    }
+  else
+    {
+      result = new std::string("An error occured while running '" + command + "'.");
+      return false;
+    }
+
+#endif
+
+
+
   return true;
 }
 
@@ -73,11 +143,10 @@ bool modelCDMMain::OpenProject(
     std::string*& result
 )
 {
-  std::cout << "Selection path: "<< path << std::endl;
-
+  std::cout << "Open selection path: "<< path << std::endl;
   //get fixed path
   std::string pathFixed = CDMUtilities::fixPath(path);
-  std::cout << "Fixed selection path: "<< pathFixed << std::endl;
+  std::cout << "Opening path: "<< pathFixed << std::endl;
 
   //check if its binaries' folder
   bool isBinary = false;
@@ -97,7 +166,6 @@ bool modelCDMMain::OpenProject(
 
       while(!isBinary && readFile >> word)
         {
-          //cout << word << endl;
           if(word == "CMAKE_SOURCE_DIR")
             {
               readFile >> word;