perplect-gemerator 0.0.3 → 0.1.0

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/Manifest CHANGED
@@ -1,17 +1,15 @@
1
- lib/gemerator.rb
2
- lib/gemerator/generators/gem/templates/fresh_rakefile.erb
3
- lib/gemerator/generators/gem/templates/gitignore.erb
4
- lib/gemerator/generators/gem/templates/script/console.erb
5
- lib/gemerator/generators/gem/templates/gemerated.erb
6
- lib/gemerator/generators/gem/templates/lib/module.rb.erb
7
- lib/gemerator/generators/gem/templates/bin/binary.erb
8
- lib/gemerator/generators/gem/templates/test/module_test.rb.erb
9
- lib/gemerator/generators/gem/templates/README.rdoc.erb
10
- lib/gemerator/generators/gem.rb
1
+ lib/gemerator/version.rb
11
2
  lib/gemerator/github.rb
12
- lib/gemerator/generator.rb
3
+ app_generators/gem/templates/fresh_rakefile
4
+ app_generators/gem/templates/console_script
5
+ app_generators/gem/templates/module_test.rb
6
+ app_generators/gem/templates/module.rb
7
+ app_generators/gem/templates/gitignore
8
+ app_generators/gem/templates/README.rdoc
9
+ app_generators/gem/templates/binary
10
+ app_generators/gem/gem_generator.rb
13
11
  README.rdoc
14
- init.rb
15
12
  bin/gemerate
16
13
  Rakefile
14
+ gemerator.gemspec
17
15
  Manifest
data/Rakefile CHANGED
@@ -1,7 +1,8 @@
1
1
  require 'rubygems'
2
2
  require 'echoe'
3
+ require File.join(File.dirname(__FILE__), 'lib', 'gemerator', 'version')
3
4
 
4
- Echoe.new('gemerator', '0.0.3') do |p|
5
+ Echoe.new('gemerator', Gemerator::Version) do |p|
5
6
  p.description = 'Quickly generate the basic structure of a GitHub-hosted RubyGem'
6
7
  p.url = 'http://github.com/perplect/gemerator/tree/master'
7
8
  p.author = 'David Knorr'
@@ -0,0 +1,80 @@
1
+ class GemGenerator < RubiGen::Base
2
+ attr_accessor :gem_name, :gem_description, :github_username, :github_token, :author_name, :author_email
3
+
4
+ def initialize(runtime_args, runtime_options = {})
5
+ super
6
+ usage if args.empty?
7
+ @highline = HighLine.new
8
+ @destination_root = args.shift
9
+ @gem_name = File.basename(File.expand_path(@destination_root))
10
+ @gem_description = @highline.ask('Gem description?')
11
+ @github_username = git_config('github.user')
12
+ @github_token = git_config('github.token')
13
+ @author_name = git_config('user.name')
14
+ @author_email = git_config('user.email')
15
+ end
16
+
17
+ def manifest
18
+ record do |m|
19
+ m.directory ''
20
+
21
+ m.template 'fresh_rakefile', 'Rakefile'
22
+ m.file 'gitignore', '.gitignore'
23
+ m.template 'README.rdoc', 'README.rdoc'
24
+
25
+ ['bin', 'lib', 'script', 'test'].each do |dir|
26
+ m.directory dir
27
+ end
28
+
29
+ if @highline.agree 'Create binary?'
30
+ binary_name = @highline.ask 'Name of binary? (Default is gem name)'
31
+ m.file 'binary', "bin/#{binary_name.empty? ? @gem_name : binary_name}"
32
+ end
33
+
34
+ m.template 'module.rb', "lib/#{@gem_name}.rb"
35
+ m.template 'console_script', 'script/console'
36
+ m.template 'module_test.rb', "test/#{@gem_name}_test.rb"
37
+ end
38
+ end
39
+
40
+ def after_generate
41
+ if @highline.agree 'Create GitHub repository?'
42
+ GitHub.new(@github_username, @github_token).create_repository(@gem_name, @gem_description)
43
+ end
44
+
45
+ Dir.chdir(@gem_name) do
46
+ `git init`
47
+ `git remote add origin git@github.com:#{@github_username}/#{@gem_name}.git`
48
+ `rake manifest`
49
+ `git add .`
50
+
51
+ if @highline.agree 'Commit now?'
52
+ `git commit -m "Initial commit"`
53
+
54
+ if @highline.agree 'Push to GitHub now?'
55
+ `git push origin master`
56
+ end
57
+ end
58
+ end
59
+ end
60
+
61
+ protected
62
+
63
+ def banner
64
+ <<-EOS
65
+ Quickly generate the basic structure of a GitHub-hosted RubyGem.
66
+
67
+ Usage: gemerate /path/to/your/gem [options]
68
+ EOS
69
+ end
70
+
71
+ private
72
+
73
+ def git_config(key)
74
+ value = `git config --global #{key}`.chomp
75
+ return value unless value.empty?
76
+ `git config --global #{key} "#{@highline.ask("Git configuration: #{key}")}"`
77
+ git_config(key)
78
+ end
79
+ end
80
+
@@ -0,0 +1,8 @@
1
+ = <%= gem_name.camelize %>
2
+
3
+ <%= gem_description %>
4
+
5
+ == TODO
6
+
7
+ README content will be added later.
8
+
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- puts "<%= @gem_name.camelize %> Console"
4
- exec "irb -r #{File.join(File.dirname(__FILE__), '..', 'lib', '<%= @gem_name %>.rb')}"
3
+ puts "<%= gem_name.camelize %> Console"
4
+ exec "irb -r #{File.join(File.dirname(__FILE__), '..', 'lib', '<%= gem_name %>.rb')}"
5
5
 
@@ -0,0 +1,15 @@
1
+ require 'rubygems'
2
+ require 'echoe'
3
+
4
+ Echoe.new('<%= gem_name %>', '0.0.1') do |p|
5
+ p.description = '<%= gem_description %>'
6
+ p.url = 'http://github.com/<%= github_username %>/<%= gem_name %>/tree/master'
7
+ p.author = '<%= author_name %>'
8
+ p.email = '<%= author_email %>'
9
+ p.development_dependencies = []
10
+ end
11
+
12
+ Dir[File.join(File.dirname(__FILE__), 'tasks', '*.rake')].each do |file|
13
+ require file
14
+ end
15
+
@@ -0,0 +1,3 @@
1
+ module <%= gem_name.camelize %>
2
+ end
3
+
@@ -1,6 +1,6 @@
1
1
  require 'test/unit'
2
2
 
3
- class <%= @gem_name.camelize %>Test < Test::Unit::TestCase
3
+ class <%= gem_name.camelize %>Test < Test::Unit::TestCase
4
4
  def test_truth
5
5
  assert true
6
6
  end
@@ -1,6 +1,20 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require File.join(File.dirname(__FILE__), '..', 'init')
3
+ if %w(-v --version).include? ARGV.first
4
+ require 'gemerator/version'
5
+ puts "Gemerator #{Gemerator::Version}"
6
+ exit(0)
7
+ end
4
8
 
5
- Gemerator.run!
9
+ require 'rubygems'
10
+ require 'rubigen'
11
+ require 'rubigen/scripts/generate'
12
+ require 'fileutils'
13
+ require 'highline'
14
+ require 'activesupport'
15
+ require 'httparty'
16
+ require 'gemerator/github'
17
+
18
+ RubiGen::Base.use_application_sources!
19
+ RubiGen::Scripts::Generate.new.run(ARGV, :generator => 'gem')
6
20
 
@@ -2,17 +2,17 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{gemerator}
5
- s.version = "0.0.3"
5
+ s.version = "0.1.0"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["David Knorr"]
9
- s.date = %q{2009-05-25}
9
+ s.date = %q{2009-06-01}
10
10
  s.default_executable = %q{gemerate}
11
11
  s.description = %q{Quickly generate the basic structure of a GitHub-hosted RubyGem}
12
12
  s.email = %q{perplect@gmail.com}
13
13
  s.executables = ["gemerate"]
14
- s.extra_rdoc_files = ["lib/gemerator.rb", "lib/gemerator/generators/gem/templates/fresh_rakefile.erb", "lib/gemerator/generators/gem/templates/gitignore.erb", "lib/gemerator/generators/gem/templates/script/console.erb", "lib/gemerator/generators/gem/templates/gemerated.erb", "lib/gemerator/generators/gem/templates/lib/module.rb.erb", "lib/gemerator/generators/gem/templates/bin/binary.erb", "lib/gemerator/generators/gem/templates/test/module_test.rb.erb", "lib/gemerator/generators/gem/templates/README.rdoc.erb", "lib/gemerator/generators/gem.rb", "lib/gemerator/github.rb", "lib/gemerator/generator.rb", "README.rdoc", "bin/gemerate"]
15
- s.files = ["lib/gemerator.rb", "lib/gemerator/generators/gem/templates/fresh_rakefile.erb", "lib/gemerator/generators/gem/templates/gitignore.erb", "lib/gemerator/generators/gem/templates/script/console.erb", "lib/gemerator/generators/gem/templates/gemerated.erb", "lib/gemerator/generators/gem/templates/lib/module.rb.erb", "lib/gemerator/generators/gem/templates/bin/binary.erb", "lib/gemerator/generators/gem/templates/test/module_test.rb.erb", "lib/gemerator/generators/gem/templates/README.rdoc.erb", "lib/gemerator/generators/gem.rb", "lib/gemerator/github.rb", "lib/gemerator/generator.rb", "README.rdoc", "init.rb", "bin/gemerate", "Rakefile", "Manifest", "gemerator.gemspec"]
14
+ s.extra_rdoc_files = ["lib/gemerator/version.rb", "lib/gemerator/github.rb", "README.rdoc", "bin/gemerate"]
15
+ s.files = ["lib/gemerator/version.rb", "lib/gemerator/github.rb", "app_generators/gem/templates/fresh_rakefile", "app_generators/gem/templates/console_script", "app_generators/gem/templates/module_test.rb", "app_generators/gem/templates/module.rb", "app_generators/gem/templates/gitignore", "app_generators/gem/templates/README.rdoc", "app_generators/gem/templates/binary", "app_generators/gem/gem_generator.rb", "README.rdoc", "bin/gemerate", "Rakefile", "gemerator.gemspec", "Manifest"]
16
16
  s.has_rdoc = true
17
17
  s.homepage = %q{http://github.com/perplect/gemerator/tree/master}
18
18
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Gemerator", "--main", "README.rdoc"]
@@ -0,0 +1,12 @@
1
+ module Gemerator
2
+ module Version
3
+ MAJOR = 0
4
+ MINOR = 1
5
+ TINY = 0
6
+
7
+ def self.to_s
8
+ [MAJOR, MINOR, TINY].join('.')
9
+ end
10
+ end
11
+ end
12
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: perplect-gemerator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Knorr
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-05-25 00:00:00 -07:00
12
+ date: 2009-06-01 00:00:00 -07:00
13
13
  default_executable: gemerate
14
14
  dependencies: []
15
15
 
@@ -20,39 +20,26 @@ executables:
20
20
  extensions: []
21
21
 
22
22
  extra_rdoc_files:
23
- - lib/gemerator.rb
24
- - lib/gemerator/generators/gem/templates/fresh_rakefile.erb
25
- - lib/gemerator/generators/gem/templates/gitignore.erb
26
- - lib/gemerator/generators/gem/templates/script/console.erb
27
- - lib/gemerator/generators/gem/templates/gemerated.erb
28
- - lib/gemerator/generators/gem/templates/lib/module.rb.erb
29
- - lib/gemerator/generators/gem/templates/bin/binary.erb
30
- - lib/gemerator/generators/gem/templates/test/module_test.rb.erb
31
- - lib/gemerator/generators/gem/templates/README.rdoc.erb
32
- - lib/gemerator/generators/gem.rb
23
+ - lib/gemerator/version.rb
33
24
  - lib/gemerator/github.rb
34
- - lib/gemerator/generator.rb
35
25
  - README.rdoc
36
26
  - bin/gemerate
37
27
  files:
38
- - lib/gemerator.rb
39
- - lib/gemerator/generators/gem/templates/fresh_rakefile.erb
40
- - lib/gemerator/generators/gem/templates/gitignore.erb
41
- - lib/gemerator/generators/gem/templates/script/console.erb
42
- - lib/gemerator/generators/gem/templates/gemerated.erb
43
- - lib/gemerator/generators/gem/templates/lib/module.rb.erb
44
- - lib/gemerator/generators/gem/templates/bin/binary.erb
45
- - lib/gemerator/generators/gem/templates/test/module_test.rb.erb
46
- - lib/gemerator/generators/gem/templates/README.rdoc.erb
47
- - lib/gemerator/generators/gem.rb
28
+ - lib/gemerator/version.rb
48
29
  - lib/gemerator/github.rb
49
- - lib/gemerator/generator.rb
30
+ - app_generators/gem/templates/fresh_rakefile
31
+ - app_generators/gem/templates/console_script
32
+ - app_generators/gem/templates/module_test.rb
33
+ - app_generators/gem/templates/module.rb
34
+ - app_generators/gem/templates/gitignore
35
+ - app_generators/gem/templates/README.rdoc
36
+ - app_generators/gem/templates/binary
37
+ - app_generators/gem/gem_generator.rb
50
38
  - README.rdoc
51
- - init.rb
52
39
  - bin/gemerate
53
40
  - Rakefile
54
- - Manifest
55
41
  - gemerator.gemspec
42
+ - Manifest
56
43
  has_rdoc: true
57
44
  homepage: http://github.com/perplect/gemerator/tree/master
58
45
  post_install_message:
data/init.rb DELETED
@@ -1,14 +0,0 @@
1
- require 'fileutils'
2
- require 'highline'
3
- require 'erb'
4
- require 'activesupport'
5
- require 'httparty'
6
-
7
- require 'gemerator'
8
- require 'gemerator/generator'
9
- require 'gemerator/github'
10
-
11
- Dir[File.join(File.dirname(__FILE__), 'lib', 'gemerator', 'generators', '**', '*.rb')].each do |file|
12
- require file
13
- end
14
-
@@ -1,9 +0,0 @@
1
- module Gemerator
2
- class << self
3
- def run!
4
- gem_generator = Generators::Gem.new
5
- gem_generator.run!
6
- end
7
- end
8
- end
9
-
@@ -1,66 +0,0 @@
1
- module Gemerator
2
- class Generator
3
- include FileUtils
4
- HighLine.track_eof = false
5
-
6
- def initialize
7
- @highline = HighLine.new
8
- @events = []
9
- end
10
-
11
- def run!
12
- output
13
- end
14
-
15
- def create_directory(name)
16
- mkdir File.join(name.split('/'))
17
- record 'directory', name
18
- end
19
-
20
- def create_file(directory, template, name, permissions=nil)
21
- File.open(File.join(directory, name), 'w', permissions) do |file|
22
- file.puts erb_result(template)
23
- end
24
- record 'file', "#{directory}/#{name}"
25
- end
26
-
27
- def output
28
- @events.flatten!
29
- puts
30
- puts @highline.color(@highline.list(@events, :columns_across, 2), :green)
31
- end
32
-
33
- protected
34
-
35
- def record(event, details)
36
- @events << [event, details]
37
- end
38
-
39
- def inside(name, command)
40
- `cd #{name} && #{command} && cd ..`
41
- end
42
-
43
- def ask(question)
44
- @highline.ask @highline.color(question, :blue)
45
- end
46
-
47
- def yes?(question)
48
- @highline.agree @highline.color(question, :blue)
49
- end
50
-
51
- def say(stuff)
52
- @highline.say @highline.color(stuff, :magenta)
53
- end
54
-
55
- protected
56
-
57
- def erb_result(name)
58
- content = ''
59
- File.new(File.join(File.dirname(__FILE__), 'generators', 'gem', 'templates', "#{name}.erb")).each_line do |line|
60
- content << line
61
- end
62
- ERB.new(content).result(binding)
63
- end
64
- end
65
- end
66
-
@@ -1,124 +0,0 @@
1
- module Gemerator
2
- module Generators
3
- class Gem < Generator
4
- def initialize
5
- super
6
- @gem_name = ARGV.first
7
- @gem_description = ask('Gem description?')
8
- @github_username = git_config('github.user')
9
- @github_token = git_config('github.token')
10
- @author_name = git_config('user.name')
11
- @author_email = git_config('user.email')
12
-
13
- if yes? 'Create binary?'
14
- binary_name = ask('Name of binary? (Default is gem name)')
15
- @binary_name = binary_name.empty? ? @gem_name : binary_name
16
- end
17
- end
18
-
19
- def run!
20
- create_github_repository
21
- create_gem_directory
22
- initialize_git_repository
23
- add_git_remote
24
- create_lib_directory
25
- create_module_file
26
- create_test_directory
27
- create_module_test_file
28
- create_script_directory
29
- create_console_script_file
30
-
31
- if @binary_name
32
- create_bin_directory
33
- create_binary_file
34
- end
35
-
36
- create_rakefile_file
37
- create_readme_file
38
- create_gitignore_file
39
- generate_manifest
40
- add_all_files_to_index
41
-
42
- if yes? 'Commit now?'
43
- initial_commit
44
-
45
- if yes? 'Push to GitHub now?'
46
- push_to_github
47
- end
48
- end
49
-
50
- super
51
-
52
- say erb_result('gemerated')
53
- end
54
-
55
- private
56
-
57
- def create_github_repository
58
- GitHub.new(@github_username, @github_token).create_repository(@gem_name, @gem_description)
59
- end
60
-
61
- def create_gem_directory
62
- create_directory @gem_name
63
- end
64
-
65
- def initialize_git_repository
66
- inside @gem_name, 'git init'
67
- record 'git', 'init'
68
- end
69
-
70
- def add_git_remote
71
- inside @gem_name, "git remote add origin git@github.com:#{@github_username}/#{@gem_name}.git"
72
- record 'git', 'add remote'
73
- end
74
-
75
- def generate_manifest
76
- inside @gem_name, 'rake manifest'
77
- record 'generate', 'manifest'
78
- end
79
-
80
- def add_all_files_to_index
81
- inside @gem_name, 'git add .'
82
- record 'git', 'add all files'
83
- end
84
-
85
- def initial_commit
86
- inside @gem_name, 'git commit -m "Initial commit"'
87
- record 'git', 'initial commit'
88
- end
89
-
90
- def push_to_github
91
- inside @gem_name, 'git push origin master'
92
- record 'git', 'push'
93
- end
94
-
95
- def method_missing(symbol, *args, &block)
96
- if /^create_(.+)_directory$/ =~ symbol.to_s
97
- create_directory "#{@gem_name}/#{$1}"
98
- elsif /^create_(.+)_file$/ =~ symbol.to_s
99
- file = files[$1.to_sym]
100
- create_file @gem_name, file[0], file[1], file[2]
101
- else
102
- super
103
- end
104
- end
105
-
106
- def files
107
- {
108
- :module => ['lib/module.rb', "lib/#{@gem_name}.rb"],
109
- :module_test => ['test/module_test.rb', "test/#{@gem_name}_test.rb"],
110
- :console_script => ['script/console', 'script/console', 0755],
111
- :binary => ['bin/binary', "bin/#{@binary_name}"],
112
- :rakefile => ['fresh_rakefile', 'Rakefile'],
113
- :readme => ['README.rdoc', 'README.rdoc'],
114
- :gitignore => ['gitignore', '.gitignore']
115
- }
116
- end
117
-
118
- def git_config(key)
119
- `git config --global #{key}`.chomp
120
- end
121
- end
122
- end
123
- end
124
-
@@ -1,8 +0,0 @@
1
- = <%= @gem_name.camelize %>
2
-
3
- <%= @gem_description %>
4
-
5
- == TODO
6
-
7
- README content will be added later.
8
-
@@ -1,15 +0,0 @@
1
- require 'rubygems'
2
- require 'echoe'
3
-
4
- Echoe.new('<%= @gem_name %>', '0.0.1') do |p|
5
- p.description = '<%= @gem_description %>'
6
- p.url = 'http://github.com/<%= @github_username %>/<%= @gem_name %>/tree/master'
7
- p.author = '<%= @author_name %>'
8
- p.email = '<%= @author_email %>'
9
- p.development_dependencies = []
10
- end
11
-
12
- Dir[File.join(File.dirname(__FILE__), 'tasks', '*.rake')].each do |file|
13
- require file
14
- end
15
-
@@ -1,22 +0,0 @@
1
- <%= headline = "#{@gem_name.camelize} Was Gemerated!" %>
2
- <%= '=' * headline.length %>
3
-
4
- Whenever you add new files:
5
-
6
- rake manifest
7
-
8
- To run your tests:
9
-
10
- rake test
11
-
12
- To install your gem locally:
13
-
14
- rake install
15
-
16
- To rebuild the Gem specification before releasing a new version:
17
-
18
- rake build_gemspec
19
-
20
- More tasks has been made available to you by Echoe:
21
-
22
- rake -T
@@ -1,3 +0,0 @@
1
- module <%= @gem_name.camelize %>
2
- end
3
-