xforge 0.1.9 → 0.2.0
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 +8 -0
- data/README +9 -6
- data/Rakefile +9 -2
- data/lib/rake/contrib/xforge/base.rb +2 -2
- data/lib/rake/contrib/xforge/news_publisher.rb +1 -1
- data/lib/rake/contrib/xforge/release.rb +1 -1
- data/lib/scm_web/view_cvs.rb +2 -2
- data/lib/xforge/host.rb +15 -5
- data/lib/xforge/project.rb +5 -4
- data/lib/xforge/rubyforge.rb +2 -2
- data/lib/xforge/session.rb +9 -0
- data/lib/xforge/sourceforge.rb +2 -2
- metadata +1 -1
data/CHANGES
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
= XForge Changelog
|
2
2
|
|
3
|
+
== Version 0.2.0
|
4
|
+
|
5
|
+
First stable release of the XForge QRS.
|
6
|
+
|
7
|
+
* Renamed Project.name to Project.unix_name
|
8
|
+
* Wrote better documentation
|
9
|
+
* Included CVS tagging in the Rakefile
|
10
|
+
|
3
11
|
== Version 0.1.9
|
4
12
|
|
5
13
|
This release adds more functionality for news publishing
|
data/README
CHANGED
@@ -1,17 +1,20 @@
|
|
1
1
|
= XForge
|
2
2
|
|
3
|
-
|
4
|
-
SourceForge, GForge or other SourceForge clones.
|
3
|
+
XForge is a Quick Release System (QRS) for RubyForge, SourceForge and other SourceForge clones. XForge also allows users to query SCM information and other metadata about hosted projects.
|
5
4
|
|
6
5
|
XForge has the following features:
|
7
6
|
|
8
7
|
* Look up projects by unix name (no need to worry about group_id or package_id).
|
9
8
|
|
10
|
-
* Upload new releases (with multiple files if desired).
|
9
|
+
* Create/Upload new releases (with multiple files if desired).
|
11
10
|
|
12
|
-
* Rake integration.
|
11
|
+
* Rake integration (use XForge from Rake scripts).
|
13
12
|
|
14
|
-
*
|
13
|
+
* Query SCM meta information (using RSCM - http://rscm.rubyforge.org).
|
14
|
+
|
15
|
+
* Publish news items about a project.
|
16
|
+
|
17
|
+
* Query home page URLs for a project.
|
15
18
|
|
16
19
|
== Download/Installation
|
17
20
|
|
@@ -27,7 +30,7 @@ Download and install XForge with the following.
|
|
27
30
|
|
28
31
|
== Usage
|
29
32
|
|
30
|
-
See XForge and Rake::XForge::
|
33
|
+
See XForge, Rake::XForge::Release and Rake::XForge::NewsPublisher.
|
31
34
|
|
32
35
|
---
|
33
36
|
|
data/Rakefile
CHANGED
@@ -24,7 +24,7 @@ require 'rake/rdoctask'
|
|
24
24
|
#
|
25
25
|
# REMEMBER TO KEEP PKG_VERSION IN SYNC WITH CHANGELOG
|
26
26
|
PKG_NAME = "xforge"
|
27
|
-
PKG_VERSION = "0.
|
27
|
+
PKG_VERSION = "0.2.0"
|
28
28
|
PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
|
29
29
|
PKG_FILES = FileList[
|
30
30
|
'[A-Z]*',
|
@@ -117,7 +117,7 @@ task :todo do
|
|
117
117
|
egrep /#.*(FIXME|TODO|TBD)/
|
118
118
|
end
|
119
119
|
|
120
|
-
task :release => [:release_files, :publish_doc, :publish_news]
|
120
|
+
task :release => [:release_files, :publish_doc, :publish_news, :tag]
|
121
121
|
|
122
122
|
task :publish_doc => [:rdoc] do
|
123
123
|
publisher = Rake::RubyForgePublisher.new(PKG_NAME, ENV['RUBYFORGE_USER'])
|
@@ -152,3 +152,10 @@ task :publish_news => [:gem] do
|
|
152
152
|
news.password = ENV['RUBYFORGE_PASSWORD']
|
153
153
|
end
|
154
154
|
end
|
155
|
+
|
156
|
+
desc "Tag all the CVS files with the latest release number (REL=x.y.z)"
|
157
|
+
task :tag do
|
158
|
+
reltag = "REL_#{PKG_VERSION.gsub(/\./, '_')}"
|
159
|
+
puts "Tagging CVS with [#{reltag}]"
|
160
|
+
sh %{cvs tag #{reltag}}
|
161
|
+
end
|
@@ -5,8 +5,8 @@ module Rake
|
|
5
5
|
class Base
|
6
6
|
attr_writer :user_name, :password
|
7
7
|
|
8
|
-
def initialize(
|
9
|
-
@
|
8
|
+
def initialize(project_unix_name, host=::XForge::RubyForge.new)
|
9
|
+
@project_unix_name = project_unix_name
|
10
10
|
@host = host
|
11
11
|
|
12
12
|
set_defaults
|
data/lib/scm_web/view_cvs.rb
CHANGED
@@ -20,7 +20,7 @@ module ScmWeb
|
|
20
20
|
unless(mod == "CVSROOT")
|
21
21
|
scm = RSCM::Cvs.new
|
22
22
|
scm.root = ":pserver:anonymous@#{project.host.cvs_host_name}:#{project.host.cvs_path}/#{mod}"
|
23
|
-
scm.mod = project.
|
23
|
+
scm.mod = project.unix_name
|
24
24
|
@scms << scm
|
25
25
|
end
|
26
26
|
end
|
@@ -40,7 +40,7 @@ module ScmWeb
|
|
40
40
|
uri_spec = @uri_specs[type]
|
41
41
|
raise "No uri_spec for #{type}" unless uri_spec
|
42
42
|
|
43
|
-
|
43
|
+
project_unix_name = project.unix_name
|
44
44
|
revision = options[:revision]
|
45
45
|
eval("\"#{uri_spec}\"", binding)
|
46
46
|
end
|
data/lib/xforge/host.rb
CHANGED
@@ -1,16 +1,26 @@
|
|
1
1
|
module XForge
|
2
|
-
# A Host represents a proxy to a server
|
2
|
+
# A Host represents a proxy to a server. Most of the time
|
3
|
+
# you don't want to use this class directly, but rather one
|
4
|
+
# of its subclasses. Example:
|
5
|
+
#
|
6
|
+
# require 'xforge'
|
7
|
+
#
|
8
|
+
# rubyforge = XForge::RubyForge.new
|
9
|
+
# xforge = rubyforge.project('xforge')
|
10
|
+
# session = xforge.login(my_user, my_password)
|
11
|
+
# session.release(["pkg/xforge-0.1.gem"], "XForge-0.1")
|
12
|
+
#
|
3
13
|
class Host
|
4
14
|
attr_reader :name
|
5
15
|
|
6
|
-
# Create a new Host proxy located at +name+.
|
16
|
+
# Create a new Host proxy located at IP +name+.
|
7
17
|
def initialize(name)
|
8
18
|
@name = name
|
9
19
|
end
|
10
20
|
|
11
|
-
#
|
12
|
-
def project(
|
13
|
-
Project.new(self,
|
21
|
+
# Returns the Project with the given +unix_name+.
|
22
|
+
def project(unix_name)
|
23
|
+
Project.new(self, unix_name)
|
14
24
|
end
|
15
25
|
end
|
16
26
|
end
|
data/lib/xforge/project.rb
CHANGED
@@ -7,17 +7,18 @@ module XForge
|
|
7
7
|
# A Project is an interface to a hosted project.
|
8
8
|
class Project
|
9
9
|
|
10
|
-
attr_reader :host, :
|
10
|
+
attr_reader :host, :unix_name
|
11
11
|
|
12
|
-
def initialize(host,
|
12
|
+
def initialize(host, unix_name)
|
13
13
|
@host = host
|
14
|
-
@
|
14
|
+
@unix_name = unix_name
|
15
15
|
end
|
16
16
|
|
17
17
|
# Logs in and returns a Session
|
18
18
|
def login(user_name, password)
|
19
19
|
http = Net::HTTP.new(@host.name, host.login_port)
|
20
20
|
|
21
|
+
# Can't get this to work, so login doesn't work on SourceForge yet!
|
21
22
|
# http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=net%2Fhttps.rb
|
22
23
|
if(host.login_port == 443)
|
23
24
|
http.use_ssl = true
|
@@ -57,7 +58,7 @@ module XForge
|
|
57
58
|
end
|
58
59
|
|
59
60
|
def project_uri
|
60
|
-
"http://#{@host.name}/projects/#{@
|
61
|
+
"http://#{@host.name}/projects/#{@unix_name}/"
|
61
62
|
end
|
62
63
|
|
63
64
|
# The home page of this project
|
data/lib/xforge/rubyforge.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module XForge
|
2
2
|
class RubyForge < Host
|
3
3
|
VIEW_CVS = "http://rubyforge.org/cgi-bin/viewcvs.cgi/"
|
4
|
-
PATH_CVSROOT = "\#{path}?cvsroot=\#{
|
4
|
+
PATH_CVSROOT = "\#{path}?cvsroot=\#{project_unix_name}"
|
5
5
|
PATH_CVSROOT_REV = "#{PATH_CVSROOT}&rev=\#{revision}"
|
6
6
|
|
7
7
|
OVERVIEW = "#{VIEW_CVS}#{PATH_CVSROOT}"
|
@@ -25,7 +25,7 @@ module XForge
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def scm_web(project)
|
28
|
-
module_regexp = /href=\"(\w+)\/\?cvsroot=#{project.
|
28
|
+
module_regexp = /href=\"(\w+)\/\?cvsroot=#{project.unix_name}/
|
29
29
|
::ScmWeb::ViewCvs.new({:overview => OVERVIEW, :raw => RAW, :html => HTML}, project, module_regexp)
|
30
30
|
end
|
31
31
|
|
data/lib/xforge/session.rb
CHANGED
@@ -117,9 +117,16 @@ module XForge
|
|
117
117
|
raise("Couldn't get release id") unless release_id
|
118
118
|
end
|
119
119
|
end
|
120
|
+
puts "Done!"
|
120
121
|
end
|
121
122
|
|
122
123
|
def publish_news(subject, details)
|
124
|
+
puts "About to publish news"
|
125
|
+
puts "Subject: '#{subject}'"
|
126
|
+
puts "Details:"
|
127
|
+
puts details
|
128
|
+
puts ""
|
129
|
+
|
123
130
|
release_response = Net::HTTP.start(@host.name, 80) do |http|
|
124
131
|
query_hash = {
|
125
132
|
"group_id" => @project.group_id,
|
@@ -134,7 +141,9 @@ module XForge
|
|
134
141
|
"Content-Type" => "multipart/form-data"
|
135
142
|
)
|
136
143
|
http.post(target + query(query_hash), "", headers)
|
144
|
+
|
137
145
|
end
|
146
|
+
puts "Done!"
|
138
147
|
end
|
139
148
|
|
140
149
|
private
|
data/lib/xforge/sourceforge.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module XForge
|
2
2
|
class SourceForge < Host
|
3
3
|
VIEW_CVS = "http://cvs.sourceforge.net/viewcvs.py/"
|
4
|
-
PROJECT_PATH = "\#{
|
4
|
+
PROJECT_PATH = "\#{project_unix_name}/\#{path}"
|
5
5
|
REV = "rev=\#{revision}"
|
6
6
|
|
7
7
|
OVERVIEW = "#{VIEW_CVS}#{PROJECT_PATH}"
|
@@ -25,7 +25,7 @@ module XForge
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def scm_web(project)
|
28
|
-
module_regexp = /viewcvs\.py\/#{project.
|
28
|
+
module_regexp = /viewcvs\.py\/#{project.unix_name}\/(\w+)\//
|
29
29
|
::ScmWeb::ViewCvs.new({:overview => OVERVIEW, :raw => RAW, :html => HTML}, project, module_regexp)
|
30
30
|
end
|
31
31
|
|