reap 4.0 → 4.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/ProjectInfo +18 -6
- data/lib/reap/bin/reap.rb +47 -16
- data/lib/reap/interface/interface.rb +0 -0
- data/lib/reap/interface/rubyforge.rb +247 -0
- data/lib/reap/lint.rb +1 -0
- data/lib/reap/projectinfo.rb +47 -18
- data/lib/reap/reap.rb +0 -0
- data/lib/reap/task/announce.rb +11 -13
- data/lib/reap/task/fileperm.rb +2 -5
- data/lib/reap/task/info.rb +2 -4
- data/lib/reap/task/install.rb +1 -3
- data/lib/reap/task/noop.rb +1 -3
- data/lib/reap/task/package.rb +163 -65
- data/lib/reap/task/publish.rb +2 -4
- data/lib/reap/task/rdoc.rb +1 -3
- data/lib/reap/task/release.rb +273 -0
- data/lib/reap/task/test.rb +19 -5
- data/lib/reap/task/testext.rb +5 -5
- data/lib/reap/task.rb +94 -69
- metadata +70 -256
- data/dev/Rakefile +0 -60
- data/dev/composite_task.rb +0 -27
- data/dev/compositepublisher.rb +0 -24
- data/dev/ftptools.rb +0 -139
- data/dev/license-each.rb +0 -85
- data/dev/publisher.rb +0 -75
- data/dev/rubyforgepublisher.rb +0 -18
- data/dev/sshpublisher.rb +0 -47
- data/dev/suby-cvs.rb +0 -46
- data/dev/template.rb +0 -72
- data/lib/reap/readymade.rb +0 -21
- data/lib/reap/task/webpublish.rb +0 -43
- data/lib/reap/tasks.rb +0 -13
- data/lib/reap/test.rb +0 -138
- data/web/ProjectInfo +0 -57
- data/web/images/appleboy.jpg +0 -0
- data/web/images/grape.jpg +0 -0
- data/web/index.html +0 -124
- data/web/rdoc/classes/Object.html +0 -121
- data/web/rdoc/classes/ProjectInfo.html +0 -207
- data/web/rdoc/classes/ProjectInfo.src/M000094.html +0 -18
- data/web/rdoc/classes/ProjectInfo.src/M000095.html +0 -24
- data/web/rdoc/classes/ProjectInfo.src/M000096.html +0 -22
- data/web/rdoc/classes/ProjectInfo.src/M000097.html +0 -21
- data/web/rdoc/classes/ProjectInfo.src/M000098.html +0 -18
- data/web/rdoc/classes/Reap/Announce.html +0 -262
- data/web/rdoc/classes/Reap/Announce.src/M000030.html +0 -18
- data/web/rdoc/classes/Reap/Announce.src/M000031.html +0 -114
- data/web/rdoc/classes/Reap/Announce.src/M000032.html +0 -46
- data/web/rdoc/classes/Reap/Info.html +0 -176
- data/web/rdoc/classes/Reap/Info.src/M000033.html +0 -18
- data/web/rdoc/classes/Reap/Info.src/M000034.html +0 -17
- data/web/rdoc/classes/Reap/Info.src/M000035.html +0 -18
- data/web/rdoc/classes/Reap/Install.html +0 -193
- data/web/rdoc/classes/Reap/Install.src/M000036.html +0 -18
- data/web/rdoc/classes/Reap/Install.src/M000037.html +0 -20
- data/web/rdoc/classes/Reap/Install.src/M000038.html +0 -26
- data/web/rdoc/classes/Reap/Noop.html +0 -192
- data/web/rdoc/classes/Reap/Noop.src/M000027.html +0 -18
- data/web/rdoc/classes/Reap/Noop.src/M000028.html +0 -17
- data/web/rdoc/classes/Reap/Noop.src/M000029.html +0 -18
- data/web/rdoc/classes/Reap/Package.html +0 -310
- data/web/rdoc/classes/Reap/Package.src/M000055.html +0 -18
- data/web/rdoc/classes/Reap/Package.src/M000056.html +0 -68
- data/web/rdoc/classes/Reap/Package.src/M000057.html +0 -84
- data/web/rdoc/classes/Reap/Package.src/M000058.html +0 -61
- data/web/rdoc/classes/Reap/Perm.html +0 -236
- data/web/rdoc/classes/Reap/Perm.src/M000078.html +0 -18
- data/web/rdoc/classes/Reap/Perm.src/M000079.html +0 -21
- data/web/rdoc/classes/Reap/Perm.src/M000080.html +0 -42
- data/web/rdoc/classes/Reap/Perm.src/M000081.html +0 -26
- data/web/rdoc/classes/Reap/Perm.src/M000082.html +0 -18
- data/web/rdoc/classes/Reap/Publish.html +0 -213
- data/web/rdoc/classes/Reap/Publish.src/M000070.html +0 -18
- data/web/rdoc/classes/Reap/Publish.src/M000071.html +0 -22
- data/web/rdoc/classes/Reap/Publish.src/M000072.html +0 -37
- data/web/rdoc/classes/Reap/RDoc.html +0 -218
- data/web/rdoc/classes/Reap/RDoc.src/M000059.html +0 -18
- data/web/rdoc/classes/Reap/RDoc.src/M000060.html +0 -24
- data/web/rdoc/classes/Reap/RDoc.src/M000061.html +0 -70
- data/web/rdoc/classes/Reap/Task.html +0 -396
- data/web/rdoc/classes/Reap/Task.src/M000039.html +0 -18
- data/web/rdoc/classes/Reap/Task.src/M000040.html +0 -16
- data/web/rdoc/classes/Reap/Task.src/M000041.html +0 -16
- data/web/rdoc/classes/Reap/Task.src/M000042.html +0 -16
- data/web/rdoc/classes/Reap/Task.src/M000043.html +0 -16
- data/web/rdoc/classes/Reap/Task.src/M000044.html +0 -22
- data/web/rdoc/classes/Reap/Task.src/M000045.html +0 -16
- data/web/rdoc/classes/Reap/Task.src/M000046.html +0 -16
- data/web/rdoc/classes/Reap/Task.src/M000047.html +0 -16
- data/web/rdoc/classes/Reap/Task.src/M000048.html +0 -16
- data/web/rdoc/classes/Reap/Task.src/M000049.html +0 -16
- data/web/rdoc/classes/Reap/Task.src/M000050.html +0 -27
- data/web/rdoc/classes/Reap/Task.src/M000051.html +0 -19
- data/web/rdoc/classes/Reap/Task.src/M000052.html +0 -18
- data/web/rdoc/classes/Reap/Task.src/M000053.html +0 -18
- data/web/rdoc/classes/Reap/Task.src/M000054.html +0 -19
- data/web/rdoc/classes/Reap/Test/TestResults.html +0 -205
- data/web/rdoc/classes/Reap/Test/TestResults.src/M000067.html +0 -21
- data/web/rdoc/classes/Reap/Test/TestResults.src/M000068.html +0 -21
- data/web/rdoc/classes/Reap/Test/TestResults.src/M000069.html +0 -23
- data/web/rdoc/classes/Reap/Test.html +0 -253
- data/web/rdoc/classes/Reap/Test.src/M000062.html +0 -18
- data/web/rdoc/classes/Reap/Test.src/M000063.html +0 -26
- data/web/rdoc/classes/Reap/Test.src/M000064.html +0 -77
- data/web/rdoc/classes/Reap/Test.src/M000065.html +0 -27
- data/web/rdoc/classes/Reap/Test.src/M000066.html +0 -50
- data/web/rdoc/classes/Reap/TestExt.html +0 -234
- data/web/rdoc/classes/Reap/TestExt.src/M000073.html +0 -18
- data/web/rdoc/classes/Reap/TestExt.src/M000074.html +0 -20
- data/web/rdoc/classes/Reap/TestExt.src/M000075.html +0 -49
- data/web/rdoc/classes/Reap/TestExt.src/M000076.html +0 -34
- data/web/rdoc/classes/Reap/TestExt.src/M000077.html +0 -27
- data/web/rdoc/classes/Reap/WebPublish.html +0 -213
- data/web/rdoc/classes/Reap/WebPublish.src/M000083.html +0 -18
- data/web/rdoc/classes/Reap/WebPublish.src/M000084.html +0 -21
- data/web/rdoc/classes/Reap/WebPublish.src/M000085.html +0 -32
- data/web/rdoc/classes/Reap.html +0 -248
- data/web/rdoc/classes/Reap.src/M000023.html +0 -16
- data/web/rdoc/classes/Reap.src/M000024.html +0 -21
- data/web/rdoc/classes/Reap.src/M000025.html +0 -16
- data/web/rdoc/classes/Reap.src/M000026.html +0 -21
- data/web/rdoc/classes/ReapCommand.html +0 -425
- data/web/rdoc/classes/ReapCommand.src/M000001.html +0 -16
- data/web/rdoc/classes/ReapCommand.src/M000003.html +0 -16
- data/web/rdoc/classes/ReapCommand.src/M000005.html +0 -16
- data/web/rdoc/classes/ReapCommand.src/M000007.html +0 -16
- data/web/rdoc/classes/ReapCommand.src/M000009.html +0 -16
- data/web/rdoc/classes/ReapCommand.src/M000011.html +0 -16
- data/web/rdoc/classes/ReapCommand.src/M000013.html +0 -18
- data/web/rdoc/classes/ReapCommand.src/M000014.html +0 -19
- data/web/rdoc/classes/ReapCommand.src/M000015.html +0 -19
- data/web/rdoc/classes/ReapCommand.src/M000016.html +0 -24
- data/web/rdoc/classes/ReapCommand.src/M000018.html +0 -29
- data/web/rdoc/classes/Scaffold.html +0 -211
- data/web/rdoc/classes/Scaffold.src/M000086.html +0 -16
- data/web/rdoc/classes/Scaffold.src/M000087.html +0 -28
- data/web/rdoc/classes/Scaffold.src/M000088.html +0 -32
- data/web/rdoc/classes/Scaffold.src/M000089.html +0 -18
- data/web/rdoc/classes/UnitTestKernel.html +0 -176
- data/web/rdoc/classes/UnitTestKernel.src/M000019.html +0 -18
- data/web/rdoc/classes/UnitTestKernel.src/M000020.html +0 -18
- data/web/rdoc/classes/UnitTestKernel.src/M000021.html +0 -22
- data/web/rdoc/classes/UnitTestKernel.src/M000022.html +0 -22
- data/web/rdoc/classes/UnitTesting/Failure.html +0 -156
- data/web/rdoc/classes/UnitTesting/Failure.src/M000092.html +0 -18
- data/web/rdoc/classes/UnitTesting/Failure.src/M000093.html +0 -21
- data/web/rdoc/classes/UnitTesting.html +0 -165
- data/web/rdoc/classes/UnitTesting.src/M000090.html +0 -34
- data/web/rdoc/classes/UnitTesting.src/M000091.html +0 -18
- data/web/rdoc/created.rid +0 -1
- data/web/rdoc/files/ANN.html +0 -107
- data/web/rdoc/files/COPYING.html +0 -119
- data/web/rdoc/files/ChangeLog.html +0 -144
- data/web/rdoc/files/ProjectInfo.html +0 -190
- data/web/rdoc/files/README.html +0 -274
- data/web/rdoc/files/Rakefile.html +0 -101
- data/web/rdoc/files/lib/reap/bin/reap_rb.html +0 -129
- data/web/rdoc/files/lib/reap/lint_rb.html +0 -101
- data/web/rdoc/files/lib/reap/projectinfo_rb.html +0 -110
- data/web/rdoc/files/lib/reap/readymade_rb.html +0 -123
- data/web/rdoc/files/lib/reap/task/announce_rb.html +0 -114
- data/web/rdoc/files/lib/reap/task/fileperm_rb.html +0 -108
- data/web/rdoc/files/lib/reap/task/info_rb.html +0 -108
- data/web/rdoc/files/lib/reap/task/install_rb.html +0 -108
- data/web/rdoc/files/lib/reap/task/noop_rb.html +0 -108
- data/web/rdoc/files/lib/reap/task/package_rb.html +0 -109
- data/web/rdoc/files/lib/reap/task/publish_rb.html +0 -108
- data/web/rdoc/files/lib/reap/task/rdoc_rb.html +0 -108
- data/web/rdoc/files/lib/reap/task/scaffold_rb.html +0 -107
- data/web/rdoc/files/lib/reap/task/test_rb.html +0 -110
- data/web/rdoc/files/lib/reap/task/testext_rb.html +0 -109
- data/web/rdoc/files/lib/reap/task/webpublish_rb.html +0 -108
- data/web/rdoc/files/lib/reap/task_rb.html +0 -120
- data/web/rdoc/files/lib/reap/tasks_rb.html +0 -116
- data/web/rdoc/files/lib/reap/test_rb.html +0 -109
- data/web/rdoc/fr_class_index.html +0 -47
- data/web/rdoc/fr_file_index.html +0 -51
- data/web/rdoc/fr_method_index.html +0 -124
- data/web/rdoc/index.html +0 -24
- data/web/rdoc/rdoc-style.css +0 -208
data/ProjectInfo
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
|
3
3
|
TITLE : Reap
|
4
4
|
NAME : reap
|
5
|
-
|
6
|
-
|
5
|
+
VERSION : '4.3.1'
|
6
|
+
DATE : '2006-02-01'
|
7
7
|
STATUS : 'beta/stable'
|
8
8
|
|
9
9
|
AUTHOR : Thomas Sawyer
|
@@ -17,13 +17,25 @@ DESCRIPTION: >
|
|
17
17
|
Reap utilizes a YAML configuration file to harvest project
|
18
18
|
information, significantly simplifying usage.
|
19
19
|
|
20
|
-
DISTRIBUTE : [
|
20
|
+
DISTRIBUTE : [ tar.bz2, gem ] # zip, tar.gz, tbz, tgz, deb
|
21
21
|
DEPENDENCIES : [ facets ]
|
22
22
|
EXECUTABLES : [ reap ]
|
23
23
|
|
24
|
+
PACKAGE:
|
25
|
+
dir: '../DISTRIBUTION'
|
26
|
+
exclude:
|
27
|
+
- dist
|
28
|
+
- dev
|
29
|
+
- scrap
|
30
|
+
- web
|
31
|
+
|
24
32
|
RUBYFORGE:
|
25
|
-
|
26
|
-
|
33
|
+
project : reap
|
34
|
+
username : transami
|
35
|
+
|
36
|
+
RELEASE:
|
37
|
+
host : rubyforge.org # only one supported currently
|
38
|
+
project_id :
|
27
39
|
|
28
40
|
PUBLISH:
|
29
41
|
type : web
|
@@ -32,7 +44,7 @@ PUBLISH:
|
|
32
44
|
dir : web
|
33
45
|
|
34
46
|
RDOC:
|
35
|
-
dir: 'web/
|
47
|
+
dir: 'web/doc/api'
|
36
48
|
include:
|
37
49
|
- 'A-Z*'
|
38
50
|
- 'lib/**/*'
|
data/lib/reap/bin/reap.rb
CHANGED
@@ -1,18 +1,37 @@
|
|
1
1
|
|
2
|
-
|
2
|
+
# Support libraries
|
3
3
|
require 'rbconfig'
|
4
|
-
require '
|
5
|
-
require '
|
6
|
-
|
7
|
-
|
4
|
+
require 'facets'
|
5
|
+
require 'calibre/consoleapp'
|
6
|
+
|
7
|
+
# Reap support
|
8
|
+
require 'reap/projectinfo'
|
9
|
+
|
10
|
+
# Reap tasks
|
11
|
+
require 'reap/task/fileperm'
|
12
|
+
require 'reap/task/test'
|
13
|
+
require 'reap/task/testext'
|
14
|
+
require 'reap/task/rdoc'
|
15
|
+
require 'reap/task/announce'
|
16
|
+
require 'reap/task/package'
|
17
|
+
require 'reap/task/publish'
|
18
|
+
require 'reap/task/info'
|
19
|
+
require 'reap/task/install'
|
20
|
+
require 'reap/task/noop'
|
21
|
+
#require 'reap/task/webpublish'
|
8
22
|
|
9
23
|
Reap.register
|
10
24
|
|
11
25
|
module Reap
|
12
|
-
Version = "
|
26
|
+
Version = "1.2.0"
|
13
27
|
end
|
14
28
|
|
15
|
-
class ReapCommand <
|
29
|
+
class ReapCommand < Console::Application
|
30
|
+
|
31
|
+
# to do first for exvery task
|
32
|
+
#def application_setup
|
33
|
+
# $PROJECT_INFO = ProjectInfo.new( $PROJECT_FILE )
|
34
|
+
#end
|
16
35
|
|
17
36
|
# Options
|
18
37
|
|
@@ -40,6 +59,12 @@ class ReapCommand < ShellCommand
|
|
40
59
|
def __tasks; tasks ; end
|
41
60
|
alias_method :_t, :__tasks
|
42
61
|
|
62
|
+
#option for build version (only for package task)
|
63
|
+
def _b ; $BUILD_VERSION = true ; end
|
64
|
+
|
65
|
+
#def _f( pif ) ; $PROJECT_FILE = pif ; end
|
66
|
+
#alias_method :_f, :__file
|
67
|
+
|
43
68
|
# option for require
|
44
69
|
#def __require(r); @require = r ; end
|
45
70
|
#alias_method :_r, :__require
|
@@ -65,10 +90,10 @@ class ReapCommand < ShellCommand
|
|
65
90
|
|
66
91
|
# list available tasks
|
67
92
|
def tasks
|
68
|
-
Reap.initialize #_all
|
93
|
+
#Reap.initialize #_all
|
69
94
|
puts
|
70
|
-
Reap.tasks.each do |name,
|
71
|
-
puts " #{name}".ljust(20) + "#{
|
95
|
+
Reap.tasks.each do |name,task_class|
|
96
|
+
puts " #{name}".ljust(20) + "#{task_class.task_desc}"
|
72
97
|
end
|
73
98
|
puts
|
74
99
|
exit 0
|
@@ -91,9 +116,9 @@ class ReapCommand < ShellCommand
|
|
91
116
|
exit 0
|
92
117
|
end
|
93
118
|
|
94
|
-
Reap.
|
119
|
+
Reap.tasks.each do |sym,taskclass|
|
95
120
|
define_method(sym) do |*args|
|
96
|
-
taskclass.new
|
121
|
+
taskclass.new(*args)
|
97
122
|
end
|
98
123
|
end
|
99
124
|
|
@@ -108,11 +133,14 @@ HELP = <<-HERE
|
|
108
133
|
|
109
134
|
COMMANDS:
|
110
135
|
|
111
|
-
|
136
|
+
template
|
112
137
|
Copies a ProjectInfo template into the current
|
113
|
-
directory, if it doesn't already exist.
|
114
|
-
|
115
|
-
|
138
|
+
directory, if it doesn't already exist.
|
139
|
+
|
140
|
+
scaffold
|
141
|
+
Builds a project directory based on settings of
|
142
|
+
project information file. This will not destroy
|
143
|
+
any structure already in place!
|
116
144
|
|
117
145
|
help
|
118
146
|
Displays this help information.
|
@@ -128,6 +156,9 @@ HELP = <<-HERE
|
|
128
156
|
-D --debug
|
129
157
|
Provides extra verbose processing information.
|
130
158
|
|
159
|
+
-f --file
|
160
|
+
Specify alternate project file.
|
161
|
+
|
131
162
|
-h --help
|
132
163
|
Display this help information.
|
133
164
|
|
File without changes
|
@@ -0,0 +1,247 @@
|
|
1
|
+
|
2
|
+
require "enumerator"
|
3
|
+
require "http-access2"
|
4
|
+
|
5
|
+
require 'reap/iface/interface.rb'
|
6
|
+
|
7
|
+
|
8
|
+
class RubyForgeInterface < Interface
|
9
|
+
|
10
|
+
attr_accessor :username, :password, :cookie_jar
|
11
|
+
|
12
|
+
def initialize( master, section )
|
13
|
+
|
14
|
+
@name = master['name']
|
15
|
+
|
16
|
+
@username = master['rubyforge']['username'] || section['username']
|
17
|
+
|
18
|
+
@packge_id = section['package_id']
|
19
|
+
@lockfile_id = section['lockfile_id']
|
20
|
+
|
21
|
+
@group_id = section['group_id'] || 1024 # this is codeforpeople. it's just a default...
|
22
|
+
@private = section['private'] ? 0 : 1
|
23
|
+
|
24
|
+
# internal use
|
25
|
+
@uri = "http://rubyforge.org"
|
26
|
+
@cookie_jar = File::join(File::expand_path("~"), ".rubyforge.cookie_jar")
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
# config = {
|
32
|
+
# "username" => "username", # this must be your username
|
33
|
+
# "password" => "password", # this must be your password
|
34
|
+
#
|
35
|
+
# "group_id" => 1024, # this is codeforpeople. it's just a default...
|
36
|
+
#
|
37
|
+
# "package_ids" => { # configure shortcuts for your packages here
|
38
|
+
# "traits" => 1241,
|
39
|
+
# "lockfile" => 1242,
|
40
|
+
# },
|
41
|
+
#
|
42
|
+
# "uri" => "http://rubyforge.org",
|
43
|
+
# "cookie_jar" => File::join(File::expand_path("~"), ".rubyforge.cookie_jar"),
|
44
|
+
# }
|
45
|
+
#
|
46
|
+
# opts =
|
47
|
+
# GetoptLong::new(
|
48
|
+
# [ "--username" , "-u" , GetoptLong::REQUIRED_ARGUMENT ] ,
|
49
|
+
# [ "--password" , "-p" , GetoptLong::REQUIRED_ARGUMENT ] ,
|
50
|
+
# [ "--cookie_jar" , "-c" , GetoptLong::REQUIRED_ARGUMENT ]
|
51
|
+
# ).enum_for.inject({}){|h,kv| h.update Hash[*kv]}
|
52
|
+
#
|
53
|
+
# username = opts['username'] || config['username']
|
54
|
+
# password = opts['password'] || config['password']
|
55
|
+
# cookie_jar = opts["cookie_jar"] || config['cookie_jar']
|
56
|
+
#
|
57
|
+
# setup
|
58
|
+
#
|
59
|
+
# mode = ARGV.shift
|
60
|
+
# abort "#{ $0 } [login|create_package (package_name)|add_package (package_id release_name release.ext)]" unless mode
|
61
|
+
|
62
|
+
def setup
|
63
|
+
|
64
|
+
page, form, method = nil
|
65
|
+
extheader = {}
|
66
|
+
|
67
|
+
case mode
|
68
|
+
|
69
|
+
when %r/login/
|
70
|
+
page = "/account/login.php"
|
71
|
+
method = "post_content"
|
72
|
+
|
73
|
+
form = {
|
74
|
+
"return_to" => "",
|
75
|
+
"form_loginname" => username,
|
76
|
+
"form_pw" => password,
|
77
|
+
"login" => "Login"
|
78
|
+
}
|
79
|
+
|
80
|
+
when %r/create_package/
|
81
|
+
page = "/frs/admin/index.php"
|
82
|
+
method = "post_content"
|
83
|
+
|
84
|
+
opts =
|
85
|
+
GetoptLong::new(
|
86
|
+
[ "--group_id" , "-g" , GetoptLong::REQUIRED_ARGUMENT ] ,
|
87
|
+
[ "--is_private" , "-P" , GetoptLong::REQUIRED_ARGUMENT ]
|
88
|
+
).enum_for.inject({}){|h,kv| h.update Hash[*kv]}
|
89
|
+
|
90
|
+
package_name = ARGV.shift
|
91
|
+
abort "#{ $0 } package_name" unless package_name
|
92
|
+
|
93
|
+
group_id = opts["group_id"] || config["group_id"]
|
94
|
+
is_public = opts["is_private"] ? 0 : 1
|
95
|
+
|
96
|
+
form = {
|
97
|
+
"group_id" => group_id,
|
98
|
+
"package_name" => package_name,
|
99
|
+
"func" => "add_package",
|
100
|
+
"is_public" => is_public,
|
101
|
+
"submit" => "Create This Package",
|
102
|
+
}
|
103
|
+
|
104
|
+
when %r/add_release/
|
105
|
+
page = "/frs/admin/qrs.php"
|
106
|
+
method = "post_content"
|
107
|
+
|
108
|
+
opts =
|
109
|
+
GetoptLong::new(
|
110
|
+
[ "--group_id" , "-g" , GetoptLong::REQUIRED_ARGUMENT ] ,
|
111
|
+
[ "--release_date" , "-r" , GetoptLong::REQUIRED_ARGUMENT ] ,
|
112
|
+
[ "--type_id" , "-t" , GetoptLong::REQUIRED_ARGUMENT ] ,
|
113
|
+
[ "--processor_id" , "-P" , GetoptLong::REQUIRED_ARGUMENT ] ,
|
114
|
+
[ "--release_nots" , "-n" , GetoptLong::REQUIRED_ARGUMENT ] ,
|
115
|
+
[ "--release_changes" , "-a" , GetoptLong::REQUIRED_ARGUMENT ]
|
116
|
+
).enum_for.inject({}){|h,kv| h.update Hash[*kv]}
|
117
|
+
|
118
|
+
package_id, release_name, userfile, ignored = ARGV
|
119
|
+
abort "#{ $0 } package_name" unless
|
120
|
+
package_id and release_name and userfile
|
121
|
+
|
122
|
+
package_id = config["package_ids"][package_id] unless
|
123
|
+
package_id =~ %r/^\d+$/
|
124
|
+
|
125
|
+
group_id = opts["group_id"] || config["group_id"]
|
126
|
+
release_date = opts["release_date"] || Time::now.strftime('%Y-%m-%d %H:%M')
|
127
|
+
|
128
|
+
type_id = opts['type_id'] || userfile[%r|\.[^\./]+$|]
|
129
|
+
type_id = {
|
130
|
+
".deb" => 1000,
|
131
|
+
".rpm" => 2000,
|
132
|
+
".zip" => 3000,
|
133
|
+
".bz2" => 3100,
|
134
|
+
".gz" => 3110,
|
135
|
+
".src.zip" => 5000,
|
136
|
+
".src.bz2" => 5010,
|
137
|
+
".src.gz" => 5020,
|
138
|
+
".src.rpm" => 5100,
|
139
|
+
".src" => 5900,
|
140
|
+
".jpg" => 8000,
|
141
|
+
".txt" => 8100,
|
142
|
+
".text" => 8100,
|
143
|
+
".htm" => 8200,
|
144
|
+
".html" => 8200,
|
145
|
+
".pdf" => 8300,
|
146
|
+
".oth" => 9999,
|
147
|
+
".ebuild" => 1300,
|
148
|
+
".exe" => 1100,
|
149
|
+
".dmg" => 1200,
|
150
|
+
".tar.gz" => 5000,
|
151
|
+
".tgz" => 5000,
|
152
|
+
".gem" => 1400,
|
153
|
+
".pgp" => 8150,
|
154
|
+
".sig" => 8150,
|
155
|
+
}[type_id]
|
156
|
+
|
157
|
+
processor_id = opts['processor_id'] || 'Any'
|
158
|
+
processor_id = {
|
159
|
+
"i386" => 1000,
|
160
|
+
"IA64" => 6000,
|
161
|
+
"Alpha" => 7000,
|
162
|
+
"Any" => 8000,
|
163
|
+
"PPC" => 2000,
|
164
|
+
"MIPS" => 3000,
|
165
|
+
"Sparc" => 4000,
|
166
|
+
"UltraSparc" => 5000,
|
167
|
+
"Other" => 9999,
|
168
|
+
}[processor_id]
|
169
|
+
|
170
|
+
release_notes = opts['release_notes'] || nil
|
171
|
+
release_notes = open(release_notes) if release_notes
|
172
|
+
|
173
|
+
release_changes = opts['release_changes'] || nil
|
174
|
+
release_changes = open(release_changes) if release_changes
|
175
|
+
|
176
|
+
userfile = open(userfile)
|
177
|
+
|
178
|
+
preformatted = '1'
|
179
|
+
|
180
|
+
form = {
|
181
|
+
"group_id" => group_id,
|
182
|
+
"package_id" => package_id,
|
183
|
+
"release_name" => release_name,
|
184
|
+
"release_date" => release_date,
|
185
|
+
"type_id" => type_id,
|
186
|
+
"processor_id" => processor_id,
|
187
|
+
"preformatted" => preformatted,
|
188
|
+
"userfile" => userfile,
|
189
|
+
"submit" => "Release File"
|
190
|
+
}
|
191
|
+
|
192
|
+
boundary = Array::new(8){ "%2.2d" % rand(42) }.join('__')
|
193
|
+
extheader['content-type'] = "multipart/form-data; boundary=___#{ boundary }___"
|
194
|
+
|
195
|
+
else
|
196
|
+
abort "#{ $0 } login create_package add_release"
|
197
|
+
|
198
|
+
end
|
199
|
+
#
|
200
|
+
# http transaction
|
201
|
+
#
|
202
|
+
client = HTTPAccess2::Client::new ENV['HTTP_PROXY']
|
203
|
+
client.debug_dev = STDERR if ENV['DEBUG']
|
204
|
+
|
205
|
+
client.set_cookie_store cookie_jar
|
206
|
+
|
207
|
+
# fixes http-access2 bug
|
208
|
+
client.redirect_uri_callback = lambda do |res|
|
209
|
+
page = res.header['location'].first
|
210
|
+
page = page =~ %r/http/ ? page : "#{ config['uri'] }/#{ page }"
|
211
|
+
page
|
212
|
+
end
|
213
|
+
|
214
|
+
response = client.send "#{ method }", "#{ config['uri'] }/#{ page }", form, extheader
|
215
|
+
|
216
|
+
client.save_cookie_store
|
217
|
+
|
218
|
+
# fixes http-access2 bug
|
219
|
+
BEGIN {
|
220
|
+
require "http-access2"
|
221
|
+
module WebAgent::CookieUtils
|
222
|
+
def domain_match(host, domain)
|
223
|
+
case domain
|
224
|
+
when /\d+\.\d+\.\d+\.\d+/
|
225
|
+
return (host == domain)
|
226
|
+
when '.'
|
227
|
+
return true
|
228
|
+
when /^\./
|
229
|
+
#return tail_match?(domain, host)
|
230
|
+
return tail_match?(host, domain)
|
231
|
+
else
|
232
|
+
return (host == domain)
|
233
|
+
end
|
234
|
+
end
|
235
|
+
end
|
236
|
+
|
237
|
+
}
|
238
|
+
|
239
|
+
|
240
|
+
|
241
|
+
|
242
|
+
|
243
|
+
|
244
|
+
end
|
245
|
+
|
246
|
+
|
247
|
+
|
data/lib/reap/lint.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
# TODO
|
data/lib/reap/projectinfo.rb
CHANGED
@@ -1,42 +1,70 @@
|
|
1
1
|
|
2
2
|
require 'yaml'
|
3
|
+
|
3
4
|
require 'facet/hash/traverse'
|
4
5
|
require 'facet/string/tabto'
|
5
6
|
require 'facet/dir/self/ascend'
|
6
7
|
|
7
|
-
|
8
|
-
|
8
|
+
|
9
|
+
class ProjectInfo
|
9
10
|
|
10
11
|
INFO_FILES = [ 'ProjectInfo', 'ReapFile', 'projectinfo', 'reapfile' ]
|
11
12
|
|
12
|
-
def add_info_file( f )
|
13
|
+
def self.add_info_file( f )
|
13
14
|
INFO_FILES.unshift( f )
|
14
15
|
end
|
15
16
|
|
16
|
-
def
|
17
|
-
|
18
|
-
|
17
|
+
#def self.[](name)
|
18
|
+
# @self ||= self.new
|
19
|
+
# @self[name]
|
20
|
+
#end
|
21
|
+
|
22
|
+
attr_reader :info, :info_stream
|
23
|
+
|
24
|
+
def initialize( info_file=nil )
|
25
|
+
unless info_file
|
19
26
|
Dir.ascend(Dir.pwd) do |d|
|
20
27
|
Dir.chdir(d)
|
21
28
|
info_file = INFO_FILES.find{ |f| File.file?( f ) }
|
22
|
-
if info_file
|
23
|
-
@info_stream = File.read( info_file )
|
24
|
-
puts "(in #{d})" unless dir == Dir.pwd
|
25
|
-
break
|
26
|
-
end
|
29
|
+
break if info_file
|
27
30
|
end
|
28
31
|
end
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
if info_stream
|
34
|
-
@info ||= YAML::load(info_stream).traverse{ |k,v| [k.downcase, v] }
|
32
|
+
if info_file
|
33
|
+
@info_stream = File.read( info_file )
|
34
|
+
@info = YAML::load( @info_stream ).traverse{ |k,v| [k.downcase, v] }
|
35
|
+
puts "(in #{Dir.pwd})" #unless dir == Dir.pwd
|
35
36
|
else
|
36
|
-
|
37
|
+
@info_stream = ""
|
38
|
+
@info = {}
|
39
|
+
puts "(without a project information file)"
|
37
40
|
end
|
38
41
|
end
|
39
42
|
|
43
|
+
# def info_stream
|
44
|
+
# dir = Dir.pwd
|
45
|
+
# unless @info_stream
|
46
|
+
# Dir.ascend(Dir.pwd) do |d|
|
47
|
+
# Dir.chdir(d)
|
48
|
+
# info_file = INFO_FILES.find{ |f| File.file?( f ) }
|
49
|
+
# if info_file
|
50
|
+
# @info_stream = File.read( info_file )
|
51
|
+
# puts "(in #{d})" unless dir == Dir.pwd
|
52
|
+
# break
|
53
|
+
# end
|
54
|
+
# end
|
55
|
+
# end
|
56
|
+
# @info_stream
|
57
|
+
# end
|
58
|
+
|
59
|
+
# def info
|
60
|
+
# @info
|
61
|
+
# #if info_stream
|
62
|
+
# # @info ||= YAML::load(info_stream).traverse{ |k,v| [k.downcase, v] }
|
63
|
+
# #else
|
64
|
+
# # {}
|
65
|
+
# #end
|
66
|
+
# end
|
67
|
+
|
40
68
|
# not using at the moment
|
41
69
|
def validate
|
42
70
|
# required main parameters
|
@@ -48,4 +76,5 @@ module ProjectInfo
|
|
48
76
|
def [](name)
|
49
77
|
info[name]
|
50
78
|
end
|
79
|
+
|
51
80
|
end
|
data/lib/reap/reap.rb
ADDED
File without changes
|
data/lib/reap/task/announce.rb
CHANGED
@@ -10,11 +10,9 @@ require 'facet/string/word_wrap'
|
|
10
10
|
|
11
11
|
class Reap::Announce < Reap::Task
|
12
12
|
|
13
|
-
|
13
|
+
task_desc "Send announcement email to ruby-talk or other address."
|
14
14
|
|
15
|
-
|
16
|
-
"Send announcement email to ruby-talk or other address."
|
17
|
-
end
|
15
|
+
section_required true
|
18
16
|
|
19
17
|
attr_accessor :title, :version, :summary, :description, :subject
|
20
18
|
attr_accessor :to, :from, :server, :port, :domain, :account
|
@@ -35,7 +33,7 @@ class Reap::Announce < Reap::Task
|
|
35
33
|
raise "account is a require announce field" if @account.empty?
|
36
34
|
|
37
35
|
@title ||= master['title']
|
38
|
-
@version ||= master['version']
|
36
|
+
@version ||= master['version'] || master['date']
|
39
37
|
@summary ||= master['summary']
|
40
38
|
@description ||= master['description']
|
41
39
|
@links ||= []
|
@@ -60,7 +58,7 @@ class Reap::Announce < Reap::Task
|
|
60
58
|
abstract = ''
|
61
59
|
if @description
|
62
60
|
abstract << "\n\n"
|
63
|
-
abstract << "ABSTRACT: #{@description}"
|
61
|
+
abstract << "ABSTRACT: #{@description}"
|
64
62
|
abstract << "\n"
|
65
63
|
end
|
66
64
|
|
@@ -86,28 +84,28 @@ class Reap::Announce < Reap::Task
|
|
86
84
|
memo = ''
|
87
85
|
if @memo
|
88
86
|
memo = ''
|
89
|
-
memo << "\n"
|
87
|
+
memo << "\n---\n" #<< ('-' * 72) << "\n"
|
90
88
|
memo << "(Memo)\n\n"
|
91
|
-
memo << @memo.fold
|
89
|
+
memo << @memo.fold(true) #.word_wrap(67)
|
92
90
|
#memo << "\n"
|
93
91
|
end
|
94
92
|
|
95
93
|
# msg file
|
96
94
|
msg = ''
|
97
95
|
if @file and File.file?( @file )
|
98
|
-
msg << "\n"
|
96
|
+
msg << "\n---\n" #<< ("-" * 68) << "\n"
|
99
97
|
msg << "(from #{@file})\n\n"
|
100
98
|
mg = ''
|
101
99
|
File.open( @file ) { |f| mg << f.gets(nil) }
|
102
|
-
msg << mg.fold
|
100
|
+
msg << mg.fold(true) #.word_wrap(67)
|
103
101
|
end
|
104
102
|
|
105
103
|
# stamp
|
106
104
|
stamp = ''
|
107
|
-
stamp << "\n"
|
105
|
+
stamp << "\n---\n" #<< ("-" * 68) << "\n"
|
108
106
|
stamp << %Q{
|
109
|
-
|Generated by
|
110
|
-
|
|
107
|
+
|Generated by REAP, the Ruby Project Assistant
|
108
|
+
|http://www.ruby-lang.org -- Do you Ruby?
|
111
109
|
}.margin
|
112
110
|
stamp << "\n\n"
|
113
111
|
|
data/lib/reap/task/fileperm.rb
CHANGED
@@ -6,13 +6,10 @@ require 'reap/task'
|
|
6
6
|
#
|
7
7
|
class Reap::Perm < Reap::Task
|
8
8
|
|
9
|
-
|
10
|
-
|
9
|
+
task_desc "Normalize ownership and permissions of package files."
|
11
10
|
section_required true
|
12
11
|
|
13
|
-
|
14
|
-
"Normalize ownership and permissions of package files."
|
15
|
-
end
|
12
|
+
attr_accessor :user, :group, :filemod, :dirmod
|
16
13
|
|
17
14
|
def init
|
18
15
|
@user = section['user']
|
data/lib/reap/task/info.rb
CHANGED
@@ -6,15 +6,13 @@ require 'reap/task'
|
|
6
6
|
#
|
7
7
|
class Reap::Info < Reap::Task
|
8
8
|
|
9
|
-
|
10
|
-
"Display ProjectInfo file."
|
11
|
-
end
|
9
|
+
task_desc "Display ProjectInfo file."
|
12
10
|
|
13
11
|
def init
|
14
12
|
end
|
15
13
|
|
16
14
|
def run
|
17
|
-
puts
|
15
|
+
puts $PROJECT_INFO.info_stream
|
18
16
|
end
|
19
17
|
|
20
18
|
end
|
data/lib/reap/task/install.rb
CHANGED