Commit b4ef84a311d6a98180ec7123b12f9ff28551e039

gem: require summary, read description from a file, added option --has-rdoc, support for dependencies and added option (--gemify-spec) to generate a gemify spec

Commit diff

lib/gitorious/commands/support/ruby/gem.rb

 
44Gitorious.register_command :gem, "Gemify" do |options, summary|
55 require_working_dir!
66
7 if summary.to_s.empty?
8 error("Summary is required")
9 raise Gitorious::EvalException
10 end
11
712 name = File.basename(Dir.getwd)
8 summary ||= ""
913 description = ""
1014
1115 files = []
1216 executables = []
17 options[:deps] ||= []
1318 config = get_config(Dir.getwd)
1419
1520 git.ls_files({}) do |stdout, stderr|
3434 version = time.strftime("%Y.#{day_of_year}")
3535 end
3636
37 description = get_content_from_editor("gem description\n\n")
37
38 description = nil
39 if options[:description]
40 if File.exist?(options[:description])
41 description = File.open(options[:description]).read
42 end
43 end
3844
3945 gem_spec = Gem::Specification.new do |s|
4046 s.name = name
4147 s.version = version
4248 s.summary = summary
43 s.description = description.to_s
49 s.description = description if description
50 s.has_rdoc = true
4451
4552 s.files = files
4653 s.executables = executables
54 s.has_rdoc = true if options[:has_rdoc]
4755
4856 s.author = [ config["user"]["name"] ]
4957 s.email = [ config["user"]["email"] ]
5058 s.homepage = options[:homepage]
5159 s.rubyforge_project = options[:rubyforge]
60
61 options[:deps].each { |dep|
62 s.add_dependency dep
63 }
5264 end
5365
54 unless options[:only_spec]
55 info("Generating `#{name}-#{version}.gem`...")
56 Gem::Builder.new(gem_spec).build
57 else
66 if options[:only_spec]
5867 spec_name = "#{name}.gemspec"
5968 info("Generating `#{spec_name}`...")
6069 File.open(spec_name, "w") do |file|
6170 file << gem_spec.to_ruby
6271 end
72 elsif options[:gemify_spec]
73 info("Generating gemify spec")
74 File.open(".gemified", "w") do |file|
75 file << "---" << "\n"
76 file << ":name: " << gem_spec.name << "\n"
77 file << ":version: " << gem_spec.version << "\n"
78 file << ":summary: " << gem_spec.summary << "\n"
79 file << ":author: " << gem_spec.author << "\n"
80 file << ":email: " << gem_spec.email << "\n"
81 file << ":has_rdoc: " << "true" << "\n" if options[:has_rdoc]
82 file << ":homepage: " << gem_spec.homepage << "\n"
83 file << ":rubyforge_project: " << gem_spec.rubyforge_project << "\n"
84 unless options[:deps].empty?
85 file << ":dependencies: \n"
86 options[:deps].each { |dep|
87 file << "- #{dep}\n"
88 }
89 end
90 end
91 File.open(".manifiest", "w") do |file|
92 file << gem_spec.files.join("\n")
93 end
94 else
95 info("Generating `#{name}-#{version}.gem`...")
96 Gem::Builder.new(gem_spec).build
6397 end
6498end
6599
111111 options[:rubyforge] = value
112112end
113113
114Gitorious.add_option(:gem, "--description=FILE", "Set the description" ) do |options, value|
115 options[:description] = value
116end
117
114118Gitorious.add_option(:gem, "-s", "--only-spec", "Generate the gemspec" ) do |options, value|
115119 options[:only_spec] = true
116120end
117121
122Gitorious.add_option(:gem, "--gemify-spec", "Generate gemify spec" ) do |options, value|
123 options[:gemify_spec] = true
124end
125
126Gitorious.add_option(:gem, "--dependency=DEP", "Add a dependency" ) do |options, value|
127 options[:deps] ||= []
128 options[:deps] << value
129end
130
131Gitorious.add_option(:gem, "--has-rdoc", "" ) do |options, value|
132 options[:has_rdoc] = true
133end
118134
119135# Gitorious.add_option(:gem, "--from-gitorious", "Use gitorious project info (project name, project home, ...)" ) do |options, value| TODO :)
120136# options[:gitorious] = true
toggle raw diff