mg 0.0.6

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.
Files changed (3) hide show
  1. data/README.mkd +59 -0
  2. data/lib/mg.rb +113 -0
  3. metadata +75 -0
@@ -0,0 +1,59 @@
1
+ mg
2
+ ==
3
+
4
+ Minimalist way to build [gems](http://rubygems.org) and publish them to
5
+ [Rubyforge](http://rubyforge.org) or [Gemcutter](http://gemcutter.org)
6
+ using [Rake](http://rake.rubyforge.org).
7
+
8
+ Usage
9
+ -----
10
+
11
+ In your Rakefile:
12
+
13
+ require "mg"
14
+ MG.new("foo.gemspec")
15
+
16
+ The following tasks are now available:
17
+
18
+ rake gemcutter
19
+ Push to the gem to gemcutter
20
+
21
+ rake install
22
+ Build and install as local gem
23
+
24
+ rake install:edge
25
+ Build and install edge as a local gem with
26
+ version suffixed by ".999"
27
+
28
+ rake package
29
+ Build gem and tarball into dist/
30
+
31
+ And if you've specified `rubyforge_project`:
32
+
33
+ rake rubyforge
34
+ Publish the current version on Rubyforge
35
+
36
+ rake rubyforge:gem
37
+ Publish gem and tarball on rubyforge
38
+
39
+ rake rubyforge:git
40
+ Push to gitosis@rubyforge.org:<project name>.git
41
+
42
+ Licence
43
+ -------
44
+
45
+ Written by [Ryan Tomayko](http://tomayko.com/about), extracted
46
+ by [Simon Rozet](http://atonie.org).
47
+
48
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
49
+ Version 2, December 2004
50
+
51
+ Copyright (C) 2009 Ryan Tomayko and Simon Rozet
52
+ Everyone is permitted to copy and distribute verbatim or modified
53
+ copies of this license document, and changing it is allowed as long
54
+ as the name is changed.
55
+
56
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
57
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
58
+
59
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
@@ -0,0 +1,113 @@
1
+ require "rake"
2
+ require "rake/clean"
3
+ require "rake/tasklib"
4
+
5
+ class MG < Rake::TaskLib
6
+ attr_accessor :gemspec
7
+
8
+ def initialize(gemspec)
9
+ @gemspec = gemspec
10
+
11
+ define_tasks
12
+ end
13
+
14
+ def name
15
+ spec.name
16
+ end
17
+
18
+ def group
19
+ spec.rubyforge_project
20
+ end
21
+
22
+ # Load the gemspec using the same limitations as github
23
+ def spec
24
+ @spec ||= begin
25
+ require "rubygems/specification"
26
+ data = File.read(gemspec)
27
+ spec = nil
28
+ Thread.new { spec = eval("$SAFE = 3\n#{data}") }.join
29
+ spec
30
+ end
31
+ end
32
+
33
+ private
34
+ def package(ext="")
35
+ "dist/#{spec.name}-#{spec.version}" + ext
36
+ end
37
+
38
+ def define_tasks
39
+ directory "dist/"
40
+ CLOBBER.include("dist")
41
+
42
+ desc "Build and install as local gem"
43
+ task :install => package(".gem") do
44
+ sh "gem install #{package(".gem")}"
45
+ end
46
+
47
+ desc "Build and install edge as a local gem"
48
+ task :"install:edge" => package(".999.gem") do
49
+ sh "gem install #{package(".999.gem")}#{" --development" if ENV["HACK"]}"
50
+ end
51
+
52
+ desc "Build gem and tarball into dist/"
53
+ task :package => %w(.gem .tar.gz).map { |ext| package(ext) }
54
+
55
+ desc "Build the tarball in dist/"
56
+ file package(".tar.gz") => "dist/" do |f|
57
+ sh <<-SH
58
+ git archive \
59
+ --prefix=#{name}-#{spec.version}/ \
60
+ --format=tar \
61
+ HEAD | gzip > #{f.name}
62
+ SH
63
+ end
64
+
65
+ desc "Build the gem in dist/"
66
+ file package(".gem") => "dist/" do |f|
67
+ sh "gem build #{name}.gemspec"
68
+ mv File.basename(f.name), f.name
69
+ end
70
+
71
+ desc "Build the edge gem in dist/"
72
+ file package(".999.gem") => package(".999.gemspec") do |f|
73
+ sh "gem build #{package(".999.gemspec")}"
74
+ mv File.basename(f.name), f.name
75
+ end
76
+
77
+ file package(".999.gemspec") => "dist/" do |f|
78
+ File.open(f.name, "w") { |dest|
79
+ dest << File.read("#{name}.gemspec").
80
+ gsub(/version\s*=\s*['"](.*?)['"]/) { |m|
81
+ "version = \"#{spec.version}.999\";"
82
+ }
83
+ }
84
+ end
85
+
86
+ desc "Push the gem to gemcutter"
87
+ task :gemcutter => package(".gem") do
88
+ sh "gem push #{package(".gem")}"
89
+ end
90
+
91
+ if group
92
+ desc "Publish the current version on Rubyforge"
93
+ task :rubyforge => ["rubyforge:gem", "rubyforge:tarball", "rubyforge:git"]
94
+
95
+ namespace :rubyforge do
96
+ desc "Publish gem to rubyforge"
97
+ task :gem => package(".gem") do
98
+ sh "rubyforge add_release #{group} #{name} #{spec.version} #{package('.gem')}"
99
+ end
100
+
101
+ desc "Publish tarball to rubyforge"
102
+ task :tarball => package(".tar.gz") do
103
+ sh "rubyforge add_file #{group} #{name} #{spec.version} #{package('.tar.gz')}"
104
+ end
105
+
106
+ desc "Push to gitosis@rubyforge.org:#{name}.git"
107
+ task :git do
108
+ sh "git push gitosis@rubyforge.org:#{name}.git master"
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end
metadata ADDED
@@ -0,0 +1,75 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mg
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.6
5
+ platform: ruby
6
+ authors:
7
+ - Simon Rozet
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-11-06 00:00:00 +01:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rake
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: rubyforge
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
35
+ description: minimal gem
36
+ email: simon@rozet.name
37
+ executables: []
38
+
39
+ extensions: []
40
+
41
+ extra_rdoc_files: []
42
+
43
+ files:
44
+ - README.mkd
45
+ - lib/mg.rb
46
+ has_rdoc: true
47
+ homepage: http://github.com/sr/mg
48
+ licenses: []
49
+
50
+ post_install_message:
51
+ rdoc_options: []
52
+
53
+ require_paths:
54
+ - lib
55
+ required_ruby_version: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: "0"
60
+ version:
61
+ required_rubygems_version: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: "0"
66
+ version:
67
+ requirements: []
68
+
69
+ rubyforge_project:
70
+ rubygems_version: 1.3.5
71
+ signing_key:
72
+ specification_version: 3
73
+ summary: minimal gem
74
+ test_files: []
75
+