Fix merge

This commit is contained in:
Tobias P.L Wennberg 2025-01-12 09:35:41 +01:00
parent f0cbfb1db5
commit e239096ef7
12 changed files with 33 additions and 28 deletions

View File

@ -9,7 +9,7 @@ import (
) )
func Cat(in input_parser.Input, env *environment.Env) { func Cat(in input_parser.Input, env *environment.Env) {
file := filepath.Join(env.Path, in.Args) file := filepath.Join(env.Path, in.Args_raw)
bytea_str, err := os.ReadFile(file) bytea_str, err := os.ReadFile(file)
if err != nil { if err != nil {
fmt.Print(fmt.Sprintf("Lilla råttan åt upp din kod", err.Error())) fmt.Print(fmt.Sprintf("Lilla råttan åt upp din kod", err.Error()))

View File

@ -10,13 +10,13 @@ import (
func Cd(in input_parser.Input, env *environment.Env) { func Cd(in input_parser.Input, env *environment.Env) {
var new_path string var new_path string
if in.Args == "" { if in.Args_raw == "" {
new_path = env.Env["HOME"] new_path = env.Env["HOME"]
} else { } else {
if in.Args[0] == '/' { if in.Args_raw[0] == '/' {
new_path = in.Args new_path = in.Args_raw
} else { } else {
new_path = filepath.Join(env.Path, in.Args) new_path = filepath.Join(env.Path, in.Args_raw)
} }
} }
file, err := os.Stat(new_path) file, err := os.Stat(new_path)

View File

@ -69,7 +69,7 @@ func run_by_path(in input_parser.Input, env *environment.Env) bool {
if !errB { if !errB {
return false return false
} }
cmd := exec.Command(instr, strings.Fields(in.Args)...) cmd := exec.Command(instr, strings.Fields(in.Args_raw)...)
output, _ := cmd.CombinedOutput() output, _ := cmd.CombinedOutput()
print(string(output)) print(string(output))
return true return true

View File

@ -10,7 +10,7 @@ import (
) )
func Cp(in input_parser.Input, env *environment.Env) { func Cp(in input_parser.Input, env *environment.Env) {
args := strings.SplitN(in.Args, " ", 2) args := strings.SplitN(in.Args_raw, " ", 2)
if len(args) != 2 { if len(args) != 2 {
fmt.Print("No right amount of args") fmt.Print("No right amount of args")
return return

View File

@ -7,6 +7,6 @@ import (
) )
func Echo(in input_parser.Input, _ *environment.Env) { func Echo(in input_parser.Input, _ *environment.Env) {
fmt.Print(in.Args) fmt.Print(in.Args_raw)
// fungerar inte om råttan åt din kod // fungerar inte om råttan åt din kod
} }

View File

@ -11,7 +11,7 @@ import (
) )
func Head(in input_parser.Input, env *environment.Env) { func Head(in input_parser.Input, env *environment.Env) {
args := strings.SplitN(in.Args, " ", 2) args := strings.SplitN(in.Args_raw, " ", 2)
var file_path string var file_path string
var lines int var lines int
if len(args) >= 1 { if len(args) >= 1 {

View File

@ -8,16 +8,21 @@ import (
"slices" "slices"
) )
var flagsArray []string = []string{"a ", "help "}
var flagsDictionary map[string]string = map[string]string{"a": "-a shows hidden directories", "help": "-help shows this message"}
func Ls(in input_parser.Input, env *environment.Env) { func Ls(in input_parser.Input, env *environment.Env) {
flagsArray := []string {
"a ",
"help ",
}
flagsDictionary := map[string]string {
"a": "-a shows hidden directories",
"help": "-help shows this message",
}
if slices.Contains(in.Flags, "help") { if slices.Contains(in.Flags, "help") {
fmt.Printf("Lists Sources in the current working directory") fmt.Printf("Lists Sources in the current working directory")
fmt.Printf("Supported flags are:") fmt.Printf("Supported flags are:")
for i := 0; i < len(flagsArray); i++ { for _, flag := range flagsArray {
fmt.Println(flagsArray[i] + flagsDictionary[flagsArray[i]]) fmt.Println(flag + flagsDictionary[flag])
} // this prints all flags and their description } // Print flags and there description
} }
fs, err := os.ReadDir(env.Path) fs, err := os.ReadDir(env.Path)
if err != nil { if err != nil {

View File

@ -7,7 +7,7 @@ import (
) )
func Man(in input_parser.Input, env *environment.Env) { func Man(in input_parser.Input, env *environment.Env) {
switch in.Args { switch in.Args_raw {
case "pwd": case "pwd":
fmt.Print("Output current working directory") fmt.Print("Output current working directory")
case "echo": case "echo":

View File

@ -10,7 +10,7 @@ import (
) )
func Mv(in input_parser.Input, env *environment.Env) { func Mv(in input_parser.Input, env *environment.Env) {
args := strings.SplitN(in.Args, " ", 2) args := strings.SplitN(in.Args_raw, " ", 2)
if len(args) != 2 { if len(args) != 2 {
fmt.Print("No right amount of args") fmt.Print("No right amount of args")
return return

View File

@ -9,11 +9,10 @@ import (
) )
func Rm(in input_parser.Input, env *environment.Env) { func Rm(in input_parser.Input, env *environment.Env) {
file_path := filepath.Join(env.Path, in.Args) file_path := filepath.Join(env.Path, in.Args_raw)
stat, err := os.Stat(file_path) stat, err := os.Stat(file_path)
if os.IsNotExist(err) { if os.IsNotExist(err) {
fmt.Println(fmt.Sprintf("File does not exist")) fmt.Println(fmt.Sprintf("File does not exist"))
fmt.Print(fmt.Sprintf("Try 'bash rm -rf /' instead"))
return return
} }
if stat.IsDir() { if stat.IsDir() {

View File

@ -9,7 +9,7 @@ import (
) )
func Touch(in input_parser.Input, env *environment.Env) { func Touch(in input_parser.Input, env *environment.Env) {
file_path := filepath.Join(env.Path, in.Args) file_path := filepath.Join(env.Path, in.Args_raw)
_, err := os.Stat(file_path) _, err := os.Stat(file_path)
if !os.IsNotExist(err) { if !os.IsNotExist(err) {
fmt.Print(fmt.Sprintf("File alredy exist!")) fmt.Print(fmt.Sprintf("File alredy exist!"))

View File

@ -26,22 +26,23 @@ func parse(input string) Input {
instruction := strings.TrimSpace(split[0]) instruction := strings.TrimSpace(split[0])
var flags []string var flags []string
var args []string var args []string
for i := 0; i < len(split); i++ {
if split[i][0:2] == "--" { for _, arg := range split[1:] {
var result = strings.TrimSpace(split[i]) if arg[0:2] == "--" {
var result = strings.TrimSpace(arg)
flags = append(flags, string(result[2:])) flags = append(flags, string(result[2:]))
continue continue
} else if split[i][0] == '-' { } else if arg[0] == '-' {
var result = strings.TrimSpace(split[i]) var result = strings.TrimSpace(arg)
for _, c := range result[1:] { for _, c := range result[1:] {
flags = append(flags, string(c)) flags = append(flags, string(c))
} }
continue continue
} else if i != 0 { } else {
args = append(args, strings.TrimSpace(split[i])) args = append(args, strings.TrimSpace(arg))
} }
}
}
return Input{ return Input{
Instruction: instruction, Instruction: instruction,
Args: args, Args: args,