markbates-gemstub 1.0.17
Sign up to get free protection for your applications and to get access to all the features.
- data/README +0 -0
- data/bin/gemstub +80 -0
- data/lib/gem_generator.rb +15 -0
- data/lib/templates/%=app%/README.template +3 -0
- data/lib/templates/%=app%/Rakefile.template +108 -0
- data/lib/templates/%=app%/lib/%=app%.rb.template +3 -0
- data/lib/templates/%=app%/lib/%=app%/%=app%.rb.template +1 -0
- data/lib/templates/%=app%/test/lib/%=app%_spec.rb.template +5 -0
- data/lib/templates/%=app%/test/spec.opts.template +2 -0
- data/lib/templates/%=app%/test/spec_helper.rb.template +4 -0
- data/test/foo_test.rb +16 -0
- data/test/test_helper.rb +8 -0
- metadata +83 -0
data/README
ADDED
File without changes
|
data/bin/gemstub
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
#!/usr/local/bin/ruby
|
2
|
+
require 'rubygems'
|
3
|
+
require 'fileutils'
|
4
|
+
require 'optparse'
|
5
|
+
require 'optparse/time'
|
6
|
+
require 'ostruct'
|
7
|
+
require 'pp'
|
8
|
+
require "mack-facets"
|
9
|
+
require 'genosaurus'
|
10
|
+
require 'erb'
|
11
|
+
|
12
|
+
app = ARGV[0]
|
13
|
+
raise "You must specify a name for this gem!" if app.nil?
|
14
|
+
|
15
|
+
options = OpenStruct.new
|
16
|
+
options.version = "0.0.1"
|
17
|
+
options.author = (ENV["USERNAME"] || ENV["USER"])
|
18
|
+
options.force = false
|
19
|
+
|
20
|
+
opts = OptionParser.new do |opts|
|
21
|
+
opts.banner = "Usage: gemstub [options]"
|
22
|
+
|
23
|
+
opts.on("-v [initial version]") do |v|
|
24
|
+
options.version = v
|
25
|
+
end
|
26
|
+
|
27
|
+
opts.on("-a [author name]") do |v|
|
28
|
+
options.author = v
|
29
|
+
end
|
30
|
+
|
31
|
+
opts.on("-f [force]") do |v|
|
32
|
+
options.force = true
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
opts.parse!(ARGV)
|
38
|
+
|
39
|
+
# puts "options = #{options.inspect}"
|
40
|
+
|
41
|
+
app = app.downcase.gsub(" ", "_")
|
42
|
+
|
43
|
+
if options.force
|
44
|
+
begin
|
45
|
+
FileUtils.rm_rf app
|
46
|
+
rescue Exception => e
|
47
|
+
puts e
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
require File.join(File.dirname(__FILE__), "..", "lib", "gem_generator")
|
52
|
+
|
53
|
+
GemGenerator.run("app" => app, "version" => options.version, "author" => options.author)
|
54
|
+
|
55
|
+
# puts "create directory: #{app}"
|
56
|
+
# Dir.mkdir app
|
57
|
+
#
|
58
|
+
# puts "create directory: #{app}/bin"
|
59
|
+
# Dir.mkdir "#{app}/bin"
|
60
|
+
#
|
61
|
+
# puts "create directory: #{app}/doc"
|
62
|
+
# Dir.mkdir "#{app}/doc"
|
63
|
+
#
|
64
|
+
# puts "create directory: #{app}/lib"
|
65
|
+
# Dir.mkdir "#{app}/lib"
|
66
|
+
#
|
67
|
+
# puts "create directory: #{app}/test"
|
68
|
+
# Dir.mkdir "#{app}/test"
|
69
|
+
#
|
70
|
+
# # Copy over templates:
|
71
|
+
# erb_files = Dir.glob(File.join(File.dirname(__FILE__), "templates", "**/*.template"))
|
72
|
+
#
|
73
|
+
# erb_files.each do |fl|
|
74
|
+
# res = ERB.new(File.open(fl).read).result(binding)
|
75
|
+
# n = fl.gsub(File.join(File.dirname(__FILE__), "templates"), app).gsub(".template", "")
|
76
|
+
# n.gsub!("%=app%", app)
|
77
|
+
# FileUtils.mkdir_p(File.dirname(n))
|
78
|
+
# File.open(n, "w") {|f| f.puts res}
|
79
|
+
# puts "Created: #{n}"
|
80
|
+
# end
|
@@ -0,0 +1,108 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/gempackagetask'
|
3
|
+
require 'rake/clean'
|
4
|
+
require 'rake/testtask'
|
5
|
+
require 'rake/rdoctask'
|
6
|
+
require 'find'
|
7
|
+
require 'rubyforge'
|
8
|
+
require 'rubygems'
|
9
|
+
require 'rubygems/gem_runner'
|
10
|
+
require 'spec'
|
11
|
+
require 'spec/rake/spectask'
|
12
|
+
|
13
|
+
@gem_spec = Gem::Specification.new do |s|
|
14
|
+
s.name = "<%= app %>"
|
15
|
+
s.version = "<%= version %>"
|
16
|
+
s.summary = "<%= app %>"
|
17
|
+
s.description = "<%= app %> was developed by: <%= author %>"
|
18
|
+
s.author = "<%= author %>"
|
19
|
+
s.email = ""
|
20
|
+
s.homepage = ""
|
21
|
+
|
22
|
+
s.test_files = FileList['test/**/*']
|
23
|
+
|
24
|
+
s.files = FileList['lib/**/*.*', 'README', 'doc/**/*.*', 'bin/**/*.*']
|
25
|
+
s.require_paths << 'lib'
|
26
|
+
|
27
|
+
#s.bindir = "bin"
|
28
|
+
#s.executables << "<%= app %>"
|
29
|
+
#s.default_executable = ""
|
30
|
+
#s.add_dependency("", "")
|
31
|
+
#s.add_dependency("", "")
|
32
|
+
#s.extensions << ""
|
33
|
+
s.extra_rdoc_files = ["README"]
|
34
|
+
s.has_rdoc = true
|
35
|
+
#s.platform = "Gem::Platform::Ruby"
|
36
|
+
#s.required_ruby_version = ">= 1.8.6"
|
37
|
+
#s.requirements << "An ice cold beer."
|
38
|
+
#s.requirements << "Some free time!"
|
39
|
+
s.rubyforge_project = "<%= app %>"
|
40
|
+
end
|
41
|
+
|
42
|
+
# rake package
|
43
|
+
Rake::GemPackageTask.new(@gem_spec) do |pkg|
|
44
|
+
pkg.need_zip = false
|
45
|
+
pkg.need_tar = false
|
46
|
+
rm_f FileList['pkg/**/*.*']
|
47
|
+
File.open(File.join(File.dirname(__FILE__), '<%= app %>.gemspec'), 'w') {|f| f.puts @gem_spec.to_ruby}
|
48
|
+
end
|
49
|
+
|
50
|
+
# rake
|
51
|
+
desc 'Run specifications'
|
52
|
+
Spec::Rake::SpecTask.new(:default) do |t|
|
53
|
+
opts = File.join(File.dirname(__FILE__), "test", 'spec.opts')
|
54
|
+
t.spec_opts << '--options' << opts if File.exists?(opts)
|
55
|
+
t.spec_files = Dir.glob('test/**/*_spec.rb')
|
56
|
+
end
|
57
|
+
|
58
|
+
desc "Install the gem"
|
59
|
+
task :install => [:package] do |t|
|
60
|
+
sudo = ENV['SUDOLESS'] == 'true' || RUBY_PLATFORM =~ /win32|cygwin/ ? '' : 'sudo'
|
61
|
+
puts `#{sudo} gem install #{File.join("pkg", @gem_spec.name)}-#{@gem_spec.version}.gem --no-update-sources --no-ri --no-rdoc`
|
62
|
+
end
|
63
|
+
|
64
|
+
desc "Release the gem"
|
65
|
+
task :release => :install do |t|
|
66
|
+
begin
|
67
|
+
ac_path = File.join(ENV["HOME"], ".rubyforge", "auto-config.yml")
|
68
|
+
if File.exists?(ac_path)
|
69
|
+
fixed = File.open(ac_path).read.gsub(" ~: {}\n\n", '')
|
70
|
+
fixed.gsub!(/ !ruby\/object:Gem::Version \? \n.+\n.+\n\n/, '')
|
71
|
+
puts "Fixing #{ac_path}..."
|
72
|
+
File.open(ac_path, "w") {|f| f.puts fixed}
|
73
|
+
end
|
74
|
+
begin
|
75
|
+
rf = RubyForge.new
|
76
|
+
rf.configure
|
77
|
+
rf.login
|
78
|
+
rf.add_release(@gem_spec.rubyforge_project, @gem_spec.name, @gem_spec.version, File.join("pkg", "#{@gem_spec.name}-#{@gem_spec.version}.gem"))
|
79
|
+
rescue Exception => e
|
80
|
+
if e.message.match("Invalid package_id") || e.message.match("no <package_id> configured for")
|
81
|
+
puts "You need to create the package!"
|
82
|
+
rf.create_package(@gem_spec.rubyforge_project, @gem_spec.name)
|
83
|
+
rf.add_release(@gem_spec.rubyforge_project, @gem_spec.name, @gem_spec.version, File.join("pkg", "#{@gem_spec.name}-#{@gem_spec.version}.gem"))
|
84
|
+
else
|
85
|
+
raise e
|
86
|
+
end
|
87
|
+
end
|
88
|
+
rescue Exception => e
|
89
|
+
if e.message == "You have already released this version."
|
90
|
+
puts e
|
91
|
+
else
|
92
|
+
raise e
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
|
98
|
+
Rake::RDocTask.new do |rd|
|
99
|
+
rd.main = "README"
|
100
|
+
files = Dir.glob("**/*.rb")
|
101
|
+
files = files.collect {|f| f unless f.match("test/") || f.match("doc/") }.compact
|
102
|
+
files << "README"
|
103
|
+
rd.rdoc_files = files
|
104
|
+
rd.rdoc_dir = "doc"
|
105
|
+
rd.options << "--line-numbers"
|
106
|
+
rd.options << "--inline-source"
|
107
|
+
rd.title = "<%= app %>"
|
108
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
# Put your gem code here:
|
data/test/foo_test.rb
ADDED
data/test/test_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: markbates-gemstub
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.17
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Mark Bates
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-01-13 00:00:00 -08:00
|
13
|
+
default_executable: gemstub
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: mack-facets
|
17
|
+
version_requirement:
|
18
|
+
version_requirements: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: "0"
|
23
|
+
version:
|
24
|
+
- !ruby/object:Gem::Dependency
|
25
|
+
name: genosaurus
|
26
|
+
version_requirement:
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: "0"
|
32
|
+
version:
|
33
|
+
description:
|
34
|
+
email: mark@markbates.com
|
35
|
+
executables:
|
36
|
+
- gemstub
|
37
|
+
extensions: []
|
38
|
+
|
39
|
+
extra_rdoc_files: []
|
40
|
+
|
41
|
+
files:
|
42
|
+
- lib/gem_generator.rb
|
43
|
+
- lib/templates/%=app%/lib/%=app%/%=app%.rb.template
|
44
|
+
- lib/templates/%=app%/lib/%=app%.rb.template
|
45
|
+
- lib/templates/%=app%/Rakefile.template
|
46
|
+
- lib/templates/%=app%/README.template
|
47
|
+
- lib/templates/%=app%/test/lib/%=app%_spec.rb.template
|
48
|
+
- lib/templates/%=app%/test/spec.opts.template
|
49
|
+
- lib/templates/%=app%/test/spec_helper.rb.template
|
50
|
+
- README
|
51
|
+
- test/foo_test.rb
|
52
|
+
- test/test_helper.rb
|
53
|
+
- bin/gemstub
|
54
|
+
has_rdoc: false
|
55
|
+
homepage: http://www.mackframework.com
|
56
|
+
post_install_message:
|
57
|
+
rdoc_options: []
|
58
|
+
|
59
|
+
require_paths:
|
60
|
+
- lib
|
61
|
+
- lib
|
62
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: "0"
|
67
|
+
version:
|
68
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: "0"
|
73
|
+
version:
|
74
|
+
requirements: []
|
75
|
+
|
76
|
+
rubyforge_project: gemstub
|
77
|
+
rubygems_version: 1.2.0
|
78
|
+
signing_key:
|
79
|
+
specification_version: 2
|
80
|
+
summary: "Gemstub is a very simple tool for creating the stub code you need to build a gem. Usage: at a command prompt simply type: gemstub your_gem_name_here That's it, after that, you all you have to do is the actual coding of your gem! Enjoy!"
|
81
|
+
test_files:
|
82
|
+
- test/foo_test.rb
|
83
|
+
- test/test_helper.rb
|