# Contributor: Ɓukasz Jendrysik
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
global pkgname := 'claws-mail'
global pkgver := '3.15.0'
global pkgrel := '0'
global pkgdesc := '"A GTK+ based e-mail client.'"
global url := '"http://www.claws-mail.org'"
global arch := '"all'"
global license := '"GPL3'"
global subpackages := ""$pkgname-dbg $pkgname-dev $pkgname-doc $pkgname-lang
	$pkgname-plugins-acpi-notifier:_acpi
	$pkgname-plugins-address-keeper:_address_keeper
	$pkgname-plugins-archive:_archive
	$pkgname-plugins-att-remove:_att_remover
	$pkgname-plugins-attatchwarner:_attatchwarner
	$pkgname-plugins-clamd:_clamd
	$pkgname-plugins-fetchinfo:_fetchinfo
	$pkgname-plugins-mailmbox:_mailmbox
	$pkgname-plugins-notification:_notification
	$pkgname-plugins-pdf-viewer:_pdf
	$pkgname-plugins-perl:_perl
	$pkgname-plugins-pgp:_pgp
	$pkgname-plugins-python:_python
	$pkgname-plugins-rssyl:_rssyl
	$pkgname-plugins-smime:_smime
	$pkgname-plugins-spamassassin:_spamassassin
	$pkgname-plugins-spamreport:_spamreport
	$pkgname-plugins-tnef:_tnef
	$pkgname-plugins-vcalendar:_vcalendar
	""

global makedepends := '"gtk+-dev libressl-dev startup-notification-dev enchant-dev
	libgcrypt-dev libsm-dev gnutls-dev curl-dev dbus-glib-dev
	libetpan-dev openldap-dev gpgme-dev libsoup-dev perl-dev
	poppler-dev python2-dev py-gtk-dev libarchive-dev libnotify-dev
	pinentry-gtk spamassassin libical-dev ytnef-dev
	'"
global depends := '"aspell-en'"
global source := ""http://www.claws-mail.org/download.php?file=releases/claws-mail-$pkgver.tar.gz""

global builddir := ""$srcdir"/$pkgname-$pkgver"
proc build {
	cd $builddir
	env DATADIRNAME=share ./configure \
		--build=$CBUILD \
		--host=$CHOST \
		--prefix=/usr \
		--disable-static \
		--enable-enchant \
		--enable-gnutls \
		--enable-ldap \
		--disable-crash-dialog \
		--enable-pgpmime-plugin \
		--enable-spamassassin-plugin \
		--disable-bogofilter-plugin \
		--enable-compface \
		--enable-pdf_viewer-plugin \
		--disable-jpilot \
		--disable-bsfilter-plugin \
		--disable-newmail-plugin

	# force disabling of backtrace. the core dump was more useful
	sed -i -e '/HAVE_BACKTRACE/d' config.h

	make
	cd tools
	make
}

proc package {
	cd $builddir
	make DESTDIR="$pkgdir" install
	find tools -maxdepth 1 -type f -and -perm 111 -or -name '*.conf' | while read i {
		install -D -m755 $(i) "$pkgdir"/usr/lib/claws-mail/tools/$(i)
	}
}

proc _plugin {
	global pkdesc := $1
	global depends := ""claws-mail=$pkgver-r$pkgrel $2""
	var _i = ''
	shift 2
	mkdir -p "$subpkgdir"/usr/lib/claws-mail/pluginsfor _i in @Argv {
		mv "$pkgdir"/usr/lib/claws-mail/plugins/$(_i)* \
			"$subpkgdir"/usr/lib/claws-mail/plugins/
	}
}

proc _acpi {
	_plugin "ACPI notification plugin for Claws Mail" "" acpi_notifier
}

proc _address_keeper {
	_plugin "Never forget a typed address in Claws Mail" "" address_keeper
}

proc _archive {
	_plugin "Archiving features for Claws Mail" "" archive
}

proc _att_remover {
	_plugin "Attachments remover plugin for Claws Mail" "" att_remover
}

proc _attatchwarner {
	_plugin "Attachments warner plugin for Claws Mail" "" attachwarner
}

proc _clamd {
	_plugin "Use Clam AntiVirus to scan messages in Claws Mail" "" clamd
}

proc _fetchinfo {
	_plugin "Modify headers of downloaded messages in Claws Mail" "" \
		fetchinfo
}

proc _mailmbox {
	_plugin "Add support for mailboxes in mbox format to Claws Mail" "" \
		mailmbox
}

proc _notification {
	_plugin "Various ways to notify about new messages in Claws Mail" "" \
		notification
}

proc _pdf {
	_plugin "PDF and ghostscript viewer plugin Claws Mail" "" pdf
}

proc _perl {
	_plugin "Perl based extended filtering engine for Claws Mail" "" perl
}

proc _pgp {
	_plugin "PGP plugin for signing and encrypting with Claws Mail" \
		"pinentry-gtk" pgp
}

proc _python {
	_plugin "Python plugin for Claws Mail" "" python
}

proc _rssyl {
	_plugin "RSS plugin for Claws Mail" "" rssyl
}

proc _smime {
	_plugin "S/MIME support for Claws Mail" "claws-mail-plugins-pgp" smime
}

proc _spamassassin {
	_plugin "Spamassassin plugin for Claws Mail" "spamassassin" spamass
}

proc _spamreport {
	_plugin "Report spam mail to various places with Claws Mail" "" \
		spamreport
}

proc _tnef {
	_plugin "TNEF message parsing for Claws Mail" "" tnef_parse
}

proc _vcalendar {
	_plugin "Handling of vCalendar messages in Claws Mail" "" vcalendar
}

global sha512sums := '"90850f90b353c993498e1710668105e3d359cb98adb04ab9cf6597d1b8593d34630cf41ed2cbe6c38fd030d1a14fc49aab2a4d9c2852999778b896271c0ddd7a  claws-mail-3.15.0.tar.gz'"
(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:pkgname) op:Equal rhs:{(claws-mail)} spids:[6])]
      spids: [6]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:pkgver) op:Equal rhs:{(3.15.0)} spids:[9])]
      spids: [9]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:pkgrel) op:Equal rhs:{(0)} spids:[12])]
      spids: [12]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:pkgdesc)
          op: Equal
          rhs: {(DQ ("A GTK+ based e-mail client."))}
          spids: [15]
        )
      ]
      spids: [15]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:url)
          op: Equal
          rhs: {(DQ ("http://www.claws-mail.org"))}
          spids: [20]
        )
      ]
      spids: [20]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:arch) op:Equal rhs:{(DQ (all))} spids:[25])]
      spids: [25]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:license) op:Equal rhs:{(DQ (GPL3))} spids:[30])]
      spids: [30]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:subpackages)
          op: Equal
          rhs: 
            {
              (DQ ($ VSub_Name "$pkgname") ("-dbg ") ($ VSub_Name "$pkgname") ("-dev ") 
                ($ VSub_Name "$pkgname") ("-doc ") ($ VSub_Name "$pkgname") ("-lang\n") ("\t") ($ VSub_Name "$pkgname") 
                ("-plugins-acpi-notifier:_acpi\n") ("\t") ($ VSub_Name "$pkgname") ("-plugins-address-keeper:_address_keeper\n") ("\t") 
                ($ VSub_Name "$pkgname") ("-plugins-archive:_archive\n") ("\t") ($ VSub_Name "$pkgname") ("-plugins-att-remove:_att_remover\n") 
                ("\t") ($ VSub_Name "$pkgname") ("-plugins-attatchwarner:_attatchwarner\n") ("\t") ($ VSub_Name "$pkgname") 
                ("-plugins-clamd:_clamd\n") ("\t") ($ VSub_Name "$pkgname") ("-plugins-fetchinfo:_fetchinfo\n") ("\t") ($ VSub_Name "$pkgname") 
                ("-plugins-mailmbox:_mailmbox\n") ("\t") ($ VSub_Name "$pkgname") ("-plugins-notification:_notification\n") ("\t") ($ VSub_Name "$pkgname") 
                ("-plugins-pdf-viewer:_pdf\n") ("\t") ($ VSub_Name "$pkgname") ("-plugins-perl:_perl\n") ("\t") ($ VSub_Name "$pkgname") 
                ("-plugins-pgp:_pgp\n") ("\t") ($ VSub_Name "$pkgname") ("-plugins-python:_python\n") ("\t") ($ VSub_Name "$pkgname") 
                ("-plugins-rssyl:_rssyl\n") ("\t") ($ VSub_Name "$pkgname") ("-plugins-smime:_smime\n") ("\t") ($ VSub_Name "$pkgname") 
                ("-plugins-spamassassin:_spamassassin\n") ("\t") ($ VSub_Name "$pkgname") ("-plugins-spamreport:_spamreport\n") ("\t") ($ VSub_Name "$pkgname") 
                ("-plugins-tnef:_tnef\n") ("\t") ($ VSub_Name "$pkgname") ("-plugins-vcalendar:_vcalendar\n") ("\t")
              )
            }
          spids: [35]
        )
      ]
      spids: [35]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:makedepends)
          op: Equal
          rhs: 
            {
              (DQ ("gtk+-dev libressl-dev startup-notification-dev enchant-dev\n") 
                ("\tlibgcrypt-dev libsm-dev gnutls-dev curl-dev dbus-glib-dev\n") ("\tlibetpan-dev openldap-dev gpgme-dev libsoup-dev perl-dev\n") 
                ("\tpoppler-dev python2-dev py-gtk-dev libarchive-dev libnotify-dev\n") ("\tpinentry-gtk spamassassin libical-dev ytnef-dev\n") ("\t")
              )
            }
          spids: [106]
        )
      ]
      spids: [106]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:depends) op:Equal rhs:{(DQ (aspell-en))} spids:[116])]
      spids: [116]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:source)
          op: Equal
          rhs: 
            {
              (DQ ("http://www.claws-mail.org/download.php?file=releases/claws-mail-") 
                ($ VSub_Name "$pkgver") (.tar.gz)
              )
            }
          spids: [121]
        )
      ]
      spids: [121]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:builddir)
          op: Equal
          rhs: {(DQ ($ VSub_Name "$srcdir")) (/) ($ VSub_Name "$pkgname") (-) ($ VSub_Name "$pkgver")}
          spids: [129]
        )
      ]
      spids: [129]
    )
    (FuncDef
      name: build
      body: 
        (BraceGroup
          children: [
            (C {(cd)} {(DQ ($ VSub_Name "$builddir"))})
            (SimpleCommand
              words: [
                {(./configure)}
                {(--build) (Lit_Other "=") ($ VSub_Name "$CBUILD")}
                {(--host) (Lit_Other "=") ($ VSub_Name "$CHOST")}
                {(--prefix) (Lit_Other "=") (/usr)}
                {(--disable-static)}
                {(--enable-enchant)}
                {(--enable-gnutls)}
                {(--enable-ldap)}
                {(--disable-crash-dialog)}
                {(--enable-pgpmime-plugin)}
                {(--enable-spamassassin-plugin)}
                {(--disable-bogofilter-plugin)}
                {(--enable-compface)}
                {(--enable-pdf_viewer-plugin)}
                {(--disable-jpilot)}
                {(--disable-bsfilter-plugin)}
                {(--disable-newmail-plugin)}
              ]
              more_env: [(env_pair name:DATADIRNAME val:{(share)} spids:[152])]
            )
            (C {(sed)} {(-i)} {(-e)} {(SQ </HAVE_BACKTRACE/d>)} {(config.h)})
            (C {(make)})
            (C {(cd)} {(tools)})
            (C {(make)})
          ]
          spids: [142]
        )
      spids: [138 141]
    )
    (FuncDef
      name: package
      body: 
        (BraceGroup
          children: [
            (C {(cd)} {(DQ ($ VSub_Name "$builddir"))})
            (C {(make)} {(Lit_VarLike "DESTDIR=") (DQ ($ VSub_Name "$pkgdir"))} {(install)})
            (Pipeline
              children: [
                (C {(find)} {(tools)} {(-maxdepth)} {(1)} {(-type)} {(f)} {(-and)} {(-perm)} {(111)} {(-or)} 
                  {(-name)} {(SQ <"*.conf">)}
                )
                (While
                  cond: [(Sentence child:(C {(read)} {(i)}) terminator:<Op_Semi ";">)]
                  body: 
                    (DoGroup
                      children: [
                        (C {(install)} {(-D)} {(-m755)} {(${ VSub_Name i)} 
                          {(DQ ($ VSub_Name "$pkgdir")) (/usr/lib/claws-mail/tools/) (${ VSub_Name i)}
                        )
                      ]
                      spids: [319 341]
                    )
                )
              ]
              negated: False
            )
          ]
          spids: [264]
        )
      spids: [260 263]
    )
    (FuncDef
      name: _plugin
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:pkdesc)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$1"))}
                  spids: [353]
                )
              ]
              spids: [353]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:depends)
                  op: Equal
                  rhs: 
                    {
                      (DQ ("claws-mail=") ($ VSub_Name "$pkgver") (-r) ($ VSub_Name "$pkgrel") (" ") 
                        ($ VSub_Number "$2")
                      )
                    }
                  spids: [359]
                )
              ]
              spids: [359]
            )
            (Assignment
              keyword: Assign_Local
              pairs: [(assign_pair lhs:(LhsName name:_i) op:Equal rhs:{(SQ )} spids:[372])]
              spids: [370]
            )
            (C {(shift)} {(2)})
            (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name "$subpkgdir")) (/usr/lib/claws-mail/plugins)})
            (ForEach
              iter_name: _i
              do_arg_iter: True
              body: 
                (DoGroup
                  children: [
                    (C {(mv)} 
                      {(DQ ($ VSub_Name "$pkgdir")) (/usr/lib/claws-mail/plugins/) (${ VSub_Name _i) 
                        (Lit_Other "*")
                      } {(DQ ($ VSub_Name "$subpkgdir")) (/usr/lib/claws-mail/plugins/)}
                    )
                  ]
                  spids: [395 417]
                )
              spids: [-1 -1]
            )
          ]
          spids: [350]
        )
      spids: [346 349]
    )
    (FuncDef
      name: _acpi
      body: 
        (BraceGroup
          children: [
            (C {(_plugin)} {(DQ ("ACPI notification plugin for Claws Mail"))} {(DQ )} {(acpi_notifier)})
          ]
          spids: [426]
        )
      spids: [422 425]
    )
    (FuncDef
      name: _address_keeper
      body: 
        (BraceGroup
          children: [
            (C {(_plugin)} {(DQ ("Never forget a typed address in Claws Mail"))} {(DQ )} 
              {(address_keeper)}
            )
          ]
          spids: [447]
        )
      spids: [443 446]
    )
    (FuncDef
      name: _archive
      body: 
        (BraceGroup
          children: [(C {(_plugin)} {(DQ ("Archiving features for Claws Mail"))} {(DQ )} {(archive)})]
          spids: [468]
        )
      spids: [464 467]
    )
    (FuncDef
      name: _att_remover
      body: 
        (BraceGroup
          children: [
            (C {(_plugin)} {(DQ ("Attachments remover plugin for Claws Mail"))} {(DQ )} {(att_remover)})
          ]
          spids: [489]
        )
      spids: [485 488]
    )
    (FuncDef
      name: _attatchwarner
      body: 
        (BraceGroup
          children: [
            (C {(_plugin)} {(DQ ("Attachments warner plugin for Claws Mail"))} {(DQ )} {(attachwarner)})
          ]
          spids: [510]
        )
      spids: [506 509]
    )
    (FuncDef
      name: _clamd
      body: 
        (BraceGroup
          children: [
            (C {(_plugin)} {(DQ ("Use Clam AntiVirus to scan messages in Claws Mail"))} {(DQ )} {(clamd)})
          ]
          spids: [531]
        )
      spids: [527 530]
    )
    (FuncDef
      name: _fetchinfo
      body: 
        (BraceGroup
          children: [
            (C {(_plugin)} {(DQ ("Modify headers of downloaded messages in Claws Mail"))} {(DQ )} 
              {(fetchinfo)}
            )
          ]
          spids: [552]
        )
      spids: [548 551]
    )
    (FuncDef
      name: _mailmbox
      body: 
        (BraceGroup
          children: [
            (C {(_plugin)} {(DQ ("Add support for mailboxes in mbox format to Claws Mail"))} {(DQ )} 
              {(mailmbox)}
            )
          ]
          spids: [575]
        )
      spids: [571 574]
    )
    (FuncDef
      name: _notification
      body: 
        (BraceGroup
          children: [
            (C {(_plugin)} {(DQ ("Various ways to notify about new messages in Claws Mail"))} {(DQ )} 
              {(notification)}
            )
          ]
          spids: [598]
        )
      spids: [594 597]
    )
    (FuncDef
      name: _pdf
      body: 
        (BraceGroup
          children: [
            (C {(_plugin)} {(DQ ("PDF and ghostscript viewer plugin Claws Mail"))} {(DQ )} {(pdf)})
          ]
          spids: [621]
        )
      spids: [617 620]
    )
    (FuncDef
      name: _perl
      body: 
        (BraceGroup
          children: [
            (C {(_plugin)} {(DQ ("Perl based extended filtering engine for Claws Mail"))} {(DQ )} 
              {(perl)}
            )
          ]
          spids: [642]
        )
      spids: [638 641]
    )
    (FuncDef
      name: _pgp
      body: 
        (BraceGroup
          children: [
            (C {(_plugin)} {(DQ ("PGP plugin for signing and encrypting with Claws Mail"))} 
              {(DQ (pinentry-gtk))} {(pgp)}
            )
          ]
          spids: [663]
        )
      spids: [659 662]
    )
    (FuncDef
      name: _python
      body: 
        (BraceGroup
          children: [(C {(_plugin)} {(DQ ("Python plugin for Claws Mail"))} {(DQ )} {(python)})]
          spids: [687]
        )
      spids: [683 686]
    )
    (FuncDef
      name: _rssyl
      body: 
        (BraceGroup
          children: [(C {(_plugin)} {(DQ ("RSS plugin for Claws Mail"))} {(DQ )} {(rssyl)})]
          spids: [708]
        )
      spids: [704 707]
    )
    (FuncDef
      name: _smime
      body: 
        (BraceGroup
          children: [
            (C {(_plugin)} {(DQ ("S/MIME support for Claws Mail"))} {(DQ (claws-mail-plugins-pgp))} 
              {(smime)}
            )
          ]
          spids: [729]
        )
      spids: [725 728]
    )
    (FuncDef
      name: _spamassassin
      body: 
        (BraceGroup
          children: [
            (C {(_plugin)} {(DQ ("Spamassassin plugin for Claws Mail"))} {(DQ (spamassassin))} 
              {(spamass)}
            )
          ]
          spids: [751]
        )
      spids: [747 750]
    )
    (FuncDef
      name: _spamreport
      body: 
        (BraceGroup
          children: [
            (C {(_plugin)} {(DQ ("Report spam mail to various places with Claws Mail"))} {(DQ )} 
              {(spamreport)}
            )
          ]
          spids: [773]
        )
      spids: [769 772]
    )
    (FuncDef
      name: _tnef
      body: 
        (BraceGroup
          children: [
            (C {(_plugin)} {(DQ ("TNEF message parsing for Claws Mail"))} {(DQ )} {(tnef_parse)})
          ]
          spids: [796]
        )
      spids: [792 795]
    )
    (FuncDef
      name: _vcalendar
      body: 
        (BraceGroup
          children: [
            (C {(_plugin)} {(DQ ("Handling of vCalendar messages in Claws Mail"))} {(DQ )} {(vcalendar)})
          ]
          spids: [818]
        )
      spids: [813 817]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:sha512sums)
          op: Equal
          rhs: 
            {
              (DQ 
                (
"90850f90b353c993498e1710668105e3d359cb98adb04ab9cf6597d1b8593d34630cf41ed2cbe6c38fd030d1a14fc49aab2a4d9c2852999778b896271c0ddd7a  claws-mail-3.15.0.tar.gz"
                )
              )
            }
          spids: [835]
        )
      ]
      spids: [835]
    )
  ]
)