meta_project 0.4.5 → 0.4.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/CHANGES +8 -0
- data/README +54 -20
- data/Rakefile +4 -16
- data/lib/meta_project.rb +1 -0
- data/lib/meta_project/core_ext/pathname.rb +36 -0
- data/lib/meta_project/project/xforge/xforge_base.rb +2 -2
- metadata +2 -1
data/CHANGES
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
= MetaProject Changelog
|
2
2
|
|
3
|
+
== Version 0.4.6
|
4
|
+
|
5
|
+
* Updated README.
|
6
|
+
* Added PathnameIterator mixin that can be used to iterate over Pathname and MetaProject::ScmWeb::Pathname to
|
7
|
+
do e.g. egrep or other operations.
|
8
|
+
* Fixed a bug in Project::RubyForge that prevented group_id from being recognised for some projects.
|
9
|
+
* Made the scm_web test for rubyforge be less fragile by storing the compared local file locally.
|
10
|
+
|
3
11
|
== Version 0.4.5
|
4
12
|
|
5
13
|
This version improves the MetaProject::ScmWeb::Pathname support, allowing online contents in scm web interfaces to be navigated and read in a similar fashion to the standard library's Pathname class.
|
data/README
CHANGED
@@ -1,64 +1,98 @@
|
|
1
|
-
=
|
1
|
+
= MetaProject
|
2
2
|
|
3
|
-
XForge is a
|
3
|
+
MetaProject (formerly XForge) is a library that allows interaction with various project hosting servers, issue trackers, SCMs and SCM browsers through a common API.
|
4
4
|
|
5
|
-
XForge
|
5
|
+
MetaProject also includes is a Quick Release System (QRS) for [RubyForge, SourceForge and other SourceForge clones] (commonly referred to as XForge throughout the documentation) as well as RAA and Freshmeat. QRS support for other hosts is in the pipe.
|
6
6
|
|
7
|
-
|
7
|
+
== Feature overview
|
8
8
|
|
9
|
-
|
9
|
+
=== RSCM related
|
10
10
|
|
11
|
-
*
|
11
|
+
* Obtain preconfigured RSCM:http://rscm.rubyforge.org objects.
|
12
12
|
|
13
|
-
|
13
|
+
=== SCM browser related
|
14
14
|
|
15
|
-
*
|
15
|
+
* Obtain preconfigured SCM browser proxy objects that can generate various links with a simple API.
|
16
|
+
|
17
|
+
* Treat files in the SCM browser just as stdlib Pathname object (only a subset is provided)
|
18
|
+
|
19
|
+
=== QRS related
|
20
|
+
|
21
|
+
* QRS: Create/Upload new releases (with multiple files if desired).
|
22
|
+
|
23
|
+
* Rake integration (use the QRS from Rake scripts).
|
24
|
+
|
25
|
+
* Publish XForge news items for a project.
|
26
|
+
|
27
|
+
* Publish on RAA (SOAP under the hood)
|
28
|
+
|
29
|
+
* Publish on Freshmeat (XMLRPC under the hood)
|
30
|
+
|
31
|
+
=== Issue tracker related
|
32
|
+
|
33
|
+
* Close and comment on issues
|
34
|
+
|
35
|
+
* Recognise issue ids and create links in e.g. SCM commit messages
|
36
|
+
|
37
|
+
* Patois parsing, a DSL for issue and release management.
|
38
|
+
|
39
|
+
=== XForge related
|
40
|
+
|
41
|
+
* Look up XForge projects by unix name (no need to worry about group_id or package_id).
|
42
|
+
|
43
|
+
* Also see QRS related
|
16
44
|
|
17
45
|
* Query home page URLs for a project.
|
18
46
|
|
19
47
|
== Download/Installation
|
20
48
|
|
21
|
-
The latest version of
|
49
|
+
The latest version of MetaProject can be found at
|
22
50
|
|
23
51
|
* http://rubyforge.org/project/showfiles.php?group_id=801
|
24
52
|
|
25
|
-
Download and install
|
53
|
+
Download and install MetaProject with the following.
|
26
54
|
|
27
|
-
gem install
|
55
|
+
gem install meta_project
|
28
56
|
|
29
|
-
(You may need administrative privileges for this).
|
57
|
+
(You may need administrative privileges (sudo) for this).
|
30
58
|
|
31
59
|
== Usage
|
32
60
|
|
33
|
-
|
61
|
+
=== QRS
|
62
|
+
|
63
|
+
MetaProject itself is released with MetaProject's QRS Rake tasks, so check out MetaProject's own Rakefile (http://tinyurl.com/a23u5) and CHANGES (http://tinyurl.com/9qxxf) files for the best examples on how to use it.
|
34
64
|
|
35
65
|
XForge can parse release summary and changes from CHANGES if you format it the way XForge's own CHANGES is formatted. Also make sure your Rakefile's PKG_VERSION is in sync with the latest version specified in the CHANGES file.
|
36
66
|
|
37
|
-
|
67
|
+
=== Other parts of the API
|
68
|
+
|
69
|
+
If you're writing an application that interacts with MetaProject, please refer to the RDoc API and the RSpec:http://rspec.rubyforge.org specifications in the CVS source tree (kinda like unit tests, just better.)
|
38
70
|
|
39
71
|
---
|
40
72
|
|
41
73
|
== Credits
|
42
74
|
|
75
|
+
(In alphabetical order)
|
76
|
+
|
43
77
|
[<b>Aslak Hellesoy</b>] Maintainer of this project.
|
44
78
|
|
45
79
|
[<b>David Heinemeier Hansson</b>] For the HTTP POST code and the idea to parse ids from project pages.
|
46
80
|
|
47
81
|
[<b>Jim Weirich</b>] For Rake, making XForge easier to use from Ruby build scripts.
|
48
82
|
|
83
|
+
[<b>Thomas Leitner</b>] For Freshmeat and RAA support.
|
84
|
+
|
49
85
|
== Support
|
50
86
|
|
51
|
-
The
|
87
|
+
The MetaProject homepage is http://xforge.rubyforge.org. You can find the MetaProject
|
52
88
|
RubyForge page at http://rubyforge.org/projects/xforge.
|
53
89
|
|
54
|
-
Feel free to submit patches, bug reports or feature requests via
|
90
|
+
Feel free to submit patches, bug reports or feature requests via MetaProject's issue tracker on RubyForge.
|
55
91
|
|
56
|
-
For
|
57
|
-
(which is mirrored to comp.lang.ruby) or contact
|
58
|
-
aslak hellesoy gmail com.
|
92
|
+
For discussions and questions, please use the mailing list: http://rubyforge.org/mail/?group_id=801
|
59
93
|
|
60
94
|
== License
|
61
95
|
|
62
|
-
|
96
|
+
MetaProject is available under an MIT-style license.
|
63
97
|
|
64
98
|
:include: MIT-LICENSE
|
data/Rakefile
CHANGED
@@ -24,7 +24,7 @@ require 'rake/rdoctask'
|
|
24
24
|
#
|
25
25
|
# REMEMBER TO KEEP PKG_VERSION IN SYNC WITH THE CHANGES FILE!
|
26
26
|
PKG_NAME = "meta_project"
|
27
|
-
PKG_VERSION = "0.4.
|
27
|
+
PKG_VERSION = "0.4.6"
|
28
28
|
PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
|
29
29
|
PKG_FILES = FileList[
|
30
30
|
'[A-Z]*',
|
@@ -98,23 +98,11 @@ task :gem => [:test]
|
|
98
98
|
|
99
99
|
# Support Tasks ------------------------------------------------------
|
100
100
|
|
101
|
-
def egrep(pattern)
|
102
|
-
Dir['**/*.rb'].each do |fn|
|
103
|
-
count = 0
|
104
|
-
open(fn) do |f|
|
105
|
-
while line = f.gets
|
106
|
-
count += 1
|
107
|
-
if line =~ pattern
|
108
|
-
puts "#{fn}:#{count}:#{line}"
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
101
|
desc "Look for TODO and FIXME tags in the code"
|
116
102
|
task :todo do
|
117
|
-
egrep
|
103
|
+
Pathname.new(File.dirname(__FILE__)).egrep(/#.*(FIXME|TODO|TBD|DEPRECATED)/) do |match|
|
104
|
+
puts match
|
105
|
+
end
|
118
106
|
end
|
119
107
|
|
120
108
|
task :release => [:verify_env_vars, :release_files, :publish_doc, :publish_news, :tag]
|
data/lib/meta_project.rb
CHANGED
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
|
3
|
+
# TODO: extend this to find comments
|
4
|
+
# http://ostermiller.org/findcomment.html
|
5
|
+
|
6
|
+
module PathnameIterator
|
7
|
+
def iterate(proc, &block)
|
8
|
+
if directory?
|
9
|
+
children.each do |c|
|
10
|
+
c.iterate(proc)
|
11
|
+
end
|
12
|
+
else
|
13
|
+
proc.call(self, &block)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def egrep(regexp, &block)
|
18
|
+
proc = Proc.new do |file|
|
19
|
+
file.open do |io|
|
20
|
+
count = 0
|
21
|
+
while line = io.gets
|
22
|
+
count += 1
|
23
|
+
if line =~ regexp
|
24
|
+
block.call("#{file.cleanpath}:#{count}:#{line}")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
iterate(proc, &block)
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
class Pathname
|
35
|
+
include PathnameIterator
|
36
|
+
end
|
@@ -45,10 +45,10 @@ module MetaProject
|
|
45
45
|
# The group_id of this project
|
46
46
|
def group_id
|
47
47
|
unless(@group_id)
|
48
|
-
regexp = /
|
48
|
+
regexp = /project\/memberlist.php\?group_id=(\d+)/
|
49
49
|
html = open(xforge_project_url).read
|
50
50
|
@group_id = html[regexp, 1]
|
51
|
-
raise "Couldn't get group_id" unless @group_id
|
51
|
+
raise "Couldn't get group_id from #{xforge_project_url}" unless @group_id
|
52
52
|
end
|
53
53
|
@group_id
|
54
54
|
end
|
metadata
CHANGED
@@ -3,7 +3,7 @@ rubygems_version: 0.8.11
|
|
3
3
|
specification_version: 1
|
4
4
|
name: meta_project
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.4.
|
6
|
+
version: 0.4.6
|
7
7
|
date: 2005-09-01 00:00:00 -04:00
|
8
8
|
summary: Ruby based make-like utility.
|
9
9
|
require_paths:
|
@@ -42,6 +42,7 @@ files:
|
|
42
42
|
- lib/meta_project/scm_web.rb
|
43
43
|
- lib/meta_project/tracker.rb
|
44
44
|
- lib/meta_project/version_parser.rb
|
45
|
+
- lib/meta_project/core_ext/pathname.rb
|
45
46
|
- lib/meta_project/core_ext/string.rb
|
46
47
|
- lib/meta_project/patois/parser.rb
|
47
48
|
- lib/meta_project/project/base.rb
|