# [PATCH 1/5] update_unicode.sh: simplify output capture

9 messages from 2014-12-19 to 2014-12-19. Participants: dev+git@drbeat.li, Beat Bolli, Jeff King.
Thread: https://gitlist.dev/t/38203

## dev+git@drbeat.li, 2014-12-19 14:39

Subject: [PATCH 1/5] update_unicode.sh: simplify output capture
Message-ID: <1418999971-21548-1-git-send-email-dev+git@drbeat.li>
URL: https://gitlist.dev/e/1418999971-21548-1-git-send-email-dev%2Bgit%40drbeat.li

```
From: Beat Bolli <dev+git@drbeat.li>

Instead of capturing the output of each echo and uniset invocation, wrap
the whole section in a group command and redirect its output all at
once.

Signed-off-by: Beat Bolli <dev+git@drbeat.li>
---
 update_unicode.sh | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/update_unicode.sh b/update_unicode.sh
index 000b937..c1c876c 100755
--- a/update_unicode.sh
+++ b/update_unicode.sh
@@ -26,12 +26,13 @@ fi &&
 			./configure --enable-warnings=-Werror CFLAGS='-O0 -ggdb'
 		fi &&
 		make
-	) &&
-	echo "static const struct interval zero_width[] = {" >$UNICODEWIDTH_H &&
-	UNICODE_DIR=. ./uniset/uniset --32 cat:Me,Mn,Cf + U+1160..U+11FF - U+00AD |
-	grep -v plane >>$UNICODEWIDTH_H &&
-	echo "};" >>$UNICODEWIDTH_H &&
-	echo "static const struct interval double_width[] = {" >>$UNICODEWIDTH_H &&
-	UNICODE_DIR=. ./uniset/uniset --32 eaw:F,W >>$UNICODEWIDTH_H &&
-	echo "};" >>$UNICODEWIDTH_H
+	) && {
+		echo "static const struct interval zero_width[] = {" &&
+		UNICODE_DIR=. ./uniset/uniset --32 cat:Me,Mn,Cf + U+1160..U+11FF - U+00AD |
+		grep -v plane &&
+		echo "};" &&
+		echo "static const struct interval double_width[] = {" &&
+		UNICODE_DIR=. ./uniset/uniset --32 eaw:F,W &&
+		echo "};"
+	} >$UNICODEWIDTH_H
 )
-- 
2.1.3

```

## dev+git@drbeat.li, 2014-12-19 14:39

Subject: [PATCH 2/5] update_unicode.sh: set UNICODE_DIR only once
Message-ID: <1418999971-21548-2-git-send-email-dev+git@drbeat.li>
URL: https://gitlist.dev/e/1418999971-21548-2-git-send-email-dev%2Bgit%40drbeat.li
In-Reply-To: <1418999971-21548-1-git-send-email-dev+git@drbeat.li>

```
From: Beat Bolli <dev+git@drbeat.li>

The value is the same on both uniset invocations, so "Don't Repeat
Yourself" applies.

Since we're in a subshell already, there's no need to unset UNICODE_DIR
at the end.

Signed-off-by: Beat Bolli <dev+git@drbeat.li>
---
 update_unicode.sh | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/update_unicode.sh b/update_unicode.sh
index c1c876c..bed8916 100755
--- a/update_unicode.sh
+++ b/update_unicode.sh
@@ -27,12 +27,13 @@ fi &&
 		fi &&
 		make
 	) && {
+		UNICODE_DIR=. && export UNICODE_DIR &&
 		echo "static const struct interval zero_width[] = {" &&
-		UNICODE_DIR=. ./uniset/uniset --32 cat:Me,Mn,Cf + U+1160..U+11FF - U+00AD |
+		./uniset/uniset --32 cat:Me,Mn,Cf + U+1160..U+11FF - U+00AD |
 		grep -v plane &&
 		echo "};" &&
 		echo "static const struct interval double_width[] = {" &&
-		UNICODE_DIR=. ./uniset/uniset --32 eaw:F,W &&
+		./uniset/uniset --32 eaw:F,W &&
 		echo "};"
 	} >$UNICODEWIDTH_H
 )
-- 
2.1.3

```

## dev+git@drbeat.li, 2014-12-19 14:39

Subject: [PATCH 3/5] update_unicode.sh: shorten uniset invocation path
Message-ID: <1418999971-21548-3-git-send-email-dev+git@drbeat.li>
URL: https://gitlist.dev/e/1418999971-21548-3-git-send-email-dev%2Bgit%40drbeat.li
In-Reply-To: <1418999971-21548-1-git-send-email-dev+git@drbeat.li>

```
From: Beat Bolli <dev+git@drbeat.li>

"uniset/uniset" is a relative path; there's no need to prefix it with "./".

Signed-off-by: Beat Bolli <dev+git@drbeat.li>
---
 update_unicode.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/update_unicode.sh b/update_unicode.sh
index bed8916..f5cc14b 100755
--- a/update_unicode.sh
+++ b/update_unicode.sh
@@ -29,11 +29,11 @@ fi &&
 	) && {
 		UNICODE_DIR=. && export UNICODE_DIR &&
 		echo "static const struct interval zero_width[] = {" &&
-		./uniset/uniset --32 cat:Me,Mn,Cf + U+1160..U+11FF - U+00AD |
+		uniset/uniset --32 cat:Me,Mn,Cf + U+1160..U+11FF - U+00AD |
 		grep -v plane &&
 		echo "};" &&
 		echo "static const struct interval double_width[] = {" &&
-		./uniset/uniset --32 eaw:F,W &&
+		uniset/uniset --32 eaw:F,W &&
 		echo "};"
 	} >$UNICODEWIDTH_H
 )
-- 
2.1.3

```

## dev+git@drbeat.li, 2014-12-19 14:39

Subject: [PATCH 4/5] update_unicode.sh: Make the output structure visible
Message-ID: <1418999971-21548-4-git-send-email-dev+git@drbeat.li>
URL: https://gitlist.dev/e/1418999971-21548-4-git-send-email-dev%2Bgit%40drbeat.li
In-Reply-To: <1418999971-21548-1-git-send-email-dev+git@drbeat.li>

```
From: Beat Bolli <dev+git@drbeat.li>

By using printf instead of the echo/uniset sequence, the final structure
of the generated file becomes obvious.

Signed-off-by: Beat Bolli <dev+git@drbeat.li>
---
 update_unicode.sh | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/update_unicode.sh b/update_unicode.sh
index f5cc14b..61968d9 100755
--- a/update_unicode.sh
+++ b/update_unicode.sh
@@ -28,12 +28,16 @@ fi &&
 		make
 	) && {
 		UNICODE_DIR=. && export UNICODE_DIR &&
-		echo "static const struct interval zero_width[] = {" &&
-		uniset/uniset --32 cat:Me,Mn,Cf + U+1160..U+11FF - U+00AD |
-		grep -v plane &&
-		echo "};" &&
-		echo "static const struct interval double_width[] = {" &&
-		uniset/uniset --32 eaw:F,W &&
-		echo "};"
+		printf "\
+static const struct interval zero_width[] = {
+%s
+};
+static const struct interval double_width[] = {
+%s
+};
+" \
+		"$(uniset/uniset --32 cat:Me,Mn,Cf + U+1160..U+11FF - U+00AD |
+		grep -v plane)" \
+		"$(uniset/uniset --32 eaw:F,W)"
 	} >$UNICODEWIDTH_H
 )
-- 
2.1.3

```

## dev+git@drbeat.li, 2014-12-19 14:39

Subject: [PATCH 5/5] update_unicode.sh: Delete the command group
Message-ID: <1418999971-21548-5-git-send-email-dev+git@drbeat.li>
URL: https://gitlist.dev/e/1418999971-21548-5-git-send-email-dev%2Bgit%40drbeat.li
In-Reply-To: <1418999971-21548-1-git-send-email-dev+git@drbeat.li>

```
From: Beat Bolli <dev+git@drbeat.li>

Now that the whole file is generated by one single command, the command
group is no longer needed.

Signed-off-by: Beat Bolli <dev+git@drbeat.li>
---
 update_unicode.sh | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/update_unicode.sh b/update_unicode.sh
index 61968d9..45bd12a 100755
--- a/update_unicode.sh
+++ b/update_unicode.sh
@@ -26,9 +26,9 @@ fi &&
 			./configure --enable-warnings=-Werror CFLAGS='-O0 -ggdb'
 		fi &&
 		make
-	) && {
-		UNICODE_DIR=. && export UNICODE_DIR &&
-		printf "\
+	) &&
+	UNICODE_DIR=. && export UNICODE_DIR &&
+	printf "\
 static const struct interval zero_width[] = {
 %s
 };
@@ -36,8 +36,7 @@ static const struct interval double_width[] = {
 %s
 };
 " \
-		"$(uniset/uniset --32 cat:Me,Mn,Cf + U+1160..U+11FF - U+00AD |
-		grep -v plane)" \
-		"$(uniset/uniset --32 eaw:F,W)"
-	} >$UNICODEWIDTH_H
+	"$(uniset/uniset --32 cat:Me,Mn,Cf + U+1160..U+11FF - U+00AD |
+	grep -v plane)" \
+	"$(uniset/uniset --32 eaw:F,W)" >$UNICODEWIDTH_H
 )
-- 
2.1.3

```

## Beat Bolli, 2014-12-19 15:12

Subject: Re: [PATCH 1/5] update_unicode.sh: simplify output capture
Message-ID: <54944059.7000404@ewanet.ch>
URL: https://gitlist.dev/e/54944059.7000404%40ewanet.ch
In-Reply-To: <1418999971-21548-1-git-send-email-dev+git@drbeat.li>

```
On 19.12.14 15:39, dev+git@drbeat.li wrote:

> From: Beat Bolli <dev+git@drbeat.li>

Sorry, it looks like git send-email borked these messages. This line
should be part of the mail headers.

Regards,
Beat Bolli

-- 
https://drbeat.li
pgp: 0x506A903A; 49D5 794A EA77 F907 764F  D89E 304B 93CF 506A 903A
gsm: 4.7.7.6.0.7.7.9.7.1.4.e164.arpa
icbm: 47.0452 N, 7.2715 E

"It takes love over gold, and mind over matter" -- Dire Straits


```

## Jeff King, 2014-12-19 15:22

Subject: Re: [PATCH 4/5] update_unicode.sh: Make the output structure visible
Message-ID: <20141219152211.GA16967@peff.net>
URL: https://gitlist.dev/e/20141219152211.GA16967%40peff.net
In-Reply-To: <1418999971-21548-4-git-send-email-dev+git@drbeat.li>

```
On Fri, Dec 19, 2014 at 03:39:30PM +0100, dev+git@drbeat.li wrote:

> By using printf instead of the echo/uniset sequence, the final structure
> of the generated file becomes obvious.

This whole series looks pretty sane to me, and the result is easier to
read.

I did wonder if a here-doc would be even easier than a PDF, like:

  cat >$UNICODEWIDTH_H <<-EOF
  static const struct interval zero_width[] = {
    $(uniset/uniset --32 cat:Me,Mn,Cf + U+1160..U+11FF - U+00AD | grep -v plane)
  };
  static const struct interval double_width[] = {
    $(uniset/uniset --32 eaw:F,W)
  };
  EOF

The nice thing is that <<- will strip leading tabs, which means you can
indent properly to match the surrounding code. I don't know if you find
the in-line $() more readable or not, though.

I think either way it is an improvement over the current state.

-Peff

```

## Beat Bolli, 2014-12-19 15:43

Subject: Re: [PATCH 4/5] update_unicode.sh: Make the output structure visible
Message-ID: <549447B7.8070602@ewanet.ch>
URL: https://gitlist.dev/e/549447B7.8070602%40ewanet.ch
In-Reply-To: <20141219152211.GA16967@peff.net>

```
On 19.12.14 16:22, Jeff King wrote:
> On Fri, Dec 19, 2014 at 03:39:30PM +0100, dev+git@drbeat.li wrote:
> 
>> By using printf instead of the echo/uniset sequence, the final structure
>> of the generated file becomes obvious.
> 
> This whole series looks pretty sane to me, and the result is easier to
> read.
> 
> I did wonder if a here-doc would be even easier than a PDF, like:
> 
>   cat >$UNICODEWIDTH_H <<-EOF
>   static const struct interval zero_width[] = {
>     $(uniset/uniset --32 cat:Me,Mn,Cf + U+1160..U+11FF - U+00AD | grep -v plane)
>   };
>   static const struct interval double_width[] = {
>     $(uniset/uniset --32 eaw:F,W)
>   };
>   EOF
> 
> The nice thing is that <<- will strip leading tabs, which means you can
> indent properly to match the surrounding code. I don't know if you find
> the in-line $() more readable or not, though.

I think the code looks much nicer with a here doc.

Checking in t/, it looks that there's no consensus about whether to
indent the content relative to the cat statement or not. What do you
suggest?

> I think either way it is an improvement over the current state.

Thanks!

Beat



```

## Jeff King, 2014-12-19 15:48

Subject: Re: [PATCH 4/5] update_unicode.sh: Make the output structure visible
Message-ID: <20141219154810.GB16967@peff.net>
URL: https://gitlist.dev/e/20141219154810.GB16967%40peff.net
In-Reply-To: <549447B7.8070602@ewanet.ch>

```
On Fri, Dec 19, 2014 at 04:43:51PM +0100, Beat Bolli wrote:

> I think the code looks much nicer with a here doc.
> 
> Checking in t/, it looks that there's no consensus about whether to
> indent the content relative to the cat statement or not. What do you
> suggest?

I think we typically do it at the same level as the `cat`. Checking "git
grep -A1 '<<-'" does show a mix, but skimming over it I think what I
suggested is more common.

-Peff

```
