initial commit
This commit is contained in:
Executable
+71
@@ -0,0 +1,71 @@
|
||||
#!/bin/bash
|
||||
packagefile="packages.txt"
|
||||
|
||||
# Ensure we are in the correct directory
|
||||
pushd "$(dirname "$(realpath "$0")")" &> /dev/null
|
||||
|
||||
# Read packages.txt and install packages on system using yay
|
||||
function install_packages {
|
||||
local install
|
||||
for pkg in $(sed -E -e 's/\s*#.*$//g' -e 's/^\s+//g' "$packagefile" | sed -E ':a;N;$!ba;s/\s+/\n/g'); do
|
||||
# check if package is installed
|
||||
local installed
|
||||
yay -Q "$(echo "$pkg")" &> /dev/null && installed=1 || installed=0
|
||||
if [ $installed -eq 0 ]; then
|
||||
# needs to be installed
|
||||
install="$install"$'\n'"$pkg"
|
||||
fi
|
||||
done
|
||||
|
||||
[ -z "$install" ] || {
|
||||
echo "Packages to be installed: "
|
||||
echo "$install"
|
||||
yay -S $install
|
||||
}
|
||||
}
|
||||
|
||||
# Try to install the language given in arguments
|
||||
# - arg1 language name
|
||||
# - arg2 github repository
|
||||
function install_treesitter_language {
|
||||
local language="$1"
|
||||
local repository="$2"
|
||||
local directory=$(basename "$repository")
|
||||
|
||||
# Clone the repository or update it
|
||||
if [ ! -d "tree-sitter-source" ]; then
|
||||
mkdir tree-sitter-source
|
||||
fi
|
||||
|
||||
if [ ! -d "tree-sitter-source/$directory" ]; then
|
||||
git clone --depth=1 "$repository" "tree-sitter-source/$directory"
|
||||
fi
|
||||
pushd "tree-sitter-source/$directory" &> /dev/null
|
||||
git reset --hard
|
||||
git clean -dfqx
|
||||
git pull --ff-only
|
||||
popd &> /dev/null
|
||||
|
||||
# Copy queries
|
||||
if [ ! -d "queries/$language" ]; then
|
||||
mkdir -p "queries/$language"
|
||||
fi
|
||||
find "tree-sitter-source/$directory" -iname '*.scm' -exec cp "{}" "queries/$language/" \;
|
||||
|
||||
# Make the parser
|
||||
pushd "tree-sitter-source/$directory" &> /dev/null
|
||||
tree-sitter build
|
||||
popd &> /dev/null
|
||||
|
||||
# Copy parser
|
||||
if [ ! -d "parser" ]; then
|
||||
mkdir "parser"
|
||||
fi
|
||||
|
||||
find "tree-sitter-source/$directory" -iname '*.so' -exec cp "{}" "parser/" \;
|
||||
}
|
||||
|
||||
install_packages
|
||||
install_treesitter_language "bash" "https://github.com/tree-sitter/tree-sitter-bash"
|
||||
|
||||
popd &> /dev/null
|
||||
Reference in New Issue
Block a user