tlux 0.0.3 → 0.0.4

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d7852ef8bf693e95567621d7cd689cd0c5bd1aa9
4
+ data.tar.gz: ecdd70d66741a9281da1056ccd839d199bf5155b
5
+ SHA512:
6
+ metadata.gz: 2ff7bb91b1c9e2f3d29209802bd9668552c208957ccdc48d611e85ccea92ca31192d340697caea86e64284ff1efb60d8f7cc0096321e97c93741aee1e4742b24
7
+ data.tar.gz: 0e7c4382b520516cc61a7de9bb8a4a7f8e8be45dde7b01a9adc59b863cdb54250ad23c83a1641989460b825b939b58d784ef40768bea077adc7365ebb6217dad
data/bin/tlux CHANGED
@@ -4,34 +4,39 @@ lib = File.expand_path(File.dirname(__FILE__) + '/../lib')
4
4
  $LOAD_PATH.unshift(lib) if File.directory?(lib) && !$LOAD_PATH.include?(lib)
5
5
 
6
6
  require 'tlux'
7
+ require 'commander/import'
7
8
 
8
- if ARGV.any?
9
- begin
9
+ program :name, 'tlux'
10
+ program :version, Tlux::VERSION
11
+ program :description, 'Luxurious tmux configuration'
10
12
 
11
- puts Tlux::Commands.run(ARGV.shift, ARGV)
13
+ command :run do |c|
14
+ c.syntax = 'tlux run <config>'
15
+ c.summary = 'Start a tmux session with the given config'
12
16
 
13
- rescue Tlux::EditorNotDefinedError
14
- puts "You must define an editor in either $TMUX_EDITOR or $EDITOR to use this command"
15
- exit 1
17
+ c.option '--dir STRING', String, 'The directory to run the session in'
16
18
 
17
- rescue Tlux::Config::FileNotFound
18
- puts "Tlux config file not found #{ARGV[0]}"
19
- exit 1
19
+ c.action do |args, options|
20
+ options.default dir: Dir.pwd
21
+ config = args.shift || abort('config argument required')
22
+ Tlux::Commands::RunCommand.new(config, options.dir).run
23
+ end
24
+ end
20
25
 
21
- rescue Tlux::CommandNotFoundError
22
- puts "Command not available"
23
- exit 1
26
+ command :list do |c|
27
+ c.syntax = 'tlux list'
24
28
 
29
+ c.action do |args, options|
30
+ puts Tlux::Commands::ListCommand.new.run
25
31
  end
26
- else
32
+ end
27
33
 
28
- puts <<-EOF
29
- Tlux version: #{Tlux::VERSION}
34
+ command :open do |c|
35
+ c.syntax = 'tlux open <config>'
30
36
 
31
- Usage:
32
- tlux open <config_name> : open the config file in your $EDITOR, creates config if it doesn't already exist
33
- tlux list : lists the currently available configs
34
- tlux run <config_name> : attach a tmux session with the given config name
35
- EOF
37
+ c.action do |args, options|
38
+ config = args.shift || abort('config argument required')
39
+ Tlux::Commands::OpenCommand.new(config).run
40
+ end
36
41
  end
37
42
 
data/lib/tlux.rb CHANGED
@@ -5,7 +5,6 @@ require "fileutils"
5
5
  module Tlux
6
6
  TEMPLATES_PATH = File.join(File.dirname(__FILE__), 'tlux', 'templates')
7
7
  class EditorNotDefinedError < StandardError ; end
8
- class CommandNotFoundError < StandardError ; end
9
8
  end
10
9
 
11
10
  require "tlux/splitable"
@@ -15,5 +14,10 @@ require "tlux/session"
15
14
  require "tlux/window"
16
15
  require "tlux/pane"
17
16
 
18
- require "tlux/config"
19
- require "tlux/commands"
17
+ require "tlux/config/generator"
18
+ require "tlux/config/parser"
19
+
20
+ require 'tlux/commands/base'
21
+ require 'tlux/commands/list_command'
22
+ require 'tlux/commands/run_command'
23
+ require 'tlux/commands/open_command'
@@ -4,26 +4,23 @@ module Tlux
4
4
  module Commands
5
5
  class RunCommand < Tlux::Commands::Base
6
6
 
7
- attr_reader :config_name
7
+ attr_reader :config_name, :dir
8
8
 
9
- def initialize(config_name)
9
+ def initialize(config_name, dir = '')
10
10
  @config_name = config_name
11
+ @dir = dir
11
12
  end
12
13
 
13
14
  def run
14
15
  parser = Tlux::Config::Parser.from_file(config_file_path)
15
16
  parser.parse!
16
- parser.session.name = session_name
17
+ parser.session.dir = dir unless dir.empty?
17
18
 
18
19
  exec Tlux::Config::Generator.new(parser.session).generate!
19
20
  end
20
21
 
21
22
  private
22
23
 
23
- def session_name
24
- Pathname.new(Dir.pwd).basename.to_s.gsub(/\./, '-').gsub(/\:/, '-')
25
- end
26
-
27
24
  def config_file_path
28
25
  File.join(config_path, config_name)
29
26
  end
@@ -11,7 +11,7 @@ module Tlux
11
11
  def generate!
12
12
  name = session.name
13
13
  windows = session.windows
14
- dir = Dir.pwd
14
+ dir = session.dir
15
15
 
16
16
  template.result(binding)
17
17
  end
@@ -1,5 +1,7 @@
1
1
  module Tlux
2
2
  module Config
3
+ class FileNotFound < StandardError ; end
4
+
3
5
  class Parser
4
6
  def self.from_file(path)
5
7
  raise Tlux::Config::FileNotFound.new(path) unless File.exists?(path) && File.file?(path)
data/lib/tlux/session.rb CHANGED
@@ -1,10 +1,12 @@
1
1
  module Tlux
2
2
  class Session
3
- attr_accessor :name
3
+ attr_accessor :dir
4
4
  attr_reader :windows
5
+ attr_writer :name
5
6
 
6
7
  def initialize(name = "")
7
8
  @name = name
9
+ @dir = Dir.pwd
8
10
  @windows = []
9
11
  end
10
12
 
@@ -14,8 +16,18 @@ module Tlux
14
16
  window.instance_eval(&block) if block_given?
15
17
  end
16
18
 
19
+ def name
20
+ @name.empty? ? name_from_dir : @name
21
+ end
22
+
17
23
  def get_binding
18
24
  binding
19
25
  end
26
+
27
+ private
28
+
29
+ def name_from_dir
30
+ Pathname.new(dir).basename.to_s.gsub(/\./, '-').gsub(/\:/, '-')
31
+ end
20
32
  end
21
33
  end
data/lib/tlux/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Tlux
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/spec/session_spec.rb CHANGED
@@ -4,9 +4,33 @@ describe Tlux::Session do
4
4
  let(:session) { Tlux::Session.new }
5
5
 
6
6
  describe "#name" do
7
- it "should have a name" do
8
- session.name = "foo"
9
- session.name.should == "foo"
7
+ context "default" do
8
+ before { Dir.stub!(:pwd).and_return('/path/to/project.js') }
9
+
10
+ subject { session.name }
11
+
12
+ it { should == "project-js" }
13
+ end
14
+
15
+ context "settable" do
16
+ it "should have a name" do
17
+ session.name = "foo"
18
+ session.name.should == "foo"
19
+ end
20
+ end
21
+ end
22
+
23
+ describe "#dir" do
24
+ before { Dir.stub!(:pwd).and_return(:pwd) }
25
+ subject { session }
26
+
27
+ context "default" do
28
+ its(:dir) { should == :pwd }
29
+ end
30
+
31
+ context "settable" do
32
+ before { session.dir = :foo }
33
+ its(:dir) { should == :foo }
10
34
  end
11
35
  end
12
36
 
data/tlux.gemspec CHANGED
@@ -15,6 +15,8 @@ Gem::Specification.new do |gem|
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = Tlux::VERSION
17
17
 
18
+ gem.add_dependency('commander')
19
+
18
20
  gem.add_development_dependency('rspec')
19
21
  gem.add_development_dependency('rake')
20
22
  #gem.add_development_dependency('fakefs')
metadata CHANGED
@@ -1,46 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tlux
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
5
- prerelease:
4
+ version: 0.0.4
6
5
  platform: ruby
7
6
  authors:
8
7
  - Oliver Nightingale
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-02-21 00:00:00.000000000 Z
11
+ date: 2013-06-24 00:00:00.000000000 Z
13
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: commander
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
14
27
  - !ruby/object:Gem::Dependency
15
28
  name: rspec
16
29
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
30
  requirements:
19
- - - ! '>='
31
+ - - '>='
20
32
  - !ruby/object:Gem::Version
21
33
  version: '0'
22
34
  type: :development
23
35
  prerelease: false
24
36
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
37
  requirements:
27
- - - ! '>='
38
+ - - '>='
28
39
  - !ruby/object:Gem::Version
29
40
  version: '0'
30
41
  - !ruby/object:Gem::Dependency
31
42
  name: rake
32
43
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
44
  requirements:
35
- - - ! '>='
45
+ - - '>='
36
46
  - !ruby/object:Gem::Version
37
47
  version: '0'
38
48
  type: :development
39
49
  prerelease: false
40
50
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
51
  requirements:
43
- - - ! '>='
52
+ - - '>='
44
53
  - !ruby/object:Gem::Version
45
54
  version: '0'
46
55
  description: Luxurious tmux configuration
@@ -60,14 +69,10 @@ files:
60
69
  - bin/tlux
61
70
  - lib/tlux.rb
62
71
  - lib/tlux/commandable.rb
63
- - lib/tlux/commands.rb
64
72
  - lib/tlux/commands/base.rb
65
73
  - lib/tlux/commands/list_command.rb
66
74
  - lib/tlux/commands/open_command.rb
67
75
  - lib/tlux/commands/run_command.rb
68
- - lib/tlux/commands/start.rb
69
- - lib/tlux/commands/start_command.rb
70
- - lib/tlux/config.rb
71
76
  - lib/tlux/config/generator.rb
72
77
  - lib/tlux/config/parser.rb
73
78
  - lib/tlux/pane.rb
@@ -78,10 +83,8 @@ files:
78
83
  - lib/tlux/version.rb
79
84
  - lib/tlux/window.rb
80
85
  - spec/commands/base_spec.rb
81
- - spec/commands/commands_spec.rb
82
86
  - spec/commands/list_command_spec.rb
83
87
  - spec/commands/open_command_spec.rb
84
- - spec/commands/run_command_spec.rb
85
88
  - spec/config/generator_spec.rb
86
89
  - spec/config/parser_spec.rb
87
90
  - spec/fixtures/sample_config.rb
@@ -94,34 +97,31 @@ files:
94
97
  - tlux.gemspec
95
98
  homepage: ''
96
99
  licenses: []
100
+ metadata: {}
97
101
  post_install_message:
98
102
  rdoc_options: []
99
103
  require_paths:
100
104
  - lib
101
105
  required_ruby_version: !ruby/object:Gem::Requirement
102
- none: false
103
106
  requirements:
104
- - - ! '>='
107
+ - - '>='
105
108
  - !ruby/object:Gem::Version
106
109
  version: '0'
107
110
  required_rubygems_version: !ruby/object:Gem::Requirement
108
- none: false
109
111
  requirements:
110
- - - ! '>='
112
+ - - '>='
111
113
  - !ruby/object:Gem::Version
112
114
  version: '0'
113
115
  requirements: []
114
116
  rubyforge_project:
115
- rubygems_version: 1.8.23
117
+ rubygems_version: 2.0.0
116
118
  signing_key:
117
- specification_version: 3
119
+ specification_version: 4
118
120
  summary: Luxurious tmux configuration
119
121
  test_files:
120
122
  - spec/commands/base_spec.rb
121
- - spec/commands/commands_spec.rb
122
123
  - spec/commands/list_command_spec.rb
123
124
  - spec/commands/open_command_spec.rb
124
- - spec/commands/run_command_spec.rb
125
125
  - spec/config/generator_spec.rb
126
126
  - spec/config/parser_spec.rb
127
127
  - spec/fixtures/sample_config.rb
data/lib/tlux/commands.rb DELETED
@@ -1,27 +0,0 @@
1
- module Tlux
2
- module Commands
3
- extend self
4
-
5
- def run(command_name, args = [])
6
- raise Tlux::CommandNotFoundError unless available?(command_name)
7
- name_to_constant(command_name).new(*args).run
8
- end
9
-
10
- private
11
-
12
- def available?(command_name)
13
- !!name_to_constant(command_name)
14
- rescue NameError
15
- false
16
- end
17
-
18
- def name_to_constant(command_name)
19
- self.const_get("#{command_name.capitalize}Command")
20
- end
21
- end
22
- end
23
-
24
- require 'tlux/commands/base'
25
- require 'tlux/commands/list_command'
26
- require 'tlux/commands/run_command'
27
- require 'tlux/commands/open_command'
@@ -1,13 +0,0 @@
1
- module Tlux
2
- module Commands
3
- class Start
4
- def initialize(args)
5
- @config_file = args.first
6
- end
7
-
8
- def run
9
- puts @config_file
10
- end
11
- end
12
- end
13
- end
@@ -1,13 +0,0 @@
1
- module Tlux
2
- module Commands
3
- class Start
4
- def initialize(args)
5
- @config_file = args.first
6
- end
7
-
8
- def run
9
- raise @config_file.inspect
10
- end
11
- end
12
- end
13
- end
data/lib/tlux/config.rb DELETED
@@ -1,8 +0,0 @@
1
- module Tlux
2
- module Config
3
- class FileNotFound < StandardError ; end
4
- end
5
- end
6
-
7
- require 'tlux/config/parser'
8
- require 'tlux/config/generator'
@@ -1,28 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Tlux::Commands do
4
- describe ".run" do
5
- let(:command) { double(Tlux::Commands::RunCommand, run: true) }
6
- let(:args) { [1,2,3] }
7
-
8
- before do
9
- Tlux::Commands::RunCommand.stub!(:new).and_return(command)
10
- end
11
-
12
- context "with an available command" do
13
- it "should instantiate a command and run it" do
14
- command.should_receive(:run)
15
- Tlux::Commands::RunCommand.should_receive(:new).with(*args)
16
- Tlux::Commands.run('run', args)
17
- end
18
- end
19
-
20
- context "with an unavailable command" do
21
- it "should raise a CommandNotFoundError" do
22
- expect {
23
- Tlux::Commands.run('foo')
24
- }.to raise_error(Tlux::CommandNotFoundError)
25
- end
26
- end
27
- end
28
- end
@@ -1,45 +0,0 @@
1
- #require 'spec_helper'
2
- #
3
- #describe Tlux::Commands::RunCommand do
4
- # describe "#run" do
5
- # before :each do
6
- # FakeFS.activate!
7
- # end
8
- #
9
- # after :each do
10
- # FakeFS.deactivate!
11
- # end
12
- #
13
- # let(:config_path) { File.join(Dir.home, '.tlux', 'test') }
14
- # let(:current_dir) { Dir.pwd }
15
- # let(:command) { Tlux::Commands::RunCommand.new(config_path, current_dir) }
16
- #
17
- # context "config file does not exist" do
18
- # it "should raise a Tlux::Config::FileNotFoundError" do
19
- # expect {
20
- # command.run
21
- # }.to raise_error(Tlux::Config::FileNotFoundError)
22
- # end
23
- # end
24
- #
25
- # context "config file does exist" do
26
- # before :each do
27
- # Tlux::Config::Parser.stub!(:new).with
28
- # end
29
- #
30
- # describe "parsing the config file" do
31
- # it "should parse the config file" do
32
- # parser.should_receive(:parse!)
33
- # end
34
- # end
35
- #
36
- # it "should generate the tmux config for the tlux config file" do
37
- #
38
- # end
39
- #
40
- # it "should write the file out to tlux directory" do
41
- #
42
- # end
43
- # end
44
- # end
45
- #end