bbash/command/head/head.go
Tobias P.L Wennberg 15eeadf5d3 initial
2025-01-10 13:29:56 +01:00

51 lines
925 B
Go

package head
import (
"bbash/environment"
"bbash/input_parser"
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func Head(in input_parser.Input, env *environment.Env) {
args := strings.SplitN(in.Args, " ", 2)
var file_path string
var lines int
if len(args) >= 1 {
file_path = strings.TrimSpace(args[0])
lines = 10
} else {
fmt.Print(fmt.Sprintf("No arguments provided"))
return
}
if len(args) == 2 {
lines1, err := strconv.Atoi(strings.TrimSpace(args[1]))
lines = lines1
if err != nil {
fmt.Print(fmt.Sprintf("Second argument must be a integer"))
return
}
}
file, err := os.Open(file_path)
if err != nil {
fmt.Println(fmt.Sprintf("Error opening file: %s", err.Error()))
return
}
defer file.Close()
scanner := bufio.NewScanner(file)
for i := 0; i < lines-1; i++ {
if(!scanner.Scan()) {
return
}
fmt.Println(scanner.Text())
}
scanner.Scan()
fmt.Print(scanner.Text())
}