Enable security checks and features
[TortoiseGit.git] / src / TortoiseProc / Commands / Command.h
blobf0e2f42fa94255d3540f881af626f6c3dd282077
1 // TortoiseSVN - a Windows shell extension for easy version control
3 // Copyright (C) 2007 - TortoiseSVN
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software Foundation,
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 #pragma once
20 #include "TortoiseProc.h"
21 #include "CmdLineParser.h"
22 #include "TGitPath.h"
23 #include "git.h"
27 /**
28 * \ingroup TortoiseProc
29 * Interface for all command line commands TortoiseProc can execute.
31 class Command
33 public:
34 /**
35 * Executes the command.
37 virtual bool Execute() = 0;
39 void SetParser(const CCmdLineParser& p) {parser = p;}
40 void SetPaths(const CTGitPathList& plist, const CTGitPath path)
42 orgCmdLinePath = path;
43 CString WinPath=path.GetWinPath();
44 if(WinPath.Left(g_Git.m_CurrentDir.GetLength())==g_Git.m_CurrentDir)
46 if(g_Git.m_CurrentDir[g_Git.m_CurrentDir.GetLength()-1] == _T('\\'))
48 cmdLinePath.SetFromWin( WinPath.Right(WinPath.GetLength()-g_Git.m_CurrentDir.GetLength()));
49 }else
51 cmdLinePath.SetFromWin( WinPath.Right(WinPath.GetLength()-g_Git.m_CurrentDir.GetLength()-1));
54 orgPathList = plist;
55 for(int i=0;i<plist.GetCount();i++)
57 WinPath=plist[i].GetWinPath();
58 CTGitPath p;
59 if(WinPath.Left(g_Git.m_CurrentDir.GetLength())==g_Git.m_CurrentDir)
61 if(g_Git.m_CurrentDir[g_Git.m_CurrentDir.GetLength()-1] == _T('\\'))
63 p.SetFromWin( WinPath.Right(WinPath.GetLength()-g_Git.m_CurrentDir.GetLength()));
64 }else
66 p.SetFromWin( WinPath.Right(WinPath.GetLength()-g_Git.m_CurrentDir.GetLength()-1));
68 }else
69 p=plist[i];
70 pathList.AddPath(p);
74 void SetExplorerHwnd(HWND hWnd) {hwndExplorer = hWnd;}
75 protected:
76 CCmdLineParser parser;
77 CTGitPathList pathList;
78 CTGitPathList orgPathList;
79 CTGitPath cmdLinePath;
80 CTGitPath orgCmdLinePath;
81 HWND hwndExplorer;
84 /**
85 * \ingroup TortoiseProc
86 * Factory for the different commands which TortoiseProc executes from the
87 * command line.
89 class CommandServer
91 public:
93 Command * GetCommand(const CString& sCmd);