gem-this 0.1.5 → 0.2.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.
- data/Rakefile +6 -4
- data/Rakefile.erb +6 -6
- data/Readme.markdown +4 -0
- data/bin/gem-this +7 -59
- data/lib/gem_this.rb +81 -0
- data/lib/rubygems_plugin.rb +22 -0
- metadata +10 -5
data/Rakefile
CHANGED
|
@@ -15,7 +15,7 @@ spec = Gem::Specification.new do |s|
|
|
|
15
15
|
|
|
16
16
|
# Change these as appropriate
|
|
17
17
|
s.name = "gem-this"
|
|
18
|
-
s.version = "0.1
|
|
18
|
+
s.version = "0.2.1"
|
|
19
19
|
s.summary = "Make existing code into a gem, without any fuss."
|
|
20
20
|
s.author = "James Adam"
|
|
21
21
|
s.email = "james@lazyatom.com"
|
|
@@ -26,9 +26,9 @@ spec = Gem::Specification.new do |s|
|
|
|
26
26
|
# s.rdoc_options = %w(--main Readme.markdown)
|
|
27
27
|
|
|
28
28
|
# Add any extra files to include in the gem
|
|
29
|
-
s.files = %w(Rakefile Readme.markdown Rakefile.erb) + Dir.glob("{bin}/**/*")
|
|
29
|
+
s.files = %w(Rakefile Readme.markdown Rakefile.erb) + Dir.glob("{bin,lib}/**/*")
|
|
30
30
|
s.executables = FileList["bin/**"].map { |f| File.basename(f) }
|
|
31
|
-
s.require_paths = ["bin"]
|
|
31
|
+
s.require_paths = ["bin", "lib"]
|
|
32
32
|
|
|
33
33
|
# If you want to depend on other gems, add them here, along with any
|
|
34
34
|
# relevant versions
|
|
@@ -40,6 +40,8 @@ spec = Gem::Specification.new do |s|
|
|
|
40
40
|
# If you want to publish automatically to rubyforge, you'll may need
|
|
41
41
|
# to tweak this, and the publishing task below too.
|
|
42
42
|
s.rubyforge_project = "gem-this"
|
|
43
|
+
|
|
44
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 1.3")
|
|
43
45
|
end
|
|
44
46
|
|
|
45
47
|
# This task actually builds the gem. We also regenerate a static
|
|
@@ -107,4 +109,4 @@ begin
|
|
|
107
109
|
end
|
|
108
110
|
rescue LoadError
|
|
109
111
|
puts "Rake SshDirPublisher is unavailable or your rubyforge environment is not configured."
|
|
110
|
-
end
|
|
112
|
+
end
|
data/Rakefile.erb
CHANGED
|
@@ -34,12 +34,12 @@ end
|
|
|
34
34
|
spec = Gem::Specification.new do |s|
|
|
35
35
|
|
|
36
36
|
# Change these as appropriate
|
|
37
|
-
s.name = "<%=
|
|
37
|
+
s.name = "<%= name %>"
|
|
38
38
|
s.version = "0.1.0"
|
|
39
39
|
s.summary = "What this thing does"
|
|
40
|
-
s.author = "
|
|
41
|
-
s.email = "
|
|
42
|
-
s.homepage = "
|
|
40
|
+
s.author = "<%= author_name %>"
|
|
41
|
+
s.email = "<%= author_email %>"
|
|
42
|
+
s.homepage = "<%= author_url %>"
|
|
43
43
|
|
|
44
44
|
s.has_rdoc = true
|
|
45
45
|
<% if readme %>
|
|
@@ -74,7 +74,7 @@ spec = Gem::Specification.new do |s|
|
|
|
74
74
|
|
|
75
75
|
# If you want to publish automatically to rubyforge, you'll may need
|
|
76
76
|
# to tweak this, and the publishing task below too.
|
|
77
|
-
s.rubyforge_project = "<%=
|
|
77
|
+
s.rubyforge_project = "<%= name %>"
|
|
78
78
|
end
|
|
79
79
|
|
|
80
80
|
# This task actually builds the gem. We also regenerate a static
|
|
@@ -133,7 +133,7 @@ begin
|
|
|
133
133
|
)
|
|
134
134
|
|
|
135
135
|
host = "#{config['username']}@rubyforge.org"
|
|
136
|
-
remote_dir = "/var/www/gforge-projects/<%=
|
|
136
|
+
remote_dir = "/var/www/gforge-projects/<%= name %>/" # Should be the same as the rubyforge project name
|
|
137
137
|
local_dir = 'rdoc'
|
|
138
138
|
|
|
139
139
|
Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
|
data/Readme.markdown
CHANGED
|
@@ -24,6 +24,10 @@ The `gem-this` command expects to be run in the directory of your existing code:
|
|
|
24
24
|
$ mate lib/sweet_code.rb
|
|
25
25
|
... hacking ...
|
|
26
26
|
$ gem-this
|
|
27
|
+
|
|
28
|
+
New in 0.2.0: we also register a gem command, so you can just type:
|
|
29
|
+
|
|
30
|
+
$ gem this
|
|
27
31
|
|
|
28
32
|
When you run `gem-this`, it will create a new `Rakefile` in your project directory. If you already had a `Rakefile`, it will append to the end of it, so your existing tasks are safe.
|
|
29
33
|
|
data/bin/gem-this
CHANGED
|
@@ -1,72 +1,20 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
|
|
3
|
+
require 'gem_this'
|
|
4
|
+
|
|
3
5
|
args = ARGV.dup
|
|
4
6
|
|
|
5
7
|
if args.first =~ /-?-h/
|
|
6
|
-
puts
|
|
8
|
+
puts GemThis::SUMMARY
|
|
7
9
|
puts "Usage: #{__FILE__} [-d -h] [gem name]"
|
|
8
10
|
puts "If a gem name is not given, the name of the current directory will be used as the gem"
|
|
9
11
|
puts "-h help, prints out this message."
|
|
10
|
-
puts "-d
|
|
11
|
-
exit
|
|
12
|
+
puts "-d #{GemThis::DEBUG_MESSAGE}"
|
|
13
|
+
exit
|
|
12
14
|
end
|
|
13
15
|
|
|
14
16
|
debug = args.delete("-d")
|
|
15
17
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
def using_rspec?
|
|
19
|
-
File.directory?('spec')
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def using_test_unit?
|
|
23
|
-
File.directory?('test')
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def has_executables?
|
|
27
|
-
File.directory?('bin')
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def dirs_to_include
|
|
31
|
-
%w(bin test spec lib).select { |d| File.directory?(d) }.join(",")
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def readme
|
|
35
|
-
Dir['*'].find { |f| f =~ /readme/i }
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def files_in_root
|
|
39
|
-
Dir['*'].reject { |f| File.directory?(f) }.join(" ")
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def using_git?
|
|
43
|
-
File.exist?(".git")
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def add_to_gitignore
|
|
47
|
-
return unless File.exist?(".gitignore")
|
|
48
|
-
ignores = File.readlines(".gitignore")
|
|
49
|
-
ignores += ["pkg", "rdoc"]
|
|
50
|
-
File.open(".gitignore", "w") { |f| f.write ignores.map { |l| l.strip }.uniq.join("\n") }
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
require 'erb'
|
|
54
|
-
|
|
55
|
-
template = ERB.new File.read(File.join(File.dirname(__FILE__), '..', 'Rakefile.erb')), nil, '<>'
|
|
56
|
-
rakefile = template.result(binding)
|
|
57
|
-
|
|
58
|
-
if debug
|
|
59
|
-
puts rakefile
|
|
60
|
-
exit(0)
|
|
61
|
-
else
|
|
62
|
-
if File.exist?('Rakefile')
|
|
63
|
-
puts "Appended to existing Rakefile"
|
|
64
|
-
File.open('Rakefile', 'a') { |f| 2.times { f.puts }; f.write rakefile }
|
|
65
|
-
else
|
|
66
|
-
puts "Writing new Rakefile"
|
|
67
|
-
File.open('Rakefile', 'w') { |f| f.write rakefile }
|
|
68
|
-
end
|
|
69
|
-
add_to_gitignore if using_git?
|
|
70
|
-
end
|
|
18
|
+
GemThis.new(args.first || File.basename(Dir.pwd), debug).create_rakefile
|
|
71
19
|
|
|
72
|
-
exit
|
|
20
|
+
exit
|
data/lib/gem_this.rb
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
require 'erb'
|
|
2
|
+
require 'etc'
|
|
3
|
+
|
|
4
|
+
class GemThis
|
|
5
|
+
SUMMARY = "Creates a Rakefile suitable for turning the current project into a gem."
|
|
6
|
+
DEBUG_MESSAGE = "debug, only prints out the generated Rakefile."
|
|
7
|
+
|
|
8
|
+
attr_reader :name, :debug
|
|
9
|
+
|
|
10
|
+
def initialize(name, debug)
|
|
11
|
+
@name = name
|
|
12
|
+
@debug = debug
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def create_rakefile
|
|
16
|
+
template = ERB.new File.read(File.join(File.dirname(__FILE__), '..', 'Rakefile.erb')), nil, '<>'
|
|
17
|
+
rakefile = template.result(binding)
|
|
18
|
+
|
|
19
|
+
if debug
|
|
20
|
+
puts rakefile
|
|
21
|
+
else
|
|
22
|
+
if File.exist?('Rakefile')
|
|
23
|
+
puts "Appended to existing Rakefile"
|
|
24
|
+
File.open('Rakefile', 'a') { |f| 2.times { f.puts }; f.write rakefile }
|
|
25
|
+
else
|
|
26
|
+
puts "Writing new Rakefile"
|
|
27
|
+
File.open('Rakefile', 'w') { |f| f.write rakefile }
|
|
28
|
+
end
|
|
29
|
+
add_to_gitignore if using_git?
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
private
|
|
34
|
+
|
|
35
|
+
def author_name
|
|
36
|
+
Etc.getpwnam(ENV['USER']).gecos rescue ENV['USER'] # for Windows
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def author_email
|
|
40
|
+
"youremail@example.com"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def author_url
|
|
44
|
+
"http://yoursite.example.com"
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def using_rspec?
|
|
48
|
+
File.directory?('spec')
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def using_test_unit?
|
|
52
|
+
File.directory?('test')
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def has_executables?
|
|
56
|
+
File.directory?('bin')
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def dirs_to_include
|
|
60
|
+
%w(bin test spec lib).select { |d| File.directory?(d) }.join(",")
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def readme
|
|
64
|
+
Dir['*'].find { |f| f =~ /readme/i }
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def files_in_root
|
|
68
|
+
Dir['*'].reject { |f| File.directory?(f) }.join(" ")
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def using_git?
|
|
72
|
+
File.exist?(".git")
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def add_to_gitignore
|
|
76
|
+
return unless File.exist?(".gitignore")
|
|
77
|
+
ignores = File.readlines(".gitignore")
|
|
78
|
+
ignores += ["pkg", "rdoc"]
|
|
79
|
+
File.open(".gitignore", "w") { |f| f.write ignores.map { |l| l.strip }.uniq.join("\n") }
|
|
80
|
+
end
|
|
81
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'rubygems/command_manager'
|
|
2
|
+
require 'rubygems/command'
|
|
3
|
+
require 'gem_this'
|
|
4
|
+
|
|
5
|
+
class Gem::Commands::ThisCommand < Gem::Command
|
|
6
|
+
def initialize
|
|
7
|
+
super 'this', GemThis::SUMMARY, :debug => false
|
|
8
|
+
add_option('-d', '--debug', GemThis::DEBUG_MESSAGE) do |debug, options|
|
|
9
|
+
options[:debug] = debug
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def summary
|
|
14
|
+
GemThis::SUMMARY
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def execute
|
|
18
|
+
GemThis.new(options[:args].first || File.basename(Dir.pwd), options[:debug]).create_rakefile
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
Gem::CommandManager.instance.register_command :this
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gem-this
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1
|
|
4
|
+
version: 0.2.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- James Adam
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date: 2009-
|
|
12
|
+
date: 2009-07-23 00:00:00 +01:00
|
|
13
13
|
default_executable:
|
|
14
14
|
dependencies: []
|
|
15
15
|
|
|
@@ -26,13 +26,18 @@ files:
|
|
|
26
26
|
- Readme.markdown
|
|
27
27
|
- Rakefile.erb
|
|
28
28
|
- bin/gem-this
|
|
29
|
+
- lib/gem_this.rb
|
|
30
|
+
- lib/rubygems_plugin.rb
|
|
29
31
|
has_rdoc: true
|
|
30
32
|
homepage: http://github.com/lazyatom/gem-this
|
|
33
|
+
licenses: []
|
|
34
|
+
|
|
31
35
|
post_install_message:
|
|
32
36
|
rdoc_options: []
|
|
33
37
|
|
|
34
38
|
require_paths:
|
|
35
39
|
- bin
|
|
40
|
+
- lib
|
|
36
41
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
37
42
|
requirements:
|
|
38
43
|
- - ">="
|
|
@@ -43,14 +48,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
43
48
|
requirements:
|
|
44
49
|
- - ">="
|
|
45
50
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: "
|
|
51
|
+
version: "1.3"
|
|
47
52
|
version:
|
|
48
53
|
requirements: []
|
|
49
54
|
|
|
50
55
|
rubyforge_project: gem-this
|
|
51
|
-
rubygems_version: 1.3.
|
|
56
|
+
rubygems_version: 1.3.3
|
|
52
57
|
signing_key:
|
|
53
|
-
specification_version:
|
|
58
|
+
specification_version: 3
|
|
54
59
|
summary: Make existing code into a gem, without any fuss.
|
|
55
60
|
test_files: []
|
|
56
61
|
|