Projet : Automatisation web
Mise en contexte
Section intitulée « Mise en contexte »Tu travailles comme développeur web junior chez Studio Lumière, une petite agence de design web. Ton collègue a développé un site vitrine pour un client, mais il a tout laissé en vrac dans un seul dossier : HTML, CSS, JavaScript et images pêle-mêle, sans structure, sans build, sans automatisation.
Ton mandat : écrire des scripts bash qui automatisent l’organisation, la vérification, la construction et la configuration du site.
Ce qui est fourni
Section intitulée « Ce qui est fourni »| Fichier | Rôle |
|---|---|
site-vitrine/ | Le projet web mal organisé — 15 fichiers en vrac |
organiser.sh | Squelette du script d’organisation — à compléter |
verifier.sh | Squelette du script de vérification — à compléter |
construire.sh | Squelette du script de build — à compléter |
configurer.sh | Squelette du script de configuration — bonus |
deployer.sh | Squelette du script de déploiement — bonus |
Comment commencer
Section intitulée « Comment commencer »-
Copie le dossier du projet dans ton espace de travail.
-
Copie les scripts (
.sh) dans le dossiersite-vitrine/: -
Entre dans le dossier et rends les scripts exécutables :
-
Tu travailles toujours depuis
site-vitrine/. Tous les scripts s’exécutent depuis ce dossier.
Le site vitrine
Section intitulée « Le site vitrine »Le projet fourni est un site vitrine pour Studio Lumière:
- 3 pages HTML
- 3 fichiers CSS
- 3 fichiers JavaScript
- 3 images
- un fichier de config
- un brouillon.
Tout est à plat dans un seul dossier.
site-vitrine/├── accueil.html ← page d'accueil├── apropos.html ← page à propos├── contact.html ← page avec formulaire├── brouillon.html ← page en cours de rédaction├── style1.css ← mise en page├── style2.css ← typographie├── navigation.css ← barre de navigation├── app.js ← script principal├── validation.js ← validation du formulaire├── animation.js ← animations├── logo.png ← logo du studio├── photo1.jpg ← photo projet├── photo2.jpg ← photo projet├── config.env ← configuration du build└── NOTES.txt ← notes du développeurLe code contient volontairement des commentaires TODO et FIXME que tes scripts devront détecter.
Phase 1 : Organisation et vérification
Section intitulée « Phase 1 : Organisation et vérification »Remise : 22 mai
Script 1 : organiser.sh
Section intitulée « Script 1 : organiser.sh »Ce script réorganise le projet en vrac dans une structure propre :
site-vitrine/├── css/│ ├── navigation.css│ ├── style1.css│ └── style2.css├── js/│ ├── app.js│ ├── validation.js│ └── animation.js├── img/│ ├── logo.png│ ├── photo1.jpg│ └── photo2.jpg├── pages/│ ├── apropos.html│ └── contact.html├── brouillons/│ ├── brouillon.html│ └── NOTES.txt├── config.env└── index.html ← accueil.html renommé-
Créer les dossiers
css/,js/,img/,pages/,brouillons/. -
Déplacer les fichiers dans les bons dossiers.
-
Renommer
accueil.htmlenindex.html. -
Configurer les permissions : scripts en
755, fichiers web en644, config en600. -
Afficher un résumé de la nouvelle structure.
Script 2 : verifier.sh
Section intitulée « Script 2 : verifier.sh »Ce script audite le code et génère un rapport dans rapport.txt :
-
Chercher les TODO dans tous les fichiers avec
grepet compter les résultats. -
Chercher les FIXME de la même façon.
-
Compter les lignes de code par type de fichier (HTML, CSS, JS) avec
findetwc. -
Écrire le tout dans
rapport.txtavec les redirections>et>>.
Exemple de rapport attendu :
Section intitulée « Exemple de rapport attendu : »Rapport de vérification — 2026-05-07════════════════════════════════════
TODO trouvés:./index.html:18: <!-- TODO: ajouter une section portfolio -->./css/style1.css:14:/* TODO: ajouter un layout grid */...Total : 11 TODO
FIXME trouvés:./pages/apropos.html:20: <!-- FIXME: le texte déborde sur mobile -->...Total : 4 FIXME
Statistiques---------------------Lignes HTML : 95Lignes CSS : 78Lignes JS : 52Total : 225Livrables
Section intitulée « Livrables »- Les deux scripts complétés et exécutables (
chmod +x) README.mddocumentant chaque script et les commandes pour les exécuter
Phase 2 : Construction et configuration
Section intitulée « Phase 2 : Construction et configuration »Remise : 30 mai
Script 3 : construire.sh
Section intitulée « Script 3 : construire.sh »Ce script lit la configuration et produit une version distribuable du site dans dist/ :
-
Charger la configuration avec
source config.env, en respectant la priorité : variable du shell > fichier.env> valeur par défaut. -
Préparer le dossier
dist/(le recréer de zéro). -
Concaténer les CSS en un seul
dist/styles.cssaveccat. -
Concaténer les JS en un seul
dist/app.js. -
Copier les pages HTML et les images dans
dist/. -
Gérer les brouillons : les inclure ou les exclure selon
SITE_BROUILLONS. -
Ajouter une bannière avec la date de build si
SITE_BANNIERE=oui. -
Afficher un résumé du build (taille des fichiers).
Le dossier dist/ contient tout à plat (pas de sous-dossiers). Les fichiers HTML, CSS concaténé, JS concaténé et images cohabitent au même niveau.
Le fichier config.env contrôle le comportement du build :
SITE_NOM="Studio Lumière"SITE_DIST="dist"SITE_BROUILLONS="oui"SITE_BANNIERE="non"On doit pouvoir surcharger la config depuis le terminal :
# Utilise config.env par défaut./construire.sh
# Exclut les brouillons (surcharge shell)SITE_BROUILLONS=non ./construire.sh
# Ajoute une bannière de buildSITE_BANNIERE=oui ./construire.sh
# Combine les deuxSITE_BROUILLONS=non SITE_BANNIERE=oui ./construire.shLivrables
Section intitulée « Livrables »construire.shcomplété et exécutableconfig.envavec les variables documentéesREADME.mdmis à jour avec la documentation de la configuration