aboutsummaryrefslogtreecommitdiffstats
path: root/src/actionhelper.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/actionhelper.c')
-rw-r--r--src/actionhelper.c373
1 files changed, 0 insertions, 373 deletions
diff --git a/src/actionhelper.c b/src/actionhelper.c
deleted file mode 100644
index 6cc37bd..0000000
--- a/src/actionhelper.c
+++ /dev/null
@@ -1,373 +0,0 @@
-/* actionhelper.c - helper routines for ck actions --------------------*- C -*-
- *
- * This file is part of ck, the config keeper
- *
- * -----------------------------------------------------------------------------
- *
- * Copyright (C) 2018 Anastasis Grammenos
- * GPLv3 (see LICENCE for the full notice)
- *
- * -------------------------------------------------------------------------- */
-#include <libgen.h>
-
-#include "actionhelper.h"
-#include "confparser.h"
-#include "ckerrlog.h"
-
-ERRLOG(action);
-
-char add_err[STR_M] = "";
-
-int add_err_message(char *err) {
- if (!str_is_empty(add_err)) {
- if (err) {
- strcpy(err, add_err);
- }
- return 1;
- }
- return 0;
-}
-
-void link_config(const AddOpt *opt, const char* newPath) {
- printf("Linking %s -> %s\n", newPath, opt->confPath);
- if (util_symlink_file(newPath, opt->confPath) != 0) {
- strcpy(add_err, "Could not link file.");
- }
-}
-
-int move_config(const AddOpt *opt, char *progDir, char *ret) {
- char newPath[STR_L] = "";
- char *tmp = strdup(opt->confPath);
- str_join_dirname_with_basename(newPath, progDir, basename(tmp));
- free(tmp);
- if (util_file_exists(newPath, NULL)) {
- strcpy(add_err, "File already exists");\
- return -1;
- }
- strcpy(ret, newPath);
- printf("Moving %s -> %s\n", opt->confPath, newPath);
- if (util_move_file(opt->confPath, newPath) != 0) {
- strcpy(add_err, "Could not move file.");
- return -1;
- }
- return 0;
-}
-
-AddOpt add_make_options(cklist *args) {
- list_rewind(args);
- /* since we are here, the first two arguments must exist */
- AddOpt addOpt = {
- .progName = list_get(args),
- .secret = 0,
- .prime = 0,
- .err = ADD_NO_ERR
- };
-
- list_next(args);
- if (!util_is_file_rw(list_get(args))
- || !util_is_file_link(list_get(args))) {
- addOpt.err = ADD_ERR_WRONG_CONFIG;
- return addOpt;
- }
- realpath(list_get(args), addOpt.confPath);
-
- while (list_next(args)) {
- if (strcmp(list_get(args), "-s") == 0 && addOpt.secret == 0) {
- addOpt.secret = 1;
- } else if (strcmp(list_get(args), "-p") == 0 && addOpt.prime == 0) {
- addOpt.prime = 1;
- } else {
- addOpt.err = ADD_ERR_WRONG_FLAGS;
- return addOpt;
- }
- }
- list_rewind(args);
- return addOpt;
-}
-
-void add_print_opts(AddOpt *opt) {
- printf("Program:\t%s\nConfig:\t\t%s\n", opt->progName, opt->confPath);
- if (opt->prime && opt->secret) {
- printf("Options:\tsecret, primary\n");
- } else if (opt->prime) {
- printf("Options:\tprimary\n");
- } else if (opt->secret) {
- printf("Options:\tsecret\n");
- }
-}
-
-void get_or_make_program_dir(const AddOpt *opt, const Conf *conf, char *ret) {
- char tmp[STR_L] = "";
- str_join_dirname_with_basename(tmp, opt->secret ? conf->scrt_dir : conf->vc_dir, opt->progName);
- if (!util_file_exists(tmp, NULL)) {
- util_mkdir(tmp);
- }
- strcpy(ret, tmp);
-}
-
-void add_make_link(const AddOpt *opt, const Conf *conf) {
- char progDir[STR_L] = "";
- get_or_make_program_dir(opt, conf, progDir);
- char newPath[STR_L] = "";
- move_config(opt, progDir, newPath);
- if (add_err_message(NULL)) {
- return;
- }
- link_config(opt, newPath);
- if (add_err_message(NULL)) {
- return;
- }
-}
-
-void edit_print_suggested_configs(DB *db, const char *pName) {
- char name[STR_M] = "";
- strcat(name, pName);
- strcat(name, ":");
- cklist *paths = list_make_and_add(name);
- get_program_paths(db, paths, pName, 1, 0, NULL);
- list_print(paths);
- list_free(paths);
-}
-
-int init_create_config_file(UserOpt *opt) {
- char absVCdir[STR_L] = "";
- if (!util_file_exists(list_get_at(opt->args, 0), absVCdir)) {
- ERR("Version control directory: %s does not exist.", list_get_at(opt->args, 0));
- return 1;
- }
-
- char absSRdir[STR_L] = "";
- if (!util_file_exists(list_get_at(opt->args, 1), absSRdir)) {
- ERR("Secret directory: %s does not exist.", list_get_at(opt->args, 1));
- return 1;
- }
-
- if (!util_file_exists(opt->confDir, NULL)) {
- util_mkdir(opt->confDir);
- }
-
- char confName[STR_L] = "";
- make_config_name(confName, opt->confDir);
- FILE *f;
- if ((f = fopen(confName, "w")) == NULL) {
- return 1;
- }
-
- char tmp[STR_L] = "";
- strcpy(tmp, "version_control_dir = ");
- strcat(tmp, absVCdir);
- strcat(tmp, "\n");
- fputs(tmp, f);
-
- strcpy(tmp, "secret_dir = ");
- strcat(tmp, absSRdir);
- strcat(tmp, "\n");
- fputs(tmp, f);
-
- strcpy(tmp, "home_dir = ");
- strcat(tmp, getenv("HOME"));
- strcat(tmp, "\n");
- fputs(tmp, f);
-
- fclose(f);
- return 0;
-}
-
-ListOpt list_make_options(cklist *args) {
- list_rewind(args);
- ListOpt listOpt = {
- ._lt = LT_TREE,
- ._lst = LST_PLAIN,
- .pName = NULL,
- .attr = 0,
- .bName = 0,
- .err = 0
- };
-
- if (list_size(args)) {
- do {
- if (strcmp(list_get(args), "-a") == 0) {
- listOpt.attr = 1;
- continue;
- }
- if (strcmp(list_get(args), "-b") == 0) {
- listOpt.bName = 1;
- continue;
- }
- if (strcmp(list_get(args), "-t") == 0) {
- if (!list_next(args)) {
- listOpt.err = 1;
- break;
- }
- if (strcmp(list_get(args), "plain") == 0) {
- listOpt._lst = LST_PLAIN;
- }
- else if (strcmp(list_get(args), "lisp") == 0) {
- listOpt._lst = LST_LISP;
- }
- else if (strcmp(list_get(args), "python") == 0) {
- listOpt._lst = LST_PYTHON;
- }
- else {
- listOpt.err = 1;
- }
- }
- else if (strcmp(list_get(args), "paths") == 0) {
- listOpt._lt = LT_PATH;
- }
- else if (strcmp(list_get(args), "programs") == 0) {
- listOpt._lt = LT_PROGRAM;
- }
- else if (strcmp(list_get(args), "tree") == 0) {
- listOpt._lt = LT_TREE;
- }
- else if (strcmp(list_get(args), "ckconf") == 0) {
- listOpt._lt = LT_CKCONF;
- }
- else if (strcmp(list_get(args), "-p") == 0) {
- if (list_next(args)) {
- listOpt._lt = LT_PROG_CONFS;
- listOpt.pName = list_get(args);
- }
- else {
- listOpt.err = 1;
- break;
- }
- }
- else {
- listOpt.err = 1;
- }
- } while(list_next(args));
- }
- list_rewind(args);
- return listOpt;
-}
-
-int restore_make_links(cklist *from, cklist *to) {
- list_rewind(from);
- list_rewind(to);
- if (list_size(from) > 0
- && list_size(to) > 0
- && list_size(from) == list_size(to)) {
- do {
- if (util_file_exists(list_get(to), NULL)
- || !util_is_file_link(list_get(to))) {
- ERR("File %s already exists.", list_get(to));
- sERR("No links were created.");
- return -1;
- }
- } while (list_next(to));
- list_rewind(to);
- while (1) {
- if (util_symlink_file(list_get(from), list_get(to))) {
- ERR("FATAL could not link %s -> %s", list_get(from), list_get(to));
- sERR("Process stopping.");
- return -1;
- }
- hLOG("Linking: %s -> %s", list_get(from), list_get(to));
- if (util_own_grp_copy(list_get(to), list_get(from))) {
- return -1;
- }
- if (!list_next(from)) {
- break;
- }
- if (!list_next(to)) {
- break;
- }
- }
- }
- return 0;
-}
-
-/*****************/
-/* PRINT RESULTS */
-/*****************/
-
-void print_INIT_result(int err) {
- if (!err) {
- hLOG("Initialized empty ckdb.");
- }
-}
-
-void print_ADD_result(int err) {
- if (!err) {
- hLOG("ckdb updated succesfully.");
- return;
- }
- sERR("Could not complete add transaction.");
-}
-
-void print_DEL_result(int err) {
- if (!err) {
- hLOG("ckdb updated succesfully.");
- return;
- }
- sERR("Could not complete delete transaction.");
-}
-
-void print_EDIT_result(int err) {
- UNUSED(err);
-}
-
-void print_LIST_result(int err) {
- UNUSED(err);
-}
-
-void print_SEARCH_result(int err) {
- UNUSED(err);
-}
-
-void print_HELP_result(int err) {
- UNUSED(err);
-}
-
-void print_RESTORE_result(int err) {
- UNUSED(err);
-}
-
-void print_INIT_help() {
- HELP("ck init VERSION_CONTROL_DIR SECRET_DIR");
-}
-
-void print_ADD_help() {
- HELP("ck add PROGRAM_NAME CONFIG_PATH [-p] [-s]");
-}
-
-void print_DEL_help() {
- HELP("ck delete PROGRAM_NAME [CONFIG_BASENAME]");
-}
-
-void print_EDIT_help() {
- HELP("ck edit PROGRAM_NAME [CONFIG_BASENAME]");
-}
-
-void print_LIST_help() {
- ckhelp("ck list tree [-a] [-b]");
- ckhelp("ck list -p PROGRAM_NAME [-t list-type] [-a] [-b]");
- ckhelp("ck list programs [-t list-type] [-a] [-b]");
- ckhelp("ck list paths [-t list-type] [-a] [-b]");
- ckhelp("ck list ckconf");
- report_help();
-}
-
-void print_SEARCH_help() {
- HELP("ck search SEARCH_TERM");
-}
-
-void print_HELP_help() {
- HELP("ck help action");
-}
-
-void print_RESTORE_help() {
- ckhelp("ck restore -p PROGRAM_NAME");
- ckhelp("ck restore all");
- report_help();
-}
-
-void print_conf_help(void) {
- HELP("ck [-v|--verbose] [-c|--config DIR] action [...]");
-}
-
-void print_verbose_help(void) {
- HELP("ck [-v|--verbose] [-c|--config DIR] action [...]");
-}