summaryrefslogtreecommitdiff
path: root/app-editors/helix/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-05-28 15:14:55 +0100
committerV3n3RiX <venerix@koprulu.sector>2023-05-28 15:14:55 +0100
commite5346f2f512bd7faf413f3de3ef7fbcfbcd974b3 (patch)
tree44147dcd86c1974cea8fa5e6914b2b4428d4ec28 /app-editors/helix/files
parentdd543f86f47d3b1796d2190759773c75779ba7ad (diff)
gentoo auto-resync : 28:05:2023 - 15:14:55
Diffstat (limited to 'app-editors/helix/files')
-rw-r--r--app-editors/helix/files/helix_ebuild.py204
1 files changed, 0 insertions, 204 deletions
diff --git a/app-editors/helix/files/helix_ebuild.py b/app-editors/helix/files/helix_ebuild.py
deleted file mode 100644
index 989641e76bcf..000000000000
--- a/app-editors/helix/files/helix_ebuild.py
+++ /dev/null
@@ -1,204 +0,0 @@
-#!/usr/bin/env python
-"""
-Generates a helix ebuild, run from a git clone with a tag checked out
-"""
-import re
-import os
-import string
-import pathlib
-import datetime
-import tempfile
-import subprocess
-
-import tomli
-
-EBUILD_TEMPLATE = """
-# Copyright ${copyright} Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-# Auto-Generated by helix_ebuild.py (see FILESDIR)
-
-EAPI=8
-
-CRATES="
-${CRATES}
-"
-
-LANGUAGES=(
-${LANGUAGES}
-)
-
-inherit bash-completion-r1 cargo
-
-DESCRIPTION="A post-modern text editor."
-HOMEPAGE="
- https://helix-editor.com/
- https://github.com/helix-editor/helix
-"
-SRC_URI="
- https://github.com/helix-editor/helix/archive/refs/tags/$${PV}.tar.gz -> $${P}.tar.gz
- $$(cargo_crate_uris)
-"
-
-LICENSE="${LICENSE}"
-SLOT="0"
-KEYWORDS="~amd64"
-IUSE="doc +grammar"
-
-QA_FLAGS_IGNORED="
- usr/bin/hx
- usr/share/helix/runtime/grammars/.*\\.so
-"
-
-DOCS=(
- README.md
- CHANGELOG.md
- book/
- docs/
-)
-
-language_uris() {
- local line
-
- for line in "$${LANGUAGES[@]}"; do
- read -r name url commit <<< "$${line}"
-
- printf '%s/archive/%s.tar.gz -> %s-%s.tar.gz\\n' "$${url}" "$${commit}" "$${url##*/}" "$${commit}"
- done
-}
-
-SRC_URI+="grammar? ( $$(language_uris) )"
-
-src_prepare() {
- local line
-
- if use grammar; then
- for line in "$${LANGUAGES[@]}"; do
- read -r name url commit <<< "$${line}"
-
- mkdir -p "$${S}"/runtime/grammars/sources/$${name} || die
- cp --reflink=auto --recursive \\
- "$${WORKDIR}"/$${url##*/}-$${commit}/* \\
- "$${S}"/runtime/grammars/sources/$${name} || die
- done
- fi
-
- eapply_user
-}
-
-src_compile() {
- local -x HELIX_DISABLE_AUTO_GRAMMAR_BUILD=1
- local -x HELIX_RUNTIME="$${S}/runtime"
-
- cargo_src_compile
-
- if use grammar; then
- target/release/hx --grammar build || die
- fi
-}
-
-src_install() {
- if use grammar; then
- rm -rf "$${S}"/runtime/grammars/sources || die
- fi
-
- insinto /usr/share/helix
- doins -r runtime
-
- use doc && dodoc -r "$${DOCS[@]}"
-
- cargo_src_install --path helix-term
-
- newbashcomp contrib/completion/hx.bash hx
-
- insinto /usr/share/zsh/site-functions
- newins contrib/completion/hx.zsh _hx
-
- insinto /usr/share/fish/vendor_completions.d
- doins contrib/completion/hx.fish
-}
-"""
-LANGUAGES_FILE = pathlib.Path("languages.toml")
-LICENSE_RE = r"[\s]*LICENSE=['\"](?P<licenses>[^\"']*)[\"'].*"
-
-
-def main():
- workdir = pathlib.Path().resolve()
- os.chdir("helix-term")
- cargo_ebuild_proc = subprocess.run(
- ("cargo", "ebuild", "--noaudit"), check=True, capture_output=True, text=True
- )
- os.chdir(workdir)
-
- tag_process = subprocess.run(
- ("git", "describe", "--tags"), check=True, capture_output=True, text=True
- )
- if not (
- cargo_ebuild := pathlib.Path(
- "helix-term",
- cargo_ebuild_proc.stdout.split("\n")[-2].partition(":")[2].strip(),
- )
- ).exists():
- raise RuntimeError(f"Can't find ebuild {cargo_ebuild}")
-
- new_ebuild = pathlib.Path(f"helix-{tag_process.stdout.strip()}.ebuild")
-
- with LANGUAGES_FILE.open("rb") as languages_file:
- language_list = tomli.load(languages_file)
-
- license_re = re.compile(LICENSE_RE)
- with (
- tempfile.TemporaryFile("wt+") as tmpfile,
- cargo_ebuild.open("rt+", encoding="utf-8") as cargo_ebuild_file,
- ):
- cargo_ebuild.unlink()
-
- crates = ""
- licenses = None
- in_crates = False
- for line in cargo_ebuild_file.readlines():
- if (license_match := license_re.match(line)) is not None:
- licenses = license_match.group("licenses")
- licenses = " ".join((lc for lc in licenses.split(" ") if lc != "MPL-2.0+"))
-
- elif line.startswith("CRATES="):
- in_crates = True
- continue
-
- elif in_crates:
- if line.strip() == "":
- continue
-
- elif line.strip() == '"':
- in_crates = False
- continue
-
- crates += line
-
- languages = ""
- for language in language_list.get("grammar", []):
- if source := language.get("source"):
- languages += f'\n\t"{language["name"]} {source["git"]} {source["rev"]}"'
-
- tmpfile.seek(0)
-
- year = datetime.datetime.now().year
- copyright_date = f"2023-{year}" if year > 2022 else "2023"
-
- template = string.Template(EBUILD_TEMPLATE.lstrip("\n"))
- with new_ebuild.open("wt", encoding="utf-8") as output_file:
- output_file.write(
- template.substitute(
- CRATES=crates.strip("\n"),
- LANGUAGES=languages.strip("\n"),
- LICENSE=licenses,
- copyright=copyright_date,
- ),
- )
-
- print("\n".join(cargo_ebuild_proc.stdout.split("\n")[:-2]))
- print(f"Wrote: {new_ebuild}")
-
-
-if __name__ == "__main__":
- main()