Skip to content

Commit d39d6be

Browse files
committed
Switch command line options to be similar to docker-compose.
1 parent cb6b73b commit d39d6be

File tree

3 files changed

+54
-27
lines changed

3 files changed

+54
-27
lines changed

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
2+
=== Similar projects
3+
4+
* teamocil
5+
* tmuxinator
6+
* tmuxstart

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
module tmuxer
1+
module tmux-compose
22

33
go 1.12
44

tmuxer.go renamed to main.go

Lines changed: 47 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,10 @@ func SendLine(target, text string) {
7878
run("tmux", "send-keys", "-R", "-t "+target, "Enter")
7979
}
8080

81+
func KillSession(session string) {
82+
run("tmux", "kill-session", "-t "+session)
83+
}
84+
8185
func coalesce(args ...string) string {
8286
for _, s := range args {
8387
if s != "" {
@@ -87,31 +91,7 @@ func coalesce(args ...string) string {
8791
return ""
8892
}
8993

90-
func main() {
91-
var override string
92-
flag.StringVar(&override, "s", "", "Override the config files session name.")
93-
flag.Parse()
94-
95-
if flag.Arg(0) == "" {
96-
fmt.Println("Usage: ", os.Args[0], "[-s <name>] <config file>")
97-
os.Exit(1)
98-
}
99-
flag.Arg(0)
100-
101-
data, err := ioutil.ReadFile(flag.Arg(0))
102-
if err != nil {
103-
log.Fatal(err)
104-
}
105-
106-
var project Project
107-
108-
err = yaml.UnmarshalStrict(data, &project)
109-
if err != nil {
110-
log.Fatal(err)
111-
}
112-
113-
session := coalesce(override, project.Name, "new")
114-
94+
func up(session string, project *Project) {
11595
for wi, w := range project.Windows {
11696
target := fmt.Sprintf("%s:%d", session, wi)
11797
dir := coalesce(w.Dir, project.Dir, ".")
@@ -129,9 +109,50 @@ func main() {
129109
}
130110

131111
for wi, w := range project.Windows {
132-
target := fmt.Sprintf("%s:%d", session, wi)
133112
if w.Focus {
113+
target := fmt.Sprintf("%s:%d", session, wi)
134114
SelectWindow(target)
135115
}
136116
}
137117
}
118+
119+
func down(session string, project *Project) {
120+
KillSession(session)
121+
}
122+
123+
var defaultFile = "tmux-compose.yml"
124+
125+
func main() {
126+
var overrideName string
127+
var composeFile string
128+
flag.StringVar(&overrideName, "s", "", "Override the config files session name.")
129+
flag.StringVar(&composeFile, "f", defaultFile, "Specify an alternate compose file")
130+
flag.Parse()
131+
132+
if flag.Arg(0) == "" {
133+
fmt.Println("Usage: ", os.Args[0], "[OPTIONS] <up> | <down>")
134+
os.Exit(1)
135+
}
136+
137+
data, err := ioutil.ReadFile(composeFile)
138+
if err != nil {
139+
log.Fatal(err)
140+
}
141+
142+
var project Project
143+
144+
err = yaml.UnmarshalStrict(data, &project)
145+
if err != nil {
146+
log.Fatal(err)
147+
}
148+
149+
session := coalesce(overrideName, project.Name, "new")
150+
action := flag.Arg(0)
151+
152+
switch action {
153+
case "up":
154+
up(session, &project)
155+
case "down":
156+
down(session, &project)
157+
}
158+
}

0 commit comments

Comments
 (0)