working 0.0.7 → 0.0.8
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 +3 -0
- data/Guardfile +2 -0
- data/README.md +9 -6
- data/Rakefile +1 -0
- data/bin/working-init +0 -1
- data/lib/working/gemspec.rb +81 -0
- data/lib/working/rake_tasks.rb +1 -0
- data/lib/working/version.rb +1 -1
- data/lib/working.rb +1 -2
- data/test/test_helper.rb +6 -0
- data/test/working/gemspec_test.rb +75 -0
- metadata +8 -2
data/Gemfile
CHANGED
data/Guardfile
ADDED
data/README.md
CHANGED
@@ -1,22 +1,25 @@
|
|
1
|
-
|
1
|
+
= Working
|
2
2
|
|
3
3
|
Whoa!! ☈king's opinionated rig for Ruby dev.
|
4
4
|
|
5
|
-
|
5
|
+
== Basic Idea
|
6
|
+
|
7
|
+
- Opinionatedly uses MiniTest for everything. It makes better in-memory structures than RSpec, and is therefore better for the goals of https://github.com/pry/pry/wiki/pry-de
|
6
8
|
- 1:1 mapping between stuff in `lib/` or `app/` and the `test/` dirs.
|
9
|
+
- Guard for test running (`bundle exec guard`)
|
7
10
|
- Spork in effect for faster runs
|
8
11
|
|
9
|
-
|
12
|
+
== See also:
|
10
13
|
|
11
14
|
http://github.com/rking/working-rails
|
12
15
|
|
13
|
-
|
16
|
+
== Example uses:
|
14
17
|
|
15
18
|
- https://github.com/rking/demo-ruby-tests
|
16
19
|
- https://github.com/rking/monkeynote
|
17
20
|
- https://github.com/rking/terminal-info
|
18
21
|
|
19
|
-
|
22
|
+
== Installation
|
20
23
|
|
21
24
|
Add this line to your application's Gemfile:
|
22
25
|
|
@@ -27,6 +30,6 @@ And then execute:
|
|
27
30
|
bundle
|
28
31
|
working-init # this tinkers with several files (verbosely)
|
29
32
|
|
30
|
-
|
33
|
+
== TODO
|
31
34
|
|
32
35
|
Explain the parts.
|
data/Rakefile
CHANGED
data/bin/working-init
CHANGED
@@ -0,0 +1,81 @@
|
|
1
|
+
$:.unshift './lib'
|
2
|
+
|
3
|
+
module Working
|
4
|
+
README_PATH = 'README.rdoc'
|
5
|
+
REQUIRED_FIELDS = [
|
6
|
+
:name,
|
7
|
+
:summary,
|
8
|
+
:description,
|
9
|
+
:authors,
|
10
|
+
:email,
|
11
|
+
:version,
|
12
|
+
:github,
|
13
|
+
:deps,
|
14
|
+
]
|
15
|
+
|
16
|
+
class << self
|
17
|
+
def gemspec args
|
18
|
+
validate_gem_args! args
|
19
|
+
require_version_file args[:name]
|
20
|
+
Gem::Specification.new do |gem|
|
21
|
+
[ :name, :summary, :authors, :email, :version ].each do |e|
|
22
|
+
gem.send "#{e}=", args[e]
|
23
|
+
end
|
24
|
+
|
25
|
+
gem.description = gem.summary + "\n\n" + args[:description]
|
26
|
+
|
27
|
+
gem.homepage = 'https://github.com/' + args[:github]
|
28
|
+
|
29
|
+
gem.files = git_ls_files
|
30
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{|f| File.basename f}
|
31
|
+
gem.test_files = gem.files.grep %r{^(test|spec|features)}
|
32
|
+
|
33
|
+
args[:deps].each do |e|
|
34
|
+
gem.add_dependency e
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def validate_gem_args! input
|
40
|
+
args = input.dup
|
41
|
+
missing_fields = REQUIRED_FIELDS.find_all{|e| !args.delete e}
|
42
|
+
fail <<-EOT unless args.size.zero?
|
43
|
+
Working.gem got #{args.keys.join ' and '},
|
44
|
+
but only expected #{REQUIRED_FIELDS.map(&:to_s).join ', '}
|
45
|
+
EOT
|
46
|
+
return if missing_fields.size.zero?
|
47
|
+
fail "Working.gem needs: #{missing_fields.map(&:to_s).join ', '}"
|
48
|
+
end
|
49
|
+
|
50
|
+
def git_ls_files
|
51
|
+
`git ls-files`.split $/
|
52
|
+
end
|
53
|
+
|
54
|
+
def require_version_file name
|
55
|
+
require name
|
56
|
+
rescue LoadError
|
57
|
+
# Do nothing
|
58
|
+
end
|
59
|
+
|
60
|
+
def file_snippet path, start_pattern, end_pattern
|
61
|
+
desired = []
|
62
|
+
in_desired_region = false
|
63
|
+
File.readlines(path).each do |e|
|
64
|
+
break if e[end_pattern]
|
65
|
+
in_desired_region = true if e[start_pattern]
|
66
|
+
desired << e if in_desired_region
|
67
|
+
end
|
68
|
+
desired.join
|
69
|
+
end
|
70
|
+
def readme_snippet start_pattern, end_pattern
|
71
|
+
file_snippet README_PATH, start_pattern, end_pattern
|
72
|
+
end
|
73
|
+
|
74
|
+
def file_third_line path
|
75
|
+
File.readlines(path)[2]
|
76
|
+
end
|
77
|
+
def third_line_of_readme
|
78
|
+
file_third_line README_PATH
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
data/lib/working/rake_tasks.rb
CHANGED
data/lib/working/version.rb
CHANGED
data/lib/working.rb
CHANGED
data/test/test_helper.rb
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
require './test/test_helper.rb'
|
2
|
+
class WorkingGemspecTest < MiniTest::Unit::TestCase
|
3
|
+
def valid_working_gemspec_args
|
4
|
+
{
|
5
|
+
name: 'mygem', # TODO: Deduce this
|
6
|
+
version: '0.2.3', # TODO: Deduce MyGem::VERSION (from file?)
|
7
|
+
authors: ['Cod Err'],
|
8
|
+
github: 'coderr/mygem',
|
9
|
+
email: 'foo@example.com',
|
10
|
+
deps: %w(a b c),
|
11
|
+
summary: 'Hi.',
|
12
|
+
description: 'Hello, how are you?',
|
13
|
+
}
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_dsl
|
17
|
+
gem = nil
|
18
|
+
fake_file_list = %w(
|
19
|
+
Gemfile
|
20
|
+
bin/mygeminate
|
21
|
+
lib/mygem.rb
|
22
|
+
lib/mygem/version.rb
|
23
|
+
test/mygem_test.rb
|
24
|
+
)
|
25
|
+
version_file_arg = nil
|
26
|
+
Working.stub :require_version_file, -> path { version_file_arg = path } do
|
27
|
+
Working.stub :git_ls_files, fake_file_list do
|
28
|
+
args = valid_working_gemspec_args
|
29
|
+
gem = Working.gemspec args
|
30
|
+
end
|
31
|
+
end
|
32
|
+
assert_equal 'mygem', gem.name
|
33
|
+
assert_equal 'Hi.', gem.summary
|
34
|
+
assert_equal "Hi.\n\nHello, how are you?", gem.description
|
35
|
+
assert_equal ['Cod Err'], gem.authors
|
36
|
+
assert_equal 'foo@example.com', gem.email
|
37
|
+
assert_equal 'https://github.com/coderr/mygem', gem.homepage
|
38
|
+
assert_equal '0.2.3', gem.version.to_s
|
39
|
+
assert_equal 3, gem.dependencies.size
|
40
|
+
assert_equal fake_file_list, gem.files
|
41
|
+
assert_equal %w(mygeminate), gem.executables
|
42
|
+
assert_equal %w(test/mygem_test.rb), gem.test_files
|
43
|
+
assert_equal 'mygem', version_file_arg
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_verbose_failure
|
47
|
+
args = valid_working_gemspec_args
|
48
|
+
required_fields = %w(name authors email version github deps)
|
49
|
+
required_fields.each do |e|
|
50
|
+
begin
|
51
|
+
bad_args = args.dup
|
52
|
+
bad_args.delete e.to_sym
|
53
|
+
Working.gemspec bad_args
|
54
|
+
rescue => err
|
55
|
+
assert_match e, err.message
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
assert_raises RuntimeError do
|
60
|
+
Working.gemspec valid_working_gemspec_args.merge hi: 1
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_file_snippet
|
65
|
+
actual = Working.file_snippet(__FILE__, /^require/, /^\s*def/)
|
66
|
+
assert_equal %(require './test/test_helper.rb'
|
67
|
+
class WorkingGemspecTest < MiniTest::Unit::TestCase\n), actual
|
68
|
+
end
|
69
|
+
|
70
|
+
# This is because I put the gem.summary on the 3rd line of the README.rdoc
|
71
|
+
def test_third_line
|
72
|
+
assert_equal " def valid_working_gemspec_args\n",
|
73
|
+
Working.file_third_line(__FILE__)
|
74
|
+
end
|
75
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: working
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: pry-de
|
@@ -134,15 +134,19 @@ files:
|
|
134
134
|
- .gemspec
|
135
135
|
- .gitignore
|
136
136
|
- Gemfile
|
137
|
+
- Guardfile
|
137
138
|
- LICENSE.txt
|
138
139
|
- README.md
|
139
140
|
- Rakefile
|
140
141
|
- bin/working-init
|
141
142
|
- lib/working.rb
|
143
|
+
- lib/working/gemspec.rb
|
142
144
|
- lib/working/guard.rb
|
143
145
|
- lib/working/rake_tasks.rb
|
144
146
|
- lib/working/test_helper.rb
|
145
147
|
- lib/working/version.rb
|
148
|
+
- test/test_helper.rb
|
149
|
+
- test/working/gemspec_test.rb
|
146
150
|
homepage: https://github.com/rking/working
|
147
151
|
licenses: []
|
148
152
|
post_install_message:
|
@@ -169,4 +173,6 @@ specification_version: 3
|
|
169
173
|
summary: Whoa — ☈king's rig
|
170
174
|
test_files:
|
171
175
|
- .gemspec
|
176
|
+
- lib/working/gemspec.rb
|
177
|
+
- test/working/gemspec_test.rb
|
172
178
|
has_rdoc:
|