whimsy-asf 0.0.50 → 0.0.51
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.
- checksums.yaml +7 -0
- data/asf.version +1 -1
- data/lib/whimsy/asf/icla.rb +70 -28
- data/lib/whimsy/asf/mail.rb +5 -4
- metadata +36 -49
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 45f6932c6e7417fecb555f9ba2ad96d089c28912
|
4
|
+
data.tar.gz: 500006bdd3ff482dc2aaa39368f3c6cf3771370f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3f00500fb4c782d00b9e81930857289bcb0b98c0a57ab756d482eb8fb368be577e1fec7b1ca482156337eb855203ce0007f11ecf9566a0813a52b18fa01fad0e
|
7
|
+
data.tar.gz: be11a0baa8405604d97a350dd3c4b0a8a2b5a1f8d983efe9fff47db5be5c235e7c49fa15c763d2dc2ac77e1f7fde04a21b786505b6d5e611e805f7e98aa881b7
|
data/asf.version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.51
|
data/lib/whimsy/asf/icla.rb
CHANGED
@@ -1,52 +1,94 @@
|
|
1
1
|
module ASF
|
2
2
|
|
3
3
|
class ICLA
|
4
|
-
|
5
|
-
ICLA_Struct = Struct.new(:id, :legal_name, :name, :email)
|
4
|
+
attr_accessor :id, :legal_name, :name, :email
|
6
5
|
|
6
|
+
@@mtime = nil
|
7
|
+
|
8
|
+
OFFICERS = ASF::SVN['private/foundation/officers']
|
9
|
+
SOURCE = "#{OFFICERS}/iclas.txt" if OFFICERS
|
10
|
+
|
11
|
+
# flush caches if source file changed
|
12
|
+
def self.refresh
|
13
|
+
if SOURCE and File.mtime(SOURCE) != @@mtime
|
14
|
+
@@mtime = File.mtime(SOURCE)
|
15
|
+
@@id_index = nil
|
16
|
+
@@email_index = nil
|
17
|
+
@@name_index = nil
|
18
|
+
|
19
|
+
@@availids = nil
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# load ICLA information for every committer
|
7
24
|
def self.preload
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
ICLA_Struct.new(id, legal_name, name, email)
|
12
|
-
end
|
25
|
+
refresh
|
26
|
+
each do |icla|
|
27
|
+
ASF::Person.find(icla.id).icla = icla unless icla.id == 'notinaval'
|
13
28
|
end
|
14
29
|
end
|
15
30
|
|
31
|
+
# find ICLA by ID
|
16
32
|
def self.find_by_id(value)
|
17
33
|
return if value == 'notinavail'
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
34
|
+
|
35
|
+
refresh
|
36
|
+
unless @@id_index
|
37
|
+
@@id_index = {}
|
38
|
+
each {|icla| @@id_index[icla.id] = icla}
|
22
39
|
end
|
23
|
-
|
40
|
+
|
41
|
+
@@id_index[value]
|
24
42
|
end
|
25
43
|
|
44
|
+
# find ICLA by email
|
26
45
|
def self.find_by_email(value)
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
end
|
46
|
+
refresh
|
47
|
+
unless @@email_index
|
48
|
+
@@email_index = {}
|
49
|
+
each {|icla| @@email_index[icla.email.downcase] = icla}
|
32
50
|
end
|
33
|
-
|
51
|
+
|
52
|
+
@@email_index[value.downcase]
|
34
53
|
end
|
35
54
|
|
55
|
+
# find ICLA by name
|
56
|
+
def self.find_by_name(value)
|
57
|
+
refresh
|
58
|
+
unless @@name_index
|
59
|
+
@@name_index = {}
|
60
|
+
each {|icla| @@name_index[icla.name] = icla}
|
61
|
+
end
|
62
|
+
|
63
|
+
@@email_index[value]
|
64
|
+
end
|
65
|
+
|
66
|
+
# list of all ids
|
36
67
|
def self.availids
|
37
|
-
|
68
|
+
refresh
|
69
|
+
return @@availids if @@availids
|
38
70
|
availids = []
|
39
|
-
|
40
|
-
availids << id unless id == 'notinavail'
|
41
|
-
end
|
71
|
+
each {|icla| availids << icla.id unless icla.id == 'notinavail'}
|
42
72
|
@availids = availids
|
43
73
|
end
|
44
74
|
|
45
|
-
|
46
|
-
|
47
|
-
if
|
48
|
-
|
49
|
-
|
75
|
+
# iterate over all of the ICLAs
|
76
|
+
def self.each(&block)
|
77
|
+
if @@id_index and not @@id_index.empty?
|
78
|
+
@@id_index.values.each(&block)
|
79
|
+
elsif @@email_index and not @@email_index.empty?
|
80
|
+
@@email_index.values.each(&block)
|
81
|
+
elsif @@name_index and not @@name_index.empty?
|
82
|
+
@@name_index.values.each(&block)
|
83
|
+
elsif File.exist?(SOURCE)
|
84
|
+
File.read(SOURCE).scan(/^([-\w]+):(.*?):(.*?):(.*?):/).each do |list|
|
85
|
+
icla = ICLA.new()
|
86
|
+
icla.id = list[0]
|
87
|
+
icla.legal_name = list[1]
|
88
|
+
icla.name = list[2]
|
89
|
+
icla.email = list[3]
|
90
|
+
block.call(icla)
|
91
|
+
end
|
50
92
|
end
|
51
93
|
end
|
52
94
|
|
@@ -149,7 +191,7 @@ module ASF
|
|
149
191
|
end
|
150
192
|
|
151
193
|
def icla?
|
152
|
-
ICLA.availids.include?
|
194
|
+
@icla || ICLA.availids.include?(name)
|
153
195
|
end
|
154
196
|
end
|
155
197
|
|
data/lib/whimsy/asf/mail.rb
CHANGED
@@ -21,10 +21,11 @@ module ASF
|
|
21
21
|
end
|
22
22
|
|
23
23
|
# load all ICLA emails in one pass
|
24
|
-
ASF::ICLA.
|
25
|
-
|
26
|
-
|
27
|
-
|
24
|
+
ASF::ICLA.each do |icla|
|
25
|
+
person = Person.find(icla.id)
|
26
|
+
list[icla.email.downcase] ||= person
|
27
|
+
next if icla.id == 'notinavail'
|
28
|
+
list["#{icla.id.downcase}@apache.org"] ||= person
|
28
29
|
end
|
29
30
|
|
30
31
|
@list = list
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: whimsy-asf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.51
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Sam Ruby
|
@@ -14,153 +13,141 @@ dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: nokogiri
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rack
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: ruby-ldap
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ">="
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: tzinfo
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - ">="
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - ">="
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: tzinfo-data
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - ">="
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :runtime
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - ">="
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: wunderbar
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - ">="
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '0'
|
102
90
|
type: :runtime
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - ">="
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '0'
|
110
|
-
description:
|
111
|
-
|
97
|
+
description: |2
|
98
|
+
This package contains a set of classes which encapsulate access
|
99
|
+
to a number of data sources such as LDAP, ICLAs, auth lists, etc.
|
112
100
|
email: rubys@intertwingly.net
|
113
101
|
executables: []
|
114
102
|
extensions: []
|
115
103
|
extra_rdoc_files: []
|
116
104
|
files:
|
117
|
-
- asf.version
|
118
105
|
- asf.gemspec
|
106
|
+
- asf.version
|
119
107
|
- lib/whimsy/asf.rb
|
120
|
-
- lib/whimsy/asf/rack.rb
|
121
108
|
- lib/whimsy/asf/agenda.rb
|
122
|
-
- lib/whimsy/asf/svn.rb
|
123
|
-
- lib/whimsy/asf/watch.rb
|
124
|
-
- lib/whimsy/asf/config.rb
|
125
|
-
- lib/whimsy/asf/podlings.rb
|
126
|
-
- lib/whimsy/asf/nominees.rb
|
127
|
-
- lib/whimsy/asf/auth.rb
|
128
|
-
- lib/whimsy/asf/member.rb
|
129
|
-
- lib/whimsy/asf/mail.rb
|
130
|
-
- lib/whimsy/asf/agenda/special.rb
|
131
|
-
- lib/whimsy/asf/agenda/committee.rb
|
132
|
-
- lib/whimsy/asf/agenda/minutes.rb
|
133
109
|
- lib/whimsy/asf/agenda/attachments.rb
|
110
|
+
- lib/whimsy/asf/agenda/back.rb
|
111
|
+
- lib/whimsy/asf/agenda/committee.rb
|
134
112
|
- lib/whimsy/asf/agenda/exec-officer.rb
|
135
113
|
- lib/whimsy/asf/agenda/front.rb
|
136
|
-
- lib/whimsy/asf/agenda/
|
114
|
+
- lib/whimsy/asf/agenda/minutes.rb
|
115
|
+
- lib/whimsy/asf/agenda/special.rb
|
116
|
+
- lib/whimsy/asf/auth.rb
|
137
117
|
- lib/whimsy/asf/committee.rb
|
118
|
+
- lib/whimsy/asf/config.rb
|
119
|
+
- lib/whimsy/asf/icla.rb
|
138
120
|
- lib/whimsy/asf/ldap.rb
|
121
|
+
- lib/whimsy/asf/mail.rb
|
122
|
+
- lib/whimsy/asf/member.rb
|
123
|
+
- lib/whimsy/asf/nominees.rb
|
124
|
+
- lib/whimsy/asf/podlings.rb
|
125
|
+
- lib/whimsy/asf/rack.rb
|
139
126
|
- lib/whimsy/asf/site.rb
|
140
|
-
- lib/whimsy/asf/
|
127
|
+
- lib/whimsy/asf/svn.rb
|
128
|
+
- lib/whimsy/asf/watch.rb
|
141
129
|
homepage: https://whimsy.apache.org/
|
142
130
|
licenses:
|
143
131
|
- Apache License, Version 2.0
|
132
|
+
metadata: {}
|
144
133
|
post_install_message:
|
145
134
|
rdoc_options: []
|
146
135
|
require_paths:
|
147
136
|
- lib
|
148
137
|
required_ruby_version: !ruby/object:Gem::Requirement
|
149
|
-
none: false
|
150
138
|
requirements:
|
151
|
-
- -
|
139
|
+
- - ">="
|
152
140
|
- !ruby/object:Gem::Version
|
153
141
|
version: '0'
|
154
142
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
|
-
none: false
|
156
143
|
requirements:
|
157
|
-
- -
|
144
|
+
- - ">="
|
158
145
|
- !ruby/object:Gem::Version
|
159
146
|
version: '0'
|
160
147
|
requirements: []
|
161
148
|
rubyforge_project:
|
162
|
-
rubygems_version:
|
149
|
+
rubygems_version: 2.4.5.1
|
163
150
|
signing_key:
|
164
|
-
specification_version:
|
151
|
+
specification_version: 4
|
165
152
|
summary: Whimsy 'model' of the ASF
|
166
153
|
test_files: []
|