diff --git a/devpkg/.gitignore b/devpkg/.gitignore new file mode 100644 index 0000000..4642b33 --- /dev/null +++ b/devpkg/.gitignore @@ -0,0 +1 @@ +devpkg diff --git a/devpkg/Makefile b/devpkg/Makefile index 677e8c4..190f9a4 100644 --- a/devpkg/Makefile +++ b/devpkg/Makefile @@ -1,6 +1,6 @@ PREFIX?=/usr/local CFLAGS=-g -Wall -I${PREFIX}/apr/include/apr-1 -D_LARGEFILE64_SOURCE -LDFLAGS=-lapr-1 -pthread -laprutil-1 +LDFLAGS=-L${PREFIX}/apr/lib -lapr-1 -pthread -laprutil-1 all: devpkg diff --git a/devpkg/devpkg.c b/devpkg/devpkg.c new file mode 100644 index 0000000..4dbabfb --- /dev/null +++ b/devpkg/devpkg.c @@ -0,0 +1,105 @@ +#include +#include +#include +#include +#include +#include + +#include "dbg.h" +#include "db.h" +#include "commands.h" + + +int main(int argc, const char const *argv[]) +{ + apr_pool_t *p = NULL; + apr_pool_initialize(); + apr_pool_create(&p, NULL); + + apr_getopt_t *opt; + apr_status_t rv; + + char ch = '\0'; + const char *optarg = NULL; + const char *config_opts = NULL; + const char *install_opts = NULL; + const char *make_opts = NULL; + const char *url = NULL; + enum CommandType request = COMMAND_NONE; + + rv = apr_getopt_init(&opt, p, argc, argv); + + while(apr_getopt(opt, "I:Lc:m:i:d:SF:B:", &ch, &optarg) == APR_SUCCESS) { + switch (ch) { + case 'I': + request = COMMAND_INSTALL; + url = optarg; + break; + + case 'L': + request = COMMAND_LIST; + break; + + case 'c': + config_opts = optarg; + break; + + case 'm': + make_opts = optarg; + break; + + case 'i': + install_opts = optarg; + break; + + case 'S': + request = COMMAND_INIT; + break; + + case 'F': + request = COMMAND_FETCH; + url = optarg; + break; + + case 'B': + request = COMMAND_BUILD; + url = optarg; + break; + } + } + + switch(request) { + case COMMAND_INSTALL: + check(url, "You must at least give a URL."); + Command_install(p, url, config_opts, make_opts, install_opts); + break; + + case COMMAND_LIST: + DB_list(); + break; + + case COMMAND_FETCH: + check(url != NULL, "You must give a URL."); + Command_fetch(p, url, 1); + log_info("Downloaded to %s and in /tmp/", BUILD_DIR); + break; + + case COMMAND_BUILD: + check(url, "You must at least give a URL."); + Command_build(p, url, config_opts, make_opts, install_opts); + break; + + case COMMAND_INIT: + rv = DB_init(); + check(rv == 0, "Failed to make the database."); + break; + + default: + sentinel("Invalid command given."); + } + + return 0; + +error: + return 1; +}