From 8f6ad9817b01285b90b7f0684a11617e3297097f Mon Sep 17 00:00:00 2001 From: TakshakRamteke Date: Sun, 24 Nov 2024 23:30:40 +0530 Subject: [PATCH] FEAT : added logic for a basic REPL --- main.go | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/main.go b/main.go index e69de29..9598072 100644 --- a/main.go +++ b/main.go @@ -0,0 +1,50 @@ +package main + +import ( + "fmt" + "os" +) + +type inputBuffer struct { + buffer string + bufferLength int + inputLength int +} + +func createInputBuffer() inputBuffer { + newInputBuffer := inputBuffer{"", 0, 0} + return newInputBuffer +} + +func printConsole() { + fmt.Print("godb > ") +} + +func readConsole(inputBuffer inputBuffer) inputBuffer { + fmt.Scanf("%s", &inputBuffer.buffer) + bytesRead := len(inputBuffer.buffer) + if bytesRead <= 0 { + fmt.Println("Error reading input") + os.Exit(1) + } + inputBuffer.inputLength = bytesRead - 1 + + return inputBuffer +} + +func main() { + inputBuffer := createInputBuffer() + condition := true + for condition { + printConsole() + inputBuffer = readConsole(inputBuffer) + + if inputBuffer.buffer == ".exit" { + fmt.Println("bye!") + os.Exit(0) + } else { + fmt.Printf("unrecognised command %v\n", inputBuffer.buffer) + } + + } +}