lab42_tmux 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f15f6f7b7cc46ac2975640531b3cdccfcb5d6d90
4
- data.tar.gz: 0af03c1673a9bde59186e9301e8eabdfed12e35d
3
+ metadata.gz: 8dc676118065197a5cd977d51690037f3814d2c2
4
+ data.tar.gz: c7584c2f8d3be9c1a02761224d79377b412f6ef0
5
5
  SHA512:
6
- metadata.gz: 8aed7ad5a9495ded7b32b3a9d2a12223c630683f77a2403a876e129041bc40b84afe68793b4e7d6a3ecea898b555d8e23ec0304118d38e21d62f55cf0f20b47f
7
- data.tar.gz: 6b8815601f598e2b85f6838786c000802ee44409c7ca9e6681b3d14c01eeec74c142fa33e4ce13f27156cc4d0b1989c4a23a29233c968c2c4b74a65df02104c6
6
+ metadata.gz: 61a8732386b3395e170c04043ba50ff8149e4f666f75729c8cc65236744e6e1cd13a40ea85b36f2f9dff89ac12a41634a50e40494ebf27546b87e91925ca0291
7
+ data.tar.gz: 39f97a1ab9130d792766aa1f9d43551503504fa91ed15507d98e0cdc02e83bc9896c9089641db821208895a72a0af482bbdaddf453602e9fc688cb2d190274d4
@@ -1,9 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'lab42/tmux'
3
+ require 'lab42/tmux/predefined/tmux_session'
4
4
 
5
- Lab42::Tmux.new do
6
- options.windows.to_i.times do
7
- add_window
8
- end
9
- end.exec!
5
+ begin
6
+ Lab42::Tmux::Predefined::TmuxSession.new( *ARGV.dup ).exec!
7
+ rescue ArgumentError => ae
8
+ $stderr.puts ae.message
9
+ exit -1
10
+ end
@@ -1,6 +1,7 @@
1
1
  require 'lab42/options'
2
2
  require 'lab42/tmux/core_helpers'
3
3
  require 'lab42/tmux/commands'
4
+ require 'lab42/tmux/command'
4
5
  require 'lab42/tmux/window'
5
6
  require 'lab42/tmux/extensions/ostruct'
6
7
  require 'lab42/tmux/extensions/hash'
@@ -10,12 +11,13 @@ require 'lab42/tmux/helpers'
10
11
  module Lab42
11
12
  class Tmux
12
13
  include Commands
14
+ include Command
13
15
  include Helpers
14
16
 
15
17
  attr_reader :commands, :options, :project_home, :session_name, :windows
16
18
 
17
19
  def add_window name=nil, options={}, &blk
18
- window = Window.new windows.size, self, name: name, command: options[:command]
20
+ window = Window.new windows.size.succ, self, name: name, command: options[:command]
19
21
  windows << window
20
22
 
21
23
  window.instance_eval_or_call blk if blk
@@ -50,6 +52,8 @@ module Lab42
50
52
 
51
53
  def process_options
52
54
  @project_home = options.args.first
55
+ @project_home = File.join Dir.pwd, @project_home unless
56
+ !@project_home || %r{\A[/~]} === @project_home
53
57
  @session_name = File.basename project_home rescue nil
54
58
  end
55
59
 
@@ -63,7 +67,6 @@ module Lab42
63
67
  return if session_exists?
64
68
  tmux_new_session
65
69
  tmux_source_file
66
- tmux_no_session_rename
67
70
  end
68
71
 
69
72
  def session_exists?
@@ -1,3 +1,4 @@
1
+ require 'lab42/tmux/current_window'
1
2
  class Array
2
3
  def mk_string *args, &blk
3
4
  args = [' '] if args.empty?
@@ -8,35 +9,13 @@ end # class Array
8
9
  module Lab42
9
10
  class Tmux
10
11
  module Command
12
+ include CurrentWindow
11
13
 
12
- def tmux cmd
13
- commands << "tmux #{cmd}"
14
- end
15
-
16
- def tmux_current_window
17
- window = [@options.session_name, tmux_current_window_number].join(":")
18
- "-t #{window}"
19
- end
20
-
21
- def tmux_current_window_command cmd, *args
22
- args = args.compact
23
- arguments = args.empty? ? "" : " #{args.join(" ")}"
24
- tmux "#{cmd} #{tmux_current_window}#{arguments}"
25
- end
26
-
27
- def tmux_current_window_number
28
- @__tmux_current_window_number__ ||= 0
29
- end
30
-
31
- def tmux_current_window_number= new_val
32
- @__tmux_current_window_number__ = new_val
33
- end
34
-
35
- def tmux_execute_window_commands
36
- ( @tmux_window_precommands || [] ).each do | blk |
37
- blk.()
38
- end
39
- end
14
+ # def tmux_execute_window_commands
15
+ # ( @tmux_window_precommands || [] ).each do | blk |
16
+ # blk.()
17
+ # end
18
+ # end
40
19
 
41
20
  def tmux_increase_current_window_number by=1
42
21
  self.tmux_current_window_number += by
@@ -44,19 +23,18 @@ module Lab42
44
23
 
45
24
  # tmux new-session -s $session_name -n console -d
46
25
  def tmux_new_session params=nil
47
- if has_tmux_session?
48
- tmux "attach -t #{@options.session_name}"
26
+ if session_exists?
27
+ system "tmux attach -t #{session_name}"
49
28
  exit 0
50
29
  end
51
30
  suffix = params ? " #{params}" : ""
52
- session_name = @options.session_name
53
31
  tmux "new-session -s #{session_name} -d#{suffix}"
54
- return if @options.no_source_file || @options.tmux_source_file.nil?
55
- tmux "source-file #{@options.tmux_source_file}"
32
+ unless @options.no_source_file || @options.tmux_source_file.nil?
33
+ tmux "source-file #{@options.tmux_source_file}"
34
+ end
56
35
  tmux "set-window-option -g automatic-rename off"
57
- tmux_project_home
58
- at_exit do
59
- tmux "attach -t #{session_name}"
36
+ unless @options.no_cd
37
+ tmux_project_home
60
38
  end
61
39
  end
62
40
 
@@ -87,10 +65,10 @@ module Lab42
87
65
  tmux_send_keys [@options.cmd_prefix, cmd].mk_string, eol
88
66
  end
89
67
 
90
- # def tmux_project_home dir=nil
91
- # dir = File.join @options.dir, dir if dir && %r{\A[^/]} === dir
92
- # tmux_send_keys "cd #{dir || @options.dir}"
93
- # end
68
+ def tmux_project_home dir=project_home
69
+ dir = File.join project_home, dir if dir && %r{\A[^/~]} === dir
70
+ tmux_send_keys "cd #{dir}"
71
+ end
94
72
 
95
73
  def tmux_register_window_command noexec=false, &blk
96
74
  blk.() unless noexec
@@ -4,14 +4,6 @@ module Lab42
4
4
  attr_accessor :window_count
5
5
  def tmux cmd; commands << "tmux #{cmd}" end
6
6
 
7
- def tmux_new_session cmd=nil
8
- tmux "new-session -s #{session_name} -d#{lprefix cmd}"
9
- end
10
-
11
- def tmux_no_session_rename
12
- tmux "set-window-option -g automatic-rename off" unless options.no_session_rename
13
- end
14
-
15
7
  def tmux_source_file
16
8
  tmux "source-file #{options.source_file || File.join( ENV["HOME"], ".tmux.conf" )}"
17
9
  end
@@ -0,0 +1,28 @@
1
+ module Lab42
2
+ class Tmux
3
+ module CurrentWindow
4
+
5
+ def tmux_current_window
6
+ "-t #{tmux_current_window_designation}"
7
+ end
8
+
9
+ def tmux_current_window_command cmd, *args
10
+ args = args.compact
11
+ arguments = args.empty? ? "" : " #{args.join(" ")}"
12
+ tmux "#{cmd} #{tmux_current_window}#{arguments}"
13
+ end
14
+
15
+ def tmux_current_window_designation
16
+ [session_name, tmux_current_window_number].join(":")
17
+ end
18
+ def tmux_current_window_number
19
+ @__tmux_current_window_number__ ||= 0
20
+ end
21
+
22
+ def tmux_current_window_number= new_val
23
+ @__tmux_current_window_number__ = new_val
24
+ end
25
+
26
+ end # module CurrentWindow
27
+ end # class Tmux
28
+ end # module Lab42
@@ -0,0 +1,15 @@
1
+ require 'lab42/tmux'
2
+ require 'forwarder'
3
+
4
+ module Lab42
5
+ class Tmux
6
+ module Predefined
7
+ module AbstractSession
8
+ attr_reader :tmux
9
+ extend Forwarder
10
+ forward_all :exec!, :render, to: :tmux
11
+ end # module AbstractSession
12
+ end # module Predefined
13
+ end # class Tmux
14
+ end # module Lab42
15
+
@@ -33,6 +33,9 @@ module Lab42
33
33
  add_window "sh"
34
34
  # TODO: Specify this later if needed
35
35
  # instance_eval_or_call blk if blk
36
+ if options[:rails_server]
37
+ add_window "server", command: "bundle exec rails server"
38
+ end
36
39
  end
37
40
  end
38
41
  end # class RubySession
@@ -0,0 +1,19 @@
1
+ require 'lab42/tmux/predefined/abstract_session'
2
+
3
+ module Lab42
4
+ class Tmux
5
+ module Predefined
6
+ class TmuxSession
7
+ include AbstractSession
8
+ private
9
+ def initialize *args, &blk
10
+ @tmux = Lab42::Tmux.new args do
11
+ options.wins.to_i.times do
12
+ add_window "sh"
13
+ end
14
+ end
15
+ end
16
+ end # cmass TmuxSession
17
+ end # module Predefined
18
+ end # class Tmux
19
+ end # module Lab42
@@ -1,5 +1,5 @@
1
1
  module Lab42
2
- module Tmux
3
- VERSION = "0.0.2"
2
+ class Tmux
3
+ VERSION = "0.0.3"
4
4
  end
5
5
  end
@@ -6,12 +6,9 @@ module Lab42
6
6
  module Command
7
7
  include VimCommand
8
8
  extend Forwarder
9
- forward_all :lprefix, :session_name, to: :session
10
-
11
- def tmux *args
12
- added_commands << session.tmux( *args )
13
- end
9
+ forward_all :lprefix, :session_name, :tmux, to: :session
14
10
 
11
+ # TODO: Check for dead code here!
15
12
  def tmux_new_window( rename: false )
16
13
  [ tmux( "new-window -t #{session_name}#{new_window_name}" ) ] +
17
14
  (rename ? [] : [
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.2
4
+ version: 0.0.3
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-07-15 00:00:00.000000000 Z
11
+ date: 2013-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lab42_options
@@ -106,12 +106,15 @@ extra_rdoc_files: []
106
106
  files:
107
107
  - lib/lab42/tmux.rb
108
108
  - lib/lab42/tmux/core_helpers.rb
109
+ - lib/lab42/tmux/current_window.rb
109
110
  - lib/lab42/tmux/extensions/ostruct.rb
110
111
  - lib/lab42/tmux/extensions/object.rb
111
112
  - lib/lab42/tmux/extensions/hash.rb
112
113
  - lib/lab42/tmux/options.rb
113
114
  - lib/lab42/tmux/helpers.rb
114
115
  - lib/lab42/tmux/version.rb
116
+ - lib/lab42/tmux/predefined/tmux_session.rb
117
+ - lib/lab42/tmux/predefined/abstract_session.rb
115
118
  - lib/lab42/tmux/predefined/ruby_session.rb
116
119
  - lib/lab42/tmux/commands.rb
117
120
  - lib/lab42/tmux/window/command/vim_command.rb