checkcheckit 0.0.1 → 0.0.2

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/.gitignore CHANGED
@@ -15,3 +15,6 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ bin/minitar
19
+ bin/rdebug
20
+ bin/turn
data/README.md CHANGED
@@ -8,15 +8,17 @@ use checklists, like a boss
8
8
 
9
9
  ## TODO
10
10
 
11
- - option parsing
12
11
  - save a run
13
12
  - to file
14
13
  - to service
15
14
  - resume a run
16
- - run commands with confirmation
15
+ - run to campfire
16
+ - commands with confirmation
17
17
  - saves results
18
- - `pull` list(s) (via git)
19
- - `push` list(s) (via git)
18
+ - run on phone
19
+ - kick off from cmd line
20
+ - send email to self
21
+ - click on url in email in phone
20
22
 
21
23
  ## Usage
22
24
 
@@ -45,13 +47,12 @@ Everything beneath a step is that step's body or description.
45
47
 
46
48
  You can go through a checklist by running `check start ` and then the checklist name.
47
49
 
48
- (NIY - Not Implemented Yet)
49
50
  If there are multiple checklists with the same name use the format `folder/checklist`.
50
51
 
51
- When you iterate through a checklist you can just type "enter", "y", or "+" to confirm a step.
52
+ When you iterate through a checklist you can just type "enter", "y", or "+" to confirm a step and "no" or "-" to
53
+ fail one.
52
54
 
53
- A "no", "-", or body of text (body of text NIY) is considered a failed step.
54
- The body of text is for describing what went wrong.
55
+ You can always enter optional notes.
55
56
 
56
57
  For example:
57
58
 
@@ -59,19 +60,23 @@ For example:
59
60
  |-------| Step 1: Pull everything from git
60
61
  > git pull origin
61
62
  Check: <enter>
63
+ Notes: <enter>
62
64
 
63
65
  |+------| Step 2: Make sure there are no uncommitted changes
64
66
  > `git status`
65
67
  Check: <n>
68
+ Notes: <enter>
66
69
 
67
70
  |+------| Step 3: Diff master with heroku/master
68
71
  Make sure the change you want to push are what you're pushing
69
72
  > git fetch heroku
70
73
  > git diff heroku/master | $EDITOR
71
74
  Check: <y>
75
+ Notes: <enter>
72
76
 
73
77
  |+-+----| Step 4: Run the test suite
74
78
  Check: failures!
79
+ Notes: <enter>
75
80
 
76
81
 
77
82
 
data/bin/check CHANGED
@@ -2,6 +2,4 @@
2
2
 
3
3
  require 'checkcheckit'
4
4
 
5
- args = ARGV.dup
6
-
7
- CheckCheckIt::Console.new.run! args
5
+ CheckCheckIt::Console.new.run! ARGV
data/checkcheckit.gemspec CHANGED
@@ -16,4 +16,6 @@ Gem::Specification.new do |gem|
16
16
  gem.executables = 'check'
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
18
  gem.require_paths = ["lib"]
19
+
20
+ gem.add_dependency 'lucy-goosey', '~> 0.2.0'
19
21
  end
@@ -2,25 +2,25 @@ require 'ostruct'
2
2
 
3
3
  class CheckCheckIt::Console
4
4
  attr_accessor :list_dir
5
- attr_accessor :stream, :in_stream
5
+ attr_accessor :out_stream, :in_stream
6
6
 
7
7
  def initialize(opts = {})
8
- ARGV.clear
9
- default_dir = opts.fetch(:dir, '~/checkcheckit')
10
- @list_dir = File.expand_path(default_dir)
11
- @stream = opts[:out_stream] || STDOUT
12
- @in_stream = opts[:in_stream] || STDIN
8
+ @out_stream = opts[:out_stream] || $stdout
9
+ @in_stream = opts[:in_stream] || $stdin
13
10
  end
14
11
 
15
12
  def puts(text = '')
16
- @stream.puts text
13
+ @out_stream.puts text
17
14
  end
18
15
 
19
16
  def print(text = '')
20
- @stream.print text
17
+ @out_stream.print text
21
18
  end
22
19
 
23
- def run!(args)
20
+ def run!(args = [])
21
+ @options = Lucy::Goosey.parse_options(args)
22
+ @list_dir = File.expand_path(@options.fetch('home', '~/checkcheckit'))
23
+
24
24
  if args.length == 0
25
25
  puts "No command given"
26
26
  else
@@ -43,16 +43,38 @@ class CheckCheckIt::Console
43
43
  list.steps.each_with_index do |step, i|
44
44
  puts "#{fmt_results(results)} Step #{i+1}: #{step.name}"
45
45
  puts step.body unless step.body.empty?
46
- print "Check: "
47
46
 
48
- case input = in_stream.gets
49
- when /^[y|+]$/ || ''
50
- results[i] = true
51
- when /^[n|-]$/
52
- results[i] = false
53
- else
54
- results[i] = false
47
+ check, notes = nil
48
+ begin
49
+ print "Check: "
50
+ case input = in_stream.gets
51
+ when /^[y|+]$/ || ''
52
+ check = true
53
+ when /^[n|-]$/
54
+ check = false
55
+ else
56
+ check = true
57
+ end
58
+
59
+ if @options['notes'] || @options['n']
60
+ print "Notes: "
61
+ notes = in_stream.gets
62
+ end
63
+ rescue Interrupt => e
64
+ puts "\nGoodbye!"
65
+ exit 1
55
66
  end
67
+
68
+ results[i] = {
69
+ step: i + 1,
70
+ name: step.name,
71
+ body: step.body,
72
+ check: check,
73
+ result: check ? 'CHECK' : 'FAIL',
74
+ status: check ? 1 : 0,
75
+ notes: notes
76
+ }
77
+
56
78
  puts
57
79
  end
58
80
 
@@ -64,22 +86,12 @@ class CheckCheckIt::Console
64
86
  def save_results(list,results)
65
87
  report = {
66
88
  'list-name' => list.name,
67
- 'results' => []
89
+ 'results' => results
68
90
  }
69
- list.steps.each_with_index do |step, i|
70
- report['results'] << {
71
- index: i,
72
- name: step.name,
73
- body: step.body,
74
- result: results[i] ? 'CHECK' : 'FAIL',
75
- status: results[i] ? 1 : 0,
76
- }
77
- end
78
- report
79
91
  end
80
92
 
81
93
  def start(args)
82
- target = args.join(' ')
94
+ target = args.first
83
95
  hit = Dir[dir + '/*/*'].find{ |fname| fname.include? target }
84
96
  if hit
85
97
  step_through_list(List.new(hit))
@@ -101,6 +113,13 @@ class CheckCheckIt::Console
101
113
 
102
114
  private
103
115
  def fmt_results(results)
104
- "|#{results.map { |r| r ? '+' : '-' }.join}|"
116
+ keys = results.map do |result|
117
+ if result
118
+ result[:check] ? '+' : '-'
119
+ else
120
+ '.'
121
+ end
122
+ end
123
+ "|#{keys.join}|"
105
124
  end
106
125
  end
@@ -1,3 +1,3 @@
1
1
  module CheckCheckIt
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/checkcheckit.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'lucy-goosey'
1
2
  require "checkcheckit/version"
2
3
 
3
4
  module CheckCheckIt
data/test/console_test.rb CHANGED
@@ -17,10 +17,46 @@ class ConsoleTest < CheckCheckIt::TestCase
17
17
  dir = File.join('/foo', 'personal')
18
18
  FileUtils.mkdir_p(dir)
19
19
 
20
- @console = CheckCheckIt::Console.new(:dir => '/foo', out_stream: StringIO.new)
21
-
22
- check "list"
20
+ check "list --home /foo"
23
21
  assert_match(/^personal\n/, output)
24
22
  end
25
- end
26
23
 
24
+
25
+ def test_default_no_notes
26
+ console.in_stream = MiniTest::Mock.new
27
+ console.out_stream = MiniTest::Mock.new
28
+
29
+ 9.times do
30
+ console.out_stream.expect :puts, true, [String]
31
+ end
32
+ 3.times do
33
+ console.out_stream.expect :print, true, ["Check: "]
34
+ end
35
+ console.in_stream.expect :gets, "n"
36
+ console.in_stream.expect :gets, "y"
37
+ console.in_stream.expect :gets, "n"
38
+ result = check "start groceries"
39
+ end
40
+
41
+ def test_includes_notes
42
+ console.in_stream = MiniTest::Mock.new
43
+ console.out_stream = MiniTest::Mock.new
44
+
45
+ 9.times do
46
+ console.out_stream.expect :puts, true, [String]
47
+ end
48
+ 3.times do
49
+ console.out_stream.expect :print, true, ["Check: "]
50
+ console.out_stream.expect :print, true, ["Notes: "]
51
+ end
52
+ console.in_stream.expect :gets, "n"
53
+ console.in_stream.expect :gets, "Shit's fucked"
54
+ console.in_stream.expect :gets, "y"
55
+ console.in_stream.expect :gets, ""
56
+ console.in_stream.expect :gets, "n"
57
+ console.in_stream.expect :gets, "Really, bad"
58
+ check "start groceries --notes"
59
+ console.in_stream.verify
60
+ console.out_stream.verify
61
+ end
62
+ end
data/test/helper.rb CHANGED
@@ -30,7 +30,7 @@ module ConsoleTestHelpers
30
30
  #
31
31
  # # check 'start deploy'
32
32
  def check(cmd_string)
33
- console.run! cmd_string.split
33
+ console.run! cmd_string.split(' ')
34
34
  end
35
35
 
36
36
  def reset_console
@@ -43,11 +43,11 @@ module ConsoleTestHelpers
43
43
  end
44
44
 
45
45
  def output
46
- console.stream.string
46
+ console.out_stream.string
47
47
  end
48
48
 
49
49
  def home
50
- console.list_dir
50
+ console.list_dir || '~/checkcheckit'
51
51
  end
52
52
 
53
53
  end
@@ -1,18 +1,29 @@
1
1
  require 'helper'
2
2
 
3
- describe 'Storing Results after a run' do
3
+ describe 'Resuming a checklist' do
4
4
  def setup
5
5
  super
6
6
  Examples.create_grocery_list(home)
7
7
  end
8
8
 
9
+ #TODO: verify though the console
10
+
9
11
  it "should record the pass/fail of each step" do
10
12
  console.in_stream = MiniTest::Mock.new
13
+ console.out_stream = MiniTest::Mock.new
14
+
15
+ 9.times do
16
+ console.out_stream.expect :puts, true, [String]
17
+ end
18
+ 3.times do
19
+ console.out_stream.expect :print, true, ["Check: "]
20
+ end
11
21
  console.in_stream.expect :gets, "n"
12
22
  console.in_stream.expect :gets, "y"
13
23
  console.in_stream.expect :gets, "n"
14
24
  result = check "start groceries"
15
25
  console.in_stream.verify
26
+ console.out_stream.verify
16
27
  result["results"][0][:result].must_equal "FAIL"
17
28
  result["results"][0][:status].must_equal 0
18
29
  result["results"][1][:result].must_equal "CHECK"
@@ -23,7 +34,7 @@ describe 'Storing Results after a run' do
23
34
 
24
35
  it "should record the name of each step" do
25
36
  console.in_stream = MiniTest::Mock.new
26
- 3.times { console.in_stream.expect :gets, "y" }
37
+ 6.times { console.in_stream.expect :gets, "y" }
27
38
  result = check "start groceries"
28
39
  console.in_stream.verify
29
40
  result["results"][0][:name].must_equal "pineapple"
@@ -33,7 +44,7 @@ describe 'Storing Results after a run' do
33
44
 
34
45
  it "should record the body of each step" do
35
46
  console.in_stream = MiniTest::Mock.new
36
- 3.times { console.in_stream.expect :gets, "y" }
47
+ 6.times { console.in_stream.expect :gets, "y" }
37
48
  result = check "start groceries"
38
49
  console.in_stream.verify
39
50
  =begin
@@ -44,3 +55,4 @@ describe 'Storing Results after a run' do
44
55
  end
45
56
  end
46
57
 
58
+
data/test/start_test.rb CHANGED
@@ -8,7 +8,7 @@ class StartTest < CheckCheckIt::TestCase
8
8
 
9
9
  def test_list_parses_steps
10
10
  console.in_stream = MiniTest::Mock.new
11
- 3.times { console.in_stream.expect :gets, "y" }
11
+ 6.times { console.in_stream.expect :gets, "y" }
12
12
  result = check "start groceries"
13
13
  console.in_stream.verify
14
14
  end
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.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,24 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-12 00:00:00.000000000 Z
13
- dependencies: []
12
+ date: 2012-12-15 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: lucy-goosey
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 0.2.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 0.2.0
14
30
  description: Checklists like a boss
15
31
  email:
16
32
  - christopher.continanza@gmail.com
@@ -34,7 +50,7 @@ files:
34
50
  - test/console_test.rb
35
51
  - test/helper.rb
36
52
  - test/list_test.rb
37
- - test/results_test.rb
53
+ - test/resume_test.rb
38
54
  - test/start_test.rb
39
55
  homepage: ''
40
56
  licenses: []
@@ -50,7 +66,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
50
66
  version: '0'
51
67
  segments:
52
68
  - 0
53
- hash: 3522511683697989869
69
+ hash: -328919571766986196
54
70
  required_rubygems_version: !ruby/object:Gem::Requirement
55
71
  none: false
56
72
  requirements:
@@ -59,7 +75,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
59
75
  version: '0'
60
76
  segments:
61
77
  - 0
62
- hash: 3522511683697989869
78
+ hash: -328919571766986196
63
79
  requirements: []
64
80
  rubyforge_project:
65
81
  rubygems_version: 1.8.23
@@ -70,5 +86,5 @@ test_files:
70
86
  - test/console_test.rb
71
87
  - test/helper.rb
72
88
  - test/list_test.rb
73
- - test/results_test.rb
89
+ - test/resume_test.rb
74
90
  - test/start_test.rb