mirror of
				https://github.com/sammy-ette/Hilbish
				synced 2025-08-10 02:52:03 +00:00 
			
		
		
		
	Compare commits
	
		
			11 Commits
		
	
	
		
			4a08ab7837
			...
			7486d58465
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 7486d58465 | ||
|  | aea035fe41 | ||
|  | c5fa238156 | ||
|  | e4218a135a | ||
|  | eeafd1e5cf | ||
|  | deb1bc8a5e | ||
|  | 1c1ec87612 | ||
|  | 972c6e44b3 | ||
|  | d3bd47963d | ||
|  | bad357af48 | ||
|  | e4c3445f59 | 
							
								
								
									
										2
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Makefile
									
									
									
									
									
								
							| @ -9,12 +9,14 @@ install: | ||||
| 	@install -v -d "$(BINDIR)/" && install -m 0755 -v hilbish "$(BINDIR)/hilbish" | ||||
| 	@mkdir -p "$(LIBDIR)" | ||||
| 	@cp libs preload.lua .hilbishrc.lua "$(LIBDIR)" -r | ||||
| 	@echo /usr/bin/hilbish >> /etc/shells | ||||
| 	@echo "Hilbish Installed" | ||||
| 
 | ||||
| uninstall: | ||||
| 	@rm -vrf \
 | ||||
| 			"$(BINDIR)/hilbish" \
 | ||||
| 			"$(LIBDIR)" | ||||
| 	@sed '/\/usr\/bin\/hilbish/d' /etc/shells | ||||
| 	@echo "Hilbish Uninstalled" | ||||
| 
 | ||||
| clean: | ||||
|  | ||||
| @ -4,9 +4,6 @@ | ||||
| It is currently in a mostly beta state but is very much usable | ||||
| (I'm using it right now). | ||||
| 
 | ||||
| There are still some things missing like pipes but granted that will be | ||||
| added soon. (or you can use dev branch) | ||||
| 
 | ||||
| # Links | ||||
| - **[Documentation](https://github.com/Hilbis/Hilbish/wiki)** | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										22
									
								
								golibs/bait/bait.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								golibs/bait/bait.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | ||||
| package bait | ||||
| 
 | ||||
| import ( | ||||
| 	"github.com/chuckpreslar/emission" | ||||
| 	"github.com/yuin/gopher-lua" | ||||
| ) | ||||
| 
 | ||||
| type Bait struct{} | ||||
| 
 | ||||
| func New() Bait { | ||||
| 	return Bait{} | ||||
| } | ||||
| 
 | ||||
| func (b *Bait) Loader(L *lua.LState) int { | ||||
| 	var exports = map[string]lua.LGFunction{} | ||||
| 	mod := L.SetFuncs(L.NewTable(), exports) | ||||
| 
 | ||||
| 	L.Push(mod) | ||||
| 
 | ||||
| 	return 1 | ||||
| } | ||||
| 
 | ||||
							
								
								
									
										67
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										67
									
								
								main.go
									
									
									
									
									
								
							| @ -1,7 +1,7 @@ | ||||
| package main | ||||
| 
 | ||||
| import ( | ||||
| 	_ "bufio" | ||||
| 	"bufio" | ||||
| 	"fmt" | ||||
| 	"os" | ||||
| 	_ "os/exec" | ||||
| @ -63,12 +63,14 @@ func main() { | ||||
| 	} | ||||
| 
 | ||||
| 	homedir, _ := os.UserHomeDir() | ||||
| 	err = os.WriteFile(homedir + "/.hilbishrc.lua", input, 0644) | ||||
| 	if err != nil { | ||||
| 		fmt.Println("Error creating config file") | ||||
| 		fmt.Println(err) | ||||
| 		return | ||||
|         } | ||||
| 	if _, err := os.Stat(homedir + "/.hilbishrc.lua"); os.IsNotExist(err) { | ||||
| 		err = os.WriteFile(homedir + "/.hilbishrc.lua", input, 0644) | ||||
| 		if err != nil { | ||||
| 			fmt.Println("Error creating config file") | ||||
| 			fmt.Println(err) | ||||
| 			return | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	HandleSignals() | ||||
| 	LuaInit() | ||||
| @ -83,7 +85,7 @@ func main() { | ||||
| 
 | ||||
| 		//fmt.Printf(prompt) | ||||
| 
 | ||||
| 		cmdString, err := readline.String(prompt) | ||||
| 		cmdString, err := readline.String(fmtPrompt()) | ||||
| 		if err == io.EOF { | ||||
| 			fmt.Println("") | ||||
| 			break | ||||
| @ -94,7 +96,10 @@ func main() { | ||||
| 		cmdString = strings.TrimSuffix(cmdString, "\n") | ||||
| 		err = l.DoString(cmdString) | ||||
| 
 | ||||
| 		if err == nil { continue } | ||||
| 		if err == nil { | ||||
| 			readline.AddHistory(cmdString) | ||||
| 			continue | ||||
| 		} | ||||
| 
 | ||||
| 		cmdArgs := splitInput(cmdString) | ||||
| 		if len(cmdArgs) == 0 { continue } | ||||
| @ -129,12 +134,49 @@ func main() { | ||||
| 		default: | ||||
| 			err := execCommand(cmdString) | ||||
| 			if err != nil { | ||||
| 				fmt.Fprintln(os.Stderr, err) | ||||
| 				if syntax.IsIncomplete(err) { | ||||
| 					sb := &strings.Builder{} | ||||
| 					for { | ||||
| 						done := StartMultiline(cmdString, sb) | ||||
| 						if done { | ||||
| 							break | ||||
| 						} | ||||
| 					} | ||||
| 				} else { | ||||
| 					fmt.Fprintln(os.Stderr, err) | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func fmtPrompt() string { | ||||
| 	return prompt | ||||
| } | ||||
| 
 | ||||
| func StartMultiline(prev string, sb *strings.Builder) bool { | ||||
| 	if sb.String() == "" { sb.WriteString(prev + "\n") } | ||||
| 
 | ||||
| 	fmt.Printf("... ") | ||||
| 
 | ||||
| 	reader := bufio.NewReader(os.Stdin) | ||||
| 
 | ||||
| 	cont, err := reader.ReadString('\n') | ||||
| 	if err == io.EOF { | ||||
| 		fmt.Println("") | ||||
| 		return true | ||||
| 	} | ||||
| 
 | ||||
| 	sb.WriteString(cont) | ||||
| 
 | ||||
| 	err = execCommand(sb.String()) | ||||
| 	if err != nil && syntax.IsIncomplete(err) { | ||||
| 		return false | ||||
| 	} | ||||
| 
 | ||||
| 	return true | ||||
| } | ||||
| 
 | ||||
| func splitInput(input string) []string { | ||||
| 	quoted := false | ||||
| 	cmdArgs := []string{} | ||||
| @ -165,10 +207,7 @@ func splitInput(input string) []string { | ||||
| func execCommand(cmd string) error { | ||||
| 	file, err := syntax.NewParser().Parse(strings.NewReader(cmd), "") | ||||
| 	if err != nil { | ||||
| 		if syntax.IsIncomplete(err) { | ||||
| 			fmt.Println("incomplete input") | ||||
| 			return nil | ||||
| 		} | ||||
| 		return err | ||||
| 	} | ||||
| 	runner, _ := interp.New( | ||||
| 		interp.StdIO(os.Stdin, os.Stdout, os.Stderr), | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user