Help us shape the future of Go! Take the 2026 Go Developer Survey

state

package
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 16, 2026 License: Apache-2.0 Imports: 10 Imported by: 0

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

View Source
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
)
View Source
const (
	KindError   = "error"
	KindCmdline = "cmdline"
	KindExited  = "exited"
)

Nature du dernier diagnostic.

View Source
const MaxLogExcerpt = 20

MaxLogExcerpt est le nombre de lignes de journal affichées et conservées (FR-006).

View Source
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 Alive added in v0.3.0

func Alive(pid int) bool

Alive indique si le processus pid existe encore.

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

func DefaultDir(env func(string) string) string

DefaultDir renvoie $XDG_STATE_HOME/telemach, ou ~/.local/state/telemach par défaut.

func PendingDir added in v0.3.0

func PendingDir(getenv func(string) string, stateDir string) string

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

func WritePending(dir string, pid int, text string, now time.Time) error

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

type ContainerRef struct {
	Name string
	ID   string // identifiant court (12 caractères)
}

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.

const (
	DisplayFull     Display = iota // explication complète
	DisplayReminder                // rappel d'une ligne (déjà affiché il y a moins de 10 minutes)
	DisplaySilent                  // rien (information déjà donnée pour cette image depuis moins de 24 h)
)

func (Display) String added in v0.3.0

func (d Display) String() string

type FindingRecord added in v0.3.0

type FindingRecord struct {
	EntryID  string
	Captures map[string]string
}

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.

func (HintStore) Decide added in v0.3.0

func (h HintStore) Decide(fingerprint string, imageRule bool, now time.Time) Display

Decide choisit la forme d'affichage d'un piège selon son dernier affichage complet. imageRule vaut vrai pour l'information « image sans tag », jamais répétée avant 24 h.

func (HintStore) Record added in v0.3.0

func (h HintStore) Record(fingerprints []string, now time.Time) error

Record enregistre l'affichage complet des empreintes données, purge les entrées de plus de 24 h et ne garde que les maxHints plus récentes.

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

func (s Store) IsRepeat(fingerprint string, now time.Time) bool

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL