Documentation
¶
Overview ¶
Package state conserve localement le dernier diagnostic, déjà masqué, pour l'approfondissement et la détection des répétitions.
Index ¶
- Constants
- func Alive(pid int) bool
- func CleanStalePending(dir string)
- func DefaultDir(env func(string) string) string
- func PendingDir(getenv func(string) string, stateDir string) string
- func WritePending(dir string, pid int, text string, now time.Time) error
- type ContainerRef
- type Display
- type FindingRecord
- type HintStore
- type LastDiagnosis
- type Store
Constants ¶
const ( // SchemaVersion est la version du format du fichier d'état. SchemaVersion = 2 // RepeatWindow est la durée pendant laquelle une même erreur est considérée comme répétée. RepeatWindow = 10 * time.Minute )
const ( KindError = "error" KindCmdline = "cmdline" KindExited = "exited" )
Nature du dernier diagnostic.
const MaxLogExcerpt = 20
MaxLogExcerpt est le nombre de lignes de journal affichées et conservées (FR-006).
const MaxStderr = 64 << 10
MaxStderr est la taille maximale du message d'origine conservé (on garde la fin).
Variables ¶
This section is empty.
Functions ¶
func CleanStalePending ¶ added in v0.3.0
func CleanStalePending(dir string)
CleanStalePending supprime les signaux des shells qui n'existent plus, et les fichiers temporaires abandonnés (appelé par shell-init, au chargement de l'intégration).
func DefaultDir ¶
DefaultDir renvoie $XDG_STATE_HOME/telemach, ou ~/.local/state/telemach par défaut.
func PendingDir ¶ added in v0.3.0
PendingDir renvoie le dossier des signaux : $XDG_RUNTIME_DIR/telemach (mémoire, effacé à la déconnexion), sinon le sous-dossier « pending » du dossier d'état.
func WritePending ¶ added in v0.3.0
WritePending écrit un signal pour le shell pid, de façon atomique (fichier temporaire puis renommage : le crochet d'invite ne lit jamais un fichier à moitié écrit), dans un dossier 0700 et un fichier 0600. Si le shell n'existe plus, rien n'est écrit.
Types ¶
type ContainerRef ¶ added in v0.3.0
ContainerRef désigne le conteneur d'une analyse.
type Display ¶ added in v0.3.0
type Display int
Display est la forme d'affichage d'un piège de ligne de commande.
type FindingRecord ¶ added in v0.3.0
FindingRecord conserve un piège de ligne de commande pour « last » et « deepen ».
type HintStore ¶ added in v0.3.0
type HintStore struct {
Dir string
}
HintStore mémorise les empreintes des pièges affichés en complet (feature 003). Les empreintes ne contiennent jamais de valeur saisie par l'apprenant.
type LastDiagnosis ¶
type LastDiagnosis struct {
SchemaVersion int
Fingerprint string
EntryID string
Captures map[string]string
RecordedAt time.Time
// Données nécessaires pour réafficher l'explication complète (docker telemach last).
MatchedEntryID string // entrée reconnue dans le message Docker (EntryID peut désigner un problème Compose)
Origin string
Confidence string
ExitCode int
Interactive bool
DockerVersion string
Stderr string
Family string
Subcommand string
Args []string // arguments de la commande docker, nettoyés et masqués (absent des fichiers antérieurs)
// Feature 003 : avertissement sur la ligne de commande.
Kind string // KindError (défaut, fichiers antérieurs) ou KindCmdline
Findings []FindingRecord // pièges affichés en complet (captures nettoyées et masquées)
// Feature 004 : analyse d'un conteneur arrêté en erreur (jamais de valeur de variable
// d'environnement).
Container ContainerRef `json:",omitempty"`
LogExcerpt []string `json:",omitempty"` // fin du journal, nettoyée et masquée
ComposeDir string
ComposeFiles []string
}
LastDiagnosis est le dernier diagnostic. Toutes les données textuelles (captures, message d'origine) sont déjà nettoyées et masquées avant d'arriver ici.
func (LastDiagnosis) IsCmdline ¶ added in v0.3.0
func (d LastDiagnosis) IsCmdline() bool
IsCmdline indique si le dernier diagnostic est un avertissement sur la ligne de commande.
func (LastDiagnosis) IsExited ¶ added in v0.3.0
func (d LastDiagnosis) IsExited() bool
IsExited indique si le dernier diagnostic est l'analyse d'un conteneur arrêté (feature 004).
type Store ¶
type Store struct {
Dir string
}
Store lit et écrit l'état dans un répertoire privé.
func (Store) IsRepeat ¶
IsRepeat indique si l'empreinte est identique à celle du dernier diagnostic, enregistré il y a moins de RepeatWindow.
func (Store) Load ¶
func (s Store) Load() (LastDiagnosis, bool)
Load lit le dernier diagnostic. Un fichier absent, illisible ou d'un schéma inconnu est ignoré sans erreur.
func (Store) Save ¶
func (s Store) Save(d LastDiagnosis) error
Save écrit le diagnostic de façon atomique (fichier temporaire puis renommage), avec les droits 0700 pour le répertoire et 0600 pour le fichier.