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_raw, " ", 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()) }