# Maintainer: Rafael Dominiquini # Co-maintainer: edu4rdshl _npmmodule=@github/copilot pkgname=github-copilot-cli _pkgexec=copilot pkgver=1.0.80 pkgrel=1 pkgdesc="GitHub Copilot CLI brings the power of Copilot coding agent directly to your terminal." url="https://github.com/github/copilot-cli" _urlraw="https://raw.githubusercontent.com/github/copilot-cli/v${pkgver}" arch=("x86_64") license=("LicenseRef-GitHub-Copilot") conflicts=("${pkgname%%-cli}" "${pkgname}-legacy") depends=("glibc" "gcc-libs" "nodejs" "glib2" "libsecret") replaces=("${pkgname%%-cli}") makedepends=("npm" "jq") provides=("${_pkgexec}") options=(!strip emptydirs staticlibs zipman) source=("https://registry.npmjs.org/${_npmmodule}/-/copilot-${pkgver}.tgz" "CHANGELOG-${pkgver}.md::${_urlraw}/changelog.md") noextract=("copilot-${pkgver}.tgz") b2sums=('6964a3692f9b538295a2a36cec5fe38dee9ab75284ba37385c1fda5ab9288dffd106447efab73bc829327a1152836c593c7d060c0b1e77e89e3d12c3f6a8455b' '6089bebf59e12c45138daf4662508571a6e7a393c0b6ceefd9d64360af9378905ef3bc7e9ec5c9c05f91812291cbb868c08c6bf7cea5795bb4af510329955eef') # Document: https://wiki.archlinux.org/title/Node.js_package_guidelines package() { msg2 "Install using Using NPM" npm install -s -g \ --cache "${srcdir}/npm-cache" \ --prefix "${pkgdir}/usr" \ "${srcdir}/copilot-${pkgver}.tgz" msg2 "Remove prebuilds and binaries for other platforms" local _moddir="${pkgdir}/usr/lib/node_modules/${_npmmodule}" local _arch case "$CARCH" in x86_64) _arch="x64" ;; aarch64) _arch="arm64" ;; *) error "Unsupported architecture: $CARCH"; exit 1 ;; esac msg2 "Cleaning non-native prebuilds for ${_arch}" if [ -d "${_moddir}/prebuilds" ]; then find "${_moddir}/prebuilds" -mindepth 1 -maxdepth 1 -type d ! -name "linux-${_arch}" -exec rm -rf {} + fi if [ -d "${_moddir}/mxc-bin" ]; then find "${_moddir}/mxc-bin" -mindepth 1 -maxdepth 1 -type d ! -name "${_arch}" -exec rm -rf {} + fi if [ -d "${_moddir}/ripgrep/bin" ]; then find "${_moddir}/ripgrep/bin" -mindepth 1 -maxdepth 1 -type d ! -name "linux-${_arch}" -exec rm -rf {} + fi if [ -d "${_moddir}/clipboard/node_modules/@teddyzhu" ]; then find "${_moddir}/clipboard/node_modules/@teddyzhu" -mindepth 1 -maxdepth 1 -type d ! -name "clipboard-linux-${_arch}-gnu" -exec rm -rf {} + fi if [ -d "${_moddir}/foundry-local-sdk/node_modules/foundry-local-sdk/prebuilds" ]; then find "${_moddir}/foundry-local-sdk/node_modules/foundry-local-sdk/prebuilds" -mindepth 1 -maxdepth 1 -type d ! -name "linux-${_arch}" -exec rm -rf {} + fi # pvrecorder only ships linux/x86_64; remove other OSes and non-native Linux archs if [ -d "${_moddir}/pvrecorder/node_modules/@picovoice/pvrecorder-node/lib" ]; then find "${_moddir}/pvrecorder/node_modules/@picovoice/pvrecorder-node/lib" -mindepth 1 -maxdepth 1 -type d ! -name 'linux' -exec rm -rf {} + if [ "$CARCH" = "x86_64" ]; then find "${_moddir}/pvrecorder/node_modules/@picovoice/pvrecorder-node/lib/linux" -mindepth 1 -maxdepth 1 -type d ! -name 'x86_64' -exec rm -rf {} + else rm -rf "${_moddir}/pvrecorder/node_modules/@picovoice/pvrecorder-node/lib/linux" fi fi msg2 "Fix ownership of ALL FILES" find "${pkgdir}/usr" -type d -exec chmod 755 {} + chown -R root:root "${pkgdir}" msg2 "Remove references to PKGDIR" find "${pkgdir}" -name package.json -print0 | xargs -r -0 sed -i '/_where/d' msg2 "Fixing 'package.json'" local tmppackage="$(mktemp)" local pkgjson="${pkgdir}/usr/lib/node_modules/${_npmmodule}/package.json" jq '.|=with_entries(select(.key|test("_.+")|not))' "${pkgjson}" > "${tmppackage}" mv "${tmppackage}" "${pkgjson}" chmod 644 "${pkgjson}" msg2 "More fixes for 'package.json'" find "${pkgdir}" -type f -name package.json | while read pkgjson; do local tmppackage="$(mktemp)" jq 'del(.man)' "${pkgjson}" > "${tmppackage}" mv "${tmppackage}" "${pkgjson}" chmod 644 "${pkgjson}" done msg2 "Generating autocompletions for Bash" "${pkgdir}/usr/bin/copilot" completion bash > copilot install -Dm644 copilot "${pkgdir}/usr/share/bash-completion/completions/copilot" msg2 "Generating autocompletions for Zsh" "${pkgdir}/usr/bin/copilot" completion zsh > _copilot install -Dm644 _copilot "${pkgdir}/usr/share/zsh/site-functions/_copilot" msg2 "Generating autocompletions for Fish" "${pkgdir}/usr/bin/copilot" completion fish > copilot.fish install -Dm644 copilot.fish "${pkgdir}/usr/share/fish/vendor_completions.d/copilot.fish" msg2 "Install README file" install -dm755 "${pkgdir}/usr/share/doc/${pkgname}/" ln -sf "/usr/lib/node_modules/${_npmmodule}/README.md" "${pkgdir}/usr/share/doc/${pkgname}/README.md" msg2 "Install CHANGELOG file" install -Dm755 "${srcdir}/CHANGELOG-${pkgver}.md" "${pkgdir}/usr/share/doc/${pkgname}/CHANGELOG.md" msg2 "Install LICENSE file" install -dm755 "${pkgdir}/usr/share/licenses/${pkgname}/" ln -sf "/usr/lib/node_modules/${_npmmodule}/LICENSE.md" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" }