HeadlinesBriefing HeadlinesBriefing.com

once : exécuter une commande une fois, réutiliser sa sortie

Hacker News •
×

once est un outil en ligne de commande qui exécute une commande une seule fois dans votre répertoire courant, affiche sa sortie standard (stdout) et conserve ce résultat en mémoire dans un petit démon d'arrière-plan propre à chaque utilisateur. Les appels répétés avec la même commande, le même répertoire et la même clé de locataire reçoivent une réponse depuis la mémoire jusqu'à l'expiration de l'entrée. Le démon s'arrête automatiquement une fois sa dernière entrée expirée.

Le cas d'usage typique consiste à lire des secrets depuis 1Password sans valider chaque lecture avec votre empreinte digitale. Une clé de locataire, définie une fois par session de terminal dans ~/.zshrc, permet d'exporter un jeton tel que GITHUB_TOKEN à partir d'une commande comme `once --ttl 8h --no-dir -- op read op://Private/Git Hub/token`. Le premier appel demande une authentification ; les appels suivants, dans les huit heures, n'en demandent pas. Le même schéma fonctionne avec mise, soit globalement, soit dans un fichier mise.local.toml propre à un projet.

L'installation nécessite Go 1.27 ou une version ultérieure, via `go install github.com/alex0ptr/once@latest`. L'outil n'a pas d'autre dépendance que la bibliothèque standard et ne fonctionne que sous macOS et Linux. Ses principales commandes sont `once --ttl DURATION`, `once status` pour afficher le démon et le nombre de ses entrées, `once clear` pour supprimer toutes les valeurs en cache, et `once help`.

Seule la sortie standard est mise en cache. Les résultats des commandes qui se terminent avec un code de sortie non nul ne sont jamais mis en cache, et le code de sortie est transmis. Par défaut, le répertoire de travail fait partie de la clé de cache, mais l'option --no-dir le retire, si bien qu'une seule valeur en cache sert à tous les répertoires. L'option --until fixe une échéance absolue, comme 22 h aujourd'hui ou demain matin, la première atteinte l'emportant sur --ttl.

Source: Hacker News · Résumé par HeadlinesBriefing