diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/build.c | 4 | ||||
-rw-r--r-- | src/build.h | 1 | ||||
-rw-r--r-- | src/redo-always.c | 18 | ||||
-rw-r--r-- | src/redo-ifchange.c | 28 | ||||
-rw-r--r-- | src/redo-ifcreate.c | 18 | ||||
-rw-r--r-- | src/redo.c | 34 |
6 files changed, 28 insertions, 75 deletions
diff --git a/src/build.c b/src/build.c index 072451b..b8d4b38 100644 --- a/src/build.c +++ b/src/build.c @@ -498,7 +498,3 @@ int update_target(const char *target, int ident) { die("redo: unknown identiier '%c'\n", ident); } } - -bool environment_sane() { - return getenv("REDO_ROOT") && getenv("REDO_PARENT_TARGET") && getenv("REDO_MAGIC"); -} diff --git a/src/build.h b/src/build.h index 0eae0f3..2111b82 100644 --- a/src/build.h +++ b/src/build.h @@ -14,6 +14,5 @@ extern void add_dep(const char *target, const char *parent, int ident); extern int update_target(const char *target, int ident); extern void build_target(const char *target); -extern bool environment_sane(); #endif diff --git a/src/redo-always.c b/src/redo-always.c deleted file mode 100644 index 0e1d849..0000000 --- a/src/redo-always.c +++ /dev/null @@ -1,18 +0,0 @@ -/* redo-always.c - * - * Copyright (c) 2014 Tharre - * - * This software may be modified and distributed under the terms - * of the MIT license. See the LICENSE file for details. - */ - -#include <stddef.h> - -#include "build.h" - -int main(int argc, char *argv[]) { - for (int i = 1; i < argc; ++i) { - update_target(argv[i], 'a'); - add_dep(argv[i], NULL, 'a'); - } -} diff --git a/src/redo-ifchange.c b/src/redo-ifchange.c deleted file mode 100644 index d7b4af0..0000000 --- a/src/redo-ifchange.c +++ /dev/null @@ -1,28 +0,0 @@ -/* redo-ifchange.c - * - * Copyright (c) 2014 Tharre - * - * This software may be modified and distributed under the terms - * of the MIT license. See the LICENSE file for details. - */ - -#include <stdio.h> -#include <stdbool.h> - -#include "build.h" -#include "dbg.h" - -int main(int argc, char *argv[]) { - if (!environment_sane()) { - fprintf(stderr, "redo: environment variables are missing, " - "please use %s only in do scripts.\n", argv[0]); - exit(1); - } - - for (int i = 1; i < argc; ++i) { - update_target(argv[i], 'c'); - add_dep(argv[i], NULL, 'c'); - } - - return 0; -} diff --git a/src/redo-ifcreate.c b/src/redo-ifcreate.c deleted file mode 100644 index 77e51cc..0000000 --- a/src/redo-ifcreate.c +++ /dev/null @@ -1,18 +0,0 @@ -/* redo-ifcreate.c - * - * Copyright (c) 2014 Tharre - * - * This software may be modified and distributed under the terms - * of the MIT license. See the LICENSE file for details. - */ - -#include <stddef.h> - -#include "build.h" - -int main(int argc, char *argv[]) { - for (int i = 1; i < argc; ++i) { - update_target(argv[i], 'e'); - add_dep(argv[i], NULL, 'e'); - } -} @@ -27,6 +27,10 @@ static inline unsigned digits(unsigned n) { } void prepare_env() { + if (getenv("REDO_ROOT") && getenv("REDO_PARENT_TARGET") + && getenv("REDO_MAGIC")) + return; + /* create the dependency store if it doesn't already exist */ if (mkdirp(".redo") && mkdirp(".redo/deps")) fprintf(stderr, "redo: creating dependency store ...\n"); @@ -36,7 +40,7 @@ void prepare_env() { if (!cwd) diem("redo: failed to obtain cwd"); if (setenv("REDO_ROOT", cwd, 0)) - diem("redo: failed to setenv REDO_ROOT to %s", cwd); + diem("redo: failed to setenv() REDO_ROOT to %s", cwd); free(cwd); /* set REDO_MAGIC */ @@ -50,12 +54,30 @@ void prepare_env() { int main(int argc, char *argv[]) { prepare_env(); - if (argc < 2) { - update_target("all", 'a'); + if (!strcmp(argv[0], "redo")) { + if (argc < 2) { + update_target("all", 'a'); + } else { + for (int i = 1; i < argc; ++i) + update_target(argv[i], 'a'); + } + return EXIT_SUCCESS; } else { - int i; - for (i = 1; i < argc; ++i) { - update_target(argv[i], 'a'); + char ident; + if (!strcmp(argv[0], "redo-ifchange")) + ident = 'c'; + else if (!strcmp(argv[0], "redo-ifcreate")) + ident = 'e'; + else if (!strcmp(argv[0], "redo-always")) + ident = 'a'; + else + die("argv set to unkown value\n"); + + for (int i = 1; i < argc; ++i) { + update_target(argv[i], ident); + add_dep(argv[i], NULL, ident); } + + return EXIT_SUCCESS; } } |