From 34155a314021e0a67d1288f9f873b2e9caf6cd4e Mon Sep 17 00:00:00 2001 From: tv Date: Fri, 14 Mar 2014 13:31:57 +0100 Subject: irc-announce: don't use nc *-c* --- git/gitolite-hooks/irc-announce | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'git/gitolite-hooks/irc-announce') diff --git a/git/gitolite-hooks/irc-announce b/git/gitolite-hooks/irc-announce index 32ae8f26..2d1603d0 100755 --- a/git/gitolite-hooks/irc-announce +++ b/git/gitolite-hooks/irc-announce @@ -100,5 +100,7 @@ privmsg_cat() { awk '{ print "PRIVMSG "ENVIRON["IRC_CHANNEL"]" :"$0 }'; } echo2 'QUIT :Gone to have lunch' printf  + sleep 1 + exit } \ - | nc -c "$IRC_SERVER" "$IRC_PORT" + | nc "$IRC_SERVER" "$IRC_PORT" -- cgit v1.2.3 From 2250b2e9f2bce4c9e18e13c51104b5d87fbc07cf Mon Sep 17 00:00:00 2001 From: tv Date: Fri, 14 Mar 2014 13:33:37 +0100 Subject: irc-announce: 1 sec isn't enought for MODE --- git/gitolite-hooks/irc-announce | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'git/gitolite-hooks/irc-announce') diff --git a/git/gitolite-hooks/irc-announce b/git/gitolite-hooks/irc-announce index 2d1603d0..46382665 100755 --- a/git/gitolite-hooks/irc-announce +++ b/git/gitolite-hooks/irc-announce @@ -65,8 +65,8 @@ privmsg_cat() { awk '{ print "PRIVMSG "ENVIRON["IRC_CHANNEL"]" :"$0 }'; } echo2 "NICK $IRC_NICK" # wait for MODE message - # CAVEAT 1 second was enough while testing...^_^ - sleep 1 + # CAVEAT 3 second was enough while testing...^_^ + sleep 3 echo2 "JOIN $IRC_CHANNEL" -- cgit v1.2.3 From 3d369402d011e067e7c3bd89460f94bb26048a16 Mon Sep 17 00:00:00 2001 From: tv Date: Fri, 14 Mar 2014 13:39:14 +0100 Subject: irc-announce: test =, not == --- git/gitolite-hooks/irc-announce | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'git/gitolite-hooks/irc-announce') diff --git a/git/gitolite-hooks/irc-announce b/git/gitolite-hooks/irc-announce index 46382665..691b9d82 100755 --- a/git/gitolite-hooks/irc-announce +++ b/git/gitolite-hooks/irc-announce @@ -81,7 +81,7 @@ privmsg_cat() { awk '{ print "PRIVMSG "ENVIRON["IRC_CHANNEL"]" :"$0 }'; } "$reponame" \ "$username" \ "$commit_count" \ - "$(test $commit_count == 1 || echo s)" \ + "$(test $commit_count = 1 || echo s)" \ "$(hostname)" \ "$ref_name" \ | privmsg_cat \ -- cgit v1.2.3 From 659dc87fa1c9eebbe9a99f1fb911d3ae993386d2 Mon Sep 17 00:00:00 2001 From: tv Date: Fri, 14 Mar 2014 13:41:24 +0100 Subject: irc-announce: ohoh, 3s are not enough... --- git/gitolite-hooks/irc-announce | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'git/gitolite-hooks/irc-announce') diff --git a/git/gitolite-hooks/irc-announce b/git/gitolite-hooks/irc-announce index 691b9d82..1d88c4da 100755 --- a/git/gitolite-hooks/irc-announce +++ b/git/gitolite-hooks/irc-announce @@ -65,8 +65,8 @@ privmsg_cat() { awk '{ print "PRIVMSG "ENVIRON["IRC_CHANNEL"]" :"$0 }'; } echo2 "NICK $IRC_NICK" # wait for MODE message - # CAVEAT 3 second was enough while testing...^_^ - sleep 3 + # CAVEAT 5 second was enough while testing...^_^ + sleep 5 echo2 "JOIN $IRC_CHANNEL" -- cgit v1.2.3 From 890e81bea3b7ada20871913053a86fa0672a44e4 Mon Sep 17 00:00:00 2001 From: tv Date: Fri, 14 Mar 2014 13:42:55 +0100 Subject: irc-announce: bump --- git/gitolite-hooks/irc-announce | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'git/gitolite-hooks/irc-announce') diff --git a/git/gitolite-hooks/irc-announce b/git/gitolite-hooks/irc-announce index 1d88c4da..1e7ecc2b 100755 --- a/git/gitolite-hooks/irc-announce +++ b/git/gitolite-hooks/irc-announce @@ -65,8 +65,8 @@ privmsg_cat() { awk '{ print "PRIVMSG "ENVIRON["IRC_CHANNEL"]" :"$0 }'; } echo2 "NICK $IRC_NICK" # wait for MODE message - # CAVEAT 5 second was enough while testing...^_^ - sleep 5 + # CAVEAT 10 second was enough while testing...^_^ + sleep 10 echo2 "JOIN $IRC_CHANNEL" -- cgit v1.2.3 From 617c75df73f02cc951e63f87926a42d11cb3079a Mon Sep 17 00:00:00 2001 From: tv Date: Fri, 14 Mar 2014 14:14:40 +0100 Subject: irc-announce: properly wait for MODE message^_^ --- git/gitolite-hooks/irc-announce | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'git/gitolite-hooks/irc-announce') diff --git a/git/gitolite-hooks/irc-announce b/git/gitolite-hooks/irc-announce index 1e7ecc2b..9c98b330 100755 --- a/git/gitolite-hooks/irc-announce +++ b/git/gitolite-hooks/irc-announce @@ -57,6 +57,19 @@ cat2() { tee /dev/stderr; } # privmsg_cat transforms stdin to a privmsg privmsg_cat() { awk '{ print "PRIVMSG "ENVIRON["IRC_CHANNEL"]" :"$0 }'; } +# ircin is used to feed the output of netcat back to the "irc client" +# so we can implement expect-like behavior with sed^_^ +# XXX mkselfdestructingtmpfifo would be nice instead of this cruft +tmpdir="$(mktemp -d irc-announce_XXXXXXXX)" +cd "$tmpdir" +mkfifo ircin +trap " + rm ircin + cd '$OLDPWD' + rmdir '$tmpdir' + trap - EXIT INT QUIT +" EXIT INT QUIT + # # # @@ -65,8 +78,7 @@ privmsg_cat() { awk '{ print "PRIVMSG "ENVIRON["IRC_CHANNEL"]" :"$0 }'; } echo2 "NICK $IRC_NICK" # wait for MODE message - # CAVEAT 10 second was enough while testing...^_^ - sleep 10 + sed -n '/^:[^ ]* MODE /q' echo2 "JOIN $IRC_CHANNEL" @@ -102,5 +114,5 @@ privmsg_cat() { awk '{ print "PRIVMSG "ENVIRON["IRC_CHANNEL"]" :"$0 }'; } printf  sleep 1 exit -} \ - | nc "$IRC_SERVER" "$IRC_PORT" +} < ircin \ + | nc "$IRC_SERVER" "$IRC_PORT" | tee -a ircin -- cgit v1.2.3 From 915262791f611b30070d5cf6de1ba40989a4ebd6 Mon Sep 17 00:00:00 2001 From: tv Date: Fri, 14 Mar 2014 14:26:55 +0100 Subject: irc-announce: wait for PART message before QUIT --- git/gitolite-hooks/irc-announce | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'git/gitolite-hooks/irc-announce') diff --git a/git/gitolite-hooks/irc-announce b/git/gitolite-hooks/irc-announce index 9c98b330..a135ca67 100755 --- a/git/gitolite-hooks/irc-announce +++ b/git/gitolite-hooks/irc-announce @@ -106,13 +106,9 @@ trap " echo2 "PART $IRC_CHANNEL" - # TESTME does this sleep help to send all messages? - sleep 5 + # wait for PART confirmation + sed -n '/:'"$IRC_NICK"'![^ ]* PART /q' echo2 'QUIT :Gone to have lunch' - - printf  - sleep 1 - exit } < ircin \ | nc "$IRC_SERVER" "$IRC_PORT" | tee -a ircin -- cgit v1.2.3