commit:     1a5c41863841d242001fd2d398f054fa6de807e0
Author:     Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
AuthorDate: Wed Jun 22 02:44:38 2022 +0000
Commit:     Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
CommitDate: Sun Jun 26 02:29:44 2022 +0000
URL:        https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=1a5c4186

cannadic.eclass: add cannadic eclass

Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>

 eclass/cannadic.eclass | 149 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 149 insertions(+)

diff --git a/eclass/cannadic.eclass b/eclass/cannadic.eclass
new file mode 100644
index 000000000..4e8914f39
--- /dev/null
+++ b/eclass/cannadic.eclass
@@ -0,0 +1,149 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: cannadic.eclass
+# @MAINTAINER:
+# Alessandro Barbieri <lssndrbarbi...@gmail.com>
+# @AUTHOR:
+# Mamoru KOMACHI <us...@gentoo.org>
+# @SUPPORTED_EAPIS: 8
+# @BLURB: Function for Canna compatible dictionaries
+# @DESCRIPTION:
+# The cannadic eclass is used for installation and setup of Canna
+# compatible dictionaries.
+
+case ${EAPI} in
+       8) ;;
+       *) die "EAPI=${EAPI:-0} is not supported" ;;
+esac
+
+EXPORT_FUNCTIONS src_install pkg_postinst pkg_postrm
+
+if [[ -z ${_CANNADIC_ECLASS} ]]; then
+_CANNADIC_ECLASS=1
+
+SRC_URI="mirror://gentoo/${P}.tar.gz"
+
+# You don't need to modify these
+readonly _CANNADIC_CANNA_DIR="/var/lib/canna/dic/canna"
+readonly _CANNADIC_DICS_DIR="/etc/canna/dics.dir.d/"
+
+# @FUNCTION: cannadic-install
+# @DESCRIPTION:
+# Installs dictionaries to ${EPREFIX}/var/lib/canna/dic/canna
+cannadic-install() {
+       insinto ${_CANNADIC_CANNA_DIR}
+       insopts -m 0664 -o canna -g canna
+       doins "${@}"
+}
+
+# @FUNCTION: dicsdir-install
+# @DESCRIPTION:
+# Installs dics.dir from ${DICSDIRFILE}
+dicsdir-install() {
+       insinto ${_CANNADIC_DICS_DIR}
+       doins ${DICSDIRFILE}
+}
+
+# @FUNCTION: cannadic_src_install
+# @DESCRIPTION:
+# Installs all dictionaries under ${WORKDIR}
+# plus dics.dir and docs
+cannadic_src_install() {
+       keepdir ${_CANNADIC_CANNA_DIR}
+       fowners canna:canna ${_CANNADIC_CANNA_DIR}
+       fperms 0775 ${_CANNADIC_CANNA_DIR}
+
+       local f
+       for f in *.c[btl]d *.t; do
+               if [[ -s ${f} ]]; then
+                       cannadic-install "${f}"
+               fi
+       done 2> /dev/null
+
+       dicsdir-install
+
+       einstalldocs
+}
+
+# @FUNCTION: update-cannadic-dir
+# @DESCRIPTION:
+# Updates dics.dir for Canna Server, script for this part taken from Debian 
GNU/Linux
+#
+#  compiles dics.dir files for Canna Server
+#  Copyright 2001 ISHIKAWA Mutsumi
+#  Licensed under the GNU General Public License, version 2.  See the file
+#  /usr/portage/license/GPL-2 or <http://www.gnu.org/copyleft/gpl.txt>.
+update-cannadic-dir() {
+       einfo
+       einfo "Updating dics.dir for Canna ..."
+       einfo
+
+       # write new dics.dir file in case we are interrupted
+       cat <<-EOF > "${EROOT}${_CANNADIC_CANNA_DIR}/dics.dir.update-new" || die
+               # dics.dir -- automatically generated file by Portage.
+               # DO NOT EDIT BY HAND.
+       EOF
+
+       local f
+       for f in "${EROOT}${_CANNADIC_DICS_DIR}"/*.dics.dir; do
+               echo "# ${f}" >> 
"${EROOT}${_CANNADIC_CANNA_DIR}/dics.dir.update-new" || die
+               cat "${f}" >> 
"${EROOT}${_CANNADIC_CANNA_DIR}/dics.dir.update-new" || die
+               einfo "Added ${f}."
+       done
+
+       mv "${EROOT}${_CANNADIC_CANNA_DIR}/dics.dir.update-new" 
"${EROOT}${_CANNADIC_CANNA_DIR}/dics.dir" || die
+
+       einfo
+       einfo "Done."
+       einfo
+}
+
+# @FUNCTION: cannadic_pkg_postinst
+# @DESCRIPTION:
+# Updates dics.dir and print out notice after install
+cannadic_pkg_postinst() {
+       debug-print-function ${FUNCNAME} "${@}"
+
+       update-cannadic-dir
+
+       einfo "Please restart cannaserver for changes to propagate."
+       einfo "You need to modify your config file (~/.canna) to enable 
dictionaries."
+
+       if [[ -n ${CANNADICS} ]]; then
+               einfo "e.g) add"
+               einfo
+               einfo "  $(IFS=' ' ; echo ${CANNADICS[*]})"
+               einfo
+               einfo "to section use-dictionary()."
+               einfo "For details, see documents under 
${EROOT}/usr/share/doc/${PF}."
+       fi
+
+       einfo "If you do not have ~/.canna, you can find sample files in 
${EROOT}/usr/share/canna."
+       ewarn "If you are upgrading from existing dictionary, you may need to 
recreate"
+       ewarn "user dictionary if you have one."
+}
+
+# @FUNCTION: cannadic_pkg_postrm
+# @DESCRIPTION:
+# Updates dics.dir and print out notice after uninstall
+cannadic_pkg_postrm() {
+       debug-print-function ${FUNCNAME} "${@}"
+
+       update-cannadic-dir
+
+       einfo "Please restart cannaserver for changes to propagate."
+       einfo "and modify your config file (~/.canna) to disable dictionary."
+
+       if [[ -n ${CANNADICS} ]]; then
+               einfo "e.g) delete"
+               einfo
+               einfo "  $(IFS=' ' ; echo ${CANNADICS[*]})"
+               einfo
+               einfo "from section use-dictionary()."
+       fi
+
+       einfo
+}
+
+fi

Reply via email to