threads / patch / 38203

patch, 5 partsupdate_unicode.sh: simplify output capture

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

## tl;dr

9 messages between Dec 19, 2014 and Dec 19, 2014. Diffs are folded; open one to read it.

replies: 8people: 3as markdown or json

dev+git@drbeat.li· Dec 19, 2014, 14:39 UTC · lore
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(-)
Show changes to update_unicode.sh +9 −8
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· Dec 19, 2014, 14:39 UTC · re: dev+git@drbeat.li · lore

[PATCH 2/5] update_unicode.sh: set UNICODE_DIR only once

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(-)
Show changes to update_unicode.sh +3 −2
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· Dec 19, 2014, 14:39 UTC · re: dev+git@drbeat.li · lore

[PATCH 3/5] update_unicode.sh: shorten uniset invocation path

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(-)
Show changes to update_unicode.sh +2 −2
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· Dec 19, 2014, 14:39 UTC · re: dev+git@drbeat.li · lore

[PATCH 4/5] update_unicode.sh: Make the output structure visible

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(-)
Show changes to update_unicode.sh +11 −7
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
Jeff King· Dec 19, 2014, 15:22 UTC · re: dev+git@drbeat.li · lore

Re: [PATCH 4/5] update_unicode.sh: Make the output structure visible

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· Dec 19, 2014, 15:43 UTC · re: Jeff King · lore

Re: [PATCH 4/5] update_unicode.sh: Make the output structure visible

On 19.12.14 16:22, Jeff King wrote:
Show 22 quoted lines
> 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· Dec 19, 2014, 15:48 UTC · re: Beat Bolli · lore

Re: [PATCH 4/5] update_unicode.sh: Make the output structure visible

On Fri, Dec 19, 2014 at 04:43:51PM +0100, Beat Bolli wrote:
Show 5 quoted lines
> 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
dev+git@drbeat.li· Dec 19, 2014, 14:39 UTC · re: dev+git@drbeat.li · lore

[PATCH 5/5] update_unicode.sh: Delete the command group

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(-)
Show changes to update_unicode.sh +6 −7
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· Dec 19, 2014, 15:12 UTC · re: dev+git@drbeat.li · lore

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

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

← back to recent threads