termrc 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +6 -4
- data/lib/template/run.osascript +4 -4
- data/lib/template/termfile_columns.template +16 -0
- data/lib/termrc/builder.rb +23 -9
- data/lib/termrc/cli.rb +6 -5
- data/termrc.gemspec +2 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb96a3064c8c5a0f871c01ccd774a2ba87496723
|
4
|
+
data.tar.gz: 975c01579b724e0e619605c01d2f2ed712b17ef0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ce0de338003dd475d15aca399c9812faec70f3471e1254d5296beab79ddb815416f2bb16e9627dd3266d01e1e8beb30f92a7f586f00c3052213b9304b9210896
|
7
|
+
data.tar.gz: ba52abd1de34154e9a878832746d4386506bad01d6a151f4dbff271bf62c81643655c84b921662d01525eff9a32a79dd47a1ce9dfec1a49628b209b12e2ea5da
|
data/README.md
CHANGED
@@ -14,8 +14,8 @@ $ termrc create
|
|
14
14
|
$ termrc start
|
15
15
|
```
|
16
16
|
|
17
|
-
|
18
|
-
|
17
|
+
The Termfile
|
18
|
+
------------
|
19
19
|
The `Termfile` file is a [YAML](http://en.wikipedia.org/wiki/YAML) file which stores information about your project's environment. An environment, in this context, is an iTerm2 window with various panes, each with a different default command that is run when the pane opens. The `layout` dictates what your window looks like, while `commands` gives you a set of commands you can call for each pane.
|
20
20
|
|
21
21
|
Place the `Termfile` file at your project's root, then call `termrc start`. Voila!
|
@@ -42,11 +42,13 @@ A `Termfile` file is a YAML file which requires two keys: `commands` and a `layo
|
|
42
42
|
|
43
43
|
<img src="https://rawgithub.com/briangonzalez/termrc/master/images/termrc-screen.png">
|
44
44
|
|
45
|
-
You can supply an optional
|
45
|
+
You can supply an optional key, `root`, which indicates the root directory you'd like each command to be run inside of. Have a look at [this project's Termfile](https://github.com/briangonzalez/termrc/blob/master/Termfile.test) for an example.
|
46
|
+
|
47
|
+
You can also supply a `layout_type` value, either `row` or `column`, which denotes whether to use rows or columns as the means for splitting the window. This defaults to `layout_type: row`.
|
46
48
|
|
47
49
|
**Tabs**
|
48
50
|
|
49
|
-
You can automate tabs by providing an array of arrays, each array denoting a new tab and the layout within it. See [this template file](https://github.com/briangonzalez/termrc/blob/master/lib/template/
|
51
|
+
You can automate tabs by providing an array of arrays, each array denoting a new tab and the layout within it. See [this template file](https://github.com/briangonzalez/termrc/blob/master/lib/template/termfile_with_tabs.template) for an example.
|
50
52
|
|
51
53
|
CLI
|
52
54
|
---
|
data/lib/template/run.osascript
CHANGED
@@ -9,13 +9,13 @@ tell application "iTerm"
|
|
9
9
|
-- Create a new session.
|
10
10
|
[session]
|
11
11
|
|
12
|
-
-- Create rows.
|
13
|
-
[
|
12
|
+
-- Create primary divider (rows or columns).
|
13
|
+
[primary]
|
14
14
|
|
15
15
|
-- Sleep for a bit while we catch up.
|
16
16
|
[sleep]
|
17
17
|
|
18
|
-
-- Create panes within each
|
18
|
+
-- Create panes within each primary divider.
|
19
19
|
[panes]
|
20
20
|
|
21
21
|
-- Terminate first or last session, which are unused.
|
@@ -32,4 +32,4 @@ tell application "iTerm"
|
|
32
32
|
-- Reposition window.
|
33
33
|
-- set the bounds of the first window to {10, 10, 600, 600}
|
34
34
|
|
35
|
-
end tell
|
35
|
+
end tell
|
@@ -0,0 +1,16 @@
|
|
1
|
+
root:
|
2
|
+
~
|
3
|
+
|
4
|
+
layout_type: column
|
5
|
+
|
6
|
+
commands:
|
7
|
+
here: echo "Hello, here."
|
8
|
+
there: echo "Hello, there."
|
9
|
+
world: echo "Hello, world."
|
10
|
+
me: echo "Hello, me."
|
11
|
+
you: echo "Hello, you."
|
12
|
+
|
13
|
+
layout:
|
14
|
+
- [ here, there, here, there ] # row 1, with 2 panes
|
15
|
+
- [ world ] # row 2, with 1 pane
|
16
|
+
- [ me, you ] # row 3, with 2 panes
|
data/lib/termrc/builder.rb
CHANGED
@@ -17,6 +17,7 @@ module Termrc
|
|
17
17
|
@root = yml['root']
|
18
18
|
@commands = yml['commands']
|
19
19
|
@layout = yml['layout']
|
20
|
+
@columns = yml['layout_type'] == 'column' || false
|
20
21
|
@cmd_index = 1
|
21
22
|
end
|
22
23
|
|
@@ -38,13 +39,18 @@ module Termrc
|
|
38
39
|
end
|
39
40
|
|
40
41
|
def applescript_file(layout_array, index)
|
42
|
+
t = generateContents(layout_array, index)
|
43
|
+
writeTempFile(t)
|
44
|
+
end
|
45
|
+
|
46
|
+
def generateContents(layout_array, index)
|
41
47
|
t = TEMPLATE
|
42
48
|
|
43
49
|
if index > 0
|
44
50
|
# All other tabs.
|
45
51
|
t = t.gsub("[window_or_tab]", new_tab)
|
46
52
|
t = t.gsub("[session]", current_session)
|
47
|
-
t = t.gsub("[terminate_unused]",
|
53
|
+
t = t.gsub("[terminate_unused]", terminate_session('last'))
|
48
54
|
else
|
49
55
|
# First tab.
|
50
56
|
t = t.gsub("[window_or_tab]", new_window)
|
@@ -52,19 +58,22 @@ module Termrc
|
|
52
58
|
t = t.gsub("[terminate_unused]", terminate_session)
|
53
59
|
end
|
54
60
|
|
55
|
-
t = t.gsub("[
|
61
|
+
t = t.gsub("[primary]", primary(layout_array))
|
56
62
|
t = t.gsub("[sleep]", rest)
|
57
63
|
t = t.gsub("[panes]", panes(layout_array))
|
58
64
|
t = t.gsub("[commands]", commands(layout_array))
|
65
|
+
t
|
66
|
+
end
|
59
67
|
|
68
|
+
def writeTempFile(contents)
|
60
69
|
file = Tempfile.new('termrc.osascript')
|
61
|
-
file.write(
|
70
|
+
file.write(contents)
|
62
71
|
file.close
|
63
72
|
file
|
64
73
|
end
|
65
74
|
|
66
|
-
def
|
67
|
-
Array.new(
|
75
|
+
def primary(layout_array)
|
76
|
+
Array.new( primary_count(layout_array), @columns ? new_column : new_row ).join("\n")
|
68
77
|
end
|
69
78
|
|
70
79
|
def panes(layout_array)
|
@@ -72,7 +81,7 @@ module Termrc
|
|
72
81
|
cmd = next_pane # back to the top
|
73
82
|
|
74
83
|
layout_array.each do |cmds|
|
75
|
-
cmd << Array.new( cmds.length - 1, new_column ).join("\n")
|
84
|
+
cmd << Array.new( cmds.length - 1, @columns ? new_row : new_column ).join("\n")
|
76
85
|
cmd << next_pane
|
77
86
|
cmd << "\n"
|
78
87
|
end
|
@@ -85,7 +94,12 @@ module Termrc
|
|
85
94
|
|
86
95
|
layout_array.each do |commands|
|
87
96
|
commands.each do |name|
|
88
|
-
|
97
|
+
command = @commands[name]
|
98
|
+
if command
|
99
|
+
cmd << execute_command( @cmd_index, command, name )
|
100
|
+
else
|
101
|
+
puts "unknown command: #{name}"
|
102
|
+
end
|
89
103
|
@cmd_index += 1
|
90
104
|
end
|
91
105
|
end
|
@@ -93,7 +107,7 @@ module Termrc
|
|
93
107
|
cmd
|
94
108
|
end
|
95
109
|
|
96
|
-
def
|
110
|
+
def primary_count(layout_array)
|
97
111
|
layout_array.length
|
98
112
|
end
|
99
113
|
|
@@ -161,4 +175,4 @@ module Termrc
|
|
161
175
|
|
162
176
|
end
|
163
177
|
|
164
|
-
end
|
178
|
+
end
|
data/lib/termrc/cli.rb
CHANGED
@@ -8,11 +8,12 @@ module Termrc
|
|
8
8
|
class Cli < Thor
|
9
9
|
include Thor::Actions
|
10
10
|
|
11
|
-
map 'c'
|
12
|
-
map '
|
13
|
-
map '
|
11
|
+
map 'c' => :create
|
12
|
+
map 'init' => :create
|
13
|
+
map 'l' => :list
|
14
|
+
map 's' => :start
|
14
15
|
|
15
|
-
desc 'create', 'Create Termfile (Shortcut: c)'
|
16
|
+
desc 'create', 'Create Termfile (Shortcut: c / init)'
|
16
17
|
def create
|
17
18
|
if (File.exist? '.termrc' or File.exists? 'Termfile')
|
18
19
|
say_this "Error: 'Termfile' already exists!"
|
@@ -66,4 +67,4 @@ module Termrc
|
|
66
67
|
end
|
67
68
|
|
68
69
|
end
|
69
|
-
end
|
70
|
+
end
|
data/termrc.gemspec
CHANGED
@@ -9,8 +9,8 @@ Gem::Specification.new do |gem|
|
|
9
9
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
10
10
|
gem.executables << 'termrc'
|
11
11
|
gem.name = "termrc"
|
12
|
-
gem.version = '0.2.
|
12
|
+
gem.version = '0.2.2'
|
13
13
|
gem.license = 'MIT'
|
14
14
|
|
15
15
|
gem.add_runtime_dependency 'thor', '~> 0.18.1'
|
16
|
-
end
|
16
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: termrc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Gonzalez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-09-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -39,6 +39,7 @@ files:
|
|
39
39
|
- bin/termrc
|
40
40
|
- lib/template/run.osascript
|
41
41
|
- lib/template/termfile.template
|
42
|
+
- lib/template/termfile_columns.template
|
42
43
|
- lib/template/termfile_with_tabs.template
|
43
44
|
- lib/termrc.rb
|
44
45
|
- lib/termrc/base.rb
|