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.
- data/README.mkd +59 -0
- data/lib/mg.rb +113 -0
- metadata +75 -0
data/README.mkd
ADDED
@@ -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.
|
data/lib/mg.rb
ADDED
@@ -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
|
+
|