From: Sergey Matveev Date: Sat, 7 Oct 2023 15:52:47 +0000 (+0300) Subject: Dashes are valid targets X-Git-Tag: v2.0.0~9 X-Git-Url: http://www.git.cypherpunks.ru/?p=goredo.git;a=commitdiff_plain;h=549b9a26f227482891186420176476b835e195bd Dashes are valid targets --- diff --git a/main.go b/main.go index c579a0f..41d8d30 100644 --- a/main.go +++ b/main.go @@ -98,7 +98,18 @@ func main() { } flag.Usage = func() { usage(os.Args[0]) } - flag.Parse() + + BuildUUIDStr := os.Getenv(EnvBuildUUID) + IsTopRedo = BuildUUIDStr == "" + + var args []string + if IsTopRedo { + flag.Parse() + args = flag.Args() + } else { + args = os.Args[1:] + } + if *warranty { fmt.Println(Warranty) return @@ -279,13 +290,12 @@ func main() { fdDep = mustParseFd(v, EnvDepFd) } - tgts := make([]*Tgt, 0, len(flag.Args())) - for _, arg := range flag.Args() { + tgts := make([]*Tgt, 0, len(args)) + for _, arg := range args { tgts = append(tgts, NewTgt(arg)) } tgtsWasEmpty := len(tgts) == 0 - if BuildUUIDStr := os.Getenv(EnvBuildUUID); BuildUUIDStr == "" { - IsTopRedo = true + if BuildUUIDStr == "" { BuildUUID = uuid.New() if tgtsWasEmpty { tgts = append(tgts, NewTgt("all")) diff --git a/t/goredo-dashed-tgt.t b/t/goredo-dashed-tgt.t new file mode 100755 index 0000000..8f6f408 --- /dev/null +++ b/t/goredo-dashed-tgt.t @@ -0,0 +1,19 @@ +#!/bin/sh + +testname=`basename "$0"` +test_description="Check that dashed targets are not treated as options" +. $SHARNESS_TEST_SRCDIR/sharness.sh +export REDO_TOP_DIR="`pwd`" REDO_NO_PROGRESS=1 + +echo echo \$1 > default.do +redo -- ok +test_expect_success "redo skips dashes" '[ ! -e ./-- ]' +test_expect_success "redo mades ok" '[ -s ok ]' + +echo "redo-ifchange -- ok" > foo.do +rm ok +redo foo +test_expect_success "dashes made" '[ -s ./-- ]' +test_expect_success "ok is also made" '[ -e ok ]' + +test_done