added ~ as home processing
This commit is contained in:
parent
7062e798a9
commit
9e46cc9105
@ -2,13 +2,17 @@ package cmd
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"gosh/types"
|
"gosh/types"
|
||||||
|
"gosh/util"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GoshCat(sh *types.Shell, filename string) types.CmdOutput {
|
func GoshCat(sh *types.Shell, file_path string) types.CmdOutput {
|
||||||
data, err := os.ReadFile(filename)
|
|
||||||
|
file_path = util.ExpandHome(file_path)
|
||||||
|
|
||||||
|
data, err := os.ReadFile(file_path)
|
||||||
red := color.New(color.FgRed).SprintFunc()
|
red := color.New(color.FgRed).SprintFunc()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return types.CmdOutput{Id: 1, Output: red(err)}
|
return types.CmdOutput{Id: 1, Output: red(err)}
|
||||||
|
|||||||
@ -4,11 +4,15 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
|
|
||||||
"gosh/types"
|
"gosh/types"
|
||||||
|
"gosh/util"
|
||||||
|
|
||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GoshCd(sh *types.Shell, dir string) types.CmdOutput {
|
func GoshCd(sh *types.Shell, dir string) types.CmdOutput {
|
||||||
|
|
||||||
|
dir = util.ExpandHome(dir)
|
||||||
|
|
||||||
err := os.Chdir(dir)
|
err := os.Chdir(dir)
|
||||||
red := color.New(color.FgRed).SprintFunc()
|
red := color.New(color.FgRed).SprintFunc()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
17
cmd/ls.go
17
cmd/ls.go
@ -2,14 +2,27 @@ package cmd
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"gosh/types"
|
"gosh/types"
|
||||||
|
"gosh/util"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GoshLs(sh *types.Shell) types.CmdOutput {
|
func GoshLs(sh *types.Shell, paths ...string) types.CmdOutput {
|
||||||
children, err := os.ReadDir(sh.Cd)
|
|
||||||
|
var dir string
|
||||||
|
|
||||||
|
if len(paths) > 0 && paths[0] != "" {
|
||||||
|
dir = paths[0]
|
||||||
|
} else {
|
||||||
|
dir = sh.Cd
|
||||||
|
}
|
||||||
|
|
||||||
|
dir = util.ExpandHome(dir)
|
||||||
|
|
||||||
|
children, err := os.ReadDir(dir)
|
||||||
|
|
||||||
red := color.New(color.FgRed).SprintFunc()
|
red := color.New(color.FgRed).SprintFunc()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return types.CmdOutput{Id: 1, Output: red(err)}
|
return types.CmdOutput{Id: 1, Output: red(err)}
|
||||||
|
|||||||
@ -2,12 +2,16 @@ package cmd
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"gosh/types"
|
"gosh/types"
|
||||||
|
"gosh/util"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GolshPyapath(sh *types.Shell, path string) types.CmdOutput {
|
func GolshPyapath(sh *types.Shell, path string) types.CmdOutput {
|
||||||
|
|
||||||
|
path = util.ExpandHome(path)
|
||||||
|
|
||||||
abs, err := filepath.Abs(path)
|
abs, err := filepath.Abs(path)
|
||||||
|
|
||||||
red := color.New(color.FgRed).SprintFunc()
|
red := color.New(color.FgRed).SprintFunc()
|
||||||
|
|||||||
34
main.go
34
main.go
@ -43,6 +43,21 @@ func parse_flags(parts []string) (map[string]string, []string) {
|
|||||||
return flags, args
|
return flags, args
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func process_golshscript(sh *types.Shell, file_path string) {
|
||||||
|
data, err := os.ReadFile(file_path)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Error: ", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
lines := strings.Split(string(data), "\n")
|
||||||
|
|
||||||
|
for _, line := range lines {
|
||||||
|
gosh_process_input(sh, strings.TrimSpace(line))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func check_pathes(sh *types.Shell, name string, args []string) bool {
|
func check_pathes(sh *types.Shell, name string, args []string) bool {
|
||||||
var output types.CmdOutput
|
var output types.CmdOutput
|
||||||
|
|
||||||
@ -105,7 +120,11 @@ func gosh_process_input(sh *types.Shell, input string) {
|
|||||||
}
|
}
|
||||||
prevOutput = cmd.GoshCd(sh, parts[1])
|
prevOutput = cmd.GoshCd(sh, parts[1])
|
||||||
case "ls":
|
case "ls":
|
||||||
prevOutput = cmd.GoshLs(sh)
|
if len(parts) > 1 {
|
||||||
|
prevOutput = cmd.GoshLs(sh, parts[1:]...)
|
||||||
|
} else {
|
||||||
|
prevOutput = cmd.GoshLs(sh)
|
||||||
|
}
|
||||||
case "cat":
|
case "cat":
|
||||||
if len(parts) < 2 {
|
if len(parts) < 2 {
|
||||||
fmt.Println("Usage: cat <path to file>")
|
fmt.Println("Usage: cat <path to file>")
|
||||||
@ -155,6 +174,19 @@ func main() {
|
|||||||
Cd: dir,
|
Cd: dir,
|
||||||
PyPaths: []string{}}
|
PyPaths: []string{}}
|
||||||
|
|
||||||
|
// Check for and execute .golshrc
|
||||||
|
golshrc_path, _ := os.UserHomeDir()
|
||||||
|
golshrc_path = golshrc_path + "/.golshrc"
|
||||||
|
|
||||||
|
_, err := os.Stat(golshrc_path)
|
||||||
|
|
||||||
|
golshrc_exists := err == nil
|
||||||
|
fmt.Println(golshrc_exists)
|
||||||
|
if golshrc_exists {
|
||||||
|
fmt.Println("exists")
|
||||||
|
process_golshscript(&sh, golshrc_path)
|
||||||
|
}
|
||||||
|
|
||||||
var should_exit = false
|
var should_exit = false
|
||||||
for {
|
for {
|
||||||
c.Print(sh.Cd)
|
c.Print(sh.Cd)
|
||||||
|
|||||||
17
util/util.go
Normal file
17
util/util.go
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
package util
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
func ExpandHome(path string) string {
|
||||||
|
if strings.HasPrefix(path, "~") {
|
||||||
|
home, err := os.UserHomeDir()
|
||||||
|
if err == nil {
|
||||||
|
return strings.Replace(path, "~", home, 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return path
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user