xforge 0.1.2 → 0.1.3
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/CHANGES +7 -0
- data/README +1 -1
- data/Rakefile +54 -48
- data/lib/rake/contrib/xforge/release.rb +14 -3
- data/lib/xforge.rb +13 -1
- data/lib/xforge/version_parser.rb +43 -0
- metadata +3 -2
data/CHANGES
CHANGED
@@ -1,8 +1,15 @@
|
|
1
1
|
= XForge Changelog
|
2
2
|
|
3
|
+
== Version 0.1.3
|
4
|
+
|
5
|
+
* Added logic for parsing of CHANGES files and include it in the release notes when publishing.
|
6
|
+
|
3
7
|
== Version 0.1.2
|
4
8
|
|
9
|
+
This release is a minor release with fixes in the Rake script.
|
10
|
+
|
5
11
|
* Fixed RDoc for gem
|
12
|
+
* Cleaned up documentation
|
6
13
|
|
7
14
|
== Version 0.1.1
|
8
15
|
|
data/README
CHANGED
@@ -35,7 +35,7 @@ See XForge and Rake::XForge::Release.
|
|
35
35
|
|
36
36
|
[<b>David Heinemeier Hansson</b>] For the HTTP POST code and the idea to parse ids from project pages.
|
37
37
|
|
38
|
-
[<b>Jim Weirich</b>] For Rake, making XForge
|
38
|
+
[<b>Jim Weirich</b>] For Rake, making XForge easier to use from Ruby build scripts.
|
39
39
|
|
40
40
|
== Support
|
41
41
|
|
data/Rakefile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
# Rakefile for XForge
|
1
|
+
# Rakefile for XForge
|
2
2
|
|
3
|
-
# Copyright
|
3
|
+
# Copyright 2005 by Aslak Hellesoy (aslak.hellesoy@gmail.org)
|
4
4
|
# All rights reserved.
|
5
5
|
|
6
6
|
# This file is may be distributed under an MIT style license. See
|
@@ -14,8 +14,16 @@ require 'rake/clean'
|
|
14
14
|
require 'rake/testtask'
|
15
15
|
require 'rake/rdoctask'
|
16
16
|
|
17
|
+
task :default => [:test, :gem]
|
18
|
+
|
19
|
+
Rake::TestTask.new do |t|
|
20
|
+
t.libs << "test"
|
21
|
+
t.test_files = FileList['**/*_test.rb']
|
22
|
+
t.verbose = true
|
23
|
+
end
|
24
|
+
|
17
25
|
# Create a task to build the RDOC documentation tree.
|
18
|
-
rd = Rake::RDocTask.new("rdoc")
|
26
|
+
rd = Rake::RDocTask.new("rdoc") do |rdoc|
|
19
27
|
rdoc.rdoc_dir = 'html'
|
20
28
|
# rdoc.template = 'kilmer'
|
21
29
|
# rdoc.template = 'css2'
|
@@ -25,14 +33,14 @@ rd = Rake::RDocTask.new("rdoc") { |rdoc|
|
|
25
33
|
rdoc.rdoc_files.include('README', 'MIT-LICENSE', 'TODO', 'CHANGES')
|
26
34
|
rdoc.rdoc_files.include('lib/**/*.rb', 'doc/**/*.rdoc')
|
27
35
|
rdoc.rdoc_files.exclude('doc/**/*_attrs.rdoc')
|
28
|
-
|
36
|
+
end
|
29
37
|
|
30
38
|
# ====================================================================
|
31
39
|
# Create a task that will package the Rake software into distributable
|
32
40
|
# tar, zip and gem files.
|
33
41
|
|
34
42
|
PKG_NAME = "xforge"
|
35
|
-
PKG_VERSION = "0.1.
|
43
|
+
PKG_VERSION = "0.1.3"
|
36
44
|
PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
|
37
45
|
PKG_FILES = FileList[
|
38
46
|
'[A-Z]*',
|
@@ -40,44 +48,41 @@ PKG_FILES = FileList[
|
|
40
48
|
'doc/**/*'
|
41
49
|
]
|
42
50
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
spec = Gem::Specification.new do |s|
|
47
|
-
|
48
|
-
#### Basic information.
|
49
|
-
|
50
|
-
s.name = 'xforge'
|
51
|
-
s.version = PKG_VERSION
|
52
|
-
s.summary = "Ruby based make-like utility."
|
53
|
-
s.description = <<-EOF
|
54
|
-
XForge is a simple library to interact with RubyForge, SourceForge, GForge or other SourceForge clones.
|
55
|
-
EOF
|
56
|
-
|
57
|
-
s.files = PKG_FILES.to_a
|
58
|
-
s.require_path = 'lib'
|
59
|
-
|
60
|
-
#### Documentation and testing.
|
61
|
-
|
62
|
-
s.has_rdoc = true
|
63
|
-
s.extra_rdoc_files = rd.rdoc_files.reject { |fn| fn =~ /\.rb$/ }.to_a
|
64
|
-
s.rdoc_options <<
|
65
|
-
'--title' << 'XForge' <<
|
66
|
-
'--main' << 'README' <<
|
67
|
-
'--line-numbers'
|
68
|
-
|
69
|
-
#### Author and project details.
|
70
|
-
|
71
|
-
s.author = "Aslak Hellesoy"
|
72
|
-
s.email = "aslak.hellesoy@gmail.com"
|
73
|
-
s.homepage = "http://xforge.rubyforge.org"
|
74
|
-
s.rubyforge_project = "xforge"
|
75
|
-
end
|
51
|
+
spec = Gem::Specification.new do |s|
|
52
|
+
|
53
|
+
#### Basic information.
|
76
54
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
55
|
+
s.name = PKG_NAME
|
56
|
+
s.version = PKG_VERSION
|
57
|
+
s.summary = "Ruby based make-like utility."
|
58
|
+
s.description = <<-EOF
|
59
|
+
XForge is a simple library to interact with RubyForge, SourceForge, GForge or other SourceForge clones.
|
60
|
+
EOF
|
61
|
+
|
62
|
+
s.files = PKG_FILES.to_a
|
63
|
+
s.require_path = 'lib'
|
64
|
+
|
65
|
+
#### Documentation and testing.
|
66
|
+
|
67
|
+
s.has_rdoc = true
|
68
|
+
s.extra_rdoc_files = rd.rdoc_files.reject { |fn| fn =~ /\.rb$/ }.to_a
|
69
|
+
s.rdoc_options <<
|
70
|
+
'--title' << 'XForge' <<
|
71
|
+
'--main' << 'README' <<
|
72
|
+
'--line-numbers'
|
73
|
+
|
74
|
+
#### Author and project details.
|
75
|
+
|
76
|
+
s.author = "Aslak Hellesoy"
|
77
|
+
s.email = "aslak.hellesoy@gmail.com"
|
78
|
+
s.homepage = "http://xforge.rubyforge.org"
|
79
|
+
s.rubyforge_project = "xforge"
|
80
|
+
end
|
81
|
+
|
82
|
+
desc "Build Gem"
|
83
|
+
Rake::GemPackageTask.new(spec) do |pkg|
|
84
|
+
pkg.need_zip = true
|
85
|
+
pkg.need_tar = true
|
81
86
|
end
|
82
87
|
|
83
88
|
# Support Tasks ------------------------------------------------------
|
@@ -114,11 +119,12 @@ task :publish_files => [:gem] do
|
|
114
119
|
"CHANGES"
|
115
120
|
]
|
116
121
|
|
117
|
-
Rake::XForge::Release.new(PKG_NAME) do |
|
122
|
+
Rake::XForge::Release.new(PKG_NAME) do |release|
|
118
123
|
# Never hardcode user name and password in the Rakefile!
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
+
release.user_name = ENV['RUBYFORGE_USER']
|
125
|
+
release.password = ENV['RUBYFORGE_PASSWORD']
|
126
|
+
release.files = release_files.to_a
|
127
|
+
release.release_name = "XForge #{PKG_VERSION}"
|
128
|
+
# The rest of the options are defaults (among others, release_notes and release_changes, parsed from CHANGES)
|
129
|
+
end
|
124
130
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'xforge/version_parser'
|
2
2
|
|
3
3
|
module Rake
|
4
4
|
module XForge
|
@@ -36,7 +36,7 @@ module Rake
|
|
36
36
|
# end
|
37
37
|
# end
|
38
38
|
#
|
39
|
-
# This can be invoked
|
39
|
+
# This can be invoked from the command line:
|
40
40
|
#
|
41
41
|
# rake release RUBYFORGE_USER=aslak_hellesoy RUBYFORGE_PASSWORD=nahnotreal
|
42
42
|
#
|
@@ -57,13 +57,24 @@ module Rake
|
|
57
57
|
def set_defaults
|
58
58
|
@files = ["pkg/#{PKG_FILE_NAME}.gem"] if defined? PKG_FILE_NAME
|
59
59
|
@release_name = "#{PKG_NAME}-#{PKG_VERSION}" if (defined? PKG_NAME && defined? PKG_VERSION)
|
60
|
+
|
61
|
+
begin
|
62
|
+
vp = ::XForge::VersionParser.new
|
63
|
+
version = vp.parse("CHANGES", PKG_VERSION)
|
64
|
+
@release_notes = version.release_notes
|
65
|
+
@release_changes = version.release_changes.join("\n")
|
66
|
+
rescue => e
|
67
|
+
STDERR.puts("Couldn't parse release info from CHANGES")
|
68
|
+
STDERR.puts(e.message)
|
69
|
+
STDERR.puts(e.backtrace.join("\n"))
|
70
|
+
end
|
60
71
|
end
|
61
72
|
|
62
73
|
def execute
|
63
74
|
project = @host.project(@project_name)
|
64
75
|
u = user_name
|
65
76
|
session = project.login(u, password)
|
66
|
-
session.release(@files, @
|
77
|
+
session.release(@release_name, @files, @release_notes, @release_changes)
|
67
78
|
end
|
68
79
|
|
69
80
|
end
|
data/lib/xforge.rb
CHANGED
@@ -101,10 +101,22 @@ module XForge
|
|
101
101
|
# Optional parameters are +processor+ (which should be one of the Processor constants), +release_notes+,
|
102
102
|
# +release_changes+ and +preformatted+ which will appear on the releas page of the associated project.
|
103
103
|
#
|
104
|
-
def release(
|
104
|
+
def release(release_name, filenames, release_notes="", release_changes="", preformatted=true, processor=Processor::ANY)
|
105
105
|
release_date = Time.now.strftime("%Y-%m-%d %H:%M")
|
106
106
|
release_id = nil
|
107
107
|
|
108
|
+
puts "About to release '#{release_name}'"
|
109
|
+
puts "=== Files ==="
|
110
|
+
puts " " + filenames.join("\n ")
|
111
|
+
puts "=== Release Notes ==="
|
112
|
+
puts release_notes
|
113
|
+
puts "=== Release Changes ==="
|
114
|
+
puts release_changes
|
115
|
+
puts "=== Release Settings ==="
|
116
|
+
puts "Preformatted: #{preformatted}"
|
117
|
+
puts "Processor: #{processor}"
|
118
|
+
puts "\nStarting release..."
|
119
|
+
|
108
120
|
xfiles = filenames.collect{|filename| XFile.new(filename)}
|
109
121
|
xfiles.each_with_index do |xfile, i|
|
110
122
|
first_file = i==0
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module XForge
|
2
|
+
class VersionParser
|
3
|
+
def parse(changes_file, version)
|
4
|
+
release_notes_first = nil
|
5
|
+
changes_first = nil
|
6
|
+
changes_last = nil
|
7
|
+
|
8
|
+
lines = File.open(changes_file).readlines
|
9
|
+
state = nil
|
10
|
+
lines.each_with_index do |line, n|
|
11
|
+
# parse state
|
12
|
+
if line =~ /#{version}/ && state.nil?
|
13
|
+
state = :in_release_notes
|
14
|
+
release_notes_first = n+1
|
15
|
+
end
|
16
|
+
if (line =~ /\*/ && (state == :in_release_notes))
|
17
|
+
state = :in_changes
|
18
|
+
changes_first = changes_last = n
|
19
|
+
end
|
20
|
+
if (line =~ /\*/ && (state == :in_changes))
|
21
|
+
changes_last = n
|
22
|
+
end
|
23
|
+
if line =~ /^==/ && state == :in_changes
|
24
|
+
state = :done
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
release_notes = lines[release_notes_first..changes_first-1].join("")
|
29
|
+
release_changes = lines[changes_first..changes_last].collect{|line| line[2..-1].chomp}
|
30
|
+
Version.new(release_notes, release_changes)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class Version
|
35
|
+
attr_reader :release_notes # String
|
36
|
+
attr_reader :release_changes # Array of String
|
37
|
+
|
38
|
+
def initialize(release_notes, release_changes)
|
39
|
+
puts release_notes
|
40
|
+
@release_notes, @release_changes = release_notes, release_changes
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.8
|
|
3
3
|
specification_version: 1
|
4
4
|
name: xforge
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.1.
|
7
|
-
date: 2005-
|
6
|
+
version: 0.1.3
|
7
|
+
date: 2005-08-11
|
8
8
|
summary: Ruby based make-like utility.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -37,6 +37,7 @@ files:
|
|
37
37
|
- lib/rake/contrib/xforge.rb
|
38
38
|
- lib/rake/contrib/xforge/base.rb
|
39
39
|
- lib/rake/contrib/xforge/release.rb
|
40
|
+
- lib/xforge/version_parser.rb
|
40
41
|
- doc/base_attrs.rdoc
|
41
42
|
test_files: []
|
42
43
|
rdoc_options:
|