aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTharre <tharre3@gmail.com>2015-01-05 19:45:19 +0100
committerTharre <tharre3@gmail.com>2015-01-05 19:45:19 +0100
commit874c529ecb640f7541dc122e584376fd2acdec8d (patch)
treedaf60204615742af3e76f58d0d0a36dca801331e
parent05e19981beb0ee018e71450d78592cd0bc629d81 (diff)
downloadredo-874c529ecb640f7541dc122e584376fd2acdec8d.tar.gz
redo-874c529ecb640f7541dc122e584376fd2acdec8d.tar.xz
redo-874c529ecb640f7541dc122e584376fd2acdec8d.zip
Make redo-* commands fail if called from outside
-rw-r--r--src/redo.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/redo.c b/src/redo.c
index 4a7dc02..25158db 100644
--- a/src/redo.c
+++ b/src/redo.c
@@ -52,18 +52,19 @@ void prepare_env() {
}
int main(int argc, char *argv[]) {
- prepare_env();
char *argv_base = xbasename(argv[0]);
if (!strcmp(argv_base, "redo")) {
+ prepare_env();
if (argc < 2) {
update_target("all", 'a');
} else {
for (int i = 1; i < argc; ++i)
update_target(argv[i], 'a');
}
- return EXIT_SUCCESS;
} else {
+ char *parent = getenv("REDO_PARENT_TARGET");
+
char ident;
if (!strcmp(argv_base, "redo-ifchange"))
ident = 'c';
@@ -74,11 +75,17 @@ int main(int argc, char *argv[]) {
else
die("redo: argv set to unkown value\n");
- for (int i = 1; i < argc; ++i) {
- update_target(argv[i], ident);
- add_dep(argv[i], NULL, ident);
- }
+ if (!parent)
+ die("%s must be called inside a .do script\n", argv[0]);
- return EXIT_SUCCESS;
+ if (ident == 'a')
+ add_dep(parent, parent, ident);
+ else
+ for (int i = 1; i < argc; ++i) {
+ update_target(argv[i], ident);
+ add_dep(argv[i], parent, ident);
+ }
}
+
+ return EXIT_SUCCESS;
}