diff --git a/ci/release/template/scripts/lib.sh b/ci/release/template/scripts/lib.sh index 486d25ac6..0bdd40454 100644 --- a/ci/release/template/scripts/lib.sh +++ b/ci/release/template/scripts/lib.sh @@ -55,12 +55,14 @@ tput() { should_color() { if [ -n "${COLOR-}" ]; then - if [ "$COLOR" = 0 -o "$COLOR" = false ]; then - _COLOR= - return 1 - elif [ "$COLOR" = 1 -o "$COLOR" = true ]; then + if [ "$COLOR" = 1 -o "$COLOR" = true ]; then _COLOR=1 + __COLOR=1 return 0 + elif [ "$COLOR" = 0 -o "$COLOR" = false ]; then + _COLOR= + __COLOR=0 + return 1 else printf '$COLOR must be 0, 1, false or true but got %s\n' "$COLOR" >&2 fi @@ -68,9 +70,11 @@ should_color() { if [ -t 1 -a "${TERM-}" != dumb ]; then _COLOR=1 + __COLOR=1 return 0 else _COLOR= + __COLOR=0 return 1 fi } @@ -114,9 +118,9 @@ printfp() {( fi should_color || true if [ $# -eq 0 ]; then - printf '%s' "$(COLOR=${_COLOR-} setaf "$FGCOLOR" "$prefix")" + printf '%s' "$(COLOR=$__COLOR setaf "$FGCOLOR" "$prefix")" else - printf '%s: %s\n' "$(COLOR=${_COLOR-} setaf "$FGCOLOR" "$prefix")" "$(printf "$@")" + printf '%s: %s\n' "$(COLOR=$__COLOR setaf "$FGCOLOR" "$prefix")" "$(printf "$@")" fi )} @@ -125,7 +129,7 @@ catp() { shift should_color || true - sed "s/^/$(COLOR=${_COLOR-} printfp "$prefix" '')/" + sed "s/^/$(COLOR=$__COLOR printfp "$prefix" '')/" } repeat() { @@ -152,17 +156,17 @@ printferr() { logp() { should_color >&2 || true - COLOR=${_COLOR-} echop "$@" | humanpath >&2 + COLOR=$__COLOR echop "$@" | humanpath >&2 } logfp() { should_color >&2 || true - COLOR=${_COLOR-} printfp "$@" | humanpath >&2 + COLOR=$__COLOR printfp "$@" | humanpath >&2 } logpcat() { should_color >&2 || true - COLOR=${_COLOR-} catp "$@" | humanpath >&2 + COLOR=$__COLOR catp "$@" | humanpath >&2 } log() { @@ -287,3 +291,10 @@ runtty() { return 1 esac } + +capcode() { + set +e + "$@" + code=$? + set -e +} diff --git a/ci/sub b/ci/sub index 0dacc9c6c..702b77122 160000 --- a/ci/sub +++ b/ci/sub @@ -1 +1 @@ -Subproject commit 0dacc9c6cee5b8d901f22f57e9dc7f9acf640cbc +Subproject commit 702b771228f41e5485b5f3f593ce79f6efcb555d diff --git a/d2chaos/d2chaos_test.go b/d2chaos/d2chaos_test.go index a73af4d8d..ddbfa9dc2 100644 --- a/d2chaos/d2chaos_test.go +++ b/d2chaos/d2chaos_test.go @@ -17,8 +17,8 @@ import ( "oss.terrastruct.com/d2/d2compiler" "oss.terrastruct.com/d2/d2exporter" "oss.terrastruct.com/d2/d2layouts/d2dagrelayout" - "oss.terrastruct.com/d2/d2renderers/textmeasure" "oss.terrastruct.com/d2/lib/log" + "oss.terrastruct.com/d2/lib/textmeasure" ) // usage: D2_CHAOS_MAXI=100 D2_CHAOS_N=100 ./ci/test.sh ./d2chaos diff --git a/d2exporter/export_test.go b/d2exporter/export_test.go index 1d63d0604..bfd8b8b2f 100644 --- a/d2exporter/export_test.go +++ b/d2exporter/export_test.go @@ -15,11 +15,11 @@ import ( "oss.terrastruct.com/d2/d2compiler" "oss.terrastruct.com/d2/d2exporter" "oss.terrastruct.com/d2/d2layouts/d2dagrelayout" - "oss.terrastruct.com/d2/d2renderers/textmeasure" "oss.terrastruct.com/d2/d2target" "oss.terrastruct.com/d2/d2themes/d2themescatalog" "oss.terrastruct.com/d2/lib/geo" "oss.terrastruct.com/d2/lib/log" + "oss.terrastruct.com/d2/lib/textmeasure" ) type testCase struct { diff --git a/d2graph/d2graph.go b/d2graph/d2graph.go index 5e3f5e566..694e88e2e 100644 --- a/d2graph/d2graph.go +++ b/d2graph/d2graph.go @@ -12,11 +12,11 @@ import ( "oss.terrastruct.com/d2/d2parser" "oss.terrastruct.com/d2/d2renderers/d2fonts" "oss.terrastruct.com/d2/d2renderers/d2latex" - "oss.terrastruct.com/d2/d2renderers/textmeasure" "oss.terrastruct.com/d2/d2target" "oss.terrastruct.com/d2/d2themes" "oss.terrastruct.com/d2/lib/geo" "oss.terrastruct.com/d2/lib/go2" + "oss.terrastruct.com/d2/lib/textmeasure" ) // TODO: Refactor with a light abstract layer on top of AST implementing scenarios, diff --git a/d2lib/d2.go b/d2lib/d2.go index 2b4d800fb..cfc0a0713 100644 --- a/d2lib/d2.go +++ b/d2lib/d2.go @@ -9,8 +9,8 @@ import ( "oss.terrastruct.com/d2/d2compiler" "oss.terrastruct.com/d2/d2exporter" "oss.terrastruct.com/d2/d2graph" - "oss.terrastruct.com/d2/d2renderers/textmeasure" "oss.terrastruct.com/d2/d2target" + "oss.terrastruct.com/d2/lib/textmeasure" ) type CompileOptions struct { diff --git a/d2renderers/d2svg/d2svg.go b/d2renderers/d2svg/d2svg.go index d2f41b9d7..64aa75759 100644 --- a/d2renderers/d2svg/d2svg.go +++ b/d2renderers/d2svg/d2svg.go @@ -22,13 +22,13 @@ import ( "oss.terrastruct.com/d2/d2renderers/d2fonts" "oss.terrastruct.com/d2/d2renderers/d2latex" - "oss.terrastruct.com/d2/d2renderers/textmeasure" "oss.terrastruct.com/d2/d2target" "oss.terrastruct.com/d2/lib/color" "oss.terrastruct.com/d2/lib/geo" "oss.terrastruct.com/d2/lib/go2" "oss.terrastruct.com/d2/lib/label" "oss.terrastruct.com/d2/lib/shape" + "oss.terrastruct.com/d2/lib/textmeasure" ) const ( diff --git a/docs/examples/lib/1-d2lib/d2lib.go b/docs/examples/lib/1-d2lib/d2lib.go index 421e14677..a28b97f07 100644 --- a/docs/examples/lib/1-d2lib/d2lib.go +++ b/docs/examples/lib/1-d2lib/d2lib.go @@ -8,8 +8,8 @@ import ( "oss.terrastruct.com/d2/d2layouts/d2dagrelayout" "oss.terrastruct.com/d2/d2lib" "oss.terrastruct.com/d2/d2renderers/d2svg" - "oss.terrastruct.com/d2/d2renderers/textmeasure" "oss.terrastruct.com/d2/d2themes/d2themescatalog" + "oss.terrastruct.com/d2/lib/textmeasure" ) // Remember to add if err != nil checks in production. diff --git a/docs/examples/lib/2-d2oracle/d2oracle.go b/docs/examples/lib/2-d2oracle/d2oracle.go index e9e7ba944..1f265a05e 100644 --- a/docs/examples/lib/2-d2oracle/d2oracle.go +++ b/docs/examples/lib/2-d2oracle/d2oracle.go @@ -8,8 +8,8 @@ import ( "oss.terrastruct.com/d2/d2layouts/d2dagrelayout" "oss.terrastruct.com/d2/d2lib" "oss.terrastruct.com/d2/d2oracle" - "oss.terrastruct.com/d2/d2renderers/textmeasure" "oss.terrastruct.com/d2/d2themes/d2themescatalog" + "oss.terrastruct.com/d2/lib/textmeasure" ) // Remember to add if err != nil checks in production. diff --git a/docs/examples/lib/3-lowlevel/lowlevel.go b/docs/examples/lib/3-lowlevel/lowlevel.go index 2bba9bfcf..e8f7a70a8 100644 --- a/docs/examples/lib/3-lowlevel/lowlevel.go +++ b/docs/examples/lib/3-lowlevel/lowlevel.go @@ -10,8 +10,8 @@ import ( "oss.terrastruct.com/d2/d2exporter" "oss.terrastruct.com/d2/d2layouts/d2dagrelayout" "oss.terrastruct.com/d2/d2renderers/d2svg" - "oss.terrastruct.com/d2/d2renderers/textmeasure" "oss.terrastruct.com/d2/d2themes/d2themescatalog" + "oss.terrastruct.com/d2/lib/textmeasure" ) // Remember to add if err != nil checks in production. diff --git a/e2etests/e2e_test.go b/e2etests/e2e_test.go index 1e231f39d..19a937abc 100644 --- a/e2etests/e2e_test.go +++ b/e2etests/e2e_test.go @@ -21,10 +21,10 @@ import ( "oss.terrastruct.com/d2/d2layouts/d2elklayout" "oss.terrastruct.com/d2/d2lib" "oss.terrastruct.com/d2/d2renderers/d2svg" - "oss.terrastruct.com/d2/d2renderers/textmeasure" "oss.terrastruct.com/d2/d2target" xdiff "oss.terrastruct.com/d2/lib/diff" "oss.terrastruct.com/d2/lib/log" + "oss.terrastruct.com/d2/lib/textmeasure" ) func TestE2E(t *testing.T) { diff --git a/install.sh b/install.sh index 7dca28652..74d2ff8e3 100755 --- a/install.sh +++ b/install.sh @@ -61,12 +61,14 @@ tput() { should_color() { if [ -n "${COLOR-}" ]; then - if [ "$COLOR" = 0 -o "$COLOR" = false ]; then - _COLOR= - return 1 - elif [ "$COLOR" = 1 -o "$COLOR" = true ]; then + if [ "$COLOR" = 1 -o "$COLOR" = true ]; then _COLOR=1 + __COLOR=1 return 0 + elif [ "$COLOR" = 0 -o "$COLOR" = false ]; then + _COLOR= + __COLOR=0 + return 1 else printf '$COLOR must be 0, 1, false or true but got %s\n' "$COLOR" >&2 fi @@ -74,9 +76,11 @@ should_color() { if [ -t 1 -a "${TERM-}" != dumb ]; then _COLOR=1 + __COLOR=1 return 0 else _COLOR= + __COLOR=0 return 1 fi } @@ -120,9 +124,9 @@ printfp() {( fi should_color || true if [ $# -eq 0 ]; then - printf '%s' "$(COLOR=${_COLOR-} setaf "$FGCOLOR" "$prefix")" + printf '%s' "$(COLOR=$__COLOR setaf "$FGCOLOR" "$prefix")" else - printf '%s: %s\n' "$(COLOR=${_COLOR-} setaf "$FGCOLOR" "$prefix")" "$(printf "$@")" + printf '%s: %s\n' "$(COLOR=$__COLOR setaf "$FGCOLOR" "$prefix")" "$(printf "$@")" fi )} @@ -131,7 +135,7 @@ catp() { shift should_color || true - sed "s/^/$(COLOR=${_COLOR-} printfp "$prefix" '')/" + sed "s/^/$(COLOR=$__COLOR printfp "$prefix" '')/" } repeat() { @@ -158,17 +162,17 @@ printferr() { logp() { should_color >&2 || true - COLOR=${_COLOR-} echop "$@" | humanpath >&2 + COLOR=$__COLOR echop "$@" | humanpath >&2 } logfp() { should_color >&2 || true - COLOR=${_COLOR-} printfp "$@" | humanpath >&2 + COLOR=$__COLOR printfp "$@" | humanpath >&2 } logpcat() { should_color >&2 || true - COLOR=${_COLOR-} catp "$@" | humanpath >&2 + COLOR=$__COLOR catp "$@" | humanpath >&2 } log() { @@ -293,6 +297,13 @@ runtty() { return 1 esac } + +capcode() { + set +e + "$@" + code=$? + set -e +} #!/bin/sh if [ "${LIB_FLAG-}" ]; then return 0 diff --git a/d2renderers/textmeasure/NOTICE.txt b/lib/textmeasure/NOTICE.txt similarity index 100% rename from d2renderers/textmeasure/NOTICE.txt rename to lib/textmeasure/NOTICE.txt diff --git a/d2renderers/textmeasure/atlas.go b/lib/textmeasure/atlas.go similarity index 100% rename from d2renderers/textmeasure/atlas.go rename to lib/textmeasure/atlas.go diff --git a/d2renderers/textmeasure/markdown.go b/lib/textmeasure/markdown.go similarity index 100% rename from d2renderers/textmeasure/markdown.go rename to lib/textmeasure/markdown.go diff --git a/d2renderers/textmeasure/rect.go b/lib/textmeasure/rect.go similarity index 100% rename from d2renderers/textmeasure/rect.go rename to lib/textmeasure/rect.go diff --git a/d2renderers/textmeasure/textmeasure.go b/lib/textmeasure/textmeasure.go similarity index 100% rename from d2renderers/textmeasure/textmeasure.go rename to lib/textmeasure/textmeasure.go diff --git a/d2renderers/textmeasure/textmeasure_test.go b/lib/textmeasure/textmeasure_test.go similarity index 98% rename from d2renderers/textmeasure/textmeasure_test.go rename to lib/textmeasure/textmeasure_test.go index 616c20c5c..476464206 100644 --- a/d2renderers/textmeasure/textmeasure_test.go +++ b/lib/textmeasure/textmeasure_test.go @@ -8,7 +8,7 @@ import ( "github.com/stretchr/testify/assert" "oss.terrastruct.com/d2/d2renderers/d2fonts" - "oss.terrastruct.com/d2/d2renderers/textmeasure" + "oss.terrastruct.com/d2/lib/textmeasure" ) var txts = []string{ diff --git a/main.go b/main.go index 7586d0838..81f8aaab0 100644 --- a/main.go +++ b/main.go @@ -18,11 +18,11 @@ import ( "oss.terrastruct.com/d2/d2lib" "oss.terrastruct.com/d2/d2plugin" "oss.terrastruct.com/d2/d2renderers/d2svg" - "oss.terrastruct.com/d2/d2renderers/textmeasure" "oss.terrastruct.com/d2/d2themes" "oss.terrastruct.com/d2/d2themes/d2themescatalog" "oss.terrastruct.com/d2/lib/imgbundler" "oss.terrastruct.com/d2/lib/png" + "oss.terrastruct.com/d2/lib/textmeasure" "oss.terrastruct.com/d2/lib/version" "oss.terrastruct.com/d2/lib/xmain" ) diff --git a/make.sh b/make.sh index 9f6290641..c05c8b678 100755 --- a/make.sh +++ b/make.sh @@ -1,7 +1,9 @@ #!/bin/sh set -eu -if [ ! -d "$(dirname "$0")/ci/sub/.git" ]; then +if [ ! -e "$(dirname "$0")/ci/sub/.git" ]; then + set -x git submodule update --init + set +x fi . "$(dirname "$0")/ci/sub/lib.sh" PATH="$(cd -- "$(dirname "$0")" && pwd)/ci/sub/bin:$PATH"