xref: /haiku/src/bin/pkgman/pkgman.cpp (revision cbed190f71b8aff814bf95539c39a1bcfb953ed8)
1 /*
2  * Copyright 2011, Oliver Tappe <zooey@hirschkaefer.de>
3  * Distributed under the terms of the MIT License.
4  */
5 
6 
7 #include "pkgman.h"
8 
9 #include <errno.h>
10 #include <stdio.h>
11 #include <stdlib.h>
12 #include <string.h>
13 
14 
15 extern const char* __progname;
16 const char* kProgramName = __progname;
17 
18 
19 static const char* kUsage =
20 	"Usage: %s <command> <command args>\n"
21 	"Creates, inspects, or extracts a Haiku package.\n"
22 	"\n"
23 	"Commands:\n"
24 	"  add-repo <repo-base-url>\n"
25 	"    Adds the repository with the given <repo-base-URL>.\n"
26 	"\n"
27 	"  drop-repo <repo-name>\n"
28 	"    Drops the repository with the given <repo-name>.\n"
29 	"\n"
30 	"  list-repos\n"
31 	"    Lists all repositories.\n"
32 	"\n"
33 	"  refresh [<repo-name> ...]\n"
34 	"    Refreshes all or just the given repositories.\n"
35 	"\n"
36 	"Common Options:\n"
37 	"  -h, --help   - Print this usage info.\n"
38 ;
39 
40 
41 void
42 print_usage_and_exit(bool error)
43 {
44     fprintf(error ? stderr : stdout, kUsage, kProgramName);
45     exit(error ? 1 : 0);
46 }
47 
48 
49 int
50 main(int argc, const char* const* argv)
51 {
52 	if (argc < 2)
53 		print_usage_and_exit(true);
54 
55 	const char* command = argv[1];
56 	if (strncmp(command, "add-r", 5) == 0)
57 		return command_add_repo(argc - 1, argv + 1);
58 
59 	if (strncmp(command, "drop-r", 6) == 0)
60 		return command_drop_repo(argc - 1, argv + 1);
61 
62 	if (strncmp(command, "list-r", 6) == 0)
63 		return command_list_repos(argc - 1, argv + 1);
64 
65 	if (strncmp(command, "refr", 4) == 0)
66 		return command_refresh(argc - 1, argv + 1);
67 
68 //	if (strcmp(command, "search") == 0)
69 //		return command_search(argc - 1, argv + 1);
70 
71 	if (strcmp(command, "help") == 0)
72 		print_usage_and_exit(false);
73 	else
74 		print_usage_and_exit(true);
75 
76 	// never gets here
77 	return 0;
78 }
79