bueller 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.
Files changed (109) hide show
  1. data/ChangeLog.markdown +141 -0
  2. data/LICENSE +20 -0
  3. data/README.markdown +182 -0
  4. data/bin/bueller +5 -0
  5. data/lib/bueller/commands/build_gem.rb +50 -0
  6. data/lib/bueller/commands/git_tag_release.rb +63 -0
  7. data/lib/bueller/commands/install_gem.rb +36 -0
  8. data/lib/bueller/commands/release_to_github.rb +41 -0
  9. data/lib/bueller/commands/release_to_rubygems.rb +26 -0
  10. data/lib/bueller/commands/version/base.rb +36 -0
  11. data/lib/bueller/commands/version/bump_major.rb +11 -0
  12. data/lib/bueller/commands/version/bump_minor.rb +12 -0
  13. data/lib/bueller/commands/version/bump_patch.rb +14 -0
  14. data/lib/bueller/commands/version/write.rb +21 -0
  15. data/lib/bueller/commands/write_gemspec.rb +29 -0
  16. data/lib/bueller/commands.rb +18 -0
  17. data/lib/bueller/errors.rb +8 -0
  18. data/lib/bueller/gemspec_helper.rb +83 -0
  19. data/lib/bueller/generator/application.rb +51 -0
  20. data/lib/bueller/generator/bacon_mixin.rb +43 -0
  21. data/lib/bueller/generator/github_mixin.rb +29 -0
  22. data/lib/bueller/generator/micronaut_mixin.rb +41 -0
  23. data/lib/bueller/generator/minitest_mixin.rb +42 -0
  24. data/lib/bueller/generator/options.rb +154 -0
  25. data/lib/bueller/generator/rdoc_mixin.rb +9 -0
  26. data/lib/bueller/generator/riot_mixin.rb +42 -0
  27. data/lib/bueller/generator/rspec_mixin.rb +50 -0
  28. data/lib/bueller/generator/shindo_mixin.rb +44 -0
  29. data/lib/bueller/generator/shoulda_mixin.rb +42 -0
  30. data/lib/bueller/generator/testspec_mixin.rb +42 -0
  31. data/lib/bueller/generator/testunit_mixin.rb +39 -0
  32. data/lib/bueller/generator/yard_mixin.rb +14 -0
  33. data/lib/bueller/generator.rb +291 -0
  34. data/lib/bueller/rubyforge_tasks.rb +88 -0
  35. data/lib/bueller/tasks.rb +133 -0
  36. data/lib/bueller/templates/.document +11 -0
  37. data/lib/bueller/templates/.gitignore +40 -0
  38. data/lib/bueller/templates/Gemfile +1 -0
  39. data/lib/bueller/templates/LICENSE +20 -0
  40. data/lib/bueller/templates/README.rdoc +17 -0
  41. data/lib/bueller/templates/Rakefile +20 -0
  42. data/lib/bueller/templates/bacon/flunking.rb +7 -0
  43. data/lib/bueller/templates/bacon/helper.rb +8 -0
  44. data/lib/bueller/templates/bueller_tasks.erb +10 -0
  45. data/lib/bueller/templates/features/default.feature +9 -0
  46. data/lib/bueller/templates/features/support/env.rb +16 -0
  47. data/lib/bueller/templates/gemspec +27 -0
  48. data/lib/bueller/templates/micronaut/flunking.rb +7 -0
  49. data/lib/bueller/templates/micronaut/helper.rb +17 -0
  50. data/lib/bueller/templates/minitest/flunking.rb +7 -0
  51. data/lib/bueller/templates/minitest/helper.rb +11 -0
  52. data/lib/bueller/templates/other_tasks.erb +84 -0
  53. data/lib/bueller/templates/riot/flunking.rb +11 -0
  54. data/lib/bueller/templates/riot/helper.rb +3 -0
  55. data/lib/bueller/templates/rspec/.rspec +1 -0
  56. data/lib/bueller/templates/rspec/flunking.rb +7 -0
  57. data/lib/bueller/templates/rspec/helper.rb +19 -0
  58. data/lib/bueller/templates/shindo/flunking.rb +8 -0
  59. data/lib/bueller/templates/shindo/helper.rb +5 -0
  60. data/lib/bueller/templates/shoulda/flunking.rb +7 -0
  61. data/lib/bueller/templates/shoulda/helper.rb +10 -0
  62. data/lib/bueller/templates/testspec/flunking.rb +7 -0
  63. data/lib/bueller/templates/testspec/helper.rb +7 -0
  64. data/lib/bueller/templates/testunit/flunking.rb +7 -0
  65. data/lib/bueller/templates/testunit/helper.rb +9 -0
  66. data/lib/bueller/version_helper.rb +59 -0
  67. data/lib/bueller.rb +139 -0
  68. data/spec/bueller/commands/build_gem_spec.rb +38 -0
  69. data/spec/bueller/commands/git_tag_release_spec.rb +79 -0
  70. data/spec/bueller/commands/install_gem_spec.rb +11 -0
  71. data/spec/bueller/commands/release_to_github_spec.rb +54 -0
  72. data/spec/bueller/commands/release_to_rubygems_spec.rb +15 -0
  73. data/spec/bueller/commands/version/bump_major_spec.rb +12 -0
  74. data/spec/bueller/commands/version/bump_minor_spec.rb +12 -0
  75. data/spec/bueller/commands/version/bump_patch_spec.rb +12 -0
  76. data/spec/bueller/commands/write_gemspec_spec.rb +32 -0
  77. data/spec/bueller/gemspec_helper_spec.rb +55 -0
  78. data/spec/bueller/generator/application_spec.rb +67 -0
  79. data/spec/bueller/generator/options_spec.rb +206 -0
  80. data/spec/bueller/generator_mixins_spec.rb +23 -0
  81. data/spec/bueller/generator_spec.rb +274 -0
  82. data/spec/bueller/tasks_spec.rb +29 -0
  83. data/spec/bueller/version_helper_spec.rb +57 -0
  84. data/spec/bueller_spec.rb +94 -0
  85. data/spec/fixtures/bar/bar.gemspec +41 -0
  86. data/spec/fixtures/bar/bin/foo_the_ultimate_bin +1 -0
  87. data/spec/fixtures/bar/hey_include_me_in_gemspec +0 -0
  88. data/spec/fixtures/bar/lib/foo_the_ultimate_lib.rb +1 -0
  89. data/spec/fixtures/existing-project/LICENSE +20 -0
  90. data/spec/fixtures/existing-project/README.rdoc +7 -0
  91. data/spec/fixtures/existing-project/Rakefile +69 -0
  92. data/spec/fixtures/existing-project/existing-project.gemspec +20 -0
  93. data/spec/fixtures/existing-project/lib/existing_project_with_version.rb +0 -0
  94. data/spec/fixtures/existing-project/test/existing_project_with_version_test.rb +7 -0
  95. data/spec/fixtures/existing-project/test/test_helper.rb +10 -0
  96. data/spec/fixtures/existing-project-with-version-constant/LICENSE +20 -0
  97. data/spec/fixtures/existing-project-with-version-constant/README.rdoc +7 -0
  98. data/spec/fixtures/existing-project-with-version-constant/Rakefile +69 -0
  99. data/spec/fixtures/existing-project-with-version-constant/existing-project-with-version.gemspec +19 -0
  100. data/spec/fixtures/existing-project-with-version-constant/lib/existing_project_with_version.rb +0 -0
  101. data/spec/fixtures/existing-project-with-version-constant/test/existing_project_with_version_test.rb +7 -0
  102. data/spec/fixtures/existing-project-with-version-constant/test/test_helper.rb +10 -0
  103. data/spec/spec_helper.rb +11 -0
  104. data/spec/support/application.rb +28 -0
  105. data/spec/support/file_system.rb +24 -0
  106. data/spec/support/gemspec.rb +28 -0
  107. data/spec/support/git.rb +19 -0
  108. data/spec/support/have_version.rb +18 -0
  109. metadata +381 -0
@@ -0,0 +1,29 @@
1
+ class Bueller
2
+ class Generator
3
+ module GithubMixin
4
+ def self.extended(generator)
5
+ generator.github_username = generator.options[:github_username]
6
+ generator.github_token = generator.options[:github_token]
7
+ generator.create_remote_repo = generator.options[:create_repo]
8
+
9
+ unless generator.github_username
10
+ raise NoGitHubUser
11
+ end
12
+
13
+ if generator.create_remote_repo?
14
+ unless generator.github_token
15
+ raise NoGitHubToken
16
+ end
17
+ end
18
+ end
19
+
20
+ def git_remote
21
+ @git_remote ||= "git@github.com:#{github_username}/#{project_name}.git"
22
+ end
23
+
24
+ def homepage
25
+ @homepage ||= "http://github.com/#{github_username}/#{project_name}"
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,41 @@
1
+ class Bueller
2
+ class Generator
3
+ module MicronautMixin
4
+ def self.extended(generator)
5
+ generator.development_dependencies << 'micronaut'
6
+ end
7
+
8
+ def default_task
9
+ 'examples'
10
+ end
11
+
12
+ def feature_support_require
13
+ 'micronaut/expectations'
14
+ end
15
+
16
+ def feature_support_extend
17
+ 'Micronaut::Matchers'
18
+ end
19
+
20
+ def test_dir
21
+ 'examples'
22
+ end
23
+
24
+ def test_task
25
+ 'examples'
26
+ end
27
+
28
+ def test_pattern
29
+ 'examples/**/*_example.rb'
30
+ end
31
+
32
+ def test_filename
33
+ "#{require_name}_example.rb"
34
+ end
35
+
36
+ def test_helper_filename
37
+ "example_helper.rb"
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,42 @@
1
+ class Bueller
2
+ class Generator
3
+ module MinitestMixin
4
+ def self.extended(generator)
5
+ generator.development_dependencies << 'minitest'
6
+ end
7
+
8
+ def default_task
9
+ 'test'
10
+ end
11
+
12
+ def feature_support_require
13
+ 'minitest/unit'
14
+ end
15
+
16
+ def feature_support_extend
17
+ 'MiniTest::Assertions'
18
+ end
19
+
20
+ def test_dir
21
+ 'test'
22
+ end
23
+
24
+ def test_task
25
+ 'test'
26
+ end
27
+
28
+ def test_pattern
29
+ 'test/**/test_*.rb'
30
+ end
31
+
32
+ def test_filename
33
+ "test_#{require_name}.rb"
34
+ end
35
+
36
+ def test_helper_filename
37
+ "helper.rb"
38
+ end
39
+
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,154 @@
1
+
2
+ class Bueller
3
+ class Generator
4
+ class Options < Hash
5
+ attr_reader :opts, :orig_args
6
+
7
+ def initialize(args)
8
+ super()
9
+
10
+ @orig_args = args.clone
11
+ self[:testing_framework] = :rspec
12
+ self[:documentation_framework] = :rdoc
13
+
14
+ git_config = Git.global_config
15
+ self[:user_name] = git_config['user.name']
16
+ self[:user_email] = git_config['user.email']
17
+ self[:github_username] = git_config['github.user']
18
+ self[:github_token] = git_config['github.token']
19
+
20
+ require 'optparse'
21
+ @opts = OptionParser.new do |o|
22
+ o.banner = "Usage: #{File.basename($0)} [options] reponame\ne.g. #{File.basename($0)} the-perfect-gem"
23
+
24
+ o.on('--directory [DIRECTORY]', 'specify the directory to generate into') do |directory|
25
+ self[:directory] = directory
26
+ end
27
+
28
+ o.separator ""
29
+
30
+ o.on('--rspec', 'generate rspec code examples') do
31
+ self[:testing_framework] = :rspec
32
+ end
33
+
34
+ o.on('--shoulda', 'generate shoulda tests') do
35
+ self[:testing_framework] = :shoulda
36
+ end
37
+
38
+ o.on('--testunit', 'generate test/unit tests') do
39
+ self[:testing_framework] = :testunit
40
+ end
41
+
42
+ o.on('--bacon', 'generate bacon specifications') do
43
+ self[:testing_framework] = :bacon
44
+ end
45
+
46
+ o.on('--testspec', 'generate test/spec tests') do
47
+ self[:testing_framework] = :testspec
48
+ end
49
+
50
+ o.on('--minitest', 'generate minitest tests') do
51
+ self[:testing_framework] = :minitest
52
+ end
53
+
54
+ o.on('--micronaut', 'generate micronaut examples') do
55
+ self[:testing_framework] = :micronaut
56
+ end
57
+
58
+ o.on('--riot', 'generate riot tests') do
59
+ self[:testing_framework] = :riot
60
+ end
61
+
62
+ o.on('--shindo', 'generate shindo tests') do
63
+ self[:testing_framework] = :shindo
64
+ end
65
+
66
+ o.separator ""
67
+
68
+ o.on('--cucumber', 'generate cucumber stories in addition to the other tests') do
69
+ self[:use_cucumber] = true
70
+ end
71
+
72
+ o.separator ""
73
+
74
+ o.on('--reek', 'generate rake task for reek') do
75
+ self[:use_reek] = true
76
+ end
77
+
78
+ o.on('--roodi', 'generate rake task for roodi') do
79
+ self[:use_roodi] = true
80
+ end
81
+
82
+ o.separator ""
83
+
84
+ o.on('--summary [SUMMARY]', 'specify the summary of the project') do |summary|
85
+ self[:summary] = summary
86
+ end
87
+
88
+ o.on('--description [DESCRIPTION]', 'specify a description of the project') do |description|
89
+ self[:description] = description
90
+ end
91
+
92
+ o.separator ""
93
+
94
+ o.on('--user-name [USER_NAME]', "the user's name, ie that is credited in the LICENSE") do |user_name|
95
+ self[:user_name] = user_name
96
+ end
97
+
98
+ o.on('--user-email [USER_EMAIL]', "the user's email, ie that is credited in the Gem specification") do |user_email|
99
+ self[:user_email] = user_email
100
+ end
101
+
102
+ o.separator ""
103
+
104
+ o.on('--github-username [GITHUB_USERNAME]', "name of the user on GitHub to set the project up under") do |github_username|
105
+ self[:github_username] = github_username
106
+ end
107
+
108
+ o.on('--github-token [GITHUB_TOKEN]', "GitHub token to use for interacting with the GitHub API") do |github_token|
109
+ self[:github_token] = github_token
110
+ end
111
+
112
+ o.on('--git-remote [GIT_REMOTE]', 'URI to set the git origin remote to') do |git_remote|
113
+ self[:git_remote] = git_remote
114
+ end
115
+
116
+ o.on('--homepage [HOMEPAGE]', "the homepage for your project (defaults to the GitHub repo)") do |homepage|
117
+ self[:homepage] = homepage
118
+ end
119
+
120
+ o.on('--create-repo', 'create the repository on GitHub') do
121
+ self[:create_repo] = true
122
+ end
123
+
124
+
125
+ o.separator ""
126
+
127
+ o.on('--yard', 'use yard for documentation') do
128
+ self[:documentation_framework] = :yard
129
+ end
130
+
131
+ o.on('--rdoc', 'use rdoc for documentation') do
132
+ self[:documentation_framework] = :rdoc
133
+ end
134
+
135
+ o.on_tail('-h', '--help', 'display this help and exit') do
136
+ self[:show_help] = true
137
+ end
138
+ end
139
+
140
+ begin
141
+ @opts.parse!(args)
142
+ self[:project_name] = args.shift
143
+ rescue OptionParser::InvalidOption => e
144
+ self[:invalid_argument] = e.message
145
+ end
146
+ end
147
+
148
+ def merge(other)
149
+ self.class.new(@orig_args + other.orig_args)
150
+ end
151
+
152
+ end
153
+ end
154
+ end
@@ -0,0 +1,9 @@
1
+ class Bueller
2
+ class Generator
3
+ module RdocMixin
4
+ def doc_task
5
+ 'rdoc'
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,42 @@
1
+ class Bueller
2
+ class Generator
3
+ module RiotMixin
4
+ def self.extended(generator)
5
+ generator.development_dependencies << 'riot'
6
+ end
7
+
8
+ def default_task
9
+ 'test'
10
+ end
11
+
12
+ def feature_support_require
13
+ 'riot/context'
14
+ end
15
+
16
+ def feature_support_extend
17
+ 'Riot::Context'
18
+ end
19
+
20
+ def test_dir
21
+ 'test'
22
+ end
23
+
24
+ def test_task
25
+ 'test'
26
+ end
27
+
28
+ def test_pattern
29
+ 'test/**/*_test.rb'
30
+ end
31
+
32
+ def test_filename
33
+ "#{require_name}_test.rb"
34
+ end
35
+
36
+ def test_helper_filename
37
+ "teststrap.rb"
38
+ end
39
+
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,50 @@
1
+ class Bueller
2
+ class Generator
3
+ module RspecMixin
4
+ def self.extended(generator)
5
+ generator.development_dependencies << 'rspec'
6
+ end
7
+
8
+ def default_task
9
+ 'examples'
10
+ end
11
+
12
+ def feature_support_require
13
+ 'rspec/expectations'
14
+ end
15
+
16
+ def feature_support_extend
17
+ nil # Cucumber is smart enough extend Spec::Expectations on its own
18
+ end
19
+
20
+ def test_dir
21
+ 'spec'
22
+ end
23
+
24
+ def test_task
25
+ 'examples'
26
+ end
27
+
28
+ def test_pattern
29
+ 'spec/**/*_spec.rb'
30
+ end
31
+
32
+ def test_filename
33
+ "#{require_name}_spec.rb"
34
+ end
35
+
36
+ def test_helper_filename
37
+ "spec_helper.rb"
38
+ end
39
+
40
+ module InstanceMethods
41
+ def create_files
42
+ super
43
+
44
+ output_template_in_target File.join(testing_framework.to_s, '.rspec'),
45
+ '.rspec'
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,44 @@
1
+ class Bueller
2
+ class Generator
3
+ module ShindoMixin
4
+ def self.extended(generator)
5
+ generator.development_dependencies << 'shindo'
6
+ end
7
+
8
+ def default_task
9
+ 'tests'
10
+ end
11
+
12
+ def feature_support_require
13
+ # 'test/unit/assertions'
14
+ nil
15
+ end
16
+
17
+ def feature_support_extend
18
+ # 'Test::Unit::Assertions'
19
+ nil
20
+ end
21
+
22
+ def test_dir
23
+ 'tests'
24
+ end
25
+
26
+ def test_task
27
+ 'tests'
28
+ end
29
+
30
+ def test_pattern
31
+ 'tests/**/*_tests.rb'
32
+ end
33
+
34
+ def test_filename
35
+ "#{require_name}_tests.rb"
36
+ end
37
+
38
+ def test_helper_filename
39
+ "tests_helper.rb"
40
+ end
41
+
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,42 @@
1
+ class Bueller
2
+ class Generator
3
+ module ShouldaMixin
4
+ def self.extended(generator)
5
+ generator.development_dependencies << 'shoulda'
6
+ end
7
+
8
+ def default_task
9
+ 'test'
10
+ end
11
+
12
+ def feature_support_require
13
+ 'test/unit/assertions'
14
+ end
15
+
16
+ def feature_support_extend
17
+ 'Test::Unit::Assertions'
18
+ end
19
+
20
+ def test_dir
21
+ 'test'
22
+ end
23
+
24
+ def test_task
25
+ 'test'
26
+ end
27
+
28
+ def test_pattern
29
+ 'test/**/test_*.rb'
30
+ end
31
+
32
+ def test_filename
33
+ "test_#{require_name}.rb"
34
+ end
35
+
36
+ def test_helper_filename
37
+ "helper.rb"
38
+ end
39
+
40
+ end
41
+ end
42
+ end