From ca29c1c439b1439fcb97008fdc734e5f287e54cf Mon Sep 17 00:00:00 2001 From: Alexandre Date: Fri, 31 Jan 2025 08:47:23 +0100 Subject: [PATCH] Added path inside the prompt --- main.go | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/main.go b/main.go index 3326353..1615294 100644 --- a/main.go +++ b/main.go @@ -16,7 +16,7 @@ func main() { // Configuration du shell interactif rl, err := readline.NewEx(&readline.Config{ - Prompt: "> ", + Prompt: getPrompt(), // Utilise une fonction pour générer le prompt dynamiquement HistoryFile: historyFile, // Permet de sauvegarder et charger l'historique AutoComplete: nil, // Peut être amélioré avec l'autocomplétion }) @@ -27,6 +27,9 @@ func main() { defer rl.Close() for { + // Mettre à jour le prompt avec le répertoire courant + rl.SetPrompt(getPrompt()) + // Lecture de l'entrée utilisateur avec édition et historique input, err := rl.Readline() if err != nil { // EOF ou Ctrl+D @@ -46,6 +49,30 @@ func main() { } } +// Fonction pour générer le prompt avec le répertoire courant +func getPrompt() string { + wd, err := os.Getwd() + if err != nil { + wd = "?" + } + + // Récupérer le répertoire home de l'utilisateur + homeDir, err := os.UserHomeDir() + if err != nil { + homeDir = "" // Si on ne peut pas obtenir le home, on ne fait pas de remplacement + } + + // Remplacer le chemin du home par "~" + if homeDir != "" && strings.HasPrefix(wd, homeDir) { + wd = "~" + strings.TrimPrefix(wd, homeDir) + } + + // Séquence ANSI pour le texte en bleu (optionnel) + blue := "\033[34m" + reset := "\033[0m" + return fmt.Sprintf("%s[%s]%s > ", blue, wd, reset) +} + func execInput(input string) error { input = strings.TrimSuffix(input, "\n") args := strings.Split(input, " ") @@ -64,7 +91,7 @@ func execInput(input string) error { case "exit": os.Exit(0) case "version": - fmt.Println("GoShell Version 1.0.0") + fmt.Println("GoShell Version 2.0.0") return nil }