diff --git a/Hooks/scripts.d/pytest b/Hooks/scripts.d/pytest index b8c6062..43acb14 100755 --- a/Hooks/scripts.d/pytest +++ b/Hooks/scripts.d/pytest @@ -4,5 +4,8 @@ if [ -d venv ]; then source venv/bin/activate +elif [ -f requirements.txt ]; then + python3 -m venv venv + venv/bin/python3 -m pip install -r requirements.txt fi python3 -m pytest diff --git a/Hooks/scripts.d/whitespace b/Hooks/scripts.d/whitespace index afe00b5..4d34854 100755 --- a/Hooks/scripts.d/whitespace +++ b/Hooks/scripts.d/whitespace @@ -2,11 +2,6 @@ # Sourced from https://github.com/git/git/blob/master/templates/hooks--pre-commit.sample -if egrep -irl '\s\+$' .; then - echo The above lines have trailing whitespace. Run "sed -i 's/\s\+$//'" on the affected files. - exit 1 -fi - if git rev-parse --verify HEAD >/dev/null 2>&1 then against=HEAD @@ -18,6 +13,9 @@ fi # Redirect output to stderr. exec 1>&2 - # If there are whitespace errors, print the offending file names and fail. -exec git diff-index --check --cached $against -- +git diff-index --check --cached $against -- +if [ $? -ne 0 ]; then + echo The above lines have trailing whitespace. Run "sed -i 's/\s\+$//'" on the affected files. + exit 1 +fi diff --git a/Makefile b/Makefile index 4e61442..7de65f1 100644 --- a/Makefile +++ b/Makefile @@ -1,26 +1,30 @@ installdir = ${pkgdir}/opt/aninix/Uniglot/ targets = Bash C CSharp Hooks -compile: +compile: @echo Nothing to compile. install: compile mkdir -p ${installdir} for target in ${targets}; do rsync -avzzl "$$target" ${installdir}; done + mkdir "${installdir}/pacman/" + cp PKGBUILD "${installdir}/pacman/" + mkdir "${installdir}/make/" + cp Makefile "${installdir}/make/" mkdir -p ${pkgdir}/usr/local/bin - install -m 0755 -o root -g root bin/uniglot-clone ${pkgdir}/usr/local/bin + find bin/ -type f -exec install -m 0755 -o root -g root {} "${pkgdir}/usr/local/bin" \; make checkperm clean: - for i in `cat .gitignore`; do rm -Rf $$i; done - -uninstall: - rm -Rf ${installdir} + git clean -fdX -test: +uninstall: + rm -Rf ${installdir} + +test: python3 -m pytest -checkperm: +checkperm: chmod -R 0755 ${installdir} ${pkgdir}/usr/local/bin/uniglot-clone chown root:root ${installdir} ${pkgdir}/usr/local/bin/uniglot-clone diff --git a/README.md b/README.md index ed76e52..76d90ca 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,14 @@ This repo holds all our standard functions that all our services should use. We include a folder for each language -- files are broken down by their inclusion method. Please follow our [development best practices](https://foundation.aninix.net/AniNIX/Wiki/src/branch/master/Operation/Development_Best_Practices.md) when contributing. -These functions are not intended to be invoked directly, so the package created from this repo will only provide files on disk. +Some other functions served by this repo are included below. + +# Example Packaging + +This repo does have some example packaging for use in downstream projects. The `Makefile` and `PKGBUILD` are standards the AniNIX should maintain throughout their projects. + +# Executables + +The following executables are available: + +* `uniglot-clone` ensures that when repos are cloned, they are attached to the standard Uniglot hooks. +* `home-git` is support for [User Support Repositories](https://aninix.net/AniNIX/Wiki/src/branch/main/Articles/User_Support_Repositories.md). diff --git a/bin/uniglot-clone b/bin/uniglot-clone index 661a135..152e544 100755 --- a/bin/uniglot-clone +++ b/bin/uniglot-clone @@ -38,6 +38,11 @@ if [ `basename "$0"` == "uniglot-clone" ]; then esac done + if [ -n "$target" ]; then + uniglotClone "$target" + cd "$(basename "$target" | sed 's/.git$//')" + fi + # Sanity if [ ! -d .git ]; then echo "This should be run from the root of the clone." @@ -45,9 +50,13 @@ if [ `basename "$0"` == "uniglot-clone" ]; then fi # Standardizations + + # If the repo is Uniglot... if git config remote.origin.url | grep -q AniNIX/Uniglot; then + # Set the hooks to the local directory git config core.hooksPath $PWD/Hooks else + # Otherwise set it to the global hooks git config core.hooksPath /opt/aninix/Uniglot/Hooks fi fi