kood 0.0.1

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.
@@ -0,0 +1,67 @@
1
+ require 'minitest/autorun'
2
+ require 'kood'
3
+
4
+ module Kood
5
+ # Prevent memoization in order to run the command suite multiple times
6
+ def clear_repo
7
+ @repo = {}
8
+ end
9
+ end
10
+
11
+ class Kood::Config
12
+ def self.clear_instance
13
+ @@instance = nil
14
+ end
15
+ end
16
+
17
+ module Adapter
18
+ module UserConfigFile
19
+ def self.clear_conf
20
+ config_file = Kood::KOOD_ROOT.join(Kood.config_path)
21
+ File.delete(config_file) if File.exist?(config_file)
22
+ @@conf = nil
23
+ end
24
+ end
25
+ end
26
+
27
+ module Kood
28
+ module Shell
29
+ def set_terminal_size(width = 1024, height = 768)
30
+ @@size = [width, height]
31
+ end
32
+
33
+ def terminal_size
34
+ @@size || [1024, 768]
35
+ end
36
+ end
37
+ end
38
+
39
+ def set_env(vars)
40
+ vars.each_pair do |key, value|
41
+ ENV[key.to_s] = value
42
+ end
43
+ end
44
+
45
+ # Shortcut to execute thor commands and capture its output
46
+ def kood_colored(*cmds)
47
+ stdout = stderr = []
48
+
49
+ # If only one command was passed, return stdout if successful or stderr otherwise
50
+ if cmds.size == 1
51
+ out, err = capture_io { Kood::CLI.start cmds.first.shellsplit }
52
+ return err.empty? ? out.chomp : err.chomp
53
+ end
54
+
55
+ # If several commands were passed, return stdout and stderr for each one
56
+ cmds.each do |cmd|
57
+ out, err = capture_io { Kood::CLI.start cmd.shellsplit }
58
+ stdout << out
59
+ stderr << err
60
+ end
61
+ return stdout, stderr
62
+ end
63
+
64
+ def kood(*cmds)
65
+ cmds.map! { |cmd| cmd += " --no-color" }
66
+ kood_colored(*cmds)
67
+ end
@@ -0,0 +1,67 @@
1
+ require 'minitest/autorun'
2
+ require 'kood'
3
+
4
+ class Test < MiniTest::Unit::TestCase
5
+ include Kood
6
+
7
+ def test_no_method_options_removes_class_options_from_options
8
+ kood = CLI.new
9
+
10
+ kood.options = { 'foo' => "bar" } # Pass a single method option
11
+ refute kood.send(:no_method_options?)
12
+
13
+ kood.options = { 'debug' => "class option" } # Pass a single class option
14
+ assert kood.send(:no_method_options?)
15
+
16
+ kood.options = CLI.class_options # Pass several class options
17
+ assert kood.send(:no_method_options?)
18
+
19
+ kood.options = { 'foo' => "bar", 'debug' => "class option" } # Method and class opts
20
+ refute kood.send(:no_method_options?)
21
+ end
22
+
23
+ def test_shell_argument_type_conversion
24
+ assert_equal "foo", Shell.type_cast("foo")
25
+ assert_equal 1, Shell.type_cast("1")
26
+ assert_in_delta 1.0, Shell.type_cast("1.0")
27
+ assert_equal 29, Shell.type_cast("+0000029")
28
+ assert_in_delta -523.49, Shell.type_cast("-0523.49")
29
+ end
30
+
31
+ def test_card_pretty_attributes
32
+ card = Card.new
33
+
34
+ assert_empty card.pretty_attributes
35
+ assert_empty card.pretty_attributes(['invalid'])
36
+ assert_equal "Date: #{ card.date }", card.pretty_attributes(['date'])
37
+
38
+ card.title = "Lorem Ipsum"
39
+ card.more['hello_world'] = "foo"
40
+
41
+ assert_equal "Hello world: foo", card.pretty_attributes
42
+ output = "Title: #{' '*6} Lorem Ipsum\nHello world: foo"
43
+ assert_equal output, card.pretty_attributes(['title', 'more'])
44
+ assert_equal output, card.pretty_attributes(['title', 'more', 'invalid'])
45
+ end
46
+
47
+ def test_card_find_by_partial_title
48
+ list = List.create(id: "list")
49
+
50
+ %w{ fo foo fooo! bar0 bar1 telescope }.each { |t| list.cards.create(title: t) }
51
+ list.cards.create(title: "space", id: "foo")
52
+
53
+ assert_equal 2, Card.find_all_by_partial_title("foo", list: list).length
54
+ assert_equal 3, Card.find_all_by_partial_title("f", list: list).length
55
+ assert_equal 3, Card.find_all_by_partial_title_or_id("foo", list: list).length
56
+ assert_equal "foo", Card.find_by_partial_title!("foo", list: list).title
57
+ assert_equal "foo", Card.find_by_partial_title!("foo", list: list, unique: true).title
58
+ assert_equal "fooo!", Card.find_by_partial_title!("fooo", list: list, unique: true).title
59
+
60
+ assert_raises MultipleDocumentsFound do
61
+ Card.find_by_partial_title!("bar", list: list, unique: true)
62
+ end
63
+ assert_raises MultipleDocumentsFound do
64
+ Card.find_by_partial_title_or_id!("foo", list: list, unique: true)
65
+ end
66
+ end
67
+ end
metadata ADDED
@@ -0,0 +1,198 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: kood
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - David Francisco
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-01-30 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: ronn
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 0.7.0
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 0.7.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 0.9.2
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 0.9.2
46
+ - !ruby/object:Gem::Dependency
47
+ name: activesupport
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 3.2.9
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 3.2.9
62
+ - !ruby/object:Gem::Dependency
63
+ name: thor
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 0.16.0
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 0.16.0
78
+ - !ruby/object:Gem::Dependency
79
+ name: adapter-git
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 0.5.0
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 0.5.0
94
+ - !ruby/object:Gem::Dependency
95
+ name: toystore
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: 0.10.4
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 0.10.4
110
+ - !ruby/object:Gem::Dependency
111
+ name: user_config
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ description:
127
+ email: kood@dmfranc.com
128
+ executables:
129
+ - kood
130
+ extensions: []
131
+ extra_rdoc_files: []
132
+ files:
133
+ - .gitignore
134
+ - .yardopts
135
+ - Gemfile
136
+ - LICENSE
137
+ - README.md
138
+ - Rakefile
139
+ - bin/kood
140
+ - kood.gemspec
141
+ - lib/kood-plugin-example.rb
142
+ - lib/kood.rb
143
+ - lib/kood/adapter/git.rb
144
+ - lib/kood/adapter/user_config.rb
145
+ - lib/kood/board.rb
146
+ - lib/kood/card.rb
147
+ - lib/kood/cli.rb
148
+ - lib/kood/cli/board.rb
149
+ - lib/kood/cli/card.rb
150
+ - lib/kood/cli/edit.rb
151
+ - lib/kood/cli/helpers/shell.rb
152
+ - lib/kood/cli/helpers/table.rb
153
+ - lib/kood/cli/list.rb
154
+ - lib/kood/cli/plugin.rb
155
+ - lib/kood/cli/switch.rb
156
+ - lib/kood/core.rb
157
+ - lib/kood/errors.rb
158
+ - lib/kood/extensions/grit.rb
159
+ - lib/kood/list.rb
160
+ - lib/kood/version.rb
161
+ - man/kood-board.1
162
+ - man/kood-board.1.html
163
+ - man/kood-board.1.ronn
164
+ - man/kood-card.1
165
+ - man/kood-card.1.html
166
+ - man/kood-card.1.ronn
167
+ - spec/kood/cli_spec.rb
168
+ - spec/spec_helper.rb
169
+ - test/kood/cli_test.rb
170
+ homepage: http://kood.dmfranc.com
171
+ licenses: []
172
+ post_install_message:
173
+ rdoc_options: []
174
+ require_paths:
175
+ - lib
176
+ required_ruby_version: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ! '>='
180
+ - !ruby/object:Gem::Version
181
+ version: 1.9.0
182
+ required_rubygems_version: !ruby/object:Gem::Requirement
183
+ none: false
184
+ requirements:
185
+ - - ! '>='
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ requirements: []
189
+ rubyforge_project:
190
+ rubygems_version: 1.8.24
191
+ signing_key:
192
+ specification_version: 3
193
+ summary: Work smarter -- An extensible CLI for git-backed taskboards.
194
+ test_files:
195
+ - spec/kood/cli_spec.rb
196
+ - spec/spec_helper.rb
197
+ - test/kood/cli_test.rb
198
+ has_rdoc: