summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2021-01-04 14:31:18 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-01-04 15:54:09 +0900
commit977252421baac7a4b42a914c48bc7ae29ec934ee (patch)
tree144bcd9d2deac90ee4041e1f99c0b1969a06544d
parent8da7f4abc779c6549833d718336d75aac98494b8 (diff)
ifchange: check the number of arguments
-rwxr-xr-xtool/ifchange29
-rwxr-xr-xwin32/ifchange.bat30
2 files changed, 57 insertions, 2 deletions
diff --git a/tool/ifchange b/tool/ifchange
index 050c8d8f26..5af41e0156 100755
--- a/tool/ifchange
+++ b/tool/ifchange
@@ -3,6 +3,18 @@
# Used in generating revision.h via Makefiles.
+help() {
+ cat <<HELP
+usage: $0 [options] target new-file
+options:
+ --timestamp[=file] touch timestamp file. (default: prefixed with ".time".
+ under the directory of the target)
+ --keep[=suffix] keep old file with suffix. (default: '.old')
+ --empty assume unchanged if the new file is empty.
+ --color[=always|auto|never] colorize output.
+HELP
+}
+
set -e
timestamp=
keepsuffix=
@@ -10,6 +22,10 @@ empty=
color=auto
until [ $# -eq 0 ]; do
case "$1" in
+ --)
+ shift
+ break;
+ ;;
--timestamp)
timestamp=.
;;
@@ -34,6 +50,14 @@ until [ $# -eq 0 ]; do
--debug)
set -x
;;
+ --help)
+ help
+ exit
+ ;;
+ --*)
+ echo "$0: unknown option: $1" 1>&2
+ exit 1
+ ;;
*)
break
;;
@@ -41,6 +65,11 @@ until [ $# -eq 0 ]; do
shift
done
+if [ "$#" != 2 ]; then
+ help
+ exit 1
+fi
+
target="$1"
temp="$2"
if [ "$temp" = - ]; then
diff --git a/win32/ifchange.bat b/win32/ifchange.bat
index 606d6ed66e..c7db628a04 100755
--- a/win32/ifchange.bat
+++ b/win32/ifchange.bat
@@ -1,13 +1,16 @@
@echo off
:: usage: ifchange target temporary
+for %%I in (%0) do set progname=%%~nI
set timestamp=
set keepsuffix=
set empty=
set color=auto
:optloop
for %%I in (%1) do set opt=%%~I
-if "%opt%" == "--timestamp" (
+if "%opt%" == "--" (
+ shift
+) else if "%opt%" == "--timestamp" (
set timestamp=.
shift
goto :optloop
@@ -39,8 +42,18 @@ if "%opt%" == "--timestamp" (
shift
echo on
goto :optloop
+) else if "%opt%" == "--help" (
+ call :help
+ exit /b
+) else if "%opt:~0,2%" == "--" (
+ echo %progname%: unknown option: %1 1>&2
+ exit /b 1
+)
+
+if "%2" == "" (
+ call :help 1>&2
+ exit /b 1
)
-if "%opt%" == "" goto :end
set dest=%1
set src=%2
@@ -85,4 +98,17 @@ if "%timestamp%" == "" goto :end
for %%I in ("%dest%") do set timestamp=%%~dpI.time.%%~nxI
)
goto :end > "%timestamp%"
+
+:help
+ for %%I in (
+ "usage: %progname% [options] target new-file"
+ "options:"
+ " --timestamp[=file] touch timestamp file. (default: prefixed with '.time')"
+ " under the directory of the target)"
+ " --keep[=suffix] keep old file with suffix. (default: '.old')"
+ " --empty assume unchanged if the new file is empty."
+ " --color[=always|auto|never] colorize output."
+ ) do echo.%%~I
+ goto :eof
+
:end