diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2019-09-13 14:53:44 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2019-09-26 17:14:22 +0300 |
commit | 0b61b4207fb3c00860f8ef4d4b86e31cdc90c09d (patch) | |
tree | 36f9c84bf8ae5d580a563c9e74001b6ddf384bc4 | |
parent | 865f01bbf9e1e3b2fd2aae3c6cd4d4002adc928d (diff) |
Adapt to builtins support added to command run API
-rw-r--r-- | bdep/new.cli | 11 | ||||
-rw-r--r-- | bdep/new.cxx | 4 | ||||
-rwxr-xr-x | doc/cli.sh | 1 | ||||
-rw-r--r-- | tests/new.testscript | 43 |
4 files changed, 31 insertions, 28 deletions
diff --git a/bdep/new.cli b/bdep/new.cli index dbb9a96..4d7c9a9 100644 --- a/bdep/new.cli +++ b/bdep/new.cli @@ -490,11 +490,12 @@ namespace bdep source directory. The <command> value is interpreted as a whitespace-separated, - potentially quoted command line consisting of the program optionally - followed by arguments and redirects. Specifically, a single level of - quotes (either single or double) is removed and whitespaces are not - treated as separators inside such quoted fragments. Currently only the - \cb{stdout} redirect to a file is supported. For example: + potentially quoted command line consisting of a program or a portable + \l{testscript#builtins builtin} optionally followed by arguments and + redirects. Specifically, a single level of quotes (either single or + double) is removed and whitespaces are not treated as separators inside + such quoted fragments. Currently only the \cb{stdout} redirect to a + file is supported. For example: \ $ bdep new --post-hook \"echo '.idea/ # IDE' >>.gitignore\" hello diff --git a/bdep/new.cxx b/bdep/new.cxx index 681cc18..23bc4bc 100644 --- a/bdep/new.cxx +++ b/bdep/new.cxx @@ -661,7 +661,9 @@ namespace bdep fail << "unable to execute " << what << " hook '" << cmd << "': " << e; } - catch (const process_error& e) + // Also handles process_error exception (derived from system_error). + // + catch (const system_error& e) { fail << "unable to execute " << what << " hook '" << cmd << "': " << e; @@ -40,6 +40,7 @@ function compile () --include-base-last "${o[@]}" --generate-html --html-prologue-file \ man-prologue.xhtml --html-epilogue-file man-epilogue.xhtml --html-suffix .xhtml \ --link-regex '%b([-.].+)%../../build2/doc/b$1%' \ +--link-regex '%testscript(#.+)?%../../build2/doc/build2-testscript-manual.xhtml$1%' \ --link-regex '%bpkg([-.].+)%../../bpkg/doc/bpkg$1%' \ --link-regex '%bpkg(#.+)?%../../bpkg/doc/build2-package-manager-manual.xhtml$1%' \ --link-regex '%brep(#.+)?%../../brep/doc/build2-repository-interface-manual.xhtml$1%' \ diff --git a/tests/new.testscript b/tests/new.testscript index 84f2026..73f4c6c 100644 --- a/tests/new.testscript +++ b/tests/new.testscript @@ -706,7 +706,6 @@ status += -d prj { : remote-hooks : - if $posix { $* -t empty prj 2>! &prj/***; @@ -724,12 +723,12 @@ status += -d prj CMakeCache.txt EOI - $* --package -t lib -d prj libprj <'y' 2>>~%EOE%; + $* --package -t lib -d prj libprj <'y' 2>>/~%EOE%; %remote hook commands in .+/.build2/bdep-new-package.options:% pre: mv .gitignore .gitignore.bak post: cat .gitignore.bak >>.gitignore post: rm .gitignore.bak - %execute\? \[y/n\] created new library package libprj in .+/prj/libprj/% + %execute\? \[y.n\] created new library package libprj in .+/prj/libprj/% EOE cat prj/libprj/.gitignore >>~%EOO%; @@ -767,7 +766,6 @@ status += -d prj : post-hook : - if $posix { : success : @@ -776,7 +774,7 @@ status += -d prj --post-hook "echo .idea/ >>.gitignore" \ --post-hook "echo @mode@ @name@ @base@ @stem@" \ --post-hook "echo @type@ @lang@ @vcs@ @root@" \ - >>"EOO" 2>>/"EOE" &prj/***; + >>/"EOO" 2>>/"EOE" &prj/***; project prj prj prj empty c++ git $~/prj EOO @@ -791,7 +789,7 @@ status += -d prj $* --package prj -d prj \ --post-hook "echo @@@@TODO >>NEWS" \ --post-hook "echo @mode@ @name@ @base@ @stem@ @root@" \ - >>"EOO" 2>>/"EOE" &prj/prj/***; + >>/"EOO" 2>>/"EOE" &prj/prj/***; package prj prj prj $~/prj EOO created new executable package prj in $~/prj/prj/ @@ -802,7 +800,7 @@ status += -d prj $* --package -t lib libprj.bash -d prj \ --post-hook "echo @@@@TODO >>NEWS" \ --post-hook "echo @mode@ @name@ @base@ @stem@ @root@" \ - >>"EOO" 2>>/"EOE" &prj/prj/***; + >>/"EOO" 2>>/"EOE" &prj/prj/***; package libprj.bash libprj prj $~/prj EOO created new library package libprj.bash in $~/prj/libprj.bash/ @@ -810,21 +808,23 @@ status += -d prj cat prj/libprj.bash/NEWS >'@@TODO'; - cat <<EOI >=hook; - #!/bin/sh - echo "$(pwd)" - echo "$BDEP_NEW_MODE $BDEP_NEW_ROOT" - EOI + if $posix + cat <<EOI >=hook + #!/bin/sh + echo "$(pwd)" + echo "$BDEP_NEW_MODE $BDEP_NEW_ROOT" + EOI - chmod u+x hook; + chmod u+x hook - $* -t lib --subdirectory libprj -d prj/prj --post-hook "'$~/hook'" \ - >>"EOO" 2>>/"EOE" &prj/prj/libprj/*** - $~/prj/prj/libprj - subdirectory $~/prj/prj - EOO - created new library source subdirectory libprj in $~/prj/prj/libprj/ - EOE + $* -t lib --subdirectory libprj -d prj/prj --post-hook "'$~/hook'" \ + >>"EOO" 2>>/"EOE" &prj/prj/libprj/*** + $~/prj/prj/libprj + subdirectory $~/prj/prj + EOO + created new library source subdirectory libprj in $~/prj/prj/libprj/ + EOE + end } : failure @@ -838,7 +838,7 @@ status += -d prj : open-redirect : - $* prj --post-hook 'echo foo >>bar/baz' 2>>/~%EOE% &prj/*** != 0 + $* prj --post-hook 'echo foo >>bar/baz' 2>>~%EOE% &prj/*** != 0 %error: unable to execute post hook 'echo foo >>bar/baz': unable to open stdout redirect file '.+baz'.*% EOE @@ -852,7 +852,6 @@ status += -d prj : pre-hook : - if $posix { : success : |