OSDN Git Service

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