Salome HOME
c8f67401b167263e1b8fe8cf062336983da2826a
[tools/libbatch.git] / src / Core / CommunicationProtocolSH.cxx
1 // Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
10 //
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 // Lesser General Public License for more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 /*
23  *  CommunicationProtocolSH.cxx :
24  *
25  *  Created on: 16 sept. 2009
26  *  Author : Renaud BARATE - EDF R&D
27  */
28
29 #include <libbatch_config.h>
30
31 #include "CommunicationProtocolSH.hxx"
32 #include "CommandsOverloader.hxx"
33 #include "Utils.hxx"
34
35 using namespace std;
36
37 namespace Batch {
38
39   CommunicationProtocolSH::CommunicationProtocolSH()
40   : CommunicationProtocol(SH)
41   {
42   }
43
44   vector<string> CommunicationProtocolSH::getExecCommandArgs(const string & subCommand,
45                                                              const string & /*host*/,
46                                                              const string & /*user*/) const
47   {
48     vector<string> cmd;
49
50     cmd.push_back(Utils::fixPath(CommandsOverloader::getInstance().SH_Command()));
51
52 #ifdef WIN32
53     cmd.push_back("/c");
54 #else
55     cmd.push_back("-c");
56 #endif
57
58     cmd.push_back(Utils::fixPath(subCommand));
59
60     return cmd;
61   }
62
63   vector<string> CommunicationProtocolSH::getCopyCommandArgs(const string & sourcePath,
64                                                              const string & /*sourceHost*/,
65                                                              const string & /*sourceUser*/,
66                                                              const string & destinationPath,
67                                                              const string & /*destinationHost*/,
68                                                              const string & /*destinationUser*/) const
69   {
70     vector<string> cmd;
71     cmd.push_back(CommandsOverloader::getInstance().CP_Command());
72 #ifndef WIN32
73     cmd.push_back("-r");
74 #endif
75     cmd.push_back(Utils::fixPath(sourcePath));
76     cmd.push_back(Utils::fixPath(destinationPath));
77     return cmd;
78   }
79
80   string CommunicationProtocolSH::getRemoveSubCommand(const string & path) const
81   {
82     return string(CommandsOverloader::getInstance().RM_Command()) + " " + Utils::fixPath(path);
83   }
84
85   string CommunicationProtocolSH::getMakeDirectorySubCommand(const string & path) const
86   {
87     string subCommand = CommandsOverloader::getInstance().MKDIR_Command();
88 #ifndef WIN32
89     subCommand += " -p";
90 #endif
91     subCommand += " " + Utils::fixPath(path);
92     return subCommand;
93   }
94
95 }