git_presenter 0.3.0 → 0.4.0

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.
data/Gemfile CHANGED
@@ -4,6 +4,7 @@ source "http://rubygems.org"
4
4
  # gem "activesupport", ">= 2.3.5"
5
5
  #
6
6
  gem "grit", "~> 2.4"
7
+ gem "launchy", "~> 2.1"
7
8
 
8
9
  # Add dependencies to develop your gem here.
9
10
  # Include everything needed to run rake, tests, features, etc.
data/Gemfile.lock CHANGED
@@ -1,6 +1,7 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
+ addressable (2.2.8)
4
5
  coderay (1.0.6)
5
6
  diff-lcs (1.1.3)
6
7
  git (1.2.5)
@@ -14,6 +15,8 @@ GEM
14
15
  rake
15
16
  rdoc
16
17
  json (1.7.3)
18
+ launchy (2.1.0)
19
+ addressable (~> 2.2.6)
17
20
  method_source (0.7.1)
18
21
  mime-types (1.18)
19
22
  posix-spawn (0.3.6)
@@ -42,6 +45,7 @@ DEPENDENCIES
42
45
  bundler
43
46
  grit (~> 2.4)
44
47
  jeweler (~> 1.6)
48
+ launchy (~> 2.1)
45
49
  pry
46
50
  rcov (~> 0.9)
47
51
  rspec (~> 2.7)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.4.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "git_presenter"
8
- s.version = "0.3.0"
8
+ s.version = "0.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Colin Gemmell"]
12
- s.date = "2012-06-29"
12
+ s.date = "2012-07-10"
13
13
  s.description = "Code presentation tool using git"
14
14
  s.email = "pythonandchips@gmail.com"
15
15
  s.executables = ["git-presenter"]
@@ -55,6 +55,7 @@ Gem::Specification.new do |s|
55
55
 
56
56
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
57
57
  s.add_runtime_dependency(%q<grit>, ["~> 2.4"])
58
+ s.add_runtime_dependency(%q<launchy>, ["~> 2.1"])
58
59
  s.add_development_dependency(%q<pry>, [">= 0"])
59
60
  s.add_development_dependency(%q<rspec>, ["~> 2.7"])
60
61
  s.add_development_dependency(%q<bundler>, [">= 0"])
@@ -63,6 +64,7 @@ Gem::Specification.new do |s|
63
64
  s.add_development_dependency(%q<pry>, [">= 0"])
64
65
  else
65
66
  s.add_dependency(%q<grit>, ["~> 2.4"])
67
+ s.add_dependency(%q<launchy>, ["~> 2.1"])
66
68
  s.add_dependency(%q<pry>, [">= 0"])
67
69
  s.add_dependency(%q<rspec>, ["~> 2.7"])
68
70
  s.add_dependency(%q<bundler>, [">= 0"])
@@ -72,6 +74,7 @@ Gem::Specification.new do |s|
72
74
  end
73
75
  else
74
76
  s.add_dependency(%q<grit>, ["~> 2.4"])
77
+ s.add_dependency(%q<launchy>, ["~> 2.1"])
75
78
  s.add_dependency(%q<pry>, [">= 0"])
76
79
  s.add_dependency(%q<rspec>, ["~> 2.7"])
77
80
  s.add_dependency(%q<bundler>, [">= 0"])
data/lib/git_presenter.rb CHANGED
@@ -1,11 +1,12 @@
1
- require "grit"
2
- require "yaml"
3
- require "readline"
1
+ require 'grit'
2
+ require 'yaml'
3
+ require 'readline'
4
+ require 'launchy'
4
5
 
5
6
  class GitPresenter
6
- require "git_presenter/presentation"
7
- require "git_presenter/controller"
8
- require "git_presenter/slide"
7
+ require 'git_presenter/presentation'
8
+ require 'git_presenter/controller'
9
+ require 'git_presenter/slide'
9
10
 
10
11
  def initialize(current_dir, interactive=true)
11
12
  @controller = Controller.new(current_dir)
@@ -13,14 +14,14 @@ class GitPresenter
13
14
  end
14
15
 
15
16
  def execute(command)
16
- if command == "init"
17
+ if command == 'init'
17
18
  @controller.initialise_presentation
18
- elsif command == "start"
19
+ elsif command == 'start'
19
20
  @presentation = @controller.start_presentation
20
21
  if @interactive
21
22
  enter_run_loop
22
23
  end
23
- elsif command == "update"
24
+ elsif command == 'update'
24
25
  @controller.update_presentation
25
26
  else
26
27
  puts @presentation.execute(command)
@@ -40,6 +40,7 @@ class GitPresenter::Presentation
40
40
 
41
41
  def exit
42
42
  `git checkout -q master`
43
+ :exit
43
44
  end
44
45
 
45
46
  def position
@@ -5,12 +5,14 @@ class GitPresenter::Slide
5
5
  @commit = slide["commit"]
6
6
  @message = slide["message"]
7
7
  @run = slide["run"]
8
+ @launch = slide["launch"]
8
9
  end
9
10
 
10
11
  def execute
11
12
  output = ""
12
13
  output << checkout unless @commit.nil?
13
14
  output << `#{run}` unless @run.nil?
15
+ Launchy.open(@launch) unless @launch.nil?
14
16
  output
15
17
  end
16
18
 
@@ -135,7 +135,7 @@ EOH
135
135
  context "when the slide contains a run command only" do
136
136
  it "should execute the command" do
137
137
  command_line_helper = CommandLineHelper.capture_output
138
- @helper.start_presentation("echo hello world") do |commits, presenter|
138
+ @helper.start_presentation([:run => "echo hello world"]) do |commits, presenter|
139
139
  presenter.execute("next")
140
140
  presenter.execute("next")
141
141
  presenter.execute("next").strip.should eql "hello world"
@@ -146,7 +146,7 @@ EOH
146
146
  context "when the slide has a commit and a run command" do
147
147
  it "should checkout the commit and then execute the command" do
148
148
  command_line_helper = CommandLineHelper.capture_output
149
- @helper.start_presentation("echo hello world", 2) do |commits, presenter|
149
+ @helper.start_presentation([:run => "echo hello world",:on_slide => 2]) do |commits, presenter|
150
150
  presenter.execute("next")
151
151
  presenter.execute("next").should eql "#{commits[2].message}\nhello world\n"
152
152
  end
@@ -163,6 +163,17 @@ EOH
163
163
  end
164
164
  end
165
165
 
166
+ context "when opening an application" do
167
+ it "should open the with launchy" do
168
+ command_line_helper = CommandLineHelper.capture_output
169
+ @helper.start_presentation([:launch => 'readme', :on_slide => 2]) do |commits, presenter|
170
+ Launchy.should_receive(:open).with('readme').once
171
+ presenter.execute("next")
172
+ presenter.execute("next")
173
+ end
174
+ end
175
+ end
176
+
166
177
  context "when exiting a presentation" do
167
178
  it "should set the repo back to the master branch" do
168
179
  @helper.start_presentation do |commits, presenter|
@@ -31,7 +31,7 @@ describe "starting a presentation" do
31
31
 
32
32
  it "the last commit should be a command" do
33
33
  command = "echo hello world"
34
- @helper.start_presentation(command) do |commits, presenter|
34
+ @helper.start_presentation([:run => command]) do |commits, presenter|
35
35
  presenter.slides[3].run.should eql command
36
36
  end
37
37
  end
@@ -31,6 +31,23 @@ describe GitPresenter::Slide do
31
31
  end
32
32
  end
33
33
 
34
+ context "when slide contains a launch command" do
35
+ it "should launch the application for the file type" do
36
+ command_line_helper = CommandLineHelper.capture_output
37
+ Launchy.should_receive(:open).with("readme").once
38
+ slide = GitPresenter::Slide.new({"launch" => "readme"})
39
+ slide.execute
40
+ end
41
+
42
+ it "should not try and launch if no launch supplied" do
43
+ command_line_helper = CommandLineHelper.capture_output
44
+ Launchy.should_receive(:open).with("readme").never
45
+ slide = GitPresenter::Slide.new({"commit" => "number", "message" => "checkout", "run" => "echo hello world"})
46
+ slide.stub(:checkout).and_return("checkout\n")
47
+ slide.execute.should eql "checkout\nhello world\n"
48
+ end
49
+ end
50
+
34
51
  context "when slide contains only a commit" do
35
52
  it "should checkout the code then run the command" do
36
53
  command_line_helper = CommandLineHelper.capture_output
@@ -71,10 +71,10 @@ class GitHelper
71
71
  commits
72
72
  end
73
73
 
74
- def start_presentation(command="", add_command_to_commit=nil)
74
+ def start_presentation(commands=[])
75
75
  commits = initialise_presentation({:delay => true})
76
76
  Dir.chdir(@presentation_dir) do
77
- add_command(command, add_command_to_commit) unless command.empty?
77
+ add_commands(commands) unless commands.empty?
78
78
  presenter = GitPresenter.new('.', false)
79
79
  presenter = presenter.execute('start')
80
80
  yield(commits, presenter) if block_given?
@@ -102,6 +102,31 @@ class GitHelper
102
102
  removed_commit
103
103
  end
104
104
 
105
+ def add_commands(commands)
106
+ commands.each do |command|
107
+ if command.include?(:run)
108
+ add_command(command[:run], command[:on_slide])
109
+ end
110
+ if command.include?(:launch)
111
+ add_launch(command[:launch], command[:on_slide])
112
+ end
113
+ end
114
+ end
115
+
116
+ def add_launch(command, add_command_to_commit=nil)
117
+ Dir.chdir(PRESENTATION_DIR) do
118
+ presentation = YAML.parse(File.open(".presentation")).to_ruby
119
+ if !add_command_to_commit.nil?
120
+ presentation["slides"][add_command_to_commit]["slide"]["launch"] = command
121
+ else
122
+ presentation["slides"] << {"slide" => {"launch" => command}}
123
+ end
124
+ File.open(".presentation", "w") do |file|
125
+ file.write(presentation.to_yaml)
126
+ end
127
+ end
128
+ end
129
+
105
130
  def add_command(command, add_command_to_commit=nil)
106
131
  Dir.chdir(PRESENTATION_DIR) do
107
132
  presentation = YAML.parse(File.open(".presentation")).to_ruby
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git_presenter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-29 00:00:00.000000000 Z
12
+ date: 2012-07-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: grit
16
- requirement: &70193289098420 !ruby/object:Gem::Requirement
16
+ requirement: &70174479333640 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,21 @@ dependencies:
21
21
  version: '2.4'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70193289098420
24
+ version_requirements: *70174479333640
25
+ - !ruby/object:Gem::Dependency
26
+ name: launchy
27
+ requirement: &70174478378360 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: '2.1'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70174478378360
25
36
  - !ruby/object:Gem::Dependency
26
37
  name: pry
27
- requirement: &70193289097940 !ruby/object:Gem::Requirement
38
+ requirement: &70174478379800 !ruby/object:Gem::Requirement
28
39
  none: false
29
40
  requirements:
30
41
  - - ! '>='
@@ -32,10 +43,10 @@ dependencies:
32
43
  version: '0'
33
44
  type: :development
34
45
  prerelease: false
35
- version_requirements: *70193289097940
46
+ version_requirements: *70174478379800
36
47
  - !ruby/object:Gem::Dependency
37
48
  name: rspec
38
- requirement: &70193289097460 !ruby/object:Gem::Requirement
49
+ requirement: &70174478381240 !ruby/object:Gem::Requirement
39
50
  none: false
40
51
  requirements:
41
52
  - - ~>
@@ -43,10 +54,10 @@ dependencies:
43
54
  version: '2.7'
44
55
  type: :development
45
56
  prerelease: false
46
- version_requirements: *70193289097460
57
+ version_requirements: *70174478381240
47
58
  - !ruby/object:Gem::Dependency
48
59
  name: bundler
49
- requirement: &70193289096980 !ruby/object:Gem::Requirement
60
+ requirement: &70174478382680 !ruby/object:Gem::Requirement
50
61
  none: false
51
62
  requirements:
52
63
  - - ! '>='
@@ -54,10 +65,10 @@ dependencies:
54
65
  version: '0'
55
66
  type: :development
56
67
  prerelease: false
57
- version_requirements: *70193289096980
68
+ version_requirements: *70174478382680
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: jeweler
60
- requirement: &70193289096500 !ruby/object:Gem::Requirement
71
+ requirement: &70174478385540 !ruby/object:Gem::Requirement
61
72
  none: false
62
73
  requirements:
63
74
  - - ~>
@@ -65,10 +76,10 @@ dependencies:
65
76
  version: '1.6'
66
77
  type: :development
67
78
  prerelease: false
68
- version_requirements: *70193289096500
79
+ version_requirements: *70174478385540
69
80
  - !ruby/object:Gem::Dependency
70
81
  name: rcov
71
- requirement: &70193289096020 !ruby/object:Gem::Requirement
82
+ requirement: &70174478954780 !ruby/object:Gem::Requirement
72
83
  none: false
73
84
  requirements:
74
85
  - - ~>
@@ -76,10 +87,10 @@ dependencies:
76
87
  version: '0.9'
77
88
  type: :development
78
89
  prerelease: false
79
- version_requirements: *70193289096020
90
+ version_requirements: *70174478954780
80
91
  - !ruby/object:Gem::Dependency
81
92
  name: pry
82
- requirement: &70193289095540 !ruby/object:Gem::Requirement
93
+ requirement: &70174478102720 !ruby/object:Gem::Requirement
83
94
  none: false
84
95
  requirements:
85
96
  - - ! '>='
@@ -87,7 +98,7 @@ dependencies:
87
98
  version: '0'
88
99
  type: :development
89
100
  prerelease: false
90
- version_requirements: *70193289095540
101
+ version_requirements: *70174478102720
91
102
  description: Code presentation tool using git
92
103
  email: pythonandchips@gmail.com
93
104
  executables:
@@ -137,7 +148,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
137
148
  version: '0'
138
149
  segments:
139
150
  - 0
140
- hash: 2611368202741633093
151
+ hash: -3910658736089827662
141
152
  required_rubygems_version: !ruby/object:Gem::Requirement
142
153
  none: false
143
154
  requirements: