{"id":25541137,"url":"https://github.com/strangebuzz/cache-watcher","last_synced_at":"2025-04-11T16:50:43.183Z","repository":{"id":57708957,"uuid":"259039048","full_name":"strangebuzz/cache-watcher","owner":"strangebuzz","description":"A simple Cache Watcher for Symfony","archived":false,"fork":false,"pushed_at":"2022-05-12T06:10:59.000Z","size":2519,"stargazers_count":29,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-25T12:53:31.802Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://sfcw.dev/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/strangebuzz.png","metadata":{"files":{"readme":"README.fr.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-26T13:35:16.000Z","updated_at":"2025-03-21T11:27:36.000Z","dependencies_parsed_at":"2022-09-26T21:20:45.708Z","dependency_job_id":null,"html_url":"https://github.com/strangebuzz/cache-watcher","commit_stats":null,"previous_names":["strangebuzz/sfcw"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strangebuzz%2Fcache-watcher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strangebuzz%2Fcache-watcher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strangebuzz%2Fcache-watcher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strangebuzz%2Fcache-watcher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/strangebuzz","download_url":"https://codeload.github.com/strangebuzz/cache-watcher/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248442917,"owners_count":21104297,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-20T06:29:09.463Z","updated_at":"2025-04-11T16:50:43.146Z","avatar_url":"https://github.com/strangebuzz.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CacheWatcher\n\nCacheWatcher est un petit programme Go qui observe vos fichiers Symfony et met à\njour votre cache si besoin afin que vous n'ayez pas à attendre lors du rafraichissement\ndu navigateur.\n\nSon but est d'améliorer [l'expérience Développeur](https://symfony.com/blog/making-the-symfony-experience-exceptional) avec Symfony (DX).\n\n\u003cimg src=\"https://raw.githubusercontent.com/strangebuzz/cache-watcher/master/doc/img/cw_400w.png\" alt=\"La mascotte Cw\" align=\"right\" /\u003e\n\n## Comment ça marche ? 🤔\n\nLe programme \"observe\" vos fichiers (.env, YAML, Twig, entités Doctrine) et dès qu'il\ndétecte un changement, il appelle la commande Symfony `cache:warmup` pour rafraichir\nle cache. Il est important de comprendre que le programme ne va ni appeler ni créer\ndes fichiers sur votre machine par lui-même.\n\n## Installation 🛠️\n\nVous pouvez compiler le programme manuellement (ça implique que vous ayez un environnement\nde travail Go fonctionnel) ou vous pouvez [télécharger un exécutable](#downloading-the-executable-).\nCe programme a été développé avec **go1.17.2**.\n\n### Compilation du programme ⚙️\n\n```\n$ git clone git@github.com:strangebuzz/cache-watcher.git\n$ cd cache-watcher\n$ make build \n```\n\nCela va construire l'exécutable `cw` or `cw.exe` selon votre système d'exploitation.\n\n### Téléchargement de l'exécutable 🔽\n\nVoici les exécutables des principaux systèmes d'exploitation :\n\n| Système d'exploitation  | Plateforme | version | date       | fichier                                                           | Contrôle d'intégrité SHA                                         |\n|-------------------------|------------|---------|------------|-------------------------------------------------------------------|------------------------------------------------------------------|\n| darwin (macOS)          | amd64      | 0.5.0   | 2020-12-05 | [cw](https://sfcw.ovh/downloads/darwin/amd64/cw) (3.3mo)          | 80b4011567c71aef7a13e9bbdad9acacee124acb330222fa2b2abf172ce2879e |\n| darwin (macOS M1)       | arm64      | 0.5.1   | 2022-05-12 | [cw](https://sfcw.ovh/downloads/darwin/arm64/cw) (2.8mo)          | 0ba1a666c15900601c0b55762ce839a60309cb81a302fdcb10c931f33a105e98 |\n| Linux                   | amd64      | 0.5.0   | 2020-12-05 | [cw](https://sfcw.ovh/downloads/linux/amd64/cw) (3.3mo)           | 7203e4facfd82f54501ff17b569055daf7856164ed71a66b3fbfbe8dd9633293 |\n| Windows                 | amd64      | 0.5.0   | 2020-12-05 | [cw.exe](https://sfcw.ovh/downloads/windows/amd64/cw.exe) (3.4mo) | 2278d95d28011cbd2b97aed08e5e73274f08d245092cab58ac7f9d5c772e6892 |\n\nUne fois téléchargé, vous pouvez vérifier que le fichier n'est pas compromis. Comparez\nd'une part, le code de contrôle d'intégrité SHA en exécutant la commande suivante\net d'autre part, la valeur affichée dans le tableau précédent : \n\n```\n$ shasum -a 256 ./cw \nb35078644ac3b3f025276a0c5fcd77b3d2c8fe9cd15d136df969772e6f513973  ./cw\n```\n\nSur Linux et macOS, donnez le droit d'exécution au programme :\n\n```\n$ chmod +x ./cw\n```\n\nSi vous avez besoin d'un autre type d'exécutable, vous pouvez créer un ticket en\nmentionnant le système d'exploitation et plateforme dont vous avez besoin. Vous\ntrouverez les valeurs possibles dans [cet article](https://www.digitalocean.com/community/tutorials/how-to-build-go-executables-for-multiple-platforms-on-ubuntu-16-04#step-4-%E2%80%94-building-executables-for-different-architectures).\n\nPar commodité, ajoutez `cw` à votre `path` pour y accéder de n'importe où.\n\n💡 L'exécutable est \"assez\" gros (plusieurs mo), car il embarque le [run-time Go](https://stackoverflow.com/q/28576173/633864)\net n'a pas de dépendance externe.\n\n## Lancement ⚡\n\nMaintenant que vous avez compilé ou téléchargé le programme, essayons-le. Si vous\nle lancez sans arguments, il affiche un message d'aide. Si vous êtes à la racine\nde votre application Symfony, vous pouvez commencer à observer vos fichiers avec\nla commande suivante : \n\n```\n$ cw .\n```\n\nVous devriez avoir la sortie suivante :\n\n```\n——————————————————————————————————————————————————————————————————————\n  CacheWatcher version v0.5.1 by COil - https://www.strangebuzz.com 🐝\n——————————————————————————————————————————————————————————————————————\nCacheWatcher watches your files (.env, YAML, Twig) and automatically refreshes your application cache.\n——————————————————————————————————————————————————————————————————————\n \u003e Project directory: /Users/coil/Sites/strangebuzz.com\n \u003e Symfony console path: bin/console\n \u003e Symfony env: Symfony 5.4.0 (env: dev, debug: true)\n \u003e 400 file(s) watched in /Users/coil/Sites/strangebuzz.com in 12 millisecond(s).\n \u003e CTRL+C to stop watching or run kill -9 7817.\n```\n\nEt voilà ! Si vous avez un projet Symfony 4 ou 5 avec la structure de répertoire Flex,\nc'est tout ce dont vous avez besoin. \n\nQuand une modification est détectée sur votre fichier `services.yaml` par exemple,\nvous avez le retour suivant : \n\n```\n⬇ Update detected at 17:09:03 \u003e refreshing cache...\n  ✅  Done! in 2.43 second(s).\n```\n\nMaintenant, rafraichissez votre page. Elle devrait être rapide puisque le cache\nest déjà prêt : 🐰\n\n\u003cimg src=\"https://raw.githubusercontent.com/strangebuzz/cache-watcher/master/doc/img/fast-cache.png\" alt=\"Cache already loaded\" align=\"center\" /\u003e\n\nAu lieu d'avoir une page \"lente\" : 🐌\n\n\u003cimg src=\"https://raw.githubusercontent.com/strangebuzz/cache-watcher/master/doc/img/slow-cache.png\" alt=\"Cache refreshed by the browser call\" align=\"center\" /\u003e\n\n💡 Vous pouvez aussi passer un chemin relatif ou absolu comme argument : \n\n```\n$ cw ../strangebuzz.com\n$ cw /Users/coil/Sites/strangebuzz.com \n```\n\nJe l'utilise dans le terminal inclus dans PHPStorm : \n\n\u003cimg src=\"https://raw.githubusercontent.com/strangebuzz/cache-watcher/master/doc/img/cw-phpstorm-terminal.png\" alt=\"Using cw inside a PHPStorn terminal\" align=\"center\" /\u003e\n\n/‼️\\ Attention, si vous fermez la fenêtre PHPStorm, le processus `cw` ne sera pas\nautomatiquement arrêté. /‼️\\\n\n## Arrêt ⛔\n\nVous pouvez soit utiliser *CTRL+C* ou arrêter le processus manuellement grâce au PID\nqui a été affiché dans le message d'accueil :\n\n```\n$ kill -9 28157\n```\n\n## Configuration 🎛️\n\nComme nous l'avons vu précédemment, si votre projet a [une structure Flex](https://symfony.com/doc/current/setup/flex.html), \nles paramètres par défaut devraient être bons. Ces paramètres par défaut seront\ntoujours adaptés à la dernière version mineure de Symfony, actuellement 5.4 :\n\n| Clé                 | Valeur par défaut | Description                                                                                                 |\n|---------------------|-------------------|-------------------------------------------------------------------------------------------------------------|\n| console_path        | bin/console       | Chemin relatif vers la console Symfony                                                                      |\n| env                 | dev               | Correspond au paramètre APP_ENV de l'application Symfony                                                    |\n| debug               | true              | Correspond au paramètre APP_DEBUG de l'application Symfony (true ou false)                                  |\n| config_dir          | config            | Chemin relatif ou sont stockés les fichiers de configuration de l'application Symfony                       |\n| translations_dir    | translations      | Chemin relatif ou sont stockés les fichiers de traductions de l'application Symfony                         |\n| templates_dir       | templates         | Chemin relatif ou sont stockés les templates de l'application Symfony                                       |\n| entities_dir        | src/Entity        | Chemin relatif ou sont stockés les entités Doctrine                                                         |\n| templates_extension | twig              | Extension par défaut des templates                                                                          |\n| yaml_extension      | yaml              | Extension par défaut des fichiers YAML, on considère qu'elle est cohérente pour l'ensemble de l'application |\n| sleep_time          | 30                | Pause entre deux analyses du système de fichiers en millisecondes                                           |\n\nSi vous n'utilisez pas Flex, vous pouvez mettre un fichier `.cw.yaml` à la racine\nde votre projet. Voici la configuration que j'utilise pour un de mes anciens projets\nSymfony 4.4 :\n\n```\nconfig_dir:       app/config\ntranslations_dir: src/AppBundle/Resources/translations\ntemplates_dir:    src/AppBundle/Resources/views\nyaml_extension:   yml\nsleep_time:       30\n```\n\n💡 Le temps de pause (sleep_time) est le paramètre en millisecondes entre deux\nanalyses du système de fichiers. Plus petite est la valeur, plus rapide sera le\nrafraichissement du cache, mais plus haute sera l'utilisation du processeur. J'ai\nconstaté que 30 ms était un bon compromis pour mon Mac Mini 2018 (i7 / 3,2 GHz / 16 go),\nmais vous voudrez surement trouver la valeur la plus adaptée à votre système (avec\ntop ou htop).\n\n## À faire 📋\n\n- [ ] [Ajouter une CI avec les actions GitHub](https://github.com/strangebuzz/cache-watcher/issues/3)\n- [ ] [Ajouter une option pour afficher les fichiers surveillés](https://github.com/strangebuzz/cache-watcher/issues/2)\n- [ ] [Permettre d'avoir une liste blanche additionnelle de fichiers à observer](https://github.com/strangebuzz/cache-watcher/issues/4)\n- [ ] Libre à vous de [créer un ticket](https://github.com/strangebuzz/cache-watcher/issues/new) ➕.\n\n## Contribuer  🤝\n\nVous êtes la bienvenue. Mais n'oubliez pas que je veux garder ce programme aussi\nléger que possible avec un seul but en tête. Même si ce projet est très récent,\nles fonctionnalités principales sont déjà implémentées. \n\n## Truc marrant (ou pas) 😄\n\nQuand je développais `cw`, j'ai beaucoup joué avec les fichiers de configuration.\nUne fois, j'ai modifié un fichier `.env` et il se trouve que quand j'ai rafraîchi\nla page, elle était rapide, genre 50ms. J'ai répété l'opération plusieurs fois, \nmême résultat ! 🤔 Ça m'a pris quelques instants avant de comprendre qu'un processus\n`cw` tournait toujours en tâche de fond. C'est pourquoi je ne pouvais pas constater\nun chargement \"lent\" de ma page. Et voilà, j'avais ma preuve, ça fonctionne ! ™ 😊\n \n## Mérites ™\n\n* Symfony ™ est une marque déposée de [Symfony SAS](https://symfony.com/license).\n* Logo par [Claire Brunaud](https://clairebrunaud.myportfolio.com).\n* Logo Golang original \"Gopher\" par [Renee French](http://reneefrench.blogspot.com).\n\n## Licence ™\n\nCe logiciel est publié sous la [licence MIT](LICENSE).\n\n## Remerciements 👏\n\n* [Jonathan Scheiber](https://github.com/jmsche) pour ces nombreuses relectures\n  de la documentation et des articles du blog.\n\n## Changelog 📒\n\n### V0.5.1\n\n* Ajout de l'executable pour Mac M1\n\n### V0.5.0\n\n* Ajout du support pour surveiller les entités Doctrine (utile pour API Platform)\n\n### V0.4.0\n\n* Version initiale\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstrangebuzz%2Fcache-watcher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstrangebuzz%2Fcache-watcher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstrangebuzz%2Fcache-watcher/lists"}