OSDN Git Service

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