# [PATCH] Add a helper script to send patches with Mozilla Thunderbird

7 messages from 2008-06-09 to 2008-06-20. Participants: Lukas Sandström, Johannes Sixt, Junio C Hamano, しらいしななこ.
Thread: https://gitlist.dev/t/13875

## Lukas Sandström, 2008-06-09 17:37

Subject: [PATCH] Add a helper script to send patches with Mozilla Thunderbird
Message-ID: <484D6A40.60002@etek.chalmers.se>
URL: https://gitlist.dev/e/484D6A40.60002%40etek.chalmers.se

```
The script appp.sh can be used with the External Editor extension for
Mozilla Thunderbird in order to be able to send inline patches in an
easy way.

Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
---

Hi,
I sent this out a year ago or so. I figured I'd put the script
in contrib/, in case someone finds it useful.
(and yes, this patch is sent using appp.sh)

 Documentation/SubmittingPatches          |    5 +++
 contrib/thunderbird-patch-inline/README  |   20 +++++++++++
 contrib/thunderbird-patch-inline/appp.sh |   55 ++++++++++++++++++++++++++++++
 3 files changed, 80 insertions(+), 0 deletions(-)
 create mode 100644 contrib/thunderbird-patch-inline/README
 create mode 100755 contrib/thunderbird-patch-inline/appp.sh

diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index 0e155c9..7c16852 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -419,6 +419,11 @@ settings but I haven't tried, yet.
 	mail.identity.default.compose_html	=> false
 	mail.identity.id?.compose_html		=> false
 
+( Lukas Sandström )
+
+There is a script in contrib/thunderbird-patch-inline which can help
+you include patches with Thunderbird in an easy way. To use it, do the
+steps above and then use the script as the external editor.
 
 Gnus
 ----
diff --git a/contrib/thunderbird-patch-inline/README b/contrib/thunderbird-patch-inline/README
new file mode 100644
index 0000000..39f96aa
--- /dev/null
+++ b/contrib/thunderbird-patch-inline/README
@@ -0,0 +1,20 @@
+appp.sh is a script that is supposed to be used together with ExternalEditor
+for Mozilla Thundebird. It will let you include patches inline in e-mails
+in an easy way.
+
+Usage:
+- Generate the patch with git format-patch.
+- Start writing a new e-mail in Thunderbird.
+- Press the external editor button (or Ctrl-E) to run appp.sh
+- Select the previosly generated patch file.
+- Finish editing the e-mail.
+
+Any text that is entered into the message editor before appp.sh is called
+will be moved to the section between the --- and the diffstat.
+
+All S-O-B:s and Cc:s in the patch will be added to the CC list.
+
+To set it up, just install External Editor and tell it to use appp.sh as the
+editor.
+
+Zenity is a required dependency.
diff --git a/contrib/thunderbird-patch-inline/appp.sh b/contrib/thunderbird-patch-inline/appp.sh
new file mode 100755
index 0000000..cc518f3
--- /dev/null
+++ b/contrib/thunderbird-patch-inline/appp.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+# Copyright 2008 Lukas Sandström <luksan@gmail.com>
+#
+# AppendPatch - A script to be used together with ExternalEditor
+# for Mozilla Thunderbird to properly include pathes inline i e-mails.
+
+# ExternalEditor can be downloaded at http://globs.org/articles.php?lng=en&pg=2
+
+CONFFILE=~/.appprc
+
+SEP="-=-=-=-=-=-=-=-=-=# Don't remove this line #=-=-=-=-=-=-=-=-=-"
+if [ -e "$CONFFILE" ] ; then
+	LAST_DIR=`grep -m 1 "^LAST_DIR=" "${CONFFILE}"|sed -e 's/^LAST_DIR=//'`
+	cd "${LAST_DIR}"
+else
+	cd > /dev/null
+fi
+
+PATCH=$(zenity --file-selection)
+
+if [ "$?" != "0" ] ; then
+	#zenity --error --text "No patchfile given."
+	exit 1
+fi
+
+cd - > /dev/null
+
+SUBJECT=`sed -n -e '/^Subject: /p' "${PATCH}"`
+HEADERS=`sed -e '/^'"${SEP}"'$/,$d' $1`
+BODY=`sed -e "1,/${SEP}/d" $1`
+CMT_MSG=`sed -e '1,/^$/d' -e '/^---$/,$d' "${PATCH}"`
+DIFF=`sed -e '1,/^---$/d' "${PATCH}"`
+
+CCS=`echo -e "$CMT_MSG\n$HEADERS" | sed -n -e 's/^Cc: \(.*\)$/\1,/gp' \
+	-e 's/^Signed-off-by: \(.*\)/\1,/gp'`
+
+echo "$SUBJECT" > $1
+echo "Cc: $CCS" >> $1
+echo "$HEADERS" | sed -e '/^Subject: /d' -e '/^Cc: /d' >> $1
+echo "$SEP" >> $1
+
+echo "$CMT_MSG" >> $1
+echo "---" >> $1
+if [ "x${BODY}x" != "xx" ] ; then
+	echo >> $1
+	echo "$BODY" >> $1
+	echo >> $1
+fi
+echo "$DIFF" >> $1
+
+LAST_DIR=`dirname "${PATCH}"`
+
+grep -v "^LAST_DIR=" "${CONFFILE}" > "${CONFFILE}_"
+echo "LAST_DIR=${LAST_DIR}" >> "${CONFFILE}_"
+mv "${CONFFILE}_" "${CONFFILE}"
-- 
1.5.3.7

```

## Johannes Sixt, 2008-06-10 12:33

Subject: Re: [PATCH] Add a helper script to send patches with Mozilla Thunderbird
Message-ID: <484E74AC.2060306@viscovery.net>
URL: https://gitlist.dev/e/484E74AC.2060306%40viscovery.net
In-Reply-To: <484D6A40.60002@etek.chalmers.se>

```
Lukas Sandström schrieb:
> The script appp.sh can be used with the External Editor extension for
> Mozilla Thunderbird in order to be able to send inline patches in an
> easy way.

Thanks a lot.

But sadly, it still wraps long lines. Is there a way to inhibit this short
of modifying the settings?

-- Hannes

```

## Lukas Sandström, 2008-06-10 13:25

Subject: Re: [PATCH] Add a helper script to send patches with Mozilla Thunderbird
Message-ID: <484E80B9.9000805@etek.chalmers.se>
URL: https://gitlist.dev/e/484E80B9.9000805%40etek.chalmers.se
In-Reply-To: <484E74AC.2060306@viscovery.net>

```
Johannes Sixt wrote:
> Lukas Sandström schrieb:
>> The script appp.sh can be used with the External Editor extension for
>> Mozilla Thunderbird in order to be able to send inline patches in an
>> easy way.
> 
> Thanks a lot.
> 
> But sadly, it still wraps long lines. Is there a way to inhibit this short
> of modifying the settings?
> 

I don't know. I wouldn't expect so. It is a long time since I configured
Thunderbird to send patches. I think I more or less followed the
instructions in SubmittingPatches when I did.

/Lukas

```

## Lukas Sandström, 2008-06-19 23:21

Subject: [PATCH -resend] Add a helper script to send patches with Mozilla Thunderbird
Message-ID: <485AE9FD.8050508@etek.chalmers.se>
URL: https://gitlist.dev/e/485AE9FD.8050508%40etek.chalmers.se
In-Reply-To: <484D6A40.60002@etek.chalmers.se>

```
The script appp.sh can be used with the External Editor extension for
Mozilla Thunderbird in order to be able to send inline patches in an
easy way.

Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
---

Resending. It would be nice if this ended up in contrib/

/Lukas

 Documentation/SubmittingPatches          |    5 +++
 contrib/thunderbird-patch-inline/README  |   20 +++++++++++
 contrib/thunderbird-patch-inline/appp.sh |   55 ++++++++++++++++++++++++++++++
 3 files changed, 80 insertions(+), 0 deletions(-)
 create mode 100644 contrib/thunderbird-patch-inline/README
 create mode 100755 contrib/thunderbird-patch-inline/appp.sh

diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index 0e155c9..7c16852 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -419,6 +419,11 @@ settings but I haven't tried, yet.
 	mail.identity.default.compose_html	=> false
 	mail.identity.id?.compose_html		=> false
 
+( Lukas Sandström )
+
+There is a script in contrib/thunderbird-patch-inline which can help
+you include patches with Thunderbird in an easy way. To use it, do the
+steps above and then use the script as the external editor.
 
 Gnus
 ----
diff --git a/contrib/thunderbird-patch-inline/README b/contrib/thunderbird-patch-inline/README
new file mode 100644
index 0000000..39f96aa
--- /dev/null
+++ b/contrib/thunderbird-patch-inline/README
@@ -0,0 +1,20 @@
+appp.sh is a script that is supposed to be used together with ExternalEditor
+for Mozilla Thundebird. It will let you include patches inline in e-mails
+in an easy way.
+
+Usage:
+- Generate the patch with git format-patch.
+- Start writing a new e-mail in Thunderbird.
+- Press the external editor button (or Ctrl-E) to run appp.sh
+- Select the previosly generated patch file.
+- Finish editing the e-mail.
+
+Any text that is entered into the message editor before appp.sh is called
+will be moved to the section between the --- and the diffstat.
+
+All S-O-B:s and Cc:s in the patch will be added to the CC list.
+
+To set it up, just install External Editor and tell it to use appp.sh as the
+editor.
+
+Zenity is a required dependency.
diff --git a/contrib/thunderbird-patch-inline/appp.sh b/contrib/thunderbird-patch-inline/appp.sh
new file mode 100755
index 0000000..cc518f3
--- /dev/null
+++ b/contrib/thunderbird-patch-inline/appp.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+# Copyright 2008 Lukas Sandström <luksan@gmail.com>
+#
+# AppendPatch - A script to be used together with ExternalEditor
+# for Mozilla Thunderbird to properly include pathes inline i e-mails.
+
+# ExternalEditor can be downloaded at http://globs.org/articles.php?lng=en&pg=2
+
+CONFFILE=~/.appprc
+
+SEP="-=-=-=-=-=-=-=-=-=# Don't remove this line #=-=-=-=-=-=-=-=-=-"
+if [ -e "$CONFFILE" ] ; then
+	LAST_DIR=`grep -m 1 "^LAST_DIR=" "${CONFFILE}"|sed -e 's/^LAST_DIR=//'`
+	cd "${LAST_DIR}"
+else
+	cd > /dev/null
+fi
+
+PATCH=$(zenity --file-selection)
+
+if [ "$?" != "0" ] ; then
+	#zenity --error --text "No patchfile given."
+	exit 1
+fi
+
+cd - > /dev/null
+
+SUBJECT=`sed -n -e '/^Subject: /p' "${PATCH}"`
+HEADERS=`sed -e '/^'"${SEP}"'$/,$d' $1`
+BODY=`sed -e "1,/${SEP}/d" $1`
+CMT_MSG=`sed -e '1,/^$/d' -e '/^---$/,$d' "${PATCH}"`
+DIFF=`sed -e '1,/^---$/d' "${PATCH}"`
+
+CCS=`echo -e "$CMT_MSG\n$HEADERS" | sed -n -e 's/^Cc: \(.*\)$/\1,/gp' \
+	-e 's/^Signed-off-by: \(.*\)/\1,/gp'`
+
+echo "$SUBJECT" > $1
+echo "Cc: $CCS" >> $1
+echo "$HEADERS" | sed -e '/^Subject: /d' -e '/^Cc: /d' >> $1
+echo "$SEP" >> $1
+
+echo "$CMT_MSG" >> $1
+echo "---" >> $1
+if [ "x${BODY}x" != "xx" ] ; then
+	echo >> $1
+	echo "$BODY" >> $1
+	echo >> $1
+fi
+echo "$DIFF" >> $1
+
+LAST_DIR=`dirname "${PATCH}"`
+
+grep -v "^LAST_DIR=" "${CONFFILE}" > "${CONFFILE}_"
+echo "LAST_DIR=${LAST_DIR}" >> "${CONFFILE}_"
+mv "${CONFFILE}_" "${CONFFILE}"
-- 
1.5.3.7

```

## Junio C Hamano, 2008-06-20 00:43

Subject: Re: [PATCH -resend] Add a helper script to send patches with Mozilla Thunderbird
Message-ID: <7vmylhq6lb.fsf@gitster.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vmylhq6lb.fsf%40gitster.siamese.dyndns.org
In-Reply-To: <485AE9FD.8050508@etek.chalmers.se>

```
Lukas Sandström <lukass@etek.chalmers.se> writes:

> The script appp.sh can be used with the External Editor extension for
> Mozilla Thunderbird in order to be able to send inline patches in an
> easy way.
>
> Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
> ---
>
> Resending. It would be nice if this ended up in contrib/
>
> /Lukas
>
>  Documentation/SubmittingPatches          |    5 +++
>  contrib/thunderbird-patch-inline/README  |   20 +++++++++++
>  contrib/thunderbird-patch-inline/appp.sh |   55 +++++++++++++++++++++++++++

A silly question.  What does "appp" stand for?  AppendPatch does not have
that many P's in it.

> diff --git a/contrib/thunderbird-patch-inline/appp.sh b/contrib/thunderbird-patch-inline/appp.sh
> new file mode 100755
> index 0000000..cc518f3
> --- /dev/null
> +++ b/contrib/thunderbird-patch-inline/appp.sh
> @@ -0,0 +1,55 @@
> +#!/bin/bash
> +# Copyright 2008 Lukas Sandström <luksan@gmail.com>
> +#
> +# AppendPatch - A script to be used together with ExternalEditor
> +# for Mozilla Thunderbird to properly include pathes inline i e-mails.
> ...

Eh, pathes?

```

## しらいしななこ, 2008-06-20 01:22

Subject: Re: [PATCH -resend] Add a helper script to send patches with Mozilla Thunderbird
Message-ID: <20080620102212.6117@nanako3.lavabit.com>
URL: https://gitlist.dev/e/20080620102212.6117%40nanako3.lavabit.com
In-Reply-To: <7vmylhq6lb.fsf@gitster.siamese.dyndns.org>

```
Quoting Junio C Hamano <gitster@pobox.com>:

> Lukas Sandström <lukass@etek.chalmers.se> writes:
>
>> The script appp.sh can be used with the External Editor extension for
>> Mozilla Thunderbird in order to be able to send inline patches in an
>> easy way.
>>
>> Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
>> ---
>>
>> Resending. It would be nice if this ended up in contrib/
>>
>> /Lukas
>>
>>  Documentation/SubmittingPatches          |    5 +++
>>  contrib/thunderbird-patch-inline/README  |   20 +++++++++++
>>  contrib/thunderbird-patch-inline/appp.sh |   55 +++++++++++++++++++++++++++
>
> A silly question.  What does "appp" stand for?  AppendPatch does not have
> that many P's in it.

Silly Junio (^_^).  Count them again.

-- 
Nanako Shiraishi
http://ivory.ap.teacup.com/nanako3/

```

## Junio C Hamano, 2008-06-20 02:58

Subject: Re: [PATCH -resend] Add a helper script to send patches with Mozilla Thunderbird
Message-ID: <7vfxr8q0b2.fsf@gitster.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vfxr8q0b2.fsf%40gitster.siamese.dyndns.org
In-Reply-To: <20080620102212.6117@nanako3.lavabit.com>

```
しらいしななこ  <nanako3@lavabit.com> writes:

> Quoting Junio C Hamano <gitster@pobox.com>:
>
>> Lukas Sandström <lukass@etek.chalmers.se> writes:
>>
>>> The script appp.sh can be used with the External Editor extension for
>>> Mozilla Thunderbird in order to be able to send inline patches in an
>>> easy way.
>>>
>>> Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
>>> ---
>>>
>>> Resending. It would be nice if this ended up in contrib/
>>>
>>> /Lukas
>>>
>>>  Documentation/SubmittingPatches          |    5 +++
>>>  contrib/thunderbird-patch-inline/README  |   20 +++++++++++
>>>  contrib/thunderbird-patch-inline/appp.sh |   55 +++++++++++++++++++++++++++
>>
>> A silly question.  What does "appp" stand for?  AppendPatch does not have
>> that many P's in it.
>
> Silly Junio (^_^).  Count them again.

*Blush*  Sorry for the noise.

```
