OSDN Git Service

Add Submodule Command
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / Commands / Command.cpp
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 2007-2008 - TortoiseSVN\r
4 \r
5 // This program is free software; you can redistribute it and/or\r
6 // modify it under the terms of the GNU General Public License\r
7 // as published by the Free Software Foundation; either version 2\r
8 // of the License, or (at your option) any later version.\r
9 \r
10 // This program is distributed in the hope that it will be useful,\r
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13 // GNU General Public License for more details.\r
14 \r
15 // You should have received a copy of the GNU General Public License\r
16 // along with this program; if not, write to the Free Software Foundation,\r
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
18 //\r
19 #include "StdAfx.h"\r
20 #include "Command.h"\r
21 \r
22 #include "AboutCommand.h"\r
23 #include "CommitCommand.h"\r
24 #include "LogCommand.h"\r
25 \r
26 #include "CreateRepositoryCommand.h"\r
27 #include "CloneCommand.h"\r
28 #include "PrevDiffCommand.h"\r
29 #include "DiffCommand.h"\r
30 \r
31 #include "RenameCommand.h"\r
32 #include "RepoStatusCommand.h"\r
33 \r
34 #include "RevertCommand.h"\r
35 #include "RemoveCommand.h"\r
36 #include "PullCommand.h"\r
37 #include "FetchCommand.h"\r
38 #include "PushCommand.h"\r
39 #include "BranchCommand.h"\r
40 #include "TagCommand.h"\r
41 #include "MergeCommand.h"\r
42 #include "SwitchCommand.h"\r
43 #include "ExportCommand.h"\r
44 #include "AddCommand.h"\r
45 #include "IgnoreCommand.h"\r
46 #include "FormatPatchCommand.h"\r
47 #include "ImportPatchCommand.h"\r
48 #include "BlameCommand.h"\r
49 #include "SettingsCommand.h"\r
50 #include "ConflictEditorCommand.h"\r
51 #include "CleanupCommand.h"\r
52 #include "RebaseCommand.h"\r
53 #include "ResolveCommand.h"\r
54 #include "DropMoveCommand.h"\r
55 #include "DropCopyAddCommand.h"\r
56 #include "DropCopyCommand.h"\r
57 #include "DropExportCommand.h"\r
58 #include "HelpCommand.h"\r
59 #include "StashCommand.h"\r
60 #include "SubmoduleCommand.h"\r
61 #if 0\r
62 \r
63 \r
64 #include "CatCommand.h"\r
65 #include "CheckoutCommand.h"\r
66 \r
67 \r
68 \r
69 #include "CopyCommand.h"\r
70 #include "CrashCommand.h"\r
71 #include "CreatePatchCommand.h"\r
72 \r
73 #include "DelUnversionedCommand.h"\r
74 \r
75 \r
76 \r
77 \r
78 \r
79 \r
80 #include "ImportCommand.h"\r
81 #include "LockCommand.h"\r
82 \r
83 \r
84 #include "MergeAllCommand.h"\r
85 #include "PasteCopyCommand.h"\r
86 #include "PasteMoveCommand.h"\r
87 \r
88 #include "PropertiesCommand.h"\r
89 #include "RebuildIconCacheCommand.h"\r
90 #include "RelocateCommand.h"\r
91 #include "RemoveCommand.h"\r
92 \r
93 #include "RepositoryBrowserCommand.h"\r
94 \r
95 \r
96 #include "RevertCommand.h"\r
97 #include "RevisiongraphCommand.h"\r
98 #include "RTFMCommand.h"\r
99 \r
100 #include "ShowCompareCommand.h"\r
101 \r
102 #include "UnIgnoreCommand.h"\r
103 #include "UnLockCommand.h"\r
104 #include "UpdateCheckCommand.h"\r
105 #include "UpdateCommand.h"\r
106 #include "UrlDiffCommand.h"\r
107 #endif\r
108 typedef enum\r
109 {\r
110         cmdAbout,\r
111         cmdAdd,\r
112         cmdBlame,\r
113         cmdBranch,\r
114         cmdCat,\r
115         cmdCheckout,\r
116         cmdCleanup,\r
117         cmdClone,\r
118         cmdCommit,\r
119         cmdConflictEditor,\r
120         cmdCopy,\r
121         cmdCrash,\r
122         cmdCreatePatch,\r
123         cmdDelUnversioned,\r
124         cmdDiff,\r
125         cmdDropCopy,\r
126         cmdDropCopyAdd,\r
127         cmdDropExport,\r
128         cmdDropMove,\r
129         cmdFetch,\r
130         cmdFormatPatch,\r
131         cmdExport,\r
132         cmdHelp,\r
133         cmdIgnore,\r
134         cmdImport,\r
135         cmdImportPatch,\r
136         cmdLock,\r
137         cmdLog,\r
138         cmdMerge,\r
139         cmdMergeAll,\r
140         cmdPasteCopy,\r
141         cmdPasteMove,\r
142         cmdPrevDiff,\r
143         cmdProperties,\r
144         cmdPull,\r
145         cmdPush,\r
146         cmdRTFM,\r
147         cmdRebuildIconCache,\r
148         cmdRelocate,\r
149         cmdRemove,\r
150         cmdRebase,\r
151         cmdRename,\r
152         cmdRepoBrowser,\r
153         cmdRepoCreate,\r
154         cmdRepoStatus,\r
155         cmdResolve,\r
156         cmdRevert,\r
157         cmdRevisionGraph,\r
158         cmdSettings,\r
159         cmdShowCompare,\r
160         cmdSwitch,\r
161         cmdTag,\r
162         cmdUnIgnore,\r
163         cmdUnlock,\r
164         cmdUpdate,\r
165         cmdUpdateCheck,\r
166         cmdUrlDiff,     \r
167         cmdStashSave,   \r
168         cmdStashApply,\r
169         cmdStashList,\r
170         cmdSubAdd,              \r
171         cmdSubUpdate,   \r
172         \r
173 } TGitCommand;\r
174 \r
175 static const struct CommandInfo\r
176 {\r
177         TGitCommand command;\r
178         LPCTSTR pCommandName;\r
179 } commandInfo[] = \r
180 {\r
181         {       cmdAbout,                       _T("about")                             },\r
182         {       cmdAdd,                         _T("add")                               },\r
183         {       cmdBlame,                       _T("blame")                             },\r
184         {       cmdBranch,                      _T("branch")                    },\r
185         {       cmdCat,                         _T("cat")                               },\r
186         {       cmdCheckout,            _T("checkout")                  },\r
187         {       cmdCleanup,                     _T("cleanup")                   },\r
188         {       cmdClone,                       _T("clone")                             },\r
189         {       cmdCommit,                      _T("commit")                    },\r
190         {       cmdConflictEditor,      _T("conflicteditor")    },\r
191         {       cmdCopy,                        _T("copy")                              },\r
192         {       cmdCrash,                       _T("crash")                             },\r
193         {       cmdCreatePatch,         _T("createpatch")               },\r
194         {       cmdDelUnversioned,      _T("delunversioned")    },\r
195         {       cmdDiff,                        _T("diff")                              },\r
196         {       cmdDropCopy,            _T("dropcopy")                  },\r
197         {       cmdDropCopyAdd,         _T("dropcopyadd")               },\r
198         {       cmdDropExport,          _T("dropexport")                },\r
199         {       cmdDropMove,            _T("dropmove")                  },\r
200         {       cmdFetch,                       _T("fetch")                             },\r
201         {       cmdFormatPatch,         _T("formatpatch")               },\r
202         {       cmdExport,                      _T("export")                    },\r
203         {       cmdHelp,                        _T("help")                              },\r
204         {       cmdIgnore,                      _T("ignore")                    },\r
205         {       cmdImport,                      _T("import")                    },\r
206         {       cmdImportPatch,         _T("importpatch")               },\r
207         {       cmdLock,                        _T("lock")                              },\r
208         {       cmdLog,                         _T("log")                               },\r
209         {       cmdMerge,                       _T("merge")                             },\r
210         {       cmdMergeAll,            _T("mergeall")                  },\r
211         {       cmdPasteCopy,           _T("pastecopy")                 },\r
212         {       cmdPasteMove,           _T("pastemove")                 },\r
213         {       cmdPrevDiff,            _T("prevdiff")                  },\r
214         {       cmdProperties,          _T("properties")                },\r
215         {       cmdPull,                        _T("pull")                              },\r
216         {       cmdPush,                        _T("push")                              },\r
217         {       cmdRTFM,                        _T("rtfm")                              },\r
218         {       cmdRebuildIconCache,_T("rebuildiconcache")      },\r
219         {       cmdRelocate,            _T("relocate")                  },\r
220         {       cmdRemove,                      _T("remove")                    },\r
221         {       cmdRebase,                      _T("rebase")                    },\r
222         {       cmdRename,                      _T("rename")                    },\r
223         {       cmdRepoBrowser,         _T("repobrowser")               },\r
224         {       cmdRepoCreate,          _T("repocreate")                },\r
225         {       cmdRepoStatus,          _T("repostatus")                },\r
226         {       cmdResolve,                     _T("resolve")                   },\r
227         {       cmdRevert,                      _T("revert")                    },\r
228         {       cmdRevisionGraph,       _T("revisiongraph")             },\r
229         {       cmdSettings,            _T("settings")                  },\r
230         {       cmdShowCompare,         _T("showcompare")               },\r
231         {       cmdSwitch,                      _T("switch")                    },\r
232         {       cmdTag,                         _T("tag")                               },\r
233         {       cmdUnIgnore,            _T("unignore")                  },\r
234         {       cmdUnlock,                      _T("unlock")                    },\r
235         {       cmdUpdate,                      _T("update")                    },\r
236         {       cmdUpdateCheck,         _T("updatecheck")               },\r
237         {       cmdUrlDiff,                     _T("urldiff")                   },\r
238         {       cmdStashSave,           _T("stashsave")                 },\r
239         {       cmdStashApply,          _T("stashapply")                },\r
240         {       cmdStashList,           _T("stashlist")                 },\r
241         {       cmdSubAdd,                      _T("subadd")                    },\r
242         {       cmdSubUpdate,           _T("subupdate")                 },\r
243 };\r
244 \r
245 \r
246 \r
247 \r
248 Command * CommandServer::GetCommand(const CString& sCmd)\r
249 {\r
250         // Look up the command\r
251         TGitCommand command = cmdAbout;         // Something harmless as a default\r
252         for (int nCommand = 0; nCommand < (sizeof(commandInfo)/sizeof(commandInfo[0])); nCommand++)\r
253         {\r
254                 if (sCmd.Compare(commandInfo[nCommand].pCommandName) == 0)\r
255                 {\r
256                         // We've found the command\r
257                         command = commandInfo[nCommand].command;\r
258                         // If this fires, you've let the enum get out of sync with the commandInfo array\r
259                         ASSERT((int)command == nCommand);\r
260                         break;\r
261                 }\r
262         }\r
263 \r
264 \r
265 \r
266         switch (command)\r
267         {\r
268         case cmdAbout:\r
269                 return new AboutCommand;        \r
270         case cmdCommit:\r
271                 return new CommitCommand;\r
272         case cmdLog:\r
273                 return new LogCommand;\r
274         case cmdRepoCreate:\r
275                 return new CreateRepositoryCommand;\r
276         case cmdClone:\r
277                 return new CloneCommand;\r
278         case cmdPrevDiff:\r
279                 return new PrevDiffCommand;\r
280         case cmdDiff:\r
281                 return new DiffCommand;\r
282         case cmdRename:\r
283                 return new RenameCommand;\r
284         case cmdRepoStatus:\r
285                 return new RepoStatusCommand;\r
286         case cmdRemove:\r
287                 return new RemoveCommand;\r
288         case cmdRevert:\r
289                 return new RevertCommand;\r
290         case cmdPull:\r
291                 return new PullCommand;\r
292         case cmdFetch:\r
293                 return new FetchCommand;\r
294         case cmdPush:\r
295                 return new PushCommand;\r
296         case cmdBranch:\r
297                 return new BranchCommand;\r
298         case cmdTag:\r
299                 return new TagCommand;\r
300         case cmdMerge:\r
301                 return new MergeCommand;\r
302         case cmdSwitch:\r
303                 return new SwitchCommand;\r
304         case cmdExport:\r
305                 return new ExportCommand;\r
306         case cmdAdd:\r
307                 return new AddCommand;\r
308         case cmdIgnore:\r
309                 return new IgnoreCommand;\r
310         case cmdFormatPatch:\r
311                 return new FormatPatchCommand;\r
312         case cmdImportPatch:\r
313                 return new ImportPatchCommand;\r
314         case cmdBlame:\r
315                 return new BlameCommand;\r
316         case cmdSettings:\r
317                 return new SettingsCommand;\r
318         case cmdConflictEditor:\r
319                 return new ConflictEditorCommand;\r
320         case cmdCleanup:\r
321                 return new CleanupCommand;\r
322         case cmdRebase:\r
323                 return new RebaseCommand;\r
324         case cmdResolve:\r
325                 return new ResolveCommand;\r
326         case cmdDropMove:\r
327                 return new DropMoveCommand;\r
328 //      case cmdDropCopy:\r
329 //              return new DropCopyCommand;\r
330 //      case cmdDropCopyAdd:\r
331 //              return new DropCopyAddCommand;\r
332 //      case cmdDropExport:\r
333 //              return new DropExportCommand;\r
334         case cmdHelp:\r
335                 return new HelpCommand;\r
336         case cmdStashSave:\r
337                 return new StashSaveCommand;\r
338         case cmdStashApply:\r
339                 return new StashApplyCommand;\r
340         case cmdSubAdd:\r
341                 return new SubmoduleAddCommand;\r
342         case cmdSubUpdate:\r
343                 return new SubmoduleUpdateCommand;\r
344 \r
345 #if 0\r
346 \r
347         case cmdCat:\r
348                 return new CatCommand;\r
349         case cmdCheckout:\r
350                 return new CheckoutCommand;\r
351 \r
352 \r
353         \r
354         case cmdCopy:\r
355                 return new CopyCommand;\r
356         case cmdCrash:\r
357                 return new CrashCommand;\r
358         case cmdCreatePatch:\r
359                 return new CreatePatchCommand;\r
360         case cmdDelUnversioned:\r
361                 return new DelUnversionedCommand;\r
362 \r
363 \r
364 \r
365         case cmdImport:\r
366                 return new ImportCommand;\r
367         case cmdLock:\r
368                 return new LockCommand;\r
369         case cmdMergeAll:\r
370                 return new MergeAllCommand;\r
371         case cmdPasteCopy:\r
372                 return new PasteCopyCommand;\r
373         case cmdPasteMove:\r
374                 return new PasteMoveCommand;\r
375         case cmdPrevDiff:\r
376                 return new PrevDiffCommand;\r
377         case cmdProperties:\r
378                 return new PropertiesCommand;\r
379         case cmdRTFM:\r
380                 return new RTFMCommand;\r
381         case cmdRebuildIconCache:\r
382                 return new RebuildIconCacheCommand;\r
383         case cmdRelocate:\r
384                 return new RelocateCommand;\r
385         case cmdRepoBrowser:\r
386                 return new RepositoryBrowserCommand;\r
387         case cmdRevisionGraph:\r
388                 return new RevisionGraphCommand;\r
389         case cmdShowCompare:\r
390                 return new ShowCompareCommand;\r
391         case cmdUnIgnore:\r
392                 return new UnIgnoreCommand;\r
393         case cmdUnlock:\r
394                 return new UnLockCommand;\r
395         case cmdUpdate:\r
396                 return new UpdateCommand;\r
397         case cmdUpdateCheck:\r
398                 return new UpdateCheckCommand;\r
399         case cmdUrlDiff:\r
400                 return new UrlDiffCommand;\r
401 #endif\r
402         default:\r
403                 CMessageBox::Show(hWndExplorer, _T("Have not implemented"), _T("TortoiseGit"), MB_ICONERROR);\r
404                 return new AboutCommand;\r
405         }\r
406 }\r