perplect-gemerator 0.0.3 → 0.1.0

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