summaryrefslogtreecommitdiff
path: root/coding-style
diff options
context:
space:
mode:
authorlucasskvn <lucas.sangkhavongs@epitech.eu>2025-07-07 14:49:21 +0200
committerlucasskvn <lucas.sangkhavongs@epitech.eu>2025-07-07 14:49:21 +0200
commitd7302236417e3e88a715583f286e218493199dd3 (patch)
tree77d6f9163ca4d99f76ce69db7ec780519da298fb /coding-style
init
Diffstat (limited to 'coding-style')
-rwxr-xr-xcoding-style71
1 files changed, 71 insertions, 0 deletions
diff --git a/coding-style b/coding-style
new file mode 100755
index 0000000..7de4891
--- /dev/null
+++ b/coding-style
@@ -0,0 +1,71 @@
+#!/usr/bin/env bash
+
+function my_readlink() {
+ cd $1
+ pwd
+ cd - > /dev/null
+}
+
+function cat_readme() {
+ echo ""
+ echo "Usage: $(basename $0) DELIVERY_DIR REPORTS_DIR"
+ echo -e "\tDELIVERY_DIR\tShould be the directory where your project files are"
+ echo -e "\tREPORTS_DIR\tShould be the directory where we output the reports"
+ echo -e "\t\t\tTake note that existing reports will be overriden"
+ echo ""
+}
+
+if [ $# == 1 ] && [ $1 == "--help" ]; then
+ cat_readme
+elif [ $# == 1 ] || [ $# = 2 ];
+then
+ if [ $# == 1 ];
+ then
+ REPORTS_DIR=$(my_readlink ".")
+ elif [ $# = 2 ];
+ then
+ REPORTS_DIR=$(my_readlink "$2")
+ fi
+
+ DELIVERY_DIR=$(my_readlink "$1")
+ DOCKER_SOCKET_PATH=/var/run/docker.sock
+ HAS_SOCKET_ACCESS=$(test -r $DOCKER_SOCKET_PATH; echo "$?")
+ GHCR_REGISTRY_TOKEN=$(curl -s "https://ghcr.io/token?service=ghcr.io&scope=repository:epitech/coding-style-checker:pull" | grep -o '"token":"[^"]*' | grep -o '[^"]*$')
+ GHCR_REPOSITORY_STATUS=$(curl -I -f -s -o /dev/null -H "Authorization: Bearer $GHCR_REGISTRY_TOKEN" "https://ghcr.io/v2/epitech/coding-style-checker/manifests/latest" && echo 0 || echo 1)
+ BASE_EXEC_CMD="docker"
+ EXPORT_FILE="$REPORTS_DIR"/coding-style-reports.log
+ ### delete existing report file
+ rm -f "$EXPORT_FILE"
+
+ ### Pull new version of docker image and clean olds
+
+ if [ $HAS_SOCKET_ACCESS -ne 0 ]; then
+ echo "WARNING: Socket access is denied"
+ echo "To fix this we will add the current user to docker group with : sudo usermod -a -G docker $USER"
+ read -p "Do you want to proceed? (yes/no) " yn
+ case $yn in
+ yes | Y | y | Yes | YES) echo "ok, we will proceed";
+ sudo usermod -a -G docker $USER;
+ echo "You must reboot your computer for the changes to take effect";;
+ no | N | n | No | NO) echo "ok, Skipping";;
+ * ) echo "invalid response, Skipping";;
+ esac
+ BASE_EXEC_CMD="sudo ${BASE_EXEC_CMD}"
+ fi
+
+
+ if [ $GHCR_REPOSITORY_STATUS -eq 0 ]; then
+ echo "Downloading new image and cleaning old one..."
+ $BASE_EXEC_CMD pull ghcr.io/epitech/coding-style-checker:latest && $BASE_EXEC_CMD image prune -f
+ echo "Download OK"
+ else
+ echo "WARNING: Skipping image download"
+ fi
+
+
+ ### generate reports
+ $BASE_EXEC_CMD run --rm --security-opt "label:disable" -i -v "$DELIVERY_DIR":"/mnt/delivery" -v "$REPORTS_DIR":"/mnt/reports" ghcr.io/epitech/coding-style-checker:latest "/mnt/delivery" "/mnt/reports"
+ [[ -f "$EXPORT_FILE" ]] && echo "$(wc -l < "$EXPORT_FILE") coding style error(s) reported in "$EXPORT_FILE", $(grep -c ": MAJOR:" "$EXPORT_FILE") major, $(grep -c ": MINOR:" "$EXPORT_FILE") minor, $(grep -c ": INFO:" "$EXPORT_FILE") info"
+else
+ cat_readme
+fi