OSDN Git Service

Add return value handle of format patch
[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 #include "ReflogCommand.h"\r
62 \r
63 #if 0\r
64 \r
65 \r
66 #include "CatCommand.h"\r
67 #include "CheckoutCommand.h"\r
68 \r
69 \r
70 \r
71 #include "CopyCommand.h"\r
72 #include "CrashCommand.h"\r
73 #include "CreatePatchCommand.h"\r
74 \r
75 #include "DelUnversionedCommand.h"\r
76 \r
77 \r
78 \r
79 \r
80 \r
81 \r
82 #include "ImportCommand.h"\r
83 #include "LockCommand.h"\r
84 \r
85 \r
86 #include "MergeAllCommand.h"\r
87 #include "PasteCopyCommand.h"\r
88 #include "PasteMoveCommand.h"\r
89 \r
90 #include "PropertiesCommand.h"\r
91 #include "RebuildIconCacheCommand.h"\r
92 #include "RelocateCommand.h"\r
93 #include "RemoveCommand.h"\r
94 \r
95 #include "RepositoryBrowserCommand.h"\r
96 \r
97 \r
98 #include "RevertCommand.h"\r
99 #include "RevisiongraphCommand.h"\r
100 #include "RTFMCommand.h"\r
101 \r
102 #include "ShowCompareCommand.h"\r
103 \r
104 #include "UnIgnoreCommand.h"\r
105 #include "UnLockCommand.h"\r
106 #include "UpdateCheckCommand.h"\r
107 #include "UpdateCommand.h"\r
108 #include "UrlDiffCommand.h"\r
109 #endif\r
110 typedef enum\r
111 {\r
112         cmdAbout,\r
113         cmdAdd,\r
114         cmdBlame,\r
115         cmdBranch,\r
116         cmdCat,\r
117         cmdCheckout,\r
118         cmdCleanup,\r
119         cmdClone,\r
120         cmdCommit,\r
121         cmdConflictEditor,\r
122         cmdCopy,\r
123         cmdCrash,\r
124         cmdCreatePatch,\r
125         cmdDelUnversioned,\r
126         cmdDiff,\r
127         cmdDropCopy,\r
128         cmdDropCopyAdd,\r
129         cmdDropExport,\r
130         cmdDropMove,\r
131         cmdFetch,\r
132         cmdFormatPatch,\r
133         cmdExport,\r
134         cmdHelp,\r
135         cmdIgnore,\r
136         cmdImport,\r
137         cmdImportPatch,\r
138         cmdLock,\r
139         cmdLog,\r
140         cmdMerge,\r
141         cmdMergeAll,\r
142         cmdPasteCopy,\r
143         cmdPasteMove,\r
144         cmdPrevDiff,\r
145         cmdProperties,\r
146         cmdPull,\r
147         cmdPush,\r
148         cmdRTFM,\r
149         cmdRebuildIconCache,\r
150         cmdRelocate,\r
151         cmdRemove,\r
152         cmdRebase,\r
153         cmdRename,\r
154         cmdRepoBrowser,\r
155         cmdRepoCreate,\r
156         cmdRepoStatus,\r
157         cmdResolve,\r
158         cmdRevert,\r
159         cmdRevisionGraph,\r
160         cmdSettings,\r
161         cmdShowCompare,\r
162         cmdSwitch,\r
163         cmdTag,\r
164         cmdUnIgnore,\r
165         cmdUnlock,\r
166         cmdUpdate,\r
167         cmdUpdateCheck,\r
168         cmdUrlDiff,     \r
169         cmdStashSave,   \r
170         cmdStashApply,\r
171         cmdStashList,\r
172         cmdSubAdd,              \r
173         cmdSubUpdate,\r
174         cmdSubSync,\r
175         cmdRefLog,\r
176         \r
177 } TGitCommand;\r
178 \r
179 static const struct CommandInfo\r
180 {\r
181         TGitCommand command;\r
182         LPCTSTR pCommandName;\r
183 } commandInfo[] = \r
184 {\r
185         {       cmdAbout,                       _T("about")                             },\r
186         {       cmdAdd,                         _T("add")                               },\r
187         {       cmdBlame,                       _T("blame")                             },\r
188         {       cmdBranch,                      _T("branch")                    },\r
189         {       cmdCat,                         _T("cat")                               },\r
190         {       cmdCheckout,            _T("checkout")                  },\r
191         {       cmdCleanup,                     _T("cleanup")                   },\r
192         {       cmdClone,                       _T("clone")                             },\r
193         {       cmdCommit,                      _T("commit")                    },\r
194         {       cmdConflictEditor,      _T("conflicteditor")    },\r
195         {       cmdCopy,                        _T("copy")                              },\r
196         {       cmdCrash,                       _T("crash")                             },\r
197         {       cmdCreatePatch,         _T("createpatch")               },\r
198         {       cmdDelUnversioned,      _T("delunversioned")    },\r
199         {       cmdDiff,                        _T("diff")                              },\r
200         {       cmdDropCopy,            _T("dropcopy")                  },\r
201         {       cmdDropCopyAdd,         _T("dropcopyadd")               },\r
202         {       cmdDropExport,          _T("dropexport")                },\r
203         {       cmdDropMove,            _T("dropmove")                  },\r
204         {       cmdFetch,                       _T("fetch")                             },\r
205         {       cmdFormatPatch,         _T("formatpatch")               },\r
206         {       cmdExport,                      _T("export")                    },\r
207         {       cmdHelp,                        _T("help")                              },\r
208         {       cmdIgnore,                      _T("ignore")                    },\r
209         {       cmdImport,                      _T("import")                    },\r
210         {       cmdImportPatch,         _T("importpatch")               },\r
211         {       cmdLock,                        _T("lock")                              },\r
212         {       cmdLog,                         _T("log")                               },\r
213         {       cmdMerge,                       _T("merge")                             },\r
214         {       cmdMergeAll,            _T("mergeall")                  },\r
215         {       cmdPasteCopy,           _T("pastecopy")                 },\r
216         {       cmdPasteMove,           _T("pastemove")                 },\r
217         {       cmdPrevDiff,            _T("prevdiff")                  },\r
218         {       cmdProperties,          _T("properties")                },\r
219         {       cmdPull,                        _T("pull")                              },\r
220         {       cmdPush,                        _T("push")                              },\r
221         {       cmdRTFM,                        _T("rtfm")                              },\r
222         {       cmdRebuildIconCache,_T("rebuildiconcache")      },\r
223         {       cmdRelocate,            _T("relocate")                  },\r
224         {       cmdRemove,                      _T("remove")                    },\r
225         {       cmdRebase,                      _T("rebase")                    },\r
226         {       cmdRename,                      _T("rename")                    },\r
227         {       cmdRepoBrowser,         _T("repobrowser")               },\r
228         {       cmdRepoCreate,          _T("repocreate")                },\r
229         {       cmdRepoStatus,          _T("repostatus")                },\r
230         {       cmdResolve,                     _T("resolve")                   },\r
231         {       cmdRevert,                      _T("revert")                    },\r
232         {       cmdRevisionGraph,       _T("revisiongraph")             },\r
233         {       cmdSettings,            _T("settings")                  },\r
234         {       cmdShowCompare,         _T("showcompare")               },\r
235         {       cmdSwitch,                      _T("switch")                    },\r
236         {       cmdTag,                         _T("tag")                               },\r
237         {       cmdUnIgnore,            _T("unignore")                  },\r
238         {       cmdUnlock,                      _T("unlock")                    },\r
239         {       cmdUpdate,                      _T("update")                    },\r
240         {       cmdUpdateCheck,         _T("updatecheck")               },\r
241         {       cmdUrlDiff,                     _T("urldiff")                   },\r
242         {       cmdStashSave,           _T("stashsave")                 },\r
243         {       cmdStashApply,          _T("stashapply")                },\r
244         {       cmdStashList,           _T("stashlist")                 },\r
245         {       cmdSubAdd,                      _T("subadd")                    },\r
246         {       cmdSubUpdate,           _T("subupdate")                 },\r
247         {       cmdSubSync,                     _T("subsync")                   },\r
248         {       cmdRefLog,                      _T("reflog")                    }\r
249 };\r
250 \r
251 \r
252 \r
253 \r
254 Command * CommandServer::GetCommand(const CString& sCmd)\r
255 {\r
256         // Look up the command\r
257         TGitCommand command = cmdAbout;         // Something harmless as a default\r
258         for (int nCommand = 0; nCommand < (sizeof(commandInfo)/sizeof(commandInfo[0])); nCommand++)\r
259         {\r
260                 if (sCmd.Compare(commandInfo[nCommand].pCommandName) == 0)\r
261                 {\r
262                         // We've found the command\r
263                         command = commandInfo[nCommand].command;\r
264                         // If this fires, you've let the enum get out of sync with the commandInfo array\r
265                         ASSERT((int)command == nCommand);\r
266                         break;\r
267                 }\r
268         }\r
269 \r
270 \r
271 \r
272         switch (command)\r
273         {\r
274         case cmdAbout:\r
275                 return new AboutCommand;        \r
276         case cmdCommit:\r
277                 return new CommitCommand;\r
278         case cmdLog:\r
279                 return new LogCommand;\r
280         case cmdRepoCreate:\r
281                 return new CreateRepositoryCommand;\r
282         case cmdClone:\r
283                 return new CloneCommand;\r
284         case cmdPrevDiff:\r
285                 return new PrevDiffCommand;\r
286         case cmdDiff:\r
287                 return new DiffCommand;\r
288         case cmdRename:\r
289                 return new RenameCommand;\r
290         case cmdRepoStatus:\r
291                 return new RepoStatusCommand;\r
292         case cmdRemove:\r
293                 return new RemoveCommand;\r
294         case cmdRevert:\r
295                 return new RevertCommand;\r
296         case cmdPull:\r
297                 return new PullCommand;\r
298         case cmdFetch:\r
299                 return new FetchCommand;\r
300         case cmdPush:\r
301                 return new PushCommand;\r
302         case cmdBranch:\r
303                 return new BranchCommand;\r
304         case cmdTag:\r
305                 return new TagCommand;\r
306         case cmdMerge:\r
307                 return new MergeCommand;\r
308         case cmdSwitch:\r
309                 return new SwitchCommand;\r
310         case cmdExport:\r
311                 return new ExportCommand;\r
312         case cmdAdd:\r
313                 return new AddCommand;\r
314         case cmdIgnore:\r
315                 return new IgnoreCommand;\r
316         case cmdFormatPatch:\r
317                 return new FormatPatchCommand;\r
318         case cmdImportPatch:\r
319                 return new ImportPatchCommand;\r
320         case cmdBlame:\r
321                 return new BlameCommand;\r
322         case cmdSettings:\r
323                 return new SettingsCommand;\r
324         case cmdConflictEditor:\r
325                 return new ConflictEditorCommand;\r
326         case cmdCleanup:\r
327                 return new CleanupCommand;\r
328         case cmdRebase:\r
329                 return new RebaseCommand;\r
330         case cmdResolve:\r
331                 return new ResolveCommand;\r
332         case cmdDropMove:\r
333                 return new DropMoveCommand;\r
334 //      case cmdDropCopy:\r
335 //              return new DropCopyCommand;\r
336 //      case cmdDropCopyAdd:\r
337 //              return new DropCopyAddCommand;\r
338 //      case cmdDropExport:\r
339 //              return new DropExportCommand;\r
340         case cmdHelp:\r
341                 return new HelpCommand;\r
342         case cmdStashSave:\r
343                 return new StashSaveCommand;\r
344         case cmdStashApply:\r
345                 return new StashApplyCommand;\r
346         case cmdSubAdd:\r
347                 return new SubmoduleAddCommand;\r
348         case cmdSubUpdate:\r
349                 return new SubmoduleUpdateCommand;\r
350         case cmdRefLog:\r
351                 return new RefLogCommand;\r
352         case cmdSubSync:\r
353                 return new SubmoduleSyncCommand;\r
354 \r
355 #if 0\r
356 \r
357         case cmdCat:\r
358                 return new CatCommand;\r
359         case cmdCheckout:\r
360                 return new CheckoutCommand;\r
361 \r
362 \r
363         \r
364         case cmdCopy:\r
365                 return new CopyCommand;\r
366         case cmdCrash:\r
367                 return new CrashCommand;\r
368         case cmdCreatePatch:\r
369                 return new CreatePatchCommand;\r
370         case cmdDelUnversioned:\r
371                 return new DelUnversionedCommand;\r
372 \r
373 \r
374 \r
375         case cmdImport:\r
376                 return new ImportCommand;\r
377         case cmdLock:\r
378                 return new LockCommand;\r
379         case cmdMergeAll:\r
380                 return new MergeAllCommand;\r
381         case cmdPasteCopy:\r
382                 return new PasteCopyCommand;\r
383         case cmdPasteMove:\r
384                 return new PasteMoveCommand;\r
385         case cmdPrevDiff:\r
386                 return new PrevDiffCommand;\r
387         case cmdProperties:\r
388                 return new PropertiesCommand;\r
389         case cmdRTFM:\r
390                 return new RTFMCommand;\r
391         case cmdRebuildIconCache:\r
392                 return new RebuildIconCacheCommand;\r
393         case cmdRelocate:\r
394                 return new RelocateCommand;\r
395         case cmdRepoBrowser:\r
396                 return new RepositoryBrowserCommand;\r
397         case cmdRevisionGraph:\r
398                 return new RevisionGraphCommand;\r
399         case cmdShowCompare:\r
400                 return new ShowCompareCommand;\r
401         case cmdUnIgnore:\r
402                 return new UnIgnoreCommand;\r
403         case cmdUnlock:\r
404                 return new UnLockCommand;\r
405         case cmdUpdate:\r
406                 return new UpdateCommand;\r
407         case cmdUpdateCheck:\r
408                 return new UpdateCheckCommand;\r
409         case cmdUrlDiff:\r
410                 return new UrlDiffCommand;\r
411 #endif\r
412         default:\r
413                 CMessageBox::Show(hWndExplorer, _T("Have not implemented"), _T("TortoiseGit"), MB_ICONERROR);\r
414                 return new AboutCommand;\r
415         }\r
416 }\r