# Copyright 2017-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7

CRATES="
aho-corasick-0.7.15
ansi_term-0.11.0
anyhow-1.0.38
atty-0.2.14
base-x-0.2.8
bindgen-0.56.0
bitflags-1.2.1
bumpalo-3.6.1
cexpr-0.4.0
cfg-if-1.0.0
clang-sys-1.1.1
clap-2.33.3
ctor-0.1.19
darling-0.10.2
darling_core-0.10.2
darling_macro-0.10.2
discard-1.0.4
emacs-0.16.2
emacs-macros-0.15.1
emacs_module-0.16.2
env_logger-0.8.3
fnv-1.0.7
getopts-0.2.21
glob-0.3.0
hermit-abi-0.1.18
humantime-2.1.0
ident_case-1.0.1
itoa-0.4.7
lazy_static-1.4.0
lazycell-1.3.0
libc-0.2.87
libloading-0.7.0
log-0.4.14
memchr-2.3.4
nom-5.1.2
once_cell-1.7.2
peeking_take_while-0.1.2
proc-macro2-1.0.24
quote-1.0.9
regex-1.4.3
regex-syntax-0.6.22
rustc-hash-1.1.0
rustc_version-0.2.3
ryu-1.0.5
semver-0.9.0
semver-parser-0.7.0
serde-1.0.123
serde_derive-1.0.123
serde_json-1.0.64
sha1-0.6.0
shlex-0.1.1
stdweb-0.4.20
stdweb-derive-0.5.3
stdweb-internal-macros-0.2.9
stdweb-internal-runtime-0.1.5
strsim-0.8.0
strsim-0.9.3
syn-1.0.60
termcolor-1.1.2
textwrap-0.11.0
thiserror-1.0.24
thiserror-impl-1.0.24
thread_local-1.1.3
unicode-segmentation-1.7.1
unicode-width-0.1.8
unicode-xid-0.2.1
vec_map-0.8.2
version_check-0.9.2
wasm-bindgen-0.2.71
wasm-bindgen-backend-0.2.71
wasm-bindgen-macro-0.2.71
wasm-bindgen-macro-support-0.2.71
wasm-bindgen-shared-0.2.71
which-3.1.1
winapi-0.3.9
winapi-i686-pc-windows-gnu-0.4.0
winapi-util-0.1.5
winapi-x86_64-pc-windows-gnu-0.4.0
"

inherit cargo llvm

DESCRIPTION="Infer parentheses for Clojure, Lisp and Scheme."
HOMEPAGE="https://github.com/eraserhd/parinfer-rust"
COMMIT="9e41222b7bc8930e24c411c1b4bc48715975ed17"
SRC_URI="https://github.com/eraserhd/parinfer-rust/archive/${COMMIT}.tar.gz -> ${P}.tar.gz
	$(cargo_crate_uris ${CRATES})"
RESTRICT="primaryuri"
LICENSE="Apache-2.0 Boost-1.0 MIT BSD ISC Unlicense"
SLOT="0"
KEYWORDS="~amd64"
CDEPEND="sys-devel/clang:="
DEPEND="${CDEPEND}"
RDEPEND="${CDEPEND}"
DOCS=( "README.adoc" "CHANGELOG.adoc" "doc/parinfer.txt" )
S="${WORKDIR}/${PN}-${COMMIT}"

src_compile() {
	export LIBCLANG_PATH="$(get_llvm_prefix)/$(get_libdir)"
	cargo_src_compile
}

src_install() {
	cargo_src_install
	dolib.so target/release/libparinfer_rust.so
	einstalldocs

	insinto "/usr/share/${PN}"
	doins -r plugin rc/parinfer.kak
}

pkg_postinst() {
	elog "For vim support, execute"
	elog "mkdir -p ~/.vim/pack/*/start"
	elog "ln -s /usr/share/${PN} ~/.vim/pack/*/start"
	elog "And, put the following line in ~/.vimrc"
	elog "let g:parinfer_dylib_path = \"/usr/$(get_libdir)/libparinfer_rust.so\""
	elog
	elog "For neovim support, execute"
	elog "mkdir -p ~/.local/share/nvim/site/pack/*/start"
	elog "ln -s /usr/share/${PN} ~/.local/share/nvim/site/pack/*/start"
	elog "And, put the following line in ~/.config/nvim/init.vim"
	elog "let g:parinfer_dylib_path = \"/usr/$(get_libdir)/libparinfer_rust.so\""
	elog
	elog "Note that * is any possible directory name."
	elog
	elog "For kakoune support, execute"
	elog "mkdir -p ~/.config/kak/autoload"
	elog "ln -s /usr/share/${PN}/*.kak ~/.config/kak/autoload"
	elog "And, consult /usr/share/doc/${P}/README.adoc for further instructions"
	elog
	elog "For emacs support, visit https://github.com/justinbarclay/parinfer-rust-mode"
}