✨ add support for panesthesia
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				continuous-integration/drone/push Build is passing
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	continuous-integration/drone/push Build is passing
				
			Close #12
This commit is contained in:
		
							
								
								
									
										7
									
								
								tmux/pane.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								tmux/pane.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | package tmux | ||||||
|  |  | ||||||
|  | type Pane struct { | ||||||
|  | 	Root     string   `yaml:"root,omitempty"` | ||||||
|  | 	Type     string   `yaml:"type,omitempty"` | ||||||
|  | 	Commands []string `yaml:"commands,omitempty"` | ||||||
|  | } | ||||||
							
								
								
									
										23
									
								
								tmux/tmux.go
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								tmux/tmux.go
									
									
									
									
									
								
							| @@ -9,6 +9,11 @@ import ( | |||||||
| 	"syscall" | 	"syscall" | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | const ( | ||||||
|  | 	VerticalSplit   = "vertical" | ||||||
|  | 	HorizontalSplit = "horizontal" | ||||||
|  | ) | ||||||
|  |  | ||||||
| type Tmux struct { | type Tmux struct { | ||||||
| 	BinPath string | 	BinPath string | ||||||
| 	Debug   bool | 	Debug   bool | ||||||
| @@ -51,6 +56,24 @@ func (t *Tmux) Attach(name string) error { | |||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func (t *Tmux) SendKeys(target string, command string) error { | ||||||
|  | 	_, err := t.Exec("send-keys", "-t", target, command, "Enter") | ||||||
|  | 	return err | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (t *Tmux) SplitWindow(target string, split string, root string) error { | ||||||
|  | 	args := []string{"split-window"} | ||||||
|  | 	switch split { | ||||||
|  | 	case VerticalSplit: | ||||||
|  | 		args = append(args, "-v") | ||||||
|  | 	case HorizontalSplit: | ||||||
|  | 		args = append(args, "-h") | ||||||
|  | 	} | ||||||
|  | 	args = append(args, "-t", target, "-c", root) | ||||||
|  | 	_, err := t.Exec(args...) | ||||||
|  | 	return err | ||||||
|  | } | ||||||
|  |  | ||||||
| func (t *Tmux) ListSessions() ([]string, error) { | func (t *Tmux) ListSessions() ([]string, error) { | ||||||
| 	sessions := []string{} | 	sessions := []string{} | ||||||
| 	result, err := t.Exec("ls", "-F", "#{session_name}") | 	result, err := t.Exec("ls", "-F", "#{session_name}") | ||||||
|   | |||||||
| @@ -9,16 +9,29 @@ type Window struct { | |||||||
| 	Root     string   `yaml:"root,omitempty"` | 	Root     string   `yaml:"root,omitempty"` | ||||||
| 	Commands []string `yaml:"commands,omitempty"` | 	Commands []string `yaml:"commands,omitempty"` | ||||||
| 	ID       string   `yaml:"-"` | 	ID       string   `yaml:"-"` | ||||||
|  | 	Panes    []Pane   `yaml:"panes,omitempty"` | ||||||
| } | } | ||||||
|  |  | ||||||
| func (w *Window) Create(tmux *Tmux) { | func (w *Window) Create(tmux *Tmux) { | ||||||
| 	tmux.Run("new-window", "-t", w.ID, "-n", w.Name, "-c", w.Root) | 	tmux.Run("new-window", "-t", w.ID, "-n", w.Name, "-c", w.Root) | ||||||
|  |  | ||||||
|  | 	for i, pane := range w.Panes { | ||||||
|  | 		if i > 0 { | ||||||
|  | 			err := tmux.SplitWindow(w.ID, pane.Type, w.Root) | ||||||
|  | 			if err != nil { | ||||||
|  | 				panic(err) | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		if len(pane.Commands) > 0 { | ||||||
|  | 			tmux.SendKeys(w.ID, strings.Join(pane.Commands, ";")) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func (w *Window) SendCommands(tmux *Tmux) { | func (w *Window) SendCommands(tmux *Tmux) { | ||||||
| 	if len(w.Commands) > 0 { | 	if len(w.Commands) > 0 { | ||||||
| 		tmux.Run("send-keys", "-t", w.ID, strings.Join(w.Commands, ";")) | 		tmux.SendKeys(w.ID, strings.Join(w.Commands, ";")) | ||||||
| 		tmux.Run("send-keys", "-t", w.ID, "Enter") |  | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user