1 /*******************************************************************************
2 ********************************************************************************
4 Copyright (c) 2008 Ahmed S. Badran
6 Licensed under the FreeBSD License (see LICENSE)
9 Description: Implementation.
10 Created: 12/15/2008 07:32:54 PM PST
11 Author: Ahmed S. Badran (Ahmed B.), ahmed.badran@gmail.com
13 ********************************************************************************
14 *******************************************************************************/
17 #include "cmd_about.h"
25 using namespace vimicxx
;
27 static cmd_if
* parse_cmd_add(int argc
, char** argv
, string
* err
);
28 static cmd_if
* parse_cmd_help(int argc
, char** argv
, string
* err
);
29 static cmd_if
* parse_cmd_about(int argc
, char** argv
, string
* err
);
30 static cmd_if
* parse_cmd_list(int argc
, char** argv
, string
* err
);
31 static cmd_if
* parse_cmd_delete(int argc
, char** argv
, string
* err
);
32 static cmd_if
* parse_cmd_delete_all(int argc
, char** argv
, string
* err
);
34 cmd_if
* vimicxx::parse_cmd_line(int argc
, char** argv
, string
* err
)
38 sprintf(buf
, "%s needs at least two arguments, try %s --help",
43 if (strcmp(argv
[1], "add") == 0) {
44 return parse_cmd_add(argc
, argv
, err
);
45 } else if (strcmp(argv
[1], "list") == 0) {
46 return parse_cmd_list(argc
, argv
, err
);
47 } else if (strcmp(argv
[1], "delete") == 0) {
48 return parse_cmd_delete(argc
, argv
, err
);
49 } else if (strcmp(argv
[1], "delete-all") == 0) {
50 return parse_cmd_delete_all(argc
, argv
, err
);
51 } else if (strcmp(argv
[1], "about") == 0) {
52 return parse_cmd_about(argc
, argv
, err
);
53 } else if (strcmp(argv
[1], "--help") == 0) {
54 return parse_cmd_help(argc
, argv
, err
);
60 cmd_if
* parse_cmd_add(int argc
, char** argv
, string
* err
)
63 *err
= "cmd: add project <project-name> <path to project> \n";
65 } else if (strcmp(argv
[2], "project") != 0) {
66 *err
= "cmd: add project <project-name> <path to project> \n";
70 if (stat(argv
[4], &st
) != 0) {
71 *err
= strerror(errno
);
73 } else if (! S_ISDIR(st
.st_mode
)) {
76 *err
+= "is not a directory";
84 return new cmd_add(argv
[3], argv
[4], e
);
90 cmd_if
* parse_cmd_list(int argc
, char** argv
, string
* err
)
95 cmd_if
* parse_cmd_delete(int argc
, char** argv
, string
* err
)
100 cmd_if
* parse_cmd_delete_all(int argc
, char** argv
, string
* err
)
105 cmd_if
* parse_cmd_about(int argc
, char** argv
, string
* err
)
107 return new cmd_about(argv
[0]);
110 cmd_if
* parse_cmd_help(int argc
, char** argv
, string
* err
)
112 return new cmd_help(argv
[0]);