1/*
2 * Copyright 2011, Oliver Tappe <zooey@hirschkaefer.de>
3 * Distributed under the terms of the MIT License.
4 */
5
6
7#include "package_repo.h"
8
9#include <errno.h>
10#include <getopt.h>
11#include <stdio.h>
12#include <stdlib.h>
13#include <string.h>
14
15extern const char* __progname;
16const char* kCommandName = __progname;
17
18
19static const char* kUsage =
20	"Usage: %s <command> <command args>\n"
21	"Creates or inspects a Haiku package repository file.\n"
22	"\n"
23	"Commands:\n"
24	"  create [ <options> ] <package-repo> <package-file ...> \n"
25	"    Creates package repository file <package-repo> from the given\n"
26	"    package files.\n"
27	"\n"
28	"    -C <dir>   - Change to directory <dir> before starting.\n"
29	"    -q         - be quiet (don't show any output except for errors).\n"
30	"    -v         - be verbose (list package attributes as encountered).\n"
31	"\n"
32	"  list [ <options> ] <package-repo>\n"
33	"    Lists the contents of package repository file <package-repo>.\n"
34	"\n"
35	"    -v         - be verbose (list attributes of all packages found).\n"
36	"\n"
37	"Common Options:\n"
38	"  -h, --help   - Print this usage info.\n"
39;
40
41
42void
43print_usage_and_exit(bool error)
44{
45    fprintf(error ? stderr : stdout, kUsage, kCommandName);
46    exit(error ? 1 : 0);
47}
48
49
50int
51main(int argc, const char* const* argv)
52{
53	if (argc < 2)
54		print_usage_and_exit(true);
55
56	const char* command = argv[1];
57	if (strcmp(command, "create") == 0)
58		return command_create(argc - 1, argv + 1);
59
60	if (strcmp(command, "list") == 0)
61		return command_list(argc - 1, argv + 1);
62
63	if (strcmp(command, "help") == 0)
64		print_usage_and_exit(false);
65	else
66		print_usage_and_exit(true);
67
68	// never gets here
69	return 0;
70}
71