-
Notifications
You must be signed in to change notification settings - Fork 47
Update coding-style.sh and add usage lamdananas #24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Hi, I am a student myself, but while reading this pr, I noticed it uses a custom docker image, which downloads a binary that you uploaded. Despite your good intentions, I believe using an external provider is not well-suited for a checker meant to be run by most students. Indeed, this raises a security concern because neither the Docker image nor the binary is managed by the Epitech internal team. |
Oui je comprends parfaitement l'inquiétude qui peut se poser dans cette situation si par exemple ce binaire peur créer une backdoor sur les pcs des étudiants se serais vraiment dommage dotant plus que seras un script utilisé pour les années à suivre. Je n'avais pas pu obtenir le dépôt docker officiel de Epitech du binaire lambdananas donc je me suis servi du binaire fournit dans les Day de la piscine de la Tek 2 en Haskell pour créer un dépôt directement et ce serais bien si les administrateurs pouvaient créer le dépôt officiel pour qu'il soit remplacé dans le script
Merci de ta contribution
[cid:8556a6f4-e6e6-4164-944e-66a2ea0bec03]
…________________________________
De : Yohann Boniface ***@***.***>
Envoyé : vendredi 28 février 2025 01:32
À : Epitech/coding-style-checker ***@***.***>
Cc : James Elie Stachys Micaël GBETCHEDJI ***@***.***>; Author ***@***.***>
Objet : Re: [Epitech/coding-style-checker] Update coding-style.sh (PR #24)
I noticed that you are providing your own docker image<https://github.com/nogebeat/lambdananas> which internally fetches a copy of the lambdananas binary<https://github.com/nogebeat/lambdananas/releases/tag/v1.0.1> from your own repository.
Since the binary isn't sourced from an official location, it raises a security concern as it was not directly verified by the Epitech internal team
—
Reply to this email directly, view it on GitHub<#24 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/BC5RUYBXHQFRUU7GYLSZ74T2R6VC3AVCNFSM6AAAAABX7NWZESVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDMOBZGQZDCOJUGY>.
You are receiving this because you authored the thread.Message ID: ***@***.***>
[Sigmanificient]Sigmanificient left a comment (Epitech/coding-style-checker#24)<#24 (comment)>
I noticed that you are providing your own docker image<https://github.com/nogebeat/lambdananas> which internally fetches a copy of the lambdananas binary<https://github.com/nogebeat/lambdananas/releases/tag/v1.0.1> from your own repository.
Since the binary isn't sourced from an official location, it raises a security concern as it was not directly verified by the Epitech internal team
—
Reply to this email directly, view it on GitHub<#24 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/BC5RUYBXHQFRUU7GYLSZ74T2R6VC3AVCNFSM6AAAAABX7NWZESVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDMOBZGQZDCOJUGY>.
You are receiving this because you authored the thread.Message ID: ***@***.***>
|
There is an official binary released on lambdananas source repo, which is also statically compiled (so it should work out of the box). Since it is accessible publicly, it would also simplify the fetching process: upstream=Epitech/lambdananas
tag=$(curl -L https://api.github.com/repos/$upstream/releases | jq -r .[0].tag_name)
# In case `jq` is not available: `grep "tag_name" | cut -d '"' -f 4 | head -n 1`
curl -L "https://github.com/$upstream/releases/download/$tag/lambdananas" > lambdananas
sha256sum lambdananas
I still am unsure whether this would fulfil @Xephi criteria "Pas de binaire dans ce dépôt, utilise lambdananas via docker à la place" |
When digging into Here is the content of #!/bin/bash
function cat_readme() {
echo ""
echo "Usage: ./check.sh DELIVERY_DIR REPORTS_DIR"
echo ""
}
if [ $# == 1 ] && [ $1 == "--help" ]; then
cat_readme
elif [ $# = 2 ];
then
DELIVERY_DIR="$1"
REPORTS_DIR="$2"
### generate reports
mkdir -p $REPORTS_DIR
( timeout --kill-after=10s 120s code-style-c.sh "$DELIVERY_DIR" "$REPORTS_DIR" )
( timeout --kill-after=10s 120s code-style-haskell.sh "$DELIVERY_DIR" "$REPORTS_DIR" )
else
cat_readme
fi
|
Oui je l'avais remarqué aussi 😅 mais bons en Tek 2 je trouve lancé directement le coding-style check aussi les éléments dans les projets stack ce qui peut être assez contraignant parce qu'il faut chercher entre les erreurs des binaires de stack lui même
[cid:591eb63a-41bb-47bd-8ee7-bd97e73d4ee6]
…________________________________
De : Yohann Boniface ***@***.***>
Envoyé : vendredi 28 février 2025 14:20
À : Epitech/coding-style-checker ***@***.***>
Cc : James Elie Stachys Micaël GBETCHEDJI ***@***.***>; Author ***@***.***>
Objet : Re: [Epitech/coding-style-checker] Update coding-style.sh (PR #24)
When digging into epitech/coding-style-checker image, it exposes check.sh which seems to already run both the C and Haskell coding style though 😅 I am missing something?
—
Reply to this email directly, view it on GitHub<#24 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/BC5RUYGT33FBSZX3JRZRXFL2SBPCRAVCNFSM6AAAAABX7NWZESVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDMOJQGYZTMNRXGU>.
You are receiving this because you authored the thread.Message ID: ***@***.***>
[Sigmanificient]Sigmanificient left a comment (Epitech/coding-style-checker#24)<#24 (comment)>
When digging into epitech/coding-style-checker image, it exposes check.sh which seems to already run both the C and Haskell coding style though 😅 I am missing something?
—
Reply to this email directly, view it on GitHub<#24 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/BC5RUYGT33FBSZX3JRZRXFL2SBPCRAVCNFSM6AAAAABX7NWZESVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDMOJQGYZTMNRXGU>.
You are receiving this because you authored the thread.Message ID: ***@***.***>
|
Isn't source prepare-tmp-workspace.sh
excluded_dirs="Setup.hs:setup.hs:.git:.stack-work:test:tests:bonus"
lambdananas -o vera --exclude "$excluded_dirs" . >> lambdananas-reports.log |
alright i see this could be added in the for code but the best is a single script that can be used to do both haskell and C but what this just interested me and help me to do a new more extensive correction at work
Thanks
[cid:b7fa020c-cd92-47df-b267-db7f4b83e637]
…________________________________
De : Yohann Boniface ***@***.***>
Envoyé : vendredi 28 février 2025 21:43
À : Epitech/coding-style-checker ***@***.***>
Cc : James Elie Stachys Micaël GBETCHEDJI ***@***.***>; Author ***@***.***>
Objet : Re: [Epitech/coding-style-checker] Update coding-style.sh (PR #24)
Isn't code-style-haskell.sh supposed to ignore stack folder already?
source prepare-tmp-workspace.sh
excluded_dirs="Setup.hs:setup.hs:.git:.stack-work:test:tests:bonus"
lambdananas -o vera --exclude "$excluded_dirs" . >> lambdananas-reports.log
—
Reply to this email directly, view it on GitHub<#24 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/BC5RUYB6AMPLKK6S26HU4432SDDAFAVCNFSM6AAAAABX7NWZESVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDMOJRGUYTGNZRHA>.
You are receiving this because you authored the thread.Message ID: ***@***.***>
[Sigmanificient]Sigmanificient left a comment (Epitech/coding-style-checker#24)<#24 (comment)>
Isn't code-style-haskell.sh supposed to ignore stack folder already?
source prepare-tmp-workspace.sh
excluded_dirs="Setup.hs:setup.hs:.git:.stack-work:test:tests:bonus"
lambdananas -o vera --exclude "$excluded_dirs" . >> lambdananas-reports.log
—
Reply to this email directly, view it on GitHub<#24 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/BC5RUYB6AMPLKK6S26HU4432SDDAFAVCNFSM6AAAAABX7NWZESVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDMOJRGUYTGNZRHA>.
You are receiving this because you authored the thread.Message ID: ***@***.***>
|
coding-style.sh
Outdated
then | ||
REPORTS_DIR=$(my_readlink "$2") | ||
fi | ||
IMAGE_HASKELL="ghcr.io/nogebeat/lambdananas:latest" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nope
en effet, y a lambdananas dans l'image docker, tu peux override l'entrypoint de l'image docker si y a besoin de run lambdananas directement depuis un container basée sur cette image (et cette image uniquement) |
Oui je vois un peu je suis déjà entrain de corriger et voir une nouvelle version en prenant l'exécution de lambdananas |
…askell- 🛠 Correction de bugs dans le script Bash : - Fix de la fonction my_readlink (gestion des erreurs de cd) - Correction des conditions if avec -eq au lieu de == - Sécurisation de la mise à jour de lambdananas (find, cp au lieu de cat) - Amélioration de la gestion des couleurs avec tput - Vérification plus robuste des dates pour la mise à jour Docker- �� Implémentation d'une nouvelle version de l'installateur Haskell : - Meilleure gestion des dépendances et installation plus propre- 📖 Mise à jour de l'aide (cat_readme) pour une documentation plus claire
… to extract the binary cleanly from Docker instead of searching in
Je crois que tu n'as pas bien compris ce que l'on veut, il faudrait monter les fichiers dans l'image docker et run lambdananas depuis l'image docker, avec par exemple : |
Okay je vois un peu |
…le- Réorganisation du script pour une meilleure lisibilité et maintenabilité - Ajout d'une fonction pour gérer la mise à jour des images Docker séparément - Amélioration de l'analyse des arguments et du formatage du message d'aide - Ajout de la prise en charge de la vérification du coding style Haskell ( ou ) - Meilleure gestion des erreurs et des permissions pour les répertoires de rapports - Optimisation de la vérification et mise à jour de l’image Docker - Amélioration du retour utilisateur avec des messages plus clairs et un affichage coloré
📌 Pull Request : Automatisation de l'installation de Lambdananas
🚀 Description
Ce pull request améliore le script en automatisant l'installation de lambdananas si celui-ci n'est pas trouvé sur le système.
🔹 Vérifie si lambdananas est installé via command -v.
🔹 S'il est absent, le télécharge directement depuis GitHub dans un conteneur Docker Alpine.
🔹 Rend le binaire exécutable et l'installe dans /usr/local/bin/.
🔧 Modifications apportées
Ajout d'une vérification de lambdananas avant exécution.
Installation automatique via curl dans un conteneur Docker.
Vérification après installation pour garantir le bon fonctionnement.
Vérification de la date de modification de la dernière image du coding style avant de pull permettant l'accélération du checker
🎯 Pourquoi cette amélioration ?
✅ Facilite l'utilisation : Plus besoin d'installer lambdananas manuellement.
✅ Automatisation complète : L'outil est toujours accessible sans intervention manuelle.
✅ Portabilité : Fonctionne même si l'utilisateur ne peut pas installer directement des fichiers binaires.
✅ Tests effectués
Suppression de lambdananas et exécution du script :
🟢 Installation automatique réussie via Docker.
🟢 lambdananas devient accessible depuis /usr/local/bin/.
Exécution avec lambdananas déjà installé :
🟢 Aucun téléchargement inutile.
Test d'un fichier .hs :
🟢 Vérification réussie.
🛠 Instructions pour tester
Supprimez lambdananas s'il est déjà installé :
Exécutez le script et observez l'installation automatique.
Vérifiez que lambdananas fonctionne avec un fichier Haskell :
🟢 Prêt à être fusionné après validation !