lab42_tmux 0.0.3 → 0.0.4.pre3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +7 -0
- data/bin/lab42_nodejs +4 -0
- data/lib/lab42/tmux/extensions/enumerable.rb +13 -0
- data/lib/lab42/tmux/extensions/file.rb +55 -0
- data/lib/lab42/tmux/extensions/object.rb +16 -0
- data/lib/lab42/tmux/predefined/nodejs.rb +42 -0
- data/lib/lab42/tmux/version.rb +1 -1
- data/lib/lab42/tmux.rb +35 -9
- metadata +12 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ba9d96a010dc633384c98629f67e150f289b368
|
4
|
+
data.tar.gz: 8951194e595d6c14f357256bac53bba639687b75
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 756ec301f52d12920e0ceadae872ec36ace0de8085dca27d7c24be0612e23751aa23f9dfc65ee4375d73f4f34f97cfc75d85ac9e3db18156f84fc4c728f785d0
|
7
|
+
data.tar.gz: 91305be52449905cb816565d923681554ac1a407ec8fe9072779bb47d94c02eb56f43c026b23b2394df0a8b61a19d5581d9f2d84af0df58937ae123e981d30b6
|
data/README.md
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
## Tmux
|
4
4
|
|
5
|
+
Read [Release Notes](RELEASE.md) for information concerning a specific version.
|
6
|
+
|
5
7
|
### Predefined Scripts
|
6
8
|
|
7
9
|
#### lab42\_tmux
|
@@ -30,3 +32,8 @@ Opens a tmux session with the following windows
|
|
30
32
|
|
31
33
|
If a session with the basename of `some_path` exists will attach to it. Otherwise
|
32
34
|
will open a session with that name and n *additional* windows, each window will be cwed into `some_path.
|
35
|
+
|
36
|
+
|
37
|
+
#### lab42\_ruby\_session
|
38
|
+
|
39
|
+
...
|
data/bin/lab42_nodejs
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
module Enumerable
|
2
|
+
alias_method :__original_map__, :map
|
3
|
+
def map behavior=nil,&blk
|
4
|
+
__original_map__(&(behavior||blk))
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
class Array
|
9
|
+
alias_method :__original_map__, :map
|
10
|
+
def map behavior=nil,&blk
|
11
|
+
__original_map__(&(behavior||blk))
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
class File
|
2
|
+
class << self
|
3
|
+
# TODO: Get rid of this and use expand_path
|
4
|
+
alias_method :__orig_absolute_path__, :absolute_path
|
5
|
+
def absolute_path fn
|
6
|
+
if %r{\A~} === fn && home = ENV["HOME"]
|
7
|
+
File.join home, fn.sub(%r{\A~#{File::Separator}},"")
|
8
|
+
else
|
9
|
+
__orig_absolute_path__ fn
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
module YAML extend self
|
15
|
+
def exists? fn, search_path: []
|
16
|
+
exists_as_specified?( fn ) ||
|
17
|
+
exists_in_search_path?( fn, search_path: search_path )
|
18
|
+
end
|
19
|
+
|
20
|
+
def exists_as_specified? fn
|
21
|
+
# remove extension without preceding .
|
22
|
+
f = fn.sub %r{(?<=\.)[^.]*\z}, ""
|
23
|
+
if f != fn
|
24
|
+
check_for( fn )
|
25
|
+
else
|
26
|
+
%w{yaml yml}.inject false do |fnorf, ext|
|
27
|
+
fnorf || check_for( "#{f}.#{ext}" )
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def exists_in_search_path? fn, search_path: required
|
33
|
+
# remove extension without preceding .
|
34
|
+
f = fn.sub %r{(?<=\.)[^.]*\z}, ""
|
35
|
+
if f != fn
|
36
|
+
Array( search_path ).inject false do |false_or_file, sp|
|
37
|
+
false_or_file || check_for( File.join(sp, fn) )
|
38
|
+
end
|
39
|
+
else
|
40
|
+
Array( search_path ).inject false do |false_or_file, sp|
|
41
|
+
false_or_file or %w{yaml yml}.inject false do |fnorf, ext|
|
42
|
+
fnorf ||
|
43
|
+
check_for( File.join(sp, "#{f}.#{ext}") )
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
# Maybe rename to file_exists_and_name ???
|
51
|
+
def check_for fn
|
52
|
+
File.readable?( fn ) && fn
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -7,4 +7,20 @@ class Object
|
|
7
7
|
blk.( val )
|
8
8
|
rescue NoMethodError
|
9
9
|
end
|
10
|
+
|
11
|
+
# TODO: This shall go into lab42_core
|
12
|
+
def fn
|
13
|
+
return @__fn__ if @__fn__
|
14
|
+
myself = self
|
15
|
+
@__fn__ = BasicObject.new
|
16
|
+
class << @__fn__; self end
|
17
|
+
.module_eval do
|
18
|
+
alias_method :__original_method_missing__, :method_missing
|
19
|
+
define_method :method_missing do |*args,&blk|
|
20
|
+
super unless blk.nil? && args.size == 1
|
21
|
+
# TODO: Catch error and call origianl method for better Error Messages
|
22
|
+
myself.method args.first.to_sym
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
10
26
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'lab42/tmux/predefined/abstract_session'
|
2
|
+
require 'forwarder'
|
3
|
+
|
4
|
+
module Lab42
|
5
|
+
class Tmux
|
6
|
+
module Predefined
|
7
|
+
class NodeJS
|
8
|
+
include AbstractSession
|
9
|
+
|
10
|
+
private
|
11
|
+
def initialize *args, &blk
|
12
|
+
@tmux = Lab42::Tmux.new args do
|
13
|
+
add_window "repl", command: options.fetch(:repl,"node")
|
14
|
+
add_window "vi", command: "vi ."
|
15
|
+
# require 'pry'
|
16
|
+
# binding.pry
|
17
|
+
if_dir "src" do
|
18
|
+
add_window "src", command: "vi src" do
|
19
|
+
vim_command "colorscheme morning"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
if_dir "spec" do
|
23
|
+
add_window "spec", command: "vi spec" do
|
24
|
+
vim_commands "colorscheme solarized", background: "light"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
if_dir "features" do
|
28
|
+
add_window "features", command: "vi features"
|
29
|
+
add_window "cucu"
|
30
|
+
end
|
31
|
+
add_window "sh"
|
32
|
+
# TODO: Specify this later if needed
|
33
|
+
# instance_eval_or_call blk if blk
|
34
|
+
if options[:rails_server]
|
35
|
+
add_window "server", command: "bundle exec rails server"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end # class NodeJS
|
40
|
+
end # module Predefined
|
41
|
+
end # class Tmux
|
42
|
+
end # module Lab42
|
data/lib/lab42/tmux/version.rb
CHANGED
data/lib/lab42/tmux.rb
CHANGED
@@ -3,6 +3,8 @@ require 'lab42/tmux/core_helpers'
|
|
3
3
|
require 'lab42/tmux/commands'
|
4
4
|
require 'lab42/tmux/command'
|
5
5
|
require 'lab42/tmux/window'
|
6
|
+
require 'lab42/tmux/extensions/enumerable'
|
7
|
+
require 'lab42/tmux/extensions/file'
|
6
8
|
require 'lab42/tmux/extensions/ostruct'
|
7
9
|
require 'lab42/tmux/extensions/hash'
|
8
10
|
require 'lab42/tmux/extensions/object'
|
@@ -14,7 +16,7 @@ module Lab42
|
|
14
16
|
include Command
|
15
17
|
include Helpers
|
16
18
|
|
17
|
-
attr_reader
|
19
|
+
attr_reader :commands, :options, :project_home, :session_name, :windows, :yaml_file_name
|
18
20
|
|
19
21
|
def add_window name=nil, options={}, &blk
|
20
22
|
window = Window.new windows.size.succ, self, name: name, command: options[:command]
|
@@ -40,21 +42,31 @@ module Lab42
|
|
40
42
|
|
41
43
|
private
|
42
44
|
def initialize args, &blk
|
43
|
-
|
45
|
+
version! args.first
|
46
|
+
@options = Lab42::Options.new
|
47
|
+
yaml_or_project_home args.first
|
48
|
+
@options = @options.parse( *args.dup )
|
44
49
|
@commands = []
|
45
50
|
@windows = []
|
46
|
-
|
51
|
+
set_basic_ivars
|
47
52
|
raise ArgumentError, "unable to determine session name" unless session_name
|
48
|
-
raise ArgumentError, "no such directory #{project_home}" unless project_home && File.directory?( project_home )
|
49
53
|
session_commands
|
50
54
|
instance_eval_or_call blk
|
51
55
|
end
|
52
56
|
|
53
|
-
def
|
54
|
-
|
55
|
-
@
|
56
|
-
|
57
|
-
|
57
|
+
def yaml_or_project_home fn
|
58
|
+
f = File.absolute_path fn
|
59
|
+
if @yaml_file_name = File::YAML.exists?( f )
|
60
|
+
@options.read_from @yaml_file_name
|
61
|
+
else
|
62
|
+
if File.directory? f
|
63
|
+
@project_home = f
|
64
|
+
else
|
65
|
+
@yaml_file_name = File::YAML.exists?( fn,search_path: File.join(ENV["HOME"],".lab42_tmux","yaml_files"))
|
66
|
+
raise ArgumentError, "#{fn} is neither a yaml file nor a directory (yaml files are looked for with an added .yaml or .yml extension)" unless @yaml_file_name
|
67
|
+
@options.read_from @yaml_file_name
|
68
|
+
end
|
69
|
+
end
|
58
70
|
end
|
59
71
|
|
60
72
|
def final_attach_command
|
@@ -63,6 +75,12 @@ module Lab42
|
|
63
75
|
]
|
64
76
|
end
|
65
77
|
|
78
|
+
def set_basic_ivars
|
79
|
+
@session_name = @options.fetch :session_name, nil
|
80
|
+
@project_home ||= @options.fetch :project_home, nil
|
81
|
+
@session_name ||= File.basename project_home rescue nil
|
82
|
+
end
|
83
|
+
|
66
84
|
def session_commands
|
67
85
|
return if session_exists?
|
68
86
|
tmux_new_session
|
@@ -74,5 +92,13 @@ module Lab42
|
|
74
92
|
system "tmux has-session -t #{session_name}"
|
75
93
|
$?.to_i.zero?
|
76
94
|
end
|
95
|
+
|
96
|
+
def version! arg
|
97
|
+
require 'lab42/tmux/version'
|
98
|
+
if %r{\A(?::|--)version\z} === arg
|
99
|
+
puts Lab42::Tmux::VERSION
|
100
|
+
exit -1
|
101
|
+
end
|
102
|
+
end
|
77
103
|
end
|
78
104
|
end # module Lab42
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lab42_tmux
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4.pre3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Dober
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-10-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lab42_options
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.4.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.4.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: forwarder19
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -99,6 +99,7 @@ description: A Gem that will give us helpers to dry up the creation of TMUX wind
|
|
99
99
|
usage of this gem
|
100
100
|
email: robert.dober@gmail.com
|
101
101
|
executables:
|
102
|
+
- lab42_nodejs
|
102
103
|
- lab42_tmux
|
103
104
|
- lab42_ruby_session
|
104
105
|
extensions: []
|
@@ -107,12 +108,15 @@ files:
|
|
107
108
|
- lib/lab42/tmux.rb
|
108
109
|
- lib/lab42/tmux/core_helpers.rb
|
109
110
|
- lib/lab42/tmux/current_window.rb
|
111
|
+
- lib/lab42/tmux/extensions/enumerable.rb
|
112
|
+
- lib/lab42/tmux/extensions/file.rb
|
110
113
|
- lib/lab42/tmux/extensions/ostruct.rb
|
111
114
|
- lib/lab42/tmux/extensions/object.rb
|
112
115
|
- lib/lab42/tmux/extensions/hash.rb
|
113
116
|
- lib/lab42/tmux/options.rb
|
114
117
|
- lib/lab42/tmux/helpers.rb
|
115
118
|
- lib/lab42/tmux/version.rb
|
119
|
+
- lib/lab42/tmux/predefined/nodejs.rb
|
116
120
|
- lib/lab42/tmux/predefined/tmux_session.rb
|
117
121
|
- lib/lab42/tmux/predefined/abstract_session.rb
|
118
122
|
- lib/lab42/tmux/predefined/ruby_session.rb
|
@@ -123,6 +127,7 @@ files:
|
|
123
127
|
- lib/lab42/tmux/window.rb
|
124
128
|
- LICENSE
|
125
129
|
- README.md
|
130
|
+
- bin/lab42_nodejs
|
126
131
|
- bin/lab42_tmux
|
127
132
|
- bin/lab42_ruby_session
|
128
133
|
homepage: https://github.com/RobertDober/lab42_tmux
|
@@ -140,12 +145,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
140
145
|
version: 2.0.0
|
141
146
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
142
147
|
requirements:
|
143
|
-
- - '
|
148
|
+
- - '>'
|
144
149
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
150
|
+
version: 1.3.1
|
146
151
|
requirements: []
|
147
152
|
rubyforge_project:
|
148
|
-
rubygems_version: 2.0
|
153
|
+
rubygems_version: 2.1.0
|
149
154
|
signing_key:
|
150
155
|
specification_version: 4
|
151
156
|
summary: Creating Tmux Windows And Panes Without Pains
|