bueller 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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