]> Creatis software - crea.git/blob - lib/creaDevManagerLib/ControlCreaDevManagerProject.cpp
Feature #1711
[crea.git] / lib / creaDevManagerLib / ControlCreaDevManagerProject.cpp
1 /*
2  * ControlCreaDevManagerProject.cpp
3  *
4  *  Created on: 5/11/2012
5  *      Author: daniel
6  */
7
8 #include "ControlCreaDevManagerProject.h"
9
10 #include <creaWx.h>
11 #include <wx/dirdlg.h>
12 #include <stdlib.h> // for getenv
13
14 ControlCreaDevManagerProject::ControlCreaDevManagerProject()
15 {
16   // TODO Auto-generated constructor stub
17
18 }
19
20 ControlCreaDevManagerProject::~ControlCreaDevManagerProject()
21 {
22   // TODO Auto-generated destructor stub
23 }
24
25 bool ControlCreaDevManagerProject::CreateProject(const std::string& name, const std::string& dir, const std::string& author, const std::string& description)
26 {
27
28 #if(_WIN32)
29
30   std::string command("creaNewProject.bat ");
31   std::string command1("creaSed.exe ");
32   std::string command2("del ");
33
34   command  += "\"" + dir + "\" \"" + name + "\"";
35   command1 += "\"" + dir+"\\"+name+"\\CMakeLists.txt.in\" " + "NameOfTheProject " + name + "> \"" + dir + "\\" + name + "\\CMakeLists.txt\"";
36   command2 += "\"" + dir+"\\"+name+"\\CMakeLists.txt.in\"";
37   if ( ! system ( command.c_str() ) )
38   {
39     system ( command1.c_str() );
40     system ( command2.c_str() );
41
42   // Create a Package at the same time.   JPR
43     char *author = author.c_str();
44     std::string nomDirectory = dir + "\\" + name;
45     std::string nomPackageDirectory = nomDirectory + "\\" + "bbtk_" + name + "_PKG";
46     std::string bbCreatePackage("bbCreatePackage ");
47     bbCreatePackage += nomDirectory + " " + name + " " + author + " " + description;
48     system (bbCreatePackage.c_str());
49     std::string add;
50     add = "echo ADD_SUBDIRECTORY(bbtk_" + name  + "_PKG) >> " + nomDirectory + "/CMakeLists.txt";
51     system(add.c_str());
52
53     wxMessageBox(_T("New Project created !"),_T("creaNewProject"), wxOK | wxICON_INFORMATION);
54   }
55   else
56   {
57     wxString err(_T("An error occured while running '"));
58     err +=  crea::std2wx(command) + _T("'");
59     wxMessageBox(err,_T("creaNewProject"),wxOK | wxICON_ERROR);
60     return false;
61   }
62
63 // ------ LINUX / MacOS
64
65 #else
66   std::string command("creaNewProject.sh ");
67   command += "\"" + dir + "\"" +" " + name;
68   std::cout << "executing " << command << std::endl;
69   if ( ! system ( command.c_str() ) )
70   {
71     //wxMessageBox(_T("New Project created !"),_T("creaNewProject"), wxOK | wxICON_INFORMATION);
72
73     std::string nomDirectory = dir + "/" + name;
74     std::string nomPackageDirectory = nomDirectory + "/" + "bbtk_" + name + "_PKG";
75
76     std::string bbCreatePackage("bbCreatePackage ");
77     bbCreatePackage += nomDirectory + " " + name + " " + author + " " + description;
78     std::cout << "executing " << bbCreatePackage << std::endl;
79     system (bbCreatePackage.c_str());
80
81     std::string add;
82     add = "echo 'ADD_SUBDIRECTORY(bbtk_" + name  + "_PKG)' >> " + nomDirectory + "/CMakeLists.txt";
83     //std::cout << add << std::endl;
84     std::cout << "executing " << add << std::endl;
85     system(add.c_str());
86
87   }
88   else
89   {
90     wxString err(_T("An error occured while running '"));
91     err +=  crea::std2wx(command) + _T("'");
92     wxMessageBox(err,_T("creaNewProject"),wxOK | wxICON_ERROR);
93     return false;
94   }
95
96 #endif
97
98    return true;
99 }