shelr 0.12.2 → 0.12.3

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -6,4 +6,10 @@ require 'rspec/core/rake_task'
6
6
  desc 'Run all specs in spec directory'
7
7
  RSpec::Core::RakeTask.new
8
8
 
9
+ task :merge do
10
+ File.open('shelr', 'a+') { |f| f.puts "#/usr/bin/env ruby" }
11
+ `cat lib/shelr.rb lib/shelr/* bin/shelr | grep -v autoload >> shelr`
12
+ `chmod +x ./shelr`
13
+ end
14
+
9
15
  task :default => :spec
@@ -5,6 +5,7 @@ module Shelr
5
5
  class Publisher
6
6
 
7
7
  def publish(id)
8
+ ensure_unlocked(id)
8
9
  with_exception_handler do
9
10
  uri = URI.parse(Shelr::API_URL + '/records')
10
11
  params = { 'record' => prepare(id) }
@@ -24,6 +25,17 @@ module Shelr
24
25
 
25
26
  private
26
27
 
28
+ def ensure_unlocked(id)
29
+ lock_path = File.join(Shelr.data_dir(id), 'lock')
30
+ if File.exist?(lock_path)
31
+ puts "=> Cannot publish"
32
+ puts "=> Record locked on #{File.read(lock_path)}"
33
+ puts "=> Esure no other shelr process running"
34
+ puts "=> Or remove lock file manually: #{lock_path}"
35
+ exit 0
36
+ end
37
+ end
38
+
27
39
  def with_exception_handler(&block)
28
40
  yield
29
41
  rescue => e
@@ -14,20 +14,21 @@ module Shelr
14
14
 
15
15
  def record!
16
16
  check_record_dir
17
- init_terminal
18
- request_metadata
19
- STDOUT.puts "-=" * (Shelr.terminal.size[:width] / 2)
20
- STDOUT.puts "=> Your session started"
21
- STDOUT.puts "=> Please, do not resize your terminal while recording"
22
- STDOUT.puts "=> Press Ctrl+D or 'exit' to finish recording"
23
- STDOUT.puts "-=" * (Shelr.terminal.size[:width] / 2)
24
- system(recorder_cmd)
25
- save_as_typescript if Shelr.backend == 'ttyrec'
26
- STDOUT.puts "-=" * (Shelr.terminal.size[:width] / 2)
27
- STDOUT.puts "=> Session finished"
28
- STDOUT.puts
29
- STDOUT.puts "Replay : #{Shelr::APP_NAME} play last"
30
- STDOUT.puts "Publish : #{Shelr::APP_NAME} push last"
17
+ with_lock_file do
18
+ init_terminal
19
+ request_metadata
20
+ STDOUT.puts "-=" * (Shelr.terminal.size[:width] / 2)
21
+ STDOUT.puts "=> Your session started"
22
+ STDOUT.puts "=> Please, do not resize your terminal while recording"
23
+ STDOUT.puts "=> Press Ctrl+D or 'exit' to finish recording"
24
+ system(recorder_cmd)
25
+ save_as_typescript if Shelr.backend == 'ttyrec'
26
+ STDOUT.puts "-=" * (Shelr.terminal.size[:width] / 2)
27
+ STDOUT.puts "=> Session finished"
28
+ STDOUT.puts
29
+ STDOUT.puts "Replay : #{Shelr::APP_NAME} play last"
30
+ STDOUT.puts "Publish : #{Shelr::APP_NAME} push last"
31
+ end
31
32
  end
32
33
 
33
34
  def request_metadata
@@ -44,6 +45,15 @@ module Shelr
44
45
 
45
46
  private
46
47
 
48
+ def with_lock_file
49
+ lock_path = record_file('lock')
50
+ File.open(lock_path, 'w') do |f|
51
+ f.puts Time.now.to_s
52
+ end
53
+ yield
54
+ FileUtils.rm(lock_path)
55
+ end
56
+
47
57
  def save_as_typescript
48
58
  puts '=> Converting ttyrec -> typescript'
49
59
 
data/lib/shelr/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Shelr
2
- VERSION = '0.12.2'
2
+ VERSION = '0.12.3'
3
3
  end
@@ -9,12 +9,20 @@ describe Shelr::Publisher do
9
9
  end
10
10
 
11
11
  describe "#publish(id)" do
12
- it "prepares record as json" do
12
+ before do
13
13
  STDIN.stub(:gets).and_return('something')
14
14
  subject.stub(:handle_response)
15
15
  subject.stub(:prepare).and_return(Fixture::load('record1.json'))
16
+ end
17
+
18
+ it "prepares record as json" do
16
19
  subject.should_receive(:prepare).with('hello')
20
+ subject.publish('hello')
21
+ end
17
22
 
23
+ it "it checks that file is not locked" do
24
+ subject.stub(:ensure_unlocked)
25
+ subject.should_receive(:ensure_unlocked).with('hello')
18
26
  subject.publish('hello')
19
27
  end
20
28
  end
@@ -12,12 +12,19 @@ describe Shelr::Recorder do
12
12
  describe "#record!" do
13
13
  before do
14
14
  subject.stub(:system).with(anything).and_return(true)
15
+ subject.stub(:record_id => "1")
16
+ subject.stub(:with_lock_file).and_yield
15
17
  end
16
18
 
17
19
  it "starts script session" do
18
20
  subject.should_receive(:system).with(/script/)
19
21
  subject.record!
20
22
  end
23
+
24
+ it "creates lock file" do
25
+ subject.should_receive(:with_lock_file)
26
+ subject.record!
27
+ end
21
28
  end
22
29
 
23
30
  describe "#request_metadata" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shelr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.2
4
+ version: 0.12.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -86,7 +86,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
86
86
  version: '0'
87
87
  segments:
88
88
  - 0
89
- hash: -3704152235157863011
89
+ hash: 1640227039729566954
90
90
  required_rubygems_version: !ruby/object:Gem::Requirement
91
91
  none: false
92
92
  requirements:
@@ -95,7 +95,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
95
95
  version: '0'
96
96
  segments:
97
97
  - 0
98
- hash: -3704152235157863011
98
+ hash: 1640227039729566954
99
99
  requirements: []
100
100
  rubyforge_project:
101
101
  rubygems_version: 1.8.21