51 lines
929 B
Go
51 lines
929 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_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())
|
|
}
|
|
|
|
|
|
|