lazyatom-gem-this 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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.2.0"
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"
@@ -34,7 +34,7 @@ end
34
34
  spec = Gem::Specification.new do |s|
35
35
 
36
36
  # Change these as appropriate
37
- s.name = "<%= gem_name %>"
37
+ s.name = "<%= name %>"
38
38
  s.version = "0.1.0"
39
39
  s.summary = "What this thing does"
40
40
  s.author = "<%= author_name %>"
@@ -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 = "<%= gem_name %>"
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/<%= gem_name %>/" # Should be the same as the rubyforge project name
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
@@ -1,86 +1,20 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'etc'
3
+ require 'gem_this'
4
4
 
5
5
  args = ARGV.dup
6
6
 
7
7
  if args.first =~ /-?-h/
8
- puts "Creates a Rakefile suitable for turning the current project into a gem."
8
+ puts GemThis::SUMMARY
9
9
  puts "Usage: #{__FILE__} [-d -h] [gem name]"
10
10
  puts "If a gem name is not given, the name of the current directory will be used as the gem"
11
11
  puts "-h help, prints out this message."
12
- puts "-d debug, only prints out the generated Rakefile."
13
- exit(0)
12
+ puts "-d #{GemThis::DEBUG_MESSAGE}"
13
+ exit
14
14
  end
15
15
 
16
16
  debug = args.delete("-d")
17
17
 
18
- gem_name = args.first || File.basename(Dir.pwd)
18
+ GemThis.new(args.first || File.basename(Dir.pwd), debug).create_rakefile
19
19
 
20
- def author_name
21
- Etc.getpwnam(ENV['USER']).gecos rescue ENV['USER'] # for Windows
22
- end
23
-
24
- def author_email
25
- "youremail@example.com"
26
- end
27
-
28
- def author_url
29
- "http://yoursite.example.com"
30
- end
31
-
32
- def using_rspec?
33
- File.directory?('spec')
34
- end
35
-
36
- def using_test_unit?
37
- File.directory?('test')
38
- end
39
-
40
- def has_executables?
41
- File.directory?('bin')
42
- end
43
-
44
- def dirs_to_include
45
- %w(bin test spec lib).select { |d| File.directory?(d) }.join(",")
46
- end
47
-
48
- def readme
49
- Dir['*'].find { |f| f =~ /readme/i }
50
- end
51
-
52
- def files_in_root
53
- Dir['*'].reject { |f| File.directory?(f) }.join(" ")
54
- end
55
-
56
- def using_git?
57
- File.exist?(".git")
58
- end
59
-
60
- def add_to_gitignore
61
- return unless File.exist?(".gitignore")
62
- ignores = File.readlines(".gitignore")
63
- ignores += ["pkg", "rdoc"]
64
- File.open(".gitignore", "w") { |f| f.write ignores.map { |l| l.strip }.uniq.join("\n") }
65
- end
66
-
67
- require 'erb'
68
-
69
- template = ERB.new File.read(File.join(File.dirname(__FILE__), '..', 'Rakefile.erb')), nil, '<>'
70
- rakefile = template.result(binding)
71
-
72
- if debug
73
- puts rakefile
74
- exit(0)
75
- else
76
- if File.exist?('Rakefile')
77
- puts "Appended to existing Rakefile"
78
- File.open('Rakefile', 'a') { |f| 2.times { f.puts }; f.write rakefile }
79
- else
80
- puts "Writing new Rakefile"
81
- File.open('Rakefile', 'w') { |f| f.write rakefile }
82
- end
83
- add_to_gitignore if using_git?
84
- end
85
-
86
- exit(0)
20
+ exit
@@ -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
@@ -1,13 +1,21 @@
1
1
  require 'rubygems/command_manager'
2
2
  require 'rubygems/command'
3
-
3
+ require 'gem_this'
4
+
4
5
  class Gem::Commands::ThisCommand < Gem::Command
5
6
  def initialize
6
- super 'this', "Creates a Rakefile suitable for turning the current project into a gem."
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
7
15
  end
8
16
 
9
17
  def execute
10
- `gem-this`
18
+ GemThis.new(options[:args].first || File.basename(Dir.pwd), options[:debug]).create_rakefile
11
19
  end
12
20
  end
13
21
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lazyatom-gem-this
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Adam
@@ -26,6 +26,7 @@ files:
26
26
  - Readme.markdown
27
27
  - Rakefile.erb
28
28
  - bin/gem-this
29
+ - lib/gem_this.rb
29
30
  - lib/rubygems_plugin.rb
30
31
  has_rdoc: false
31
32
  homepage: http://github.com/lazyatom/gem-this