checkcheckit 0.0.6 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1,5 @@
1
1
  require 'ostruct'
2
+ require 'uri'
2
3
 
3
4
  class CheckCheckIt::Console
4
5
  attr_accessor :list_dir
@@ -41,26 +42,21 @@ class CheckCheckIt::Console
41
42
  list_name = Dir[dir + '/*/*'].find{ |fname| fname.include? target }
42
43
  if list_name
43
44
  list = List.new(list_name)
44
- web_service_url = ENV['CHECKCHECKIT_URL']
45
- client = nil
46
45
  if (emails = @options['email']) || @options['live']
47
-
48
46
  @list_id = list_id = notify_server_of_start(emails, list)
47
+ puts "Live at URL: #{URI.join(web_service_url, list_id)}"
49
48
 
50
- puts "Live at URL: #{web_service_url}/#{list_id}"
51
-
52
- if @options['ws']
53
- begin
54
- @client = web_socket.connect(web_service_url, sync: true) do
55
- after_start { emit('register', {list_id: list_id}) }
56
- end
57
- rescue Errno::ECONNREFUSED => e
58
- STDERR.puts "Websocket refused connection"
49
+ begin
50
+ @client = web_socket.connect(web_service_url, sync: true) do
51
+ after_start { emit('register', {list_id: list_id}) }
59
52
  end
53
+ rescue Errno::ECONNREFUSED, WebSocket::Error => e
54
+ STDERR.puts "Websocket refused connection - using POST"
55
+ @use_post = true
60
56
  end
61
57
  end
62
58
 
63
- return if @options['no-cli'] || @options['n']
59
+ return if @options['no-cli'] || @options['web']
64
60
  step_through_list(list)
65
61
  else
66
62
  puts "Could not find checklist via: #{target}"
@@ -114,6 +110,10 @@ class CheckCheckIt::Console
114
110
  }
115
111
  end
116
112
 
113
+ if @use_post
114
+ post_check(@list_id, i)
115
+ end
116
+
117
117
  results[i] = {
118
118
  step: i + 1,
119
119
  name: step.name,
@@ -161,6 +161,16 @@ class CheckCheckIt::Console
161
161
  ENV['CHECKCHECKIT_URL']
162
162
  end
163
163
 
164
+ def post_check(list_id, step_id)
165
+ begin
166
+ url = URI.join(web_service_url, "/#{list_id}/check/#{step_id}").to_s
167
+ STDERR.puts url
168
+ Excon.post(url)
169
+ rescue Excon::Errors::SocketError, ArgumentError => e
170
+ puts "Error POSTing to #{url}"
171
+ end
172
+ end
173
+
164
174
  # Returns id
165
175
  def notify_server_of_start(emails, list)
166
176
  begin
@@ -1,3 +1,3 @@
1
1
  module CheckCheckIt
2
- VERSION = "0.0.6"
2
+ VERSION = "0.1.0"
3
3
  end
data/test/start_test.rb CHANGED
@@ -31,6 +31,8 @@ class StartTest < CheckCheckIt::TestCase
31
31
  # you can run it on the web.
32
32
  def test_email_flag_triggers_live_mode
33
33
  client = MiniTest::Mock.new
34
+ console.web_socket.expect :connect, client, [String, {sync: true}]
35
+ 3.times { client.expect :emit, true, ['check', Hash] }
34
36
  Excon.stub({:method => :post, :body => {
35
37
  emails: "csquared@heroku.com,thea.lamkin@gmail.com",
36
38
  list: List.new(home + '/personal/groceries').to_h
@@ -39,19 +41,12 @@ class StartTest < CheckCheckIt::TestCase
39
41
  check "start groceries --email csquared@heroku.com,thea.lamkin@gmail.com"
40
42
  end
41
43
 
42
- def test_websocket_mode
44
+ # Same as above but with env set
45
+ def test_reads_email_from_env
43
46
  set_env 'CHECKCHECKIT_EMAIL', "csquared@heroku.com,thea.lamkin@gmail.com"
44
47
  client = MiniTest::Mock.new
45
48
  console.web_socket.expect :connect, client, [String, {sync: true}]
46
- Excon.stub({:method => :post}, {:status => 200})
47
- 3.times { console.in_stream.expect :gets, "y" }
48
49
  3.times { client.expect :emit, true, ['check', Hash] }
49
- check "start groceries --ws"
50
- end
51
-
52
- # Same as above but with env set
53
- def test_reads_email_from_env
54
- set_env 'CHECKCHECKIT_EMAIL', "csquared@heroku.com,thea.lamkin@gmail.com"
55
50
  Excon.stub({:method => :post, :body => {
56
51
  emails: "csquared@heroku.com,thea.lamkin@gmail.com",
57
52
  list: List.new(home + '/personal/groceries').to_h
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: checkcheckit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -114,7 +114,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
114
114
  version: '0'
115
115
  segments:
116
116
  - 0
117
- hash: 3870174722211618529
117
+ hash: 2251498122202537334
118
118
  required_rubygems_version: !ruby/object:Gem::Requirement
119
119
  none: false
120
120
  requirements:
@@ -123,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
123
  version: '0'
124
124
  segments:
125
125
  - 0
126
- hash: 3870174722211618529
126
+ hash: 2251498122202537334
127
127
  requirements: []
128
128
  rubyforge_project:
129
129
  rubygems_version: 1.8.23