This is an automated email from the ASF dual-hosted git repository.
sebb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/whimsy.git
The following commit(s) were added to refs/heads/master by this push:
new 6aa7e09 Trailing spaces
6aa7e09 is described below
commit 6aa7e09ad75d740320ac7e38c4fbc6bedbd7fbe7
Author: Sebb <[email protected]>
AuthorDate: Tue Sep 22 17:26:59 2020 +0100
Trailing spaces
---
lib/whimsy/asf/agenda.rb | 2 +-
lib/whimsy/asf/agenda/discussion.rb | 2 +-
lib/whimsy/asf/board.rb | 2 +-
lib/whimsy/asf/committee.rb | 12 ++++-----
lib/whimsy/asf/documents.rb | 4 +--
lib/whimsy/asf/forms.rb | 2 +-
lib/whimsy/asf/forms2.rb | 2 +-
lib/whimsy/asf/git.rb | 2 +-
lib/whimsy/asf/ldap.rb | 10 +++----
lib/whimsy/asf/mail.rb | 4 +--
lib/whimsy/asf/mlist.rb | 10 +++----
lib/whimsy/asf/nominees.rb | 2 +-
lib/whimsy/asf/orgchart.rb | 12 ++++-----
lib/whimsy/asf/podling.rb | 4 +--
lib/whimsy/asf/svn.rb | 31 +++++++++++-----------
lib/whimsy/asf/themes.rb | 14 +++++-----
lib/whimsy/asf/watch.rb | 2 +-
lib/whimsy/cache.rb | 4 +--
lib/whimsy/logparser.rb | 22 +++++++--------
lib/whimsy/sitestandards.rb | 16 +++++------
tools/collate_minutes.rb | 2 +-
tools/comdevtalks.rb | 4 +--
tools/download_check.rb | 16 +++++------
tools/mboxhdr2csv.rb | 8 +++---
tools/namemap.rb | 22 +++++++--------
tools/ponyapi.rb | 8 +++---
tools/ponypoop.rb | 14 +++++-----
tools/pubsub2rake.rb | 4 +--
tools/site-scan.rb | 4 +--
www/apmail/mods.cgi | 4 +--
www/board/agenda/models/agenda.rb | 2 +-
www/board/agenda/models/minutes.rb | 2 +-
www/board/agenda/routes.rb | 4 +--
www/board/agenda/views/actions/commit.json.rb | 2 +-
www/board/agenda/views/actions/feedback.json.rb | 2 +-
www/board/agenda/views/actions/post-data.json.rb | 4 +--
www/board/agenda/views/actions/publish.json.rb | 2 +-
www/board/agenda/views/buttons/post.js.rb | 14 +++++-----
.../agenda/views/buttons/publish-minutes.js.rb | 2 +-
www/board/agenda/views/layout/footer.js.rb | 2 +-
www/board/agenda/views/layout/main.js.rb | 2 +-
www/board/agenda/views/models/agenda.js.rb | 2 +-
www/board/agenda/views/models/chat.js.rb | 2 +-
www/board/agenda/views/pages/adjournment.js.rb | 2 +-
www/board/agenda/views/pages/fy23.js.rb | 2 +-
www/board/agenda/views/pages/report.js.rb | 2 +-
www/board/agenda/views/pages/secrets.js.rb | 2 +-
www/board/calendar.cgi | 4 +--
www/brand/list.cgi | 2 +-
www/brand/replyedit.cgi | 2 +-
www/brand/replylist.cgi | 2 +-
www/brand/replyui.cgi | 4 +--
www/committers/index.cgi | 2 +-
www/committers/subscribe.cgi | 16 +++++------
www/committers/tm-report.cgi | 8 +++---
www/events/other.cgi | 4 +--
www/fundraising/invoice.cgi | 4 +--
www/incubator/graduated.cgi | 2 +-
www/incubator/signoff.cgi | 16 +++++------
www/members/archivers.cgi | 10 +++----
www/members/attendance-xcheck.cgi | 2 +-
www/members/inactive.cgi | 2 +-
www/members/index.cgi | 2 +-
www/members/meeting-util.rb | 6 ++---
www/members/meeting.cgi | 14 +++++-----
www/members/memberless-pmcs.cgi | 2 +-
www/members/mentor-update.cgi | 14 +++++-----
www/members/namediff.cgi | 8 +++---
www/members/nominations.cgi | 2 +-
www/members/non-participants.cgi | 14 +++++-----
www/members/proxy.cgi | 20 +++++++-------
www/members/repo-use.cgi | 4 +--
www/members/security-subs.cgi | 2 +-
www/members/watch.cgi | 16 +++++------
www/officers/acreq.cgi | 4 +--
www/officers/index.cgi | 2 +-
www/officers/surveys.cgi | 4 +--
www/pods.cgi | 2 +-
www/roster/models/committee.rb | 4 +--
www/roster/models/nonpmc.rb | 4 +--
www/roster/models/orgchart.rb | 2 +-
www/roster/models/ppmc.rb | 4 +--
www/roster/public_committee_info.rb | 2 +-
www/roster/public_icla_info.rb | 2 +-
www/roster/public_json_common.rb | 4 +--
www/roster/views/actions/fullname.json.rb | 2 +-
www/roster/views/committees.html.rb | 6 ++---
www/roster/views/committerSearch.js.rb | 2 +-
www/roster/views/duties.html.rb | 4 +--
www/roster/views/iclaSearch.js.rb | 2 +-
www/roster/views/index.html.rb | 4 +--
www/roster/views/members.html.rb | 4 +--
www/roster/views/nonpmc/committers.js.rb | 2 +-
www/roster/views/nonpmcs.html.rb | 4 +--
www/roster/views/orgchart.html.rb | 2 +-
www/roster/views/person/forms.js.rb | 2 +-
www/roster/views/person/github.js.rb | 2 +-
www/roster/views/person/main.js.rb | 4 +--
www/roster/views/pmc/committers.js.rb | 2 +-
www/roster/views/podlings.html.rb | 2 +-
www/roster/views/polyfill.js.rb | 2 +-
www/roster/views/ppmc/committers.js.rb | 2 +-
www/roster/views/ppmc/members.js.rb | 4 +--
www/roster/views/ppmc/mentors.js.rb | 4 +--
www/roster/views/ppmcs.html.rb | 4 +--
www/secretary/icla-parse.cgi | 8 +++---
www/secretary/iclaparser.rb | 8 +++---
www/secretary/ldap-check-committers.cgi | 2 +-
www/secretary/ldap-check.cgi | 8 +++---
www/secretary/ldap-names.cgi | 24 ++++++++---------
www/secretary/memapp_check.cgi | 2 +-
www/secretary/public-names.cgi | 4 +--
www/secretary/workbench/parsemail.rb | 2 +-
www/secretary/workbench/views/actions/ccla.json.rb | 2 +-
.../workbench/views/actions/parse-icla.json.rb | 6 ++---
www/secretary/workbench/views/forms/ccla.js.rb | 2 +-
www/secretary/workbench/views/forms/grant.js.rb | 2 +-
www/secretary/workbench/views/parts.js.rb | 2 +-
www/secretary/workbench/views/tasklist.html.rb | 2 +-
www/site.cgi | 2 +-
www/status/index.cgi | 2 +-
www/status/monitors/git.rb | 4 +--
www/status/monitors/svn.rb | 2 +-
www/test/example.cgi | 4 +--
124 files changed, 330 insertions(+), 331 deletions(-)
diff --git a/lib/whimsy/asf/agenda.rb b/lib/whimsy/asf/agenda.rb
index 774c23f..1c3b3f3 100644
--- a/lib/whimsy/asf/agenda.rb
+++ b/lib/whimsy/asf/agenda.rb
@@ -85,7 +85,7 @@ class ASF::Board::Agenda
def parse(file, quick=false)
@file = file
@quick = quick
-
+
if not @file.valid_encoding?
filter = Proc.new {|c| c.unpack('U').first rescue 0xFFFD}
@file = @file.chars.map(&filter).pack('U*').force_encoding('utf-8')
diff --git a/lib/whimsy/asf/agenda/discussion.rb
b/lib/whimsy/asf/agenda/discussion.rb
index 5df8a3a..c49cf85 100644
--- a/lib/whimsy/asf/agenda/discussion.rb
+++ b/lib/whimsy/asf/agenda/discussion.rb
@@ -6,7 +6,7 @@ class ASF::Board::Agenda
parse do
discussion = @file.split(/^ \d. Discussion Items\n/,2).last.
split(/^ \d. .*Action Items/,2).first
-
+
if discussion !~ /\A\s{3,5}[0-9A-Z]\.\s/
# One (possibly empty) item for all Discussion Items
diff --git a/lib/whimsy/asf/board.rb b/lib/whimsy/asf/board.rb
index 90625a2..275f20c 100644
--- a/lib/whimsy/asf/board.rb
+++ b/lib/whimsy/asf/board.rb
@@ -144,7 +144,7 @@ module ASF
def self.directorInitials(id)
DIRECTOR_MAP[id] && DIRECTOR_MAP[id][INITIALS]
end
-
+
# Return the first name for the uid
# Fails if there is no entry, so check first using directorHasId?
def self.directorFirstName(id)
diff --git a/lib/whimsy/asf/committee.rb b/lib/whimsy/asf/committee.rb
index 00c2853..9d641d5 100644
--- a/lib/whimsy/asf/committee.rb
+++ b/lib/whimsy/asf/committee.rb
@@ -606,9 +606,9 @@ module ASF
return unless board
file = File.join(board, 'committee-info.yaml')
return unless File.exist? file
-
+
return @committee_metadata if @committee_metadata and
@committee_metadata_mtime and File.mtime(file) <= @committee_metadata_mtime
-
+
@committee_metadata_mtime = File.mtime(file)
@committee_metadata = YAML.load_file file
end
@@ -619,20 +619,20 @@ module ASF
load_committee_metadata[:tlps][committee] ||
load_committee_metadata[:cttees][committee]
end
-
+
# website for this committee.
def site()
meta = ASF::Committee.metadata(name)
meta[:site] if meta
end
-
+
# description for this committee.
def description()
meta = ASF::Committee.metadata(name)
meta[:description] if meta
end
-
+
# append the description for a new tlp committee.
# this is intended to be called from todos.json.rb in the block for
ASF::SVN.update
def self.appendtlpmetadata(input,committee,description)
@@ -665,6 +665,6 @@ module ASF
end
output
end
-
+
end
end
diff --git a/lib/whimsy/asf/documents.rb b/lib/whimsy/asf/documents.rb
index 5836b6b..93e1e34 100644
--- a/lib/whimsy/asf/documents.rb
+++ b/lib/whimsy/asf/documents.rb
@@ -18,7 +18,7 @@ module ASF
def self.exist?(name)
self.listnames.include?(name)
end
-
+
end
# Common class for access to documents/cclas/
@@ -35,7 +35,7 @@ module ASF
def self.exist?(name)
self.listnames.include?(name)
end
-
+
end
# Common class for access to documents/iclas/ directory
diff --git a/lib/whimsy/asf/forms.rb b/lib/whimsy/asf/forms.rb
index 35a5d2e..409e8c7 100644
--- a/lib/whimsy/asf/forms.rb
+++ b/lib/whimsy/asf/forms.rb
@@ -68,7 +68,7 @@ class Wunderbar::HtmlMarkup
_label.col_sm_offset_3.col_sm_9.strong.text_left label
end
end
-
+
# Display a single input control within a form; or if rows, then a textarea
# @param name required string ID of control's label/id
def _whimsy_forms_input(**args)
diff --git a/lib/whimsy/asf/forms2.rb b/lib/whimsy/asf/forms2.rb
index e26d14b..2bcbb26 100644
--- a/lib/whimsy/asf/forms2.rb
+++ b/lib/whimsy/asf/forms2.rb
@@ -64,7 +64,7 @@ class Wunderbar::HtmlMarkup
_label.col_sm_offset_3.col_sm_9.strong.text_left text
end
end
-
+
# Display a single input control within a form; or if rows, then a textarea
# @param name required string ID of control's label/id
def _whimsy_forms_input(**args)
diff --git a/lib/whimsy/asf/git.rb b/lib/whimsy/asf/git.rb
index 3fbb367..47826ae 100644
--- a/lib/whimsy/asf/git.rb
+++ b/lib/whimsy/asf/git.rb
@@ -15,7 +15,7 @@ module ASF
# path to the deployment branch on GitHub.
INFRA_PUPPET = '/apache/infrastructure-puppet/deployment/'
-
+
# get a file live from infrastructure puppet (e.g. 'data/common.yaml')
# issues a HTTP GET request, so may be slow and may fail. For applications
# that require faster and more dependable access,
diff --git a/lib/whimsy/asf/ldap.rb b/lib/whimsy/asf/ldap.rb
index e6dc4d9..c6bc48e 100644
--- a/lib/whimsy/asf/ldap.rb
+++ b/lib/whimsy/asf/ldap.rb
@@ -401,7 +401,7 @@ module ASF
def self.committerids
weakref(:committerids) {RoleGroup.find('committers').memberids}
end
-
+
# Obtain a list of members from LDAP
# <tt>cn=member,ou=groups,dc=apache,dc=org</tt>
# Note: includes some non-ASF member infrastructure contractors
@@ -697,7 +697,7 @@ module ASF
else
filter = "(|#{people.map {|person| "(uid=#{person.name})"}.join})"
end
-
+
zero = Hash[attributes.map {|attribute| [attribute,nil]}]
data = ASF.search_one(base, filter, attributes + ['uid'])
@@ -915,7 +915,7 @@ module ASF
mod_add('gidNumber', nextgid.to_s),
]
end
-
+
# fixed attributes
attrs.merge!({
'uidNumber' => nextuid.to_s,
@@ -1188,7 +1188,7 @@ module ASF
owners.map {|uid| uid[/uid=(.*?),/,1]}
end
-
+
# remove people from a project as owners and members in LDAP
def remove(people)
remove_owners(people)
@@ -1392,7 +1392,7 @@ module ASF
members = weakref(:members) do
ASF.search_one(base, "cn=#{name}", 'member').flatten
end
-
+
members.map {|uid| uid[/uid=(.*?),/,1]}
end
diff --git a/lib/whimsy/asf/mail.rb b/lib/whimsy/asf/mail.rb
index a556eb2..99ba5d1 100644
--- a/lib/whimsy/asf/mail.rb
+++ b/lib/whimsy/asf/mail.rb
@@ -137,7 +137,7 @@ module ASF
allowed
end
-
+
# common configuration for sending mail; loads <tt>:sendmail</tt>
# configuration from <tt>~/.whimsy</tt> if available; otherwise default
# to disable openssl verification as that is what it required in order
@@ -212,7 +212,7 @@ module ASF
# Invalid; return input rather than failing
return email
end
-
+
private
# Load the auto-subscription file
diff --git a/lib/whimsy/asf/mlist.rb b/lib/whimsy/asf/mlist.rb
index 1cdb1b2..029574c 100644
--- a/lib/whimsy/asf/mlist.rb
+++ b/lib/whimsy/asf/mlist.rb
@@ -62,7 +62,7 @@ module ASF
# :subscriptions - an array of pairs: [list name, subscriber email]
# N.B. not the same format as the moderates() method
def self.subscriptions(emails, response = {})
-
+
return response unless File.exists? LIST_SUBS
response[:subscriptions] = []
@@ -85,7 +85,7 @@ module ASF
# :digests - an array of pairs: [list name, subscriber email]
# N.B. not the same format as the moderates() method
def self.digests(emails, response = {})
-
+
return response unless File.exists? LIST_DIGS
response[:digests] = []
@@ -215,8 +215,8 @@ module ASF
def self.list_subs(mail_domain, podling=false, list_subs=false)
self.list_subscribers(mail_domain,podling,list_subs,true)
end
-
-
+
+
# returns the list time (defaulting to list-subs time if the marker is not
present)
def self.list_time
File.mtime(LIST_TIME) rescue File.mtime(LIST_SUBS)
@@ -307,7 +307,7 @@ module ASF
end
return nil
end
-
+
# Parses the list-mods/list-subs files
# Param: type = 'mod' or 'sub' or 'dig'
# Yields:
diff --git a/lib/whimsy/asf/nominees.rb b/lib/whimsy/asf/nominees.rb
index 6b7cf12..a3bd880 100644
--- a/lib/whimsy/asf/nominees.rb
+++ b/lib/whimsy/asf/nominees.rb
@@ -3,7 +3,7 @@ require 'weakref'
module ASF
class Person < Base
-
+
# Return a hash of nominated members. Keys are ASF::Person objects,
# values are the nomination text.
def self.member_nominees
diff --git a/lib/whimsy/asf/orgchart.rb b/lib/whimsy/asf/orgchart.rb
index 7577b60..2ee0f66 100644
--- a/lib/whimsy/asf/orgchart.rb
+++ b/lib/whimsy/asf/orgchart.rb
@@ -2,14 +2,14 @@
# Part of the whimsy/ASF module of classes that provide simple access to ASF
# data.
module ASF # :nodoc:
-
+
##
# Reads and provides access to the
# <tt>officers/personnel-duties/ROLENAME.yaml</tt> files.
class OrgChart
@@duties = {}
@@desc = {}
-
+
# parse any changed YAML role files.
def self.load
@@source ||= ASF::SVN['personnel-duties']
@@ -24,7 +24,7 @@ module ASF # :nodoc:
data['mtime'] = File.mtime(file).to_f
@@duties[name] = data
end
-
+
file = File.join(@@source, 'README').untaint
unless @@desc['mtime'] and @@desc['mtime'] > File.mtime(file).to_f
data = Hash[*File.read(file).split(/^\[(.*)\]\n/)[1..-1].map(&:strip)]
@@ -34,10 +34,10 @@ module ASF # :nodoc:
@@desc = data
end
end
-
+
@@duties
end
-
+
##
# Access data from a specific role
# :yield: Hash with ['info'] -> hash of info fields; plus any other
[sections]
@@ -45,7 +45,7 @@ module ASF # :nodoc:
self.load
@@duties[name]
end
-
+
##
# Access descriptions of the <tt>['info']</tt> section fields
def self.desc
diff --git a/lib/whimsy/asf/podling.rb b/lib/whimsy/asf/podling.rb
index e5b945c..b116835 100644
--- a/lib/whimsy/asf/podling.rb
+++ b/lib/whimsy/asf/podling.rb
@@ -441,9 +441,9 @@ module ASF
def namesearch
Podling.namesearch[display_name]
end
-
+
private
-
+
def self._list(status)
list.select { |podling| podling.status == status }
end
diff --git a/lib/whimsy/asf/svn.rb b/lib/whimsy/asf/svn.rb
index dbc6c35..751a4a8 100644
--- a/lib/whimsy/asf/svn.rb
+++ b/lib/whimsy/asf/svn.rb
@@ -94,7 +94,7 @@ module ASF
if includeAll
self._all_repo_entries
else
- self._all_repo_entries.reject{|k,v| v['depth'] == 'skip' or v['depth']
== 'delete'}
+ self._all_repo_entries.reject{|_k, v| v['depth'] == 'skip' or
v['depth'] == 'delete'}
end
end
@@ -164,7 +164,7 @@ module ASF
# find a local directory corresponding to a path in Subversion. Returns
# <tt>nil</tt> if not found.
- # Excludes aliases
+ # Excludes aliases
def self.find(name)
return @testdata[name] if @testdata[name]
@@ -404,7 +404,7 @@ module ASF
def self.svn(command, path , options = {})
raise ArgumentError.new 'command must not be nil' unless command
raise ArgumentError.new 'path must not be nil' unless path
-
+
# Deal with svn-only opts
chdir = options.delete(:chdir)
open_opts = {}
@@ -461,7 +461,7 @@ module ASF
raise ArgumentError.new 'command must not be nil' unless command
raise ArgumentError.new 'path must not be nil' unless path
raise ArgumentError.new 'wunderbar (_) must not be nil' unless _
-
+
# Pick off the options specific to svn_ rather than svn
sysopts = options.delete(:sysopts) || {}
auth = options.delete(:auth)
@@ -572,7 +572,7 @@ module ASF
user: user, password: pass})
raise Exception.new("Update of committee-info.txt failed: #{err}")
unless out
-
+
end
end
@@ -660,7 +660,7 @@ module ASF
{msg: msg.untaint, env: env})
# fail if there are pending changes
- out, err = self.svn('status', tmpfile || tmpdir) # Need to use svn
rather than svn_ here
+ out, _err = self.svn('status', tmpfile || tmpdir) # Need to use svn
rather than svn_ here
unless rc == 0 && out && out.empty?
raise "svn failure #{rc} #{path.inspect} #{out}"
end
@@ -780,7 +780,7 @@ module ASF
end
throw IOError.new("Could not check if #{path} exists: #{err}")
end
-
+
# DRAFT DRAFT
# create a new file and fail if it already exists
# Parameters:
@@ -866,7 +866,6 @@ module ASF
end
end
outputfile = File.join(tmpdir, basename).untaint
- cmdfile = nil
begin
@@ -896,7 +895,7 @@ module ASF
extra.each do |cmd|
cmds << cmd
end
-
+
# Now commit everything
if options[:dryrun]
puts cmds # TODO: not sure this is correct for Wunderbar
@@ -909,7 +908,7 @@ module ASF
FileUtils.rm_rf tmpdir unless options[:tmpdir]
end
end
-
+
EPOCH_SEP = ':' # separator
EPOCH_TAG = 'epoch'+EPOCH_SEP # marker in file to show epochs are present
EPOCH_LEN = EPOCH_TAG.size
@@ -992,12 +991,12 @@ module ASF
else
open(listfile) do |l|
# fetch the file revision from the first line
- _filerev = l.gets.chomp # TODO should we be checking _filerev?
- if _filerev.start_with?(EPOCH_TAG)
+ filerev = l.gets.chomp # TODO should we be checking filerev?
+ if filerev.start_with?(EPOCH_TAG)
if getEpoch
- trimEpoch = -> l { l.split(EPOCH_SEP,2) } # return as array
+ trimEpoch = -> x { x.split(EPOCH_SEP,2) } # return as array
else
- trimEpoch = -> l { l.split(EPOCH_SEP,2)[1] } # strip the epoch
+ trimEpoch = -> x { x.split(EPOCH_SEP,2)[1] } # strip the epoch
end
else
trimEpoch = nil
@@ -1018,7 +1017,7 @@ module ASF
# Does this host's installation of SVN support --password-from-stdin?
def self.passwordStdinOK?()
return @svnHasPasswordFromStdin unless @svnHasPasswordFromStdin.nil?
- out, err, status = Open3.capture3('svn','help','cat', '-v')
+ out, _err, status = Open3.capture3('svn','help','cat', '-v')
if status.success? && out
@svnHasPasswordFromStdin = out.include? '--password-from-stdin'
else
@@ -1028,7 +1027,7 @@ module ASF
end
private
-
+
# Calculate svn parent directory allowing for overrides
def self.svn_parent
svn = ASF::Config.get(:svn)
diff --git a/lib/whimsy/asf/themes.rb b/lib/whimsy/asf/themes.rb
index 04cf36c..7c312a2 100644
--- a/lib/whimsy/asf/themes.rb
+++ b/lib/whimsy/asf/themes.rb
@@ -2,7 +2,7 @@ require 'wunderbar'
# Define common page features for whimsy tools using bootstrap styles
class Wunderbar::HtmlMarkup
-
+
# DEPRECATED Wrap content with nicer fluid margins
def _whimsy_content colstyle="col-lg-11"
_div.content.container_fluid do
@@ -13,7 +13,7 @@ class Wunderbar::HtmlMarkup
end
end
end
-
+
# Emit simplistic copyright footer
def _whimsy_foot
_div.footer.container_fluid style: 'background-color: #f5f5f5; padding:
10px;' do
@@ -30,7 +30,7 @@ class Wunderbar::HtmlMarkup
end
end
end
-
+
# Emit a panel with title and body content
def _whimsy_panel(title, style: 'panel-primary', header: 'h3')
_div.panel class: style do
@@ -44,7 +44,7 @@ class Wunderbar::HtmlMarkup
end
end
end
-
+
# Emit a panel with helpblock and table
https://getbootstrap.com/components/#panels-tables
def _whimsy_panel_table(title: 'Table Title', style: 'panel-primary',
header: 'h2', helpblock: nil)
_div.panel class: style do
@@ -61,7 +61,7 @@ class Wunderbar::HtmlMarkup
yield
end
end
-
+
# Emit a bootstrap navbar with required ASF links
def _whimsy_nav
_nav.navbar.navbar_default do
@@ -198,7 +198,7 @@ class Wunderbar::HtmlMarkup
_whimsy_foot
end
end
-
+
# Emit wrapper panels for a single tablist accordion item
# @param listid of the parent _div.panel_group role: "tablist"
# @param itemid of this specific item
@@ -225,5 +225,5 @@ class Wunderbar::HtmlMarkup
end
end
end
-
+
end
diff --git a/lib/whimsy/asf/watch.rb b/lib/whimsy/asf/watch.rb
index c1d9e84..0ef2296 100644
--- a/lib/whimsy/asf/watch.rb
+++ b/lib/whimsy/asf/watch.rb
@@ -1,7 +1,7 @@
module ASF
class Person < Base
-
+
# Return a hash of individuals in the member watch list. Keys are
# ASF::Person objects, values are the text from
# <tt>potential-member-watch-list.txt</tt>..
diff --git a/lib/whimsy/cache.rb b/lib/whimsy/cache.rb
index ef82f74..3746add 100644
--- a/lib/whimsy/cache.rb
+++ b/lib/whimsy/cache.rb
@@ -35,7 +35,7 @@ class Cache
@enabled = enabled
init_cache(@dir) if enabled
end
-
+
# gets the URL content
#
# Caches the response and returns that if unchanged or recent
@@ -155,7 +155,7 @@ class Cache
last = nil unless last.length > 25
end
end
-
+
return Time.now - (mtime ? mtime : Time.new(0)), last, uri, etag, data
end
diff --git a/lib/whimsy/logparser.rb b/lib/whimsy/logparser.rb
index b9b57b3..3d9ba48 100755
--- a/lib/whimsy/logparser.rb
+++ b/lib/whimsy/logparser.rb
@@ -11,7 +11,7 @@ module LogParser
extend self
# Hardcoded from
https://github.com/apache/infrastructure-puppet/blob/deployment/modules/whimsy_server/manifests/init.pp#L200
ERROR_LOG_DIR = '/srv/whimsy/www/members/log'
-
+
# Constants and ignored regex for whimsy_access logs
WHIMSY_APPS = {
'roster' => 'Roster tool',
@@ -52,13 +52,13 @@ module LogParser
/\.php\z/,
/\.woff2/
]
-
+
# Related to timestamps in error log output
TRUNCATE = 6 # Ensure consistency in keys
TIME_OFFSET = 10000000.0 # Offset milliseconds slightly for array entries
# Ignore error lines from other tools with long tracebacks
IGNORE_TRACEBACKS = ["rack.rb", "asf/themes", "phusion_passenger"]
-
+
# Read a text or .gz file
# @param f filename: .log or .log.gz
# @return File.read(f)
@@ -72,7 +72,7 @@ module LogParser
end
return logfile
end
-
+
# Parse whimsy_access and return interesting entries
# @param f filename of whimsy_access.log or .gz
# @return array of reduced, scrubbed entries as hashes
@@ -88,7 +88,7 @@ module LogParser
end
return logs
end
-
+
# Collate/partition whimsy_access entries by app areas
# @param logs full set of items to scan
# @return apps categorized by apphash, with REMAINDER entry all others not
captured
@@ -122,7 +122,7 @@ module LogParser
end
return apps
end
-
+
# Get a simplistic hash report of access entries
# @param f filepath to whimsy_access.log
# @return app_report, misses_data
@@ -132,7 +132,7 @@ module LogParser
apps = collate_whimsy_access(hits)
return apps, miss
end
-
+
# Parse error.log and return interesting entries
# @param f filename of error.log or .gz
# @param logs hash to append to (created if nil)
@@ -163,7 +163,7 @@ module LogParser
end
return logs
end
-
+
# Parse error.log* files in dir and return interesting entries
# @param d directory to scan for error.log*
# @return hash of arrays of interesting entries
@@ -173,7 +173,7 @@ module LogParser
end
return logs
end
-
+
# Parse whimsy_error.log and return interesting entries
# @param f filename of error.log or .gz
# @return hash of string of interesting entries
@@ -195,7 +195,7 @@ module LogParser
end
return logs
end
-
+
# Parse whimsy_error.log* files in dir and return interesting entries
# @param d directory to scan for whimsy_error.log*
# @return hash of arrays of interesting entries
@@ -205,7 +205,7 @@ module LogParser
end
return logs
end
-
+
# Get a list of all current|available error logs interesting entries
# @param current - only scan current day? or scan all week's logs
# @param d directory to scan for *error.log*
diff --git a/lib/whimsy/sitestandards.rb b/lib/whimsy/sitestandards.rb
index 0f22ece..835867d 100644
--- a/lib/whimsy/sitestandards.rb
+++ b/lib/whimsy/sitestandards.rb
@@ -11,7 +11,7 @@ module SiteStandards
CHECK_TYPE = 'type' # true = validation checks href/url; false =
checks text node
CHECK_POLICY = 'policy' # URL to policy statement for this check
CHECK_DOC = 'doc' # Explanation of what the check is looking for
-
+
# Checks done only for TLPs (i.e. not podlings)
TLP_CHECKS = {
'uri' => { # Custom: merely saves uri of site
@@ -119,7 +119,7 @@ module SiteStandards
CHECK_DOC => 'Projects SHOULD add a copy of their logo to
https://www.apache.org/logos/ to be included in ASF homepage.',
},
}
-
+
SITE_PASS = 'label-success'
SITE_WARN = 'label-warning'
SITE_FAIL = 'label-danger'
@@ -138,24 +138,24 @@ module SiteStandards
SITE_PASS
end
end
-
+
# Get hash of checks to be done for tlp | podling
# @param tlp true if project; podling otherwise
def get_checks(tlp = true)
tlp ? (return TLP_CHECKS.merge(COMMON_CHECKS)) : (return
PODLING_CHECKS.merge(COMMON_CHECKS))
end
-
+
# Get filename of check data for tlp | podling
# @param tlp true if project; podling otherwise
def get_filename(tlp = true)
tlp ? (return 'site-scan.json') : (return 'pods-scan.json')
end
-
+
# Get URL to default filename location on server
def get_url(is_local = true)
is_local ? (return '../../../www/public/') : (return
'https://whimsy.apache.org/public/')
end
-
+
# Get check data for tlp | podling
# Uses a local_copy if available; w.a.o/public otherwise
# @param tlp true if project; podling otherwise
@@ -172,7 +172,7 @@ module SiteStandards
end
return sites, crawl_time
end
-
+
# Analyze data returned from site-scan.rb by using checks[CHECK_VALIDATE]
regex
# If value =~ CHECK_VALIDATE, SITE_PASS
# If value is present (presumably from CHECK_TEXT|CAPTURE), then SITE_WARN
@@ -190,7 +190,7 @@ module SiteStandards
counts[nam][SITE_FAIL] = sites.select{ |k, site| site[nam].nil? }.count
counts[nam][SITE_WARN] = sites.size - counts[nam][SITE_PASS] -
counts[nam][SITE_FAIL]
end
-
+
return [
counts, {
SITE_PASS => '# Sites with links to primary ASF page',
diff --git a/tools/collate_minutes.rb b/tools/collate_minutes.rb
index c665bf7..67a80b6 100755
--- a/tools/collate_minutes.rb
+++ b/tools/collate_minutes.rb
@@ -745,7 +745,7 @@ def layout(title = nil)
end
# Adjust the page header
-
+
# find the intro para; assume it is the first para with a strong tag
# then back up to the main container class for the page content
section = $calendar.at('.container p strong').parent.parent
diff --git a/tools/comdevtalks.rb b/tools/comdevtalks.rb
index f3c8feb..1f7c4a5 100644
--- a/tools/comdevtalks.rb
+++ b/tools/comdevtalks.rb
@@ -36,9 +36,9 @@ def get_talks_submitters()
# return parse_talks
# HACK static data until we have generated public/ or other format
talks = {"Apache_Way_2017"=>{"title"=>"Apache Way: Effective Open Source
Project Management", "teaser"=>"Learn how to manage long-lived diverse open
source project communities by following the behaviors of the Apache Way.",
"submitter"=>"curcuru", "speakers"=>["curcuru"], "abstract"=>"The \"Apache
Way\" is the process by which Apache Software Foundation projects are managed.
It has evolved 18 years and has produced over 170 highly successful open source
Apache projects. But what is it [...]
-
+
submitters = {"curcuru"=>{"name"=>"Shane Curcuru",
"website"=>"http://communityovercode.com/", "twitter"=>"shanecurcuru",
"facebook"=>nil, "bio"=>"Shane has been involved at the Apache Software
Foundation (ASF) since 1999, and serves as Director and VP of Brand Management,
setting trademark policies and helping all 200+ Apache projects implement and
defend their brands.\n\nOtherwise, Shane is: a father and husband, a friend, a
geek, a Member of the ASF, a baker, and a punny guy. Oh, a [...]
-
+
return talks, submitters
end
diff --git a/tools/download_check.rb b/tools/download_check.rb
index f9b4c6c..4070a9f 100755
--- a/tools/download_check.rb
+++ b/tools/download_check.rb
@@ -320,7 +320,7 @@ def _checkDownloadPage(path, tlp, version)
# check the main body
body = check_page(path)
-
+
return unless body
hasDisclaimer = body.gsub(%r{\s+},' ').include? 'Incubation is required of
all newly accepted'
@@ -348,9 +348,9 @@ def _checkDownloadPage(path, tlp, version)
end
deprecated = Time.parse('2018-01-01')
-
+
links = get_links(body)
-
+
# check KEYS link
# TODO: is location used by hc allowed, e.g.
# https://www.apache.org/dist/httpcomponents/httpclient/KEYS
@@ -387,7 +387,7 @@ def _checkDownloadPage(path, tlp, version)
E 'Could not find KEYS link'
end
end
-
+
# check for verify instructions
bodytext = body.gsub(/\s+/,' ') # single line
if VERIFY_TEXT.any? {|text| bodytext.include? text}
@@ -395,19 +395,19 @@ def _checkDownloadPage(path, tlp, version)
else
E 'Could not find statement of the need to verify downloads'
end
-
+
# Check if GPG verify has two parameters
body.scan(%r{^.+gpg --verify.+$}){|m|
unless m =~ %r{gpg --verify\s+\S+\.asc\s+\S+}
W "gpg verify should specify second param: #{m.strip}
see:\nhttps://www.apache.org/info/verification.html#specify_both"
end
}
-
+
# check if page refers to md5sum
body.scan(%r{^.+md5sum.+$}){|m|
W "Found md5sum: #{m.strip}"
}
-
+
# Check archives have hash and sig
vercheck = Hash.new() # key = archive name, value = array of hash/sig
@@ -461,7 +461,7 @@ def _checkDownloadPage(path, tlp, version)
end
end
-
+
# did we find all required elements?
vercheck.each do |k,v|
typ = v.shift
diff --git a/tools/mboxhdr2csv.rb b/tools/mboxhdr2csv.rb
index 05c9990..b824b6e 100644
--- a/tools/mboxhdr2csv.rb
+++ b/tools/mboxhdr2csv.rb
@@ -163,7 +163,7 @@ module MailUtils
end
end
end
-
+
# Get {MAILS: [{date, who, subject, flag},...\, TOOLS: [{...},...] } from
the specified list for a month
# May cache data in mailroot/yearmonth.json
# Returns empty hash if error or if can't find month
@@ -213,7 +213,7 @@ module MailUtils
emails[TOOLCOUNT][mail[TOOLS]] += 1
end
emails[TOOLCOUNT] = emails[TOOLCOUNT].sort_by { |k,v| -v}.to_h
-
+
emails[MAILS].sort_by! { |email| email[DATE] }
emails[MAILCOUNT] = Hash.new {|h, k| h[k] = 0 }
emails[MAILS].each do |mail|
@@ -421,7 +421,7 @@ def optparse
options = {}
OptionParser.new do |opts|
opts.on('-h') { puts opts; exit }
-
+
opts.on('-dDIRECTORY', '--directory DIRECTORY', 'Local directory to read
existing mboxes and dump output in (default: .)') do |d|
if File.directory?(d)
options[:dir] = d
@@ -444,7 +444,7 @@ def optparse
exit 1
end
end
-
+
return options
end
diff --git a/tools/namemap.rb b/tools/namemap.rb
index 484e5ac..a03cbfc 100644
--- a/tools/namemap.rb
+++ b/tools/namemap.rb
@@ -29,7 +29,7 @@ module NameMap
ID = 'id'
MAIL = 'mail'
NAME = 'name'
-
+
TEST_COMMITTERS = [ # Drawn from Whimsy's committer data
{
'id' => 'curcuru',
@@ -72,7 +72,7 @@ module NameMap
],
},
]
-
+
TEST_OTHER = [ # Any other system must provide id,name,email for each user
{
'id' => 'curcuru',
@@ -105,7 +105,7 @@ module NameMap
'mail' => '[email protected]',
},
]
-
+
# Read committer accounts
# @param io stream to read JSON from
# @return json data
@@ -116,7 +116,7 @@ module NameMap
return TEST_COMMITTERS
end
end
-
+
# Read other system accounts
# TODO Depends on file format of exported other system accounts
# @param f filename to read from
@@ -124,7 +124,7 @@ module NameMap
def get_other(f)
return TEST_OTHER
end
-
+
# Transform committer accounts into lookup hashes
# @param committers array from COMMITTER_JSON
# @return byid, bymail - hashes for lookups to committer accounts
@@ -141,7 +141,7 @@ module NameMap
end
return byid, bymail
end
-
+
# Transform other system accounts into lookup hashes
# @param other array of hashes including 'id', 'name', 'mail' keys
# @return byid, bymail - hashes for lookups to other system accounts
@@ -156,7 +156,7 @@ module NameMap
end
return byid, bymail
end
-
+
# Compare committer ids to other system account ids
# @param cids - hash by id of committer data
# @param cmails - hash by email of [committer1, ...]
@@ -166,7 +166,7 @@ module NameMap
def compare(cids, cmails, oids, omails)
matches = {}
crossmatches = {}
-
+
# For every committer, check for a matching account in other system
cids.each do |cid, committer|
# If the other system has identical id as committer
@@ -191,7 +191,7 @@ module NameMap
matches[cid] = "NONE:no id match found"
end
end
-
+
# Also cross-check email addresses of other system to all committer emails
omails.each do |omail, other_accounts|
if cmails.has_key?(omail)
@@ -220,7 +220,7 @@ module NameMap
end
return matches, crossmatches
end
-
+
# Compare a committer list to another system's list
# @param cio io stream to read committer accounts from
# @param ofile filename to read other system accounts from
@@ -231,7 +231,7 @@ module NameMap
matches, crossmatches = compare(cids, cmails, oids, omails)
return matches, crossmatches
end
-
+
# Check for email duplicates in committer roster
# @return hash of any committers with duplicate emails
# @return histogram of how many aliases committers list
diff --git a/tools/ponyapi.rb b/tools/ponyapi.rb
index be0c68a..d527ff2 100755
--- a/tools/ponyapi.rb
+++ b/tools/ponyapi.rb
@@ -16,7 +16,7 @@ module PonyAPI
PONYMBOX = PONYHOST +
'api/mbox.lua?list=%{list}@%{domain}&date=%{year}-%{month}' #
[email protected]&date=2016-06 becomes board-apache-org-201707.mbox
FILEMBOX = "%{list}-%{domNoDot}-%<year>.04d%<month>.02d.mbox" # used to
generate output file name
PONYPREFS = PONYHOST + 'api/preferences.lua' # => preferences.json
-
+
extend self
# Get summary of all mailing lists by domain
@@ -116,7 +116,7 @@ module PonyAPI
puts "ERROR:get_pony_stats(#{uri.request_uri}) returned code
#{response.code.inspect}"
end
end
-
+
# Get multiple years/months of public stats as json
def get_pony_stats_many(dir, list, subdomain, years, months, cookie=nil)
cookie=get_cookie() if cookie == 'prompt'
@@ -126,7 +126,7 @@ module PonyAPI
end
end
end
-
+
# Download one month as mbox
# Caveats: uses response's encoding; overwrites existing .json file
# Must supply cookie = 'ponymail-logged-in-cookie' if a private list
@@ -142,7 +142,7 @@ module PonyAPI
puts "ERROR:get_public_mbox(#{uri}) returned code
#{response.code.inspect}"
end
end
-
+
# Get multiple years/months of mboxes
def get_pony_mbox_many(dir, list, subdomain, years, months, cookie=nil)
cookie=get_cookie() if cookie == 'prompt'
diff --git a/tools/ponypoop.rb b/tools/ponypoop.rb
index 8be7e18..8308267 100755
--- a/tools/ponypoop.rb
+++ b/tools/ponypoop.rb
@@ -43,7 +43,7 @@ def analyze_threads(threads)
end
p "Hsh: #{threads.class} - #{threads.size} at #{threads['epoch']}
#{max}/#{total}"
end
-
+
return max, total
end
@@ -135,7 +135,7 @@ def run_analyze_stats(dir, list, subject_regex)
File.open("#{output}.json", "w") do |f|
f.puts JSON.pretty_generate(results)
end
-
+
results
end
@@ -149,7 +149,7 @@ def optparse
options = {}
OptionParser.new do |opts|
opts.on('-h') { puts opts; exit }
-
+
opts.on('-dDIRECTORY', '--directory DIRECTORY', 'Local directory to
dump/find .json files (default: .)') do |d|
if File.directory?(d)
options[:dir] = d
@@ -160,21 +160,21 @@ def optparse
opts.on(:REQUIRED, '-lLISTNAME', '--list LISTNAME', 'Root listname to
download stats archive from (required; board or trademarks or...)') do |l|
options[:list] = l.chomp('@')
end
-
+
opts.on('-cCOOKIE', '--cookie COOKIE', 'For private lists REQUIRED, your
ponymail logged-in cookie value') do |c|
options[:cookie] = c
end
opts.on('-sSUBDOMAIN', '--subdomain SUBDOMAIN', 'Root @ subdomain
.apache.org (only if project list; hadoop or community or...) to download stats
archive from') do |s|
options[:subdomain] = s.chomp('@.')
end
-
+
opts.on('-p', '--pull', 'Pull down stats JSON files into -d dir
(otherwise, default analyzes existing stats JSON in dir)') do |p|
options[:pull] = true
end
opts.on('-m', '--mbox', 'Pull down mbox files into -d dir') do |p|
options[:mbox] = true
end
-
+
opts.on('-yYEAR', '--year YEAR', 'Only pull down single year, instead of
2010 thru now') do |y|
options[:year] = [ y ]
end
@@ -189,7 +189,7 @@ def optparse
exit 1
end
end
-
+
return options
end
diff --git a/tools/pubsub2rake.rb b/tools/pubsub2rake.rb
index a3b2ce4..24ff23c 100755
--- a/tools/pubsub2rake.rb
+++ b/tools/pubsub2rake.rb
@@ -82,7 +82,7 @@ class PubSub
puts stamp "Pubsub thread finished %s..." % (@updated ? '(updated) ' : '')
if @restartable
STDERR.puts stamp 'restarting'
-
+
# relaunch script after a one second delay
sleep 1
exec RbConfig.ruby, __FILE__, *ARGV
@@ -106,7 +106,7 @@ if $0 == __FILE__
# depth: 'skip' == ignore completely
# files: only need to update if path matches one of the files
# depth: 'files' only need to update for top level files
-
+
# The first segment of the url is the repo name, e.g. asf or infra
# The second segment is the subdir within the repo.
# The combination of the two are used for the pubsub path, for example:
diff --git a/tools/site-scan.rb b/tools/site-scan.rb
index 1346ddc..3cd0a69 100755
--- a/tools/site-scan.rb
+++ b/tools/site-scan.rb
@@ -107,7 +107,7 @@ def parse(id, site, name)
data[:license] = a_href
end
end
-
+
%w(thanks security sponsorship).each do |check|
if a_text =~
SiteStandards::COMMON_CHECKS[check][SiteStandards::CHECK_CAPTURE]
begin
@@ -189,7 +189,7 @@ else
end
results[committee.name] = parse(committee.name, committee.site,
committee.display_name)
end
-
+
# Scan podlings that have a website
ASF::Podling.list.each do |podling|
if podling.status == 'current' and podling.podlingStatus[:website]
diff --git a/www/apmail/mods.cgi b/www/apmail/mods.cgi
index c7371c5..26583c5 100755
--- a/www/apmail/mods.cgi
+++ b/www/apmail/mods.cgi
@@ -73,7 +73,7 @@ _html do
emails += moderators.map(&:downcase)
end
end
-
+
_ul do
emails.uniq.sort.each do |email|
_li! { _a email, href: email }
@@ -145,7 +145,7 @@ _html do
end
end
end
-
+
if href
_h2_ {_a "#{list}@#{domain}", href: href}
else
diff --git a/www/board/agenda/models/agenda.rb
b/www/board/agenda/models/agenda.rb
index f51a0ca..8e7f4bf 100755
--- a/www/board/agenda/models/agenda.rb
+++ b/www/board/agenda/models/agenda.rb
@@ -99,7 +99,7 @@ class Agenda
file.untaint if file =~ /\Aboard_\w+_[\d_]+\.txt\z/
path = File.expand_path(file, FOUNDATION_BOARD).untaint
-
+
return Agenda[file][:parsed] unless File.exist? path
# Does the working copy have more recent data?
diff --git a/www/board/agenda/models/minutes.rb
b/www/board/agenda/models/minutes.rb
index fa916c8..940e868 100755
--- a/www/board/agenda/models/minutes.rb
+++ b/www/board/agenda/models/minutes.rb
@@ -202,7 +202,7 @@ class Minutes
index.sub! /\sProject$/, ''
index.sub! /\sPMC$/, ''
index.sub! /\sProject\s/, ' '
-
+
@@notes[index]
end
end
diff --git a/www/board/agenda/routes.rb b/www/board/agenda/routes.rb
index afc8955..580581a 100755
--- a/www/board/agenda/routes.rb
+++ b/www/board/agenda/routes.rb
@@ -141,14 +141,14 @@ get %r{/(\d\d\d\d-\d\d-\d\d)/followup\.json} do |date|
agenda = "board_agenda_#{date.gsub('-','_')}.txt"
pass unless Agenda.parse agenda, :quick
-
+
# select agenda items that have comments
parsed = Agenda[agenda][:parsed]
followup = parsed.select {|item| not item['comments'].to_s.empty?}.
map {|item| [item['title'], {comments: item['comments'],
shepherd: item['shepherd'], mail_list: item['mail_list'], count: 0}]}.
to_h
-
+
# count number of feedback emails found in the board archive
start = Time.parse(date)
months = Dir['/srv/mail/board/*'].sort[-2..-1]
diff --git a/www/board/agenda/views/actions/commit.json.rb
b/www/board/agenda/views/actions/commit.json.rb
index c82431e..3a606c7 100644
--- a/www/board/agenda/views/actions/commit.json.rb
+++ b/www/board/agenda/views/actions/commit.json.rb
@@ -135,7 +135,7 @@ Agenda.update(agenda_file, @message) do |agenda|
end
action = update if match
end
-
+
# format action item
replacement.puts "* #{action[:owner]}: #{action[:text]}"
diff --git a/www/board/agenda/views/actions/feedback.json.rb
b/www/board/agenda/views/actions/feedback.json.rb
index 6e84c96..6432f36 100644
--- a/www/board/agenda/views/actions/feedback.json.rb
+++ b/www/board/agenda/views/actions/feedback.json.rb
@@ -65,7 +65,7 @@ Agenda.parse(@agenda, :full).each do |item|
cc = []
# we don't want replies to come to secretary@
bcc = ['[email protected]']
-
+
if item['mail_list']
if item[:attach] =~ /^[A-Z]+/
cc << "private@#{item['mail_list']}.apache.org".untaint
diff --git a/www/board/agenda/views/actions/post-data.json.rb
b/www/board/agenda/views/actions/post-data.json.rb
index c2f2c00..d45deca 100644
--- a/www/board/agenda/views/actions/post-data.json.rb
+++ b/www/board/agenda/views/actions/post-data.json.rb
@@ -33,7 +33,7 @@ when 'committee-list'
id = env.user
committees = {chair: [], member: [], rest: []}
-
+
ASF::Committee.pmcs.sort_by {|pmc| pmc.id}.each do |pmc|
if pmc.chairs.any? {|chair| chair[:id] == id}
committees[:chair] << pmc.id
@@ -43,7 +43,7 @@ when 'committee-list'
committees[:rest] << pmc.id
end
end
-
+
committees[:chair] + committees[:member] + committees[:rest]
when 'committer-list'
diff --git a/www/board/agenda/views/actions/publish.json.rb
b/www/board/agenda/views/actions/publish.json.rb
index a0bc31c..60af001 100755
--- a/www/board/agenda/views/actions/publish.json.rb
+++ b/www/board/agenda/views/actions/publish.json.rb
@@ -115,7 +115,7 @@ ASF::SVN.update BOARD_PRIVATE, @message, env, _ do |tmpdir|
if File.exist? minutes_path
ASF::SVN.svn_('rm', minutes_path, _)
end
-
+
agenda_path = File.join(tmpdir, "board_agenda_#{@date}.txt")
ASF::SVN.svn_('update', agenda_path, _)
if File.exist? agenda_path
diff --git a/www/board/agenda/views/buttons/post.js.rb
b/www/board/agenda/views/buttons/post.js.rb
index fd365d6..1fa8b81 100644
--- a/www/board/agenda/views/buttons/post.js.rb
+++ b/www/board/agenda/views/buttons/post.js.rb
@@ -30,39 +30,39 @@ class Post < Vue
_ModalDialog.wide_form.post_report_form! color: 'commented' do
if @button == 'add item'
_h4 'Select Item Type'
-
+
_ul.new_item_type do
_li do
_button.btn.btn_primary 'Change Chair', onClick: selectItem
_ '- change chair for an existing PMC'
end
-
+
_li do
_button.btn.btn_primary 'Establish Project', onClick: selectItem
_ '- direct to TLP project and subproject to TLP'
end
-
+
_li do
_button.btn.btn_primary 'Terminate Project', onClick: selectItem
_ '- move a project to the attic'
end
-
+
_li do
_button.btn.btn_primary 'New Resolution', onClick: selectItem
_ '- free form entry of a new resolution'
end
-
+
_li do
_button.btn.btn_info 'Out of Cycle Report', onClick: selectItem
_ '- report from a PMC not currently on the agenda for this month'
end
-
+
_li do
_button.btn.btn_success 'Discussion Item', onClick: selectItem
_ '- add a discussion item to the agenda'
end
end
-
+
_button.btn_default 'Cancel', data_dismiss: 'modal'
elsif @button == 'Change Chair'
diff --git a/www/board/agenda/views/buttons/publish-minutes.js.rb
b/www/board/agenda/views/buttons/publish-minutes.js.rb
index f2cc153..519aa57 100644
--- a/www/board/agenda/views/buttons/publish-minutes.js.rb
+++ b/www/board/agenda/views/buttons/publish-minutes.js.rb
@@ -40,7 +40,7 @@ class PublishMinutes < Vue
# Minutes from previous meetings section of the agenda
date = @@item.text[/board_minutes_(\d+_\d+_\d+)\.txt/, 1]
url = document.baseURI.sub(/[-\d]+\/$/, date.gsub('_', '-')) + '.json'
-
+
retrieve url, :json do |agenda|
self.summarize agenda, date
end
diff --git a/www/board/agenda/views/layout/footer.js.rb
b/www/board/agenda/views/layout/footer.js.rb
index 622e871..a2c8b6f 100644
--- a/www/board/agenda/views/layout/footer.js.rb
+++ b/www/board/agenda/views/layout/footer.js.rb
@@ -10,7 +10,7 @@
class Footer < Vue
def render
-
+
meeting_day = Minutes.started || Agenda.meeting_day
_footer.navbar.navbar_fixed_bottom class: @@item.color do
diff --git a/www/board/agenda/views/layout/main.js.rb
b/www/board/agenda/views/layout/main.js.rb
index 189b147..79490c3 100644
--- a/www/board/agenda/views/layout/main.js.rb
+++ b/www/board/agenda/views/layout/main.js.rb
@@ -179,7 +179,7 @@ class Main < Vue
# start Service Worker
PageCache.register() if PageCache.enabled
-
+
# start backchannel
Events.monitor()
end
diff --git a/www/board/agenda/views/models/agenda.js.rb
b/www/board/agenda/views/models/agenda.js.rb
index 8051d1f..0702035 100644
--- a/www/board/agenda/views/models/agenda.js.rb
+++ b/www/board/agenda/views/models/agenda.js.rb
@@ -281,7 +281,7 @@ class Agenda
end
end
end
-
+
@@approved = 'tabled'
end
diff --git a/www/board/agenda/views/models/chat.js.rb
b/www/board/agenda/views/models/chat.js.rb
index de604de..416ea97 100644
--- a/www/board/agenda/views/models/chat.js.rb
+++ b/www/board/agenda/views/models/chat.js.rb
@@ -22,7 +22,7 @@ class Chat
# synchonize chat logs
if defined? BroadcastChannel
channel = BroadcastChannel.new('chatsync')
-
+
# ask if there are any earlier data
channel.postMessage type: 'query', start: @@start
diff --git a/www/board/agenda/views/pages/adjournment.js.rb
b/www/board/agenda/views/pages/adjournment.js.rb
index a4c84cc..831832b 100644
--- a/www/board/agenda/views/pages/adjournment.js.rb
+++ b/www/board/agenda/views/pages/adjournment.js.rb
@@ -194,7 +194,7 @@ class PMCActions < Vue
Todos[todo_type].each do |todo|
if todo.resolution == item.title
minutes = Minutes.get(item.title)
-
+
resolution = {
action: todo_type,
name: todo.name,
diff --git a/www/board/agenda/views/pages/fy23.js.rb
b/www/board/agenda/views/pages/fy23.js.rb
index 2c3f97a..46b4bc7 100644
--- a/www/board/agenda/views/pages/fy23.js.rb
+++ b/www/board/agenda/views/pages/fy23.js.rb
@@ -303,7 +303,7 @@ class FY23 < Vue
# = 5*Fy18 + 3*(FY23-FY18)
# = 5*Fy18 + 3*FY23 - 3 * FY18
# = 2*Fy18 + 3*FY23
-
+
2*100 +
# EA adjustment: instead of ramping down, the
# reduction in expense is immediate and constant.
diff --git a/www/board/agenda/views/pages/report.js.rb
b/www/board/agenda/views/pages/report.js.rb
index aea8c17..64450a9 100644
--- a/www/board/agenda/views/pages/report.js.rb
+++ b/www/board/agenda/views/pages/report.js.rb
@@ -321,7 +321,7 @@ class Report < Vue
return text
end
-
+
# expand president's attachments
def president_attachments(text)
match = text.match(/Additionally, please see Attachments (\d) through
(\d)/)
diff --git a/www/board/agenda/views/pages/secrets.js.rb
b/www/board/agenda/views/pages/secrets.js.rb
index 50f8ed6..1a23671 100644
--- a/www/board/agenda/views/pages/secrets.js.rb
+++ b/www/board/agenda/views/pages/secrets.js.rb
@@ -39,7 +39,7 @@ class InsiderSecrets < Vue
enough to jog your memory? Click on the date link for this action item
to see the report for that month.
) }
-
+
_li { _p {
_ %q(
Need to see Whimsy server status, or get debugging info to help
diff --git a/www/board/calendar.cgi b/www/board/calendar.cgi
index 2e83e7e..36552c9 100755
--- a/www/board/calendar.cgi
+++ b/www/board/calendar.cgi
@@ -50,14 +50,14 @@ _html do
Future meeting times, presuming that the time of the meeting is
set to #{@time} #{@zone}, rotating each meeting time by #{rotate} hours.
}
-
+
if rotate == 0
_p.bg_danger %{
This background color indicate a local time change from the previous
month.
}
end
-
+
_table.table do
_thead do
_tr do
diff --git a/www/brand/list.cgi b/www/brand/list.cgi
index 5bc18fd..53ce523 100755
--- a/www/brand/list.cgi
+++ b/www/brand/list.cgi
@@ -51,7 +51,7 @@ def csv2json
end
end
end
-
+
docket
end
diff --git a/www/brand/replyedit.cgi b/www/brand/replyedit.cgi
index c0140b4..eb941d7 100755
--- a/www/brand/replyedit.cgi
+++ b/www/brand/replyedit.cgi
@@ -50,7 +50,7 @@ _html do
end
end
end
-
+
_h3 'Edit Your Reply'
_hr
_p 'Dear user, thank you for respecting Apache Brands. Blah blah, foo
bar, blah (this is boilerplate content) '
diff --git a/www/brand/replylist.cgi b/www/brand/replylist.cgi
index 5f305cc..fb8b7cd 100755
--- a/www/brand/replylist.cgi
+++ b/www/brand/replylist.cgi
@@ -110,7 +110,7 @@ _html do
end
end
end
-
+
_script %{
var table = $(".table").stupidtable();
table.on("aftertablesort", function (event, data) {
diff --git a/www/brand/replyui.cgi b/www/brand/replyui.cgi
index 55a0b5e..2d9a466 100755
--- a/www/brand/replyui.cgi
+++ b/www/brand/replyui.cgi
@@ -50,10 +50,10 @@ _html do
end
end
end
-
+
_h3 'Choose A Reply to edit and send for this question'
_p 'This could be a choicelist or similar to select from avaialble
Replies'
-
+
_ul do
_li do
_ 'BOOK | Point to FAQ about published books, magazines, etc.'
diff --git a/www/committers/index.cgi b/www/committers/index.cgi
index d49c2ea..ab9ef5a 100755
--- a/www/committers/index.cgi
+++ b/www/committers/index.cgi
@@ -43,7 +43,7 @@ _html do
meeting: '/committers/tools#meeting'
}
) do
-
+
_h2 "Useful Committer-only Tools (require login)"
_ul do
MISC.each do |url, desc|
diff --git a/www/committers/subscribe.cgi b/www/committers/subscribe.cgi
index 3f69eb6..99a9785 100755
--- a/www/committers/subscribe.cgi
+++ b/www/committers/subscribe.cgi
@@ -104,7 +104,7 @@ _html do
end
}
) do
-
+
_form method: 'post' do
_input type: 'hidden', name: 'request', value: 'sub'
_fieldset do
@@ -212,10 +212,10 @@ _html do
_p 'Both email and list to subscribe to are required!'
break
end
-
+
# Each user can only subscribe once to each list in each timeslot
fn = "#{$USER}-#{@list}.json".untaint
-
+
vars = {
version: FORMAT_NUMBER,
availid: $USER,
@@ -236,10 +236,10 @@ _html do
_pre request
end
-
+
SUBREQ = ASF::SVN.svnpath!('subreq')
SUBREQ.sub! '/subreq', '/unsubreq' if @request == 'unsub'
-
+
rc = 999
Dir.mktmpdir do |tmpdir|
@@ -265,18 +265,18 @@ _html do
File.write(fn, request + "\n")
ASF::SVN.svn('add', fn)
end
-
+
if @request != 'unsub'
message = "#{@list} += #{$USER}"
else
message = "#{@list} -= #{$USER}"
end
-
+
options = credentials.merge({msg: message})
rc = ASF::SVN.svn_('commit', fn, _, options)
end
end
-
+
if rc == 0
_div.alert.alert_success role: 'alert' do
_p do
diff --git a/www/committers/tm-report.cgi b/www/committers/tm-report.cgi
index c66e19f..9e905a0 100755
--- a/www/committers/tm-report.cgi
+++ b/www/committers/tm-report.cgi
@@ -155,7 +155,7 @@ def emit_form()
end
end
end
-
+
emit_input(label: 'Description of misuse - why you believe this is
improper', name: 'description', required: true,
rows: 3, icon: 'glyphicon-question-sign', iconlink:
'https://www.apache.org/foundation/marks/resources',
helptext: "Briefly describe in your own words why this use doesn't
give proper credit to the Apache project")
@@ -198,12 +198,12 @@ def send_form(formdata: {})
pmc_list = ASF::Committee.find(formdata['project']).mail_list
cc_list = ["private@#{pmc_list}.apache.org".untaint, frm]
to_list = BRANDLIST.untaint
-
+
if true # TESTING mode
to_list = "[email protected]"
cc_list = ''
end # TESTING mode
-
+
ASF::Mail.configure
mail = Mail.new do
from frm
@@ -219,7 +219,7 @@ def send_form(formdata: {})
rescue Exception => e
formdata['errors'] = "Bogosity! mail.deliver raised: #{e.message[0..255]}"
end
-
+
# Tell user what we did
_div.well.well_lg do
_div.bg_danger "BETA - THIS FORM IS NOT COMPLETE YET - DEBUGGING -
formdata we would have mailed out"
diff --git a/www/events/other.cgi b/www/events/other.cgi
index 063542a..f06a816 100755
--- a/www/events/other.cgi
+++ b/www/events/other.cgi
@@ -39,7 +39,7 @@ counts = cols.keys.map do |field|
matches = conflist.select do |conf|
conf[SPEAKERKIT] && conf[SPEAKERKIT][field]
end
-
+
[field, matches.count]
end
counts = counts.to_h
@@ -108,7 +108,7 @@ _html do
end
end
end
-
+
_script %{
var table = $(".table").stupidtable();
table.on("aftertablesort", function (event, data) {
diff --git a/www/fundraising/invoice.cgi b/www/fundraising/invoice.cgi
index 3430188..d11188c 100755
--- a/www/fundraising/invoice.cgi
+++ b/www/fundraising/invoice.cgi
@@ -248,7 +248,7 @@ _html do
}
}
}
-
+
// Turn it into a $ figure with commas
// TODO Support other currencies
total = total.toFixed(2);
@@ -414,7 +414,7 @@ _html do
end
_p
-
+
_table_ style: "margin-left: auto" do
_tbody do
_tr do
diff --git a/www/incubator/graduated.cgi b/www/incubator/graduated.cgi
index 0b8937d..6e0641d 100755
--- a/www/incubator/graduated.cgi
+++ b/www/incubator/graduated.cgi
@@ -190,7 +190,7 @@ _html do
end
end
end
-
+
end
end
end
diff --git a/www/incubator/signoff.cgi b/www/incubator/signoff.cgi
index 8f8571d..0fad816 100755
--- a/www/incubator/signoff.cgi
+++ b/www/incubator/signoff.cgi
@@ -24,7 +24,7 @@ def get_mentor_signoffs()
ASF::Person.preload('cn')
ASF::ICLA.preload()
people = Hash[ASF::Person.list.map {|person| [person.public_name,
person.id]}]
-
+
agendas = Dir[File.join(BOARD, 'board_agenda_*.txt'),
File.join(BOARD, 'archived_agendas', 'board_agenda_*.txt')]
agendas = agendas.sort_by {|file| File.basename(file)}[-13..-1]
@@ -33,7 +33,7 @@ def get_mentor_signoffs()
else
agendas.pop
end
-
+
# projects = URI.parse('http://incubator.apache.org/projects/')
# table = Nokogiri::HTML(Net::HTTP.get(projects)).at('table')
# # extract a list of [podling names, table row]
@@ -42,7 +42,7 @@ def get_mentor_signoffs()
# next if tds.empty?
# [tds.last.text, tr]
# end
-
+
mentors = {}
podlings = {}
agendas.each do |file|
@@ -55,14 +55,14 @@ def get_mentor_signoffs()
# allow for reports where comments have been joined to the previous line
name.sub! %r{ Comments:.*}, ''
name.sub! /\s+\(.*?\)/, ''
-
+
mentors[name] = [] unless mentors[name]
mentors[name] << {
date: date,
checked: !check.strip.empty?,
podling: podling
}
-
+
podlings[podling] = Hash.new{|h,k| h[k] = [] } unless podlings[podling]
podlings[podling][date] << [name, !check.strip.empty?]
end
@@ -102,7 +102,7 @@ _html do
end
}
) do
-
+
_whimsy_panel_table(
title: "Podling Signoffs By Mentor",
helpblock: -> {
@@ -145,7 +145,7 @@ _html do
end
end
end
-
+
_whimsy_panel_table(
title: "Podling Signoffs By Podling",
helpblock: -> {
@@ -182,6 +182,6 @@ _html do
end
end
end
-
+
end
end
diff --git a/www/members/archivers.cgi b/www/members/archivers.cgi
index a03d657..1ff757b 100755
--- a/www/members/archivers.cgi
+++ b/www/members/archivers.cgi
@@ -76,7 +76,7 @@ _html do
end
}
) do
-
+
_table.table do
_tr do
_th 'id', data_sort: 'string'
@@ -114,7 +114,7 @@ _html do
mino = 'Missing'
options[:mino]={class: 'warning'}
end
-
+
mbox = arcs.select{|e| e[1] == :MBOX}.map{|e| e[2]}.uniq.join('')
next if mbox == 'restricted' # Don't show these
@@ -143,7 +143,7 @@ _html do
mail_archive = 'Missing'
options[:mail_archive] = {class: 'warning'}
end
-
+
markmail = arcs.select{|e| e[1] == :MARKMAIL}.map{|e|
e[2]}.uniq.join('')
if ! markmail.empty?
options[:markmail] = {class: 'danger'} if pubprv && markmail !=
pubprv
@@ -153,7 +153,7 @@ _html do
markmail = 'Missing'
options[:markmail] = {class: 'warning'}
end
-
+
# must be done last as it changes pubprv
unless pubprv
pubprv = 'Not listed in bin/.archives'
@@ -174,7 +174,7 @@ _html do
_ '@'
_ dom
end
-
+
_td pubprv, options[:pubprv]
_td mino, options[:mino]
_td mbox, options[:mbox]
diff --git a/www/members/attendance-xcheck.cgi
b/www/members/attendance-xcheck.cgi
index 7d8c647..ea1ffb4 100755
--- a/www/members/attendance-xcheck.cgi
+++ b/www/members/attendance-xcheck.cgi
@@ -51,7 +51,7 @@ _html do
_li name
end
end
-
+
_h2_ 'Listed in members.txt but not listed as attending a members meeting.'
_table do
_thead do
diff --git a/www/members/inactive.cgi b/www/members/inactive.cgi
index 7d5a0ab..e4f936f 100755
--- a/www/members/inactive.cgi
+++ b/www/members/inactive.cgi
@@ -126,7 +126,7 @@ _html do
end
end
end
-
+
_div.status do
_form method: 'post' do
_p %{
diff --git a/www/members/index.cgi b/www/members/index.cgi
index 1e08a2e..a19a1b5 100755
--- a/www/members/index.cgi
+++ b/www/members/index.cgi
@@ -62,7 +62,7 @@ _html do
meeting: '/committers/tools#meeting'
}
) do
-
+
_h2 "Tools related to Member's Meetings (Nominations, Voting, Proxy,
etc.)"
_ul do
MEETING.each do |url, desc|
diff --git a/www/members/meeting-util.rb b/www/members/meeting-util.rb
index e0996d1..b4f2f11 100644
--- a/www/members/meeting-util.rb
+++ b/www/members/meeting-util.rb
@@ -38,13 +38,13 @@ class MeetingUtil
end
return num_members, quorum_need, num_proxies, attend_irc
end
-
+
# get list of proxy volunteers
def self.getVolunteers(mtg_dir)
lines = IO.read(File.join(mtg_dir, 'proxies'))
# split by ---- underlines, then by blank lines; pick second para and drop
leading spaces
volunteers = lines.split(/^-----------/)[1].split(/\n\n/)[1].scan(/^\
+(\S.*$)/).flatten
-
+
end
# Get info about current users's proxying
# @return "help text", ["id | name (proxy)", ...] if they are a proxy for
other(s)
@@ -75,7 +75,7 @@ class MeetingUtil
return help, copypasta
end
end
-
+
# Get the latest available Meetings dir
def self.get_latest(mtg_root)
return Dir[File.join(mtg_root, '2*')].sort.last
diff --git a/www/members/meeting.cgi b/www/members/meeting.cgi
index ad08a51..458b4b3 100755
--- a/www/members/meeting.cgi
+++ b/www/members/meeting.cgi
@@ -178,7 +178,7 @@ _html do
end
end
end
-
+
_div id: 'seconds'
_whimsy_panel("Timeline: Seconds Period (last ten days before meeting)",
style: 'panel-default') do
_p do
@@ -197,7 +197,7 @@ _html do
end
end
end
-
+
_div id: 'firsthalf'
_whimsy_panel("Timeline: First Half Of Meeting on IRC (at
#{m1_date.strftime(DTFORMAT)})", style: 'panel-primary') do
_p do
@@ -231,7 +231,7 @@ _html do
end
end
end
-
+
_div id: 'recess'
_whimsy_panel("Timeline: Meeting Recess - Time To Vote Via Email (approx
40+ hours)", style: 'panel-info') do
_p do
@@ -251,7 +251,7 @@ _html do
end
end
end
-
+
_div id: 'secondhalf'
_whimsy_panel("Timeline: Second Half Of Meeting (at
#{m2_date.strftime(DTFORMAT)})", style: 'panel-primary') do
_p do
@@ -274,7 +274,7 @@ _html do
end
end
end
-
+
_div id: 'after'
_whimsy_panel("Timeline: After This Year's Meeting", style:
'panel-default') do
_p do
@@ -293,10 +293,10 @@ _html do
_ ' to formally invite the new member to fill out the application
form. Applications must be signed and submitted to the secretary within 30
days of the meeting to be valid.'
end
end
-
+
# Most/all of these links should already be included above
emit_meeting(cur_mtg_dir, svn_mtg_dir, m1_date, num_members,
quorum_need, num_proxies, attend_irc)
-
+
_div id: 'meeting-history'
_whimsy_panel("Member Meeting History", style: 'panel-info') do
all_mtg = Dir[File.join(MEETINGS, '19*'), File.join(MEETINGS,
'2*')].sort
diff --git a/www/members/memberless-pmcs.cgi b/www/members/memberless-pmcs.cgi
index ca449b9..38b631f 100755
--- a/www/members/memberless-pmcs.cgi
+++ b/www/members/memberless-pmcs.cgi
@@ -65,7 +65,7 @@ _html do
end
end
end
-
+
_script %{
var table = $(".table").stupidtable();
table.on("aftertablesort", function (event, data) {
diff --git a/www/members/mentor-update.cgi b/www/members/mentor-update.cgi
index df43358..3b50bc7 100755
--- a/www/members/mentor-update.cgi
+++ b/www/members/mentor-update.cgi
@@ -32,7 +32,7 @@ def emit_form(apacheid, mdata, button_help, uimap)
_p.text_error mdata[MentorFormat::ERRORS]
end
end
-
+
_div.form_group do
_label.col_sm_offset_3.col_sm_9.strong.text_left 'How Mentees Should
Work With You'
end
@@ -59,14 +59,14 @@ def emit_form(apacheid, mdata, button_help, uimap)
icon: 'glyphicon-globe', iconlabel: 'globe',
helptext: uimap[field][1]
)
-
+
_div.form_group do
_label.col_sm_offset_3.col_sm_9.strong.text_left 'What You Could Help
Mentees With'
end
emit_mentor_input('experience', mdata, uimap, 'glyphicon-certificate')
emit_mentor_input('available', mdata, uimap, 'glyphicon-plus-sign')
emit_mentor_input('mentoring', mdata, uimap, 'glyphicon-minus-sign')
-
+
_div.form_group do
_label.col_sm_offset_3.col_sm_9.strong.text_left 'More About You
Personally'
end
@@ -77,7 +77,7 @@ def emit_form(apacheid, mdata, button_help, uimap)
icon: 'glyphicon-info-sign', value: (mdata[field] ? mdata[field] : ''),
helptext: uimap[field][1]
)
-
+
_div.form_group do
_label.col_sm_offset_3.col_sm_9.strong.text_left 'Temporarily Opt Out
From Any NEW Mentees'
_label.control_label.col_sm_3 'Not Accepting New Mentees', for:
"#{MentorFormat::NOTAVAILABLE}"
@@ -94,7 +94,7 @@ def emit_form(apacheid, mdata, button_help, uimap)
end
end
end
-
+
_div.col_sm_offset_3.col_sm_9 do
_span.text_info button_help
_br
@@ -123,7 +123,7 @@ def send_form(formdata: {})
_p.lead "Updating your mentor record #{fn} to be:"
_pre mentor_update
end
-
+
Dir.mktmpdir do |tmpdir|
credentials = {user: $USER, password: $PASSWORD}
# TODO: investigate if we should to --depth empty and attempt to get only
that mentor's file
@@ -141,7 +141,7 @@ def send_form(formdata: {})
rc = ASF::SVN.svn_('commit', fn, _, {msg: message}.merge(credentials)]
end
end
-
+
if rc == 0
_div.alert.alert_success role: 'alert' do
_p do
diff --git a/www/members/namediff.cgi b/www/members/namediff.cgi
index 2620506..d2c663f 100755
--- a/www/members/namediff.cgi
+++ b/www/members/namediff.cgi
@@ -25,7 +25,7 @@ _html do
ASF::ICLA.preload
ldap_members = ASF::Member.list.map {|id, info| ASF::Person.find(id)}
ASF::Person.preload('cn', ldap_members)
-
+
_table.table.table_hover do
_thead do
_tr do
@@ -39,10 +39,10 @@ _html do
end
end
end
-
+
ASF::Member.list.sort.each do |id, info|
person = ASF::Person.find(id)
-
+
if person.icla
next if person.icla.name == info[:name]
next if person.icla.legal_name == info[:name]
@@ -65,7 +65,7 @@ _html do
end
end
end
-
+
_script %{
var table = $(".table").stupidtable();
table.on("aftertablesort", function (event, data) {
diff --git a/www/members/nominations.cgi b/www/members/nominations.cgi
index 96fd18b..7f27df6 100755
--- a/www/members/nominations.cgi
+++ b/www/members/nominations.cgi
@@ -49,7 +49,7 @@ def setup_data(cur_mtg_dir)
# preload names
people = ASF::Person.preload('cn',
nominations.map {|nominee| ASF::Person.find(nominee[:id])})
-
+
return nominations, people, emails
end
diff --git a/www/members/non-participants.cgi b/www/members/non-participants.cgi
index 2de3aaf..835e92f 100755
--- a/www/members/non-participants.cgi
+++ b/www/members/non-participants.cgi
@@ -35,7 +35,7 @@ def get_attend_matrices(dir)
data = meetings.sort.reverse.map(&:last)
first = data.length
missed = (data.index {|datum| datum != '-'} || data.length)
-
+
[id, name, first, missed]
end
return attendance, matrix, dates, nameMap
@@ -86,10 +86,10 @@ _html do
_th 'Last participated', data_sort: 'string'
end
end
-
+
matrix.each do |id, name, first, missed|
next unless id
-
+
if missed >= @meetingsMissed
_tr_ do
_td! {_a nameMap[id], href: "#{ROSTER}/#{id}"}
@@ -104,9 +104,9 @@ _html do
end
end
end
-
+
_div.count "Count: #{count} members inactive for #{@meetingsMissed}
meetings."
-
+
_script %{
var table = $(".table").stupidtable();
table.on("aftertablesort", function (event, data) {
@@ -120,14 +120,14 @@ _html do
end
end
end
-
+
_json do
meetingsMissed = (@meetingsMissed || 3).to_i
attendance, matrix, dates, nameMap = get_attend_matrices(MEETINGS)
inactive = matrix.select do |id, name, first, missed|
id and missed >= meetingsMissed
end
-
+
Hash[inactive.map {|id, name, first, missed|
[id, {name: name, missed: missed, status: 'no response yet'}]
}]
diff --git a/www/members/proxy.cgi b/www/members/proxy.cgi
index 3bc89df..0e26259 100755
--- a/www/members/proxy.cgi
+++ b/www/members/proxy.cgi
@@ -80,7 +80,7 @@ def emit_form(cur_mtg_dir, meeting, volunteers)
end
end
end
-
+
if user_is_proxy
_p.text_warning %{
NOTE: you are proxying for other members, so you cannot assign
@@ -94,14 +94,14 @@ def emit_form(cur_mtg_dir, meeting, volunteers)
_form method: 'POST' do
_div.form_group do
_label 'Select proxy'
-
+
# Fetch LDAP
ldap_members = ASF.members
ASF::Person.preload('cn', ldap_members)
-
+
# Fetch members.txt
members_txt = ASF::Member.list
-
+
# get a list of members who have submitted proxies
exclude = Dir[File.join(cur_mtg_dir,'proxies-received', '*')].
map {|name| name[/(\w+)\.\w+$/, 1]}
@@ -132,18 +132,18 @@ def emit_form(cur_mtg_dir, meeting, volunteers)
end
end
end
-
+
## _script src: "js/jquery-1.11.1.min.js"
## _script src: "js/bootstrap.min.js"
_script src: "js/bootstrap-combobox.js" # TODO do we need this still?
-
+
_script_ %{
// convert select into combobox
$('.combobox').combobox();
-
+
// initially disable submit
$('.btn').prop('disabled', true);
-
+
// enable submit when proxy is chosen
$('*[name="proxy"]').change(function() {
$('.btn').prop('disabled', false);
@@ -193,7 +193,7 @@ def emit_post(cur_mtg_dir, meeting, _)
# get a list of proxies
list = Dir['proxies-received/*.txt'].map do |file|
form = File.read(file.untaint)
-
+
id = file[/([-A-Za-z0-9]+)\.\w+$/, 1]
proxy = form[/hereby authorize ([\S].*) to act/, 1].
gsub('_', ' ').strip
@@ -234,7 +234,7 @@ def emit_post(cur_mtg_dir, meeting, _)
end
end
end
-
+
# Report on contents now that they're checked in
_h3! do
_span "Contents of "
diff --git a/www/members/repo-use.cgi b/www/members/repo-use.cgi
index 50ab893..4bf12a7 100755
--- a/www/members/repo-use.cgi
+++ b/www/members/repo-use.cgi
@@ -31,7 +31,7 @@ _html do
priv = build_regexp(priv)
pub = build_regexp(pub)
scan = scan_dir_svn('../../', [priv, pub])
-
+
_whimsy_panel_table(title: 'Repo use by script') do
_table.table.table_hover do
_thead_ do
@@ -94,7 +94,7 @@ _html do
end
end
end
-
+
end
end
end
\ No newline at end of file
diff --git a/www/members/security-subs.cgi b/www/members/security-subs.cgi
index 37cf3a2..6c9b33b 100755
--- a/www/members/security-subs.cgi
+++ b/www/members/security-subs.cgi
@@ -112,7 +112,7 @@ _html do
[email, {person: person , color: color, name: name}]
end
].sort_by {|k,v| [order.index(v[:color]),v[:name]]}
-
+
_table do
_tr do
_th 'Count '
diff --git a/www/members/watch.cgi b/www/members/watch.cgi
index bea018e..1ca30a0 100755
--- a/www/members/watch.cgi
+++ b/www/members/watch.cgi
@@ -42,7 +42,7 @@ _html do
# determine which list to report on, based on the URI
request = ENV['REQUEST_URI']
-
+
_div.row do
_div.col_sm10 do
_div.panel.panel_primary do
@@ -60,7 +60,7 @@ _html do
end
end
end
-
+
_li do
_a 'Potential Member Watch List', href: 'members/watch'
end
@@ -97,7 +97,7 @@ _html do
end
end
end
-
+
list = {} # Avoid lint errors of shadowing
if request =~ /multiple/
_h2_ 'Active In Multiple Committees'
@@ -150,7 +150,7 @@ _html do
else
_th 'Nominated?'
end
-
+
_th 'AvailID', data_sort: 'string'
_th 'Name', data_sort: 'string'
@@ -221,7 +221,7 @@ _html do
# public name
_td person.public_name
-
+
if request !~ /appstatus/
# committees
@@ -236,7 +236,7 @@ _html do
end
end
end
-
+
# chair since
chair = person.committees.find {|committee| committee.chair ==
person}
if chair
@@ -244,7 +244,7 @@ _html do
File.basename(name).split('.').first.downcase.gsub(/[_\W]/,'') ==
"#{chair.name.gsub(/\W/,'')}"
end
-
+
search_string = "RESOLVED, that #{person.public_name}"
search_string.force_encoding('utf-8')
@@ -262,7 +262,7 @@ _html do
end
end
end
-
+
date = 'unknown'
if minutes
minutes = 'board/minutes/' + File.basename(minutes)
diff --git a/www/officers/acreq.cgi b/www/officers/acreq.cgi
index 3c252de..f74ba58 100755
--- a/www/officers/acreq.cgi
+++ b/www/officers/acreq.cgi
@@ -144,7 +144,7 @@ _html do
}
}
) do
-
+
_div.row do
_div.col_md_8 do
# Display the data input form for an account request
@@ -224,7 +224,7 @@ _html do
_textarea.form_control name: "comments", id: "comments"
end
end
-
+
_div.form_group do
_div.col_sm_offset_2.col_sm_1 do
_input.btn.btn_default type: "submit", value: "Submit"
diff --git a/www/officers/index.cgi b/www/officers/index.cgi
index 7ba36f0..76ef4bd 100755
--- a/www/officers/index.cgi
+++ b/www/officers/index.cgi
@@ -43,7 +43,7 @@ _html do
end
}
) do
-
+
_h2 "Tools Useful For ASF Officers"
_ul do
OFFICERS.each do |url, desc|
diff --git a/www/officers/surveys.cgi b/www/officers/surveys.cgi
index 647258d..096ca71 100755
--- a/www/officers/surveys.cgi
+++ b/www/officers/surveys.cgi
@@ -81,7 +81,7 @@ def display_survey(survey_layout)
display_alert(lead: 'Warning: could not find survey datafile!', body:
"**#{__method__}(#{survey_file})** the data file to store survey answers was
not supplied or found; contact the survey owner:
#{survey_layout[SURVEY][CONTACT]}.")
warning = true
end
-
+
# Emit the survey, or the default one which provides help on the survey tool
_whimsy_panel("#{survey_layout[SURVEY][FORM][:title]} (user: #{$USER})",
style: 'panel-success') do
_form.form_horizontal method: 'post' do
@@ -119,7 +119,7 @@ def submit_survey(formdata: {})
Dir.mktmpdir do |tmpdir|
tmpdir.untaint
ASF::SVN.svn_('checkout',[get_survey_root(), tmpdir],_,{depth: 'files',
user: $USER, password: $PASSWORD})
-
+
survey_data = JSON.parse(File.read(filename), :symbolize_names => true)
# Add user data (may overwrite existing entry!)
survey_data[$USER] = formdata
diff --git a/www/pods.cgi b/www/pods.cgi
index 7abb0c2..ce2a910 100755
--- a/www/pods.cgi
+++ b/www/pods.cgi
@@ -81,7 +81,7 @@ _html do
# Encapsulate data display (same for projects and podlings)
display_application(path_info, sites, analysis, checks_performed,
cgi_for_tlps)
end
-
+
_script %{
var table = $(".table").stupidtable();
table.on("aftertablesort", function (event, data) {
diff --git a/www/roster/models/committee.rb b/www/roster/models/committee.rb
index 91afff2..4855a20 100644
--- a/www/roster/models/committee.rb
+++ b/www/roster/models/committee.rb
@@ -195,12 +195,12 @@ class Committee
def self.load_emails
# recompute index if the data is 5 minutes old or older
@people = nil if not @people_time or Time.now-@people_time >= 300
-
+
if not @people
# bulk loading the mail information makes things go faster
mail = Hash[ASF::Mail.list.group_by(&:last).
map {|person, list| [person, list.map(&:first)]}]
-
+
# build a list of people, their public-names, and email addresses
@people = ASF::Person.list.map {|person|
result = {id: person.id, name: person.public_name, mail: mail[person]}
diff --git a/www/roster/models/nonpmc.rb b/www/roster/models/nonpmc.rb
index e0891bb..718a4cc 100644
--- a/www/roster/models/nonpmc.rb
+++ b/www/roster/models/nonpmc.rb
@@ -181,12 +181,12 @@ class NonPMC
def self.load_emails
# recompute index if the data is 5 minutes old or older
@people = nil if not @people_time or Time.now-@people_time >= 300
-
+
if not @people
# bulk loading the mail information makes things go faster
mail = Hash[ASF::Mail.list.group_by(&:last).
map {|person, list| [person, list.map(&:first)]}]
-
+
# build a list of people, their public-names, and email addresses
@people = ASF::Person.list.map {|person|
result = {id: person.id, name: person.public_name, mail: mail[person]}
diff --git a/www/roster/models/orgchart.rb b/www/roster/models/orgchart.rb
index 32416c2..8e9867b 100644
--- a/www/roster/models/orgchart.rb
+++ b/www/roster/models/orgchart.rb
@@ -32,7 +32,7 @@ class OrgChart
self.load
@@duties[name]
end
-
+
def self.desc
self.load
@@desc
diff --git a/www/roster/models/ppmc.rb b/www/roster/models/ppmc.rb
index fc65304..6c35725 100644
--- a/www/roster/models/ppmc.rb
+++ b/www/roster/models/ppmc.rb
@@ -167,12 +167,12 @@ class PPMC
def self.load_emails
# recompute index if the data is 5 minutes old or older
@people = nil if not @people_time or Time.now-@people_time >= 300
-
+
if not @people
# bulk loading the mail information makes things go faster
mail = Hash[ASF::Mail.list.group_by(&:last).
map {|person, list| [person, list.map(&:first)]}]
-
+
# build a list of people, their public-names, and email addresses
@people = ASF::Person.list.map {|person|
result = {id: person.id, name: person.public_name, mail: mail[person]}
diff --git a/www/roster/public_committee_info.rb
b/www/roster/public_committee_info.rb
index 337b60f..03813d6 100644
--- a/www/roster/public_committee_info.rb
+++ b/www/roster/public_committee_info.rb
@@ -139,5 +139,5 @@ if changed? and @old_file
Wunderbar.info "Deleted PMC detected: #{pmc}"
end
}
-
+
end
diff --git a/www/roster/public_icla_info.rb b/www/roster/public_icla_info.rb
index cfc6af5..7fffde5 100644
--- a/www/roster/public_icla_info.rb
+++ b/www/roster/public_icla_info.rb
@@ -22,7 +22,7 @@ if ARGV.length == 2
committers: Hash[ids.sort]
}
public_json_output_file(info_id, ARGV.shift)
-
+
info_noid = {
last_updated: ASF::ICLA.svn_change,
non_committers: noid
diff --git a/www/roster/public_json_common.rb b/www/roster/public_json_common.rb
index ff4de5c..f70197c 100644
--- a/www/roster/public_json_common.rb
+++ b/www/roster/public_json_common.rb
@@ -151,12 +151,12 @@ def write_output(file, results)
Wunderbar.warn "Got exception #{e}"
end
end
-
+
# replace file as contents have changed
File.write(file, results + "\n")
else
-
+
Wunderbar.info "git_info: #{GITINFO} - no change to #{file}"
@changed = ChangeStatus::UNCHANGED
diff --git a/www/roster/views/actions/fullname.json.rb
b/www/roster/views/actions/fullname.json.rb
index 7459780..ca03486 100644
--- a/www/roster/views/actions/fullname.json.rb
+++ b/www/roster/views/actions/fullname.json.rb
@@ -72,7 +72,7 @@ if message
userid = Regexp.escape(@userid)
text[/^#{userid}:(.*?):/, 1] = @legalname
text[/^#{userid}:.*?:(.*?):/, 1] = @publicname
-
+
text
end
end
diff --git a/www/roster/views/committees.html.rb
b/www/roster/views/committees.html.rb
index 1f743d4..900590a 100644
--- a/www/roster/views/committees.html.rb
+++ b/www/roster/views/committees.html.rb
@@ -67,11 +67,11 @@ _html do
_td do
_a pmc.display_name, href: "committee/#{pmc.name}"
end
-
+
_td do
pmc.chairs.each_with_index do |chair, index|
_span ', ' unless index == 0
-
+
if @members.include? chair[:id]
_b! {_a chair[:name], href: "committer/#{chair[:id]}"}
else
@@ -79,7 +79,7 @@ _html do
end
end
end
-
+
if not pmc.established
_td ''
_td.issue 'Not in committee-info.txt'
diff --git a/www/roster/views/committerSearch.js.rb
b/www/roster/views/committerSearch.js.rb
index b23639a..8640f8f 100644
--- a/www/roster/views/committerSearch.js.rb
+++ b/www/roster/views/committerSearch.js.rb
@@ -80,7 +80,7 @@ class CommitterSearch < Vue
end
end
end
-
+
if @search.length
if not @ready
_p 'loading...'
diff --git a/www/roster/views/duties.html.rb b/www/roster/views/duties.html.rb
index c624d99..dc615e1 100644
--- a/www/roster/views/duties.html.rb
+++ b/www/roster/views/duties.html.rb
@@ -117,7 +117,7 @@ _html do
end
end
end
-
+
# ********************************************************************
# * Source Code *
# ********************************************************************
@@ -130,7 +130,7 @@ _html do
_a "foundation/officers/personnel-duties/#{txtnam}.txt", href:
ASF::SVN.svnpath!('personnel-duties', "#{txtnam}.txt")
end
end
-
+
end
end
end
diff --git a/www/roster/views/iclaSearch.js.rb
b/www/roster/views/iclaSearch.js.rb
index e571a6c..4fa2691 100644
--- a/www/roster/views/iclaSearch.js.rb
+++ b/www/roster/views/iclaSearch.js.rb
@@ -62,7 +62,7 @@ class IclaSearch < Vue
end
end
end
-
+
if @search.length
if not @ready
_p 'loading...'
diff --git a/www/roster/views/index.html.rb b/www/roster/views/index.html.rb
index ef1e062..049afc1 100644
--- a/www/roster/views/index.html.rb
+++ b/www/roster/views/index.html.rb
@@ -50,11 +50,11 @@ _html do
_td do
_a @committers.length, href: 'committer2/'
end
-
+
_td do
_a 'Committers', href: 'committer2/'
end
-
+
_td do
_ 'Search for committers by name, user id, or email address.'
_ ' Also includes pending ICLAs'
diff --git a/www/roster/views/members.html.rb b/www/roster/views/members.html.rb
index 9743047..8c0ec62 100644
--- a/www/roster/views/members.html.rb
+++ b/www/roster/views/members.html.rb
@@ -4,7 +4,7 @@
_html do
_link rel: 'stylesheet', href: "stylesheets/app.css?#{cssmtime}"
-
+
_body? do
_whimsy_body(
title: 'ASF Member List',
@@ -86,7 +86,7 @@ _html do
_b {_a id, href: "committer/#{id}"}
else
_a id, href: "committer/#{id}"
-
+
info[:issue] ||= 'Not in LDAP "member" group' if not
info['status']
end
end
diff --git a/www/roster/views/nonpmc/committers.js.rb
b/www/roster/views/nonpmc/committers.js.rb
index a51d9dc..7bcb31c 100644
--- a/www/roster/views/nonpmc/committers.js.rb
+++ b/www/roster/views/nonpmc/committers.js.rb
@@ -45,7 +45,7 @@ class NonPMCCommitters < Vue
# compute list of committers
def committers
result = []
-
+
@@nonpmc.committers.each do |id|
person = @@nonpmc.roster[id]
person.id = id
diff --git a/www/roster/views/nonpmcs.html.rb b/www/roster/views/nonpmcs.html.rb
index 8c1c8ee..5086f51 100644
--- a/www/roster/views/nonpmcs.html.rb
+++ b/www/roster/views/nonpmcs.html.rb
@@ -38,11 +38,11 @@ _html do
_td do
_a pmc.display_name, href: "nonpmc/#{pmc.name}"
end
-
+
_td do
pmc.chairs.each_with_index do |chair, index|
_span ', ' unless index == 0
-
+
if @members.include? chair[:id]
_b! {_a chair[:name], href: "committer/#{chair[:id]}"}
else
diff --git a/www/roster/views/orgchart.html.rb
b/www/roster/views/orgchart.html.rb
index 5b153ad..7403d5a 100644
--- a/www/roster/views/orgchart.html.rb
+++ b/www/roster/views/orgchart.html.rb
@@ -43,7 +43,7 @@ _html do
id = value['info']['id'] || value['info']['chair']
_a ASF::Person.find(id).public_name, href: "committer/#{id}"
end
-
+
# Website - often valuable to people looking for info
_td do
value['info']['website'].nil? ? _('') : _a('website', href:
value['info']['website'])
diff --git a/www/roster/views/person/forms.js.rb
b/www/roster/views/person/forms.js.rb
index b9f1f64..7736119 100644
--- a/www/roster/views/person/forms.js.rb
+++ b/www/roster/views/person/forms.js.rb
@@ -13,7 +13,7 @@ class PersonForms < Vue
_ul do
for form in committer.forms
link = committer.forms[form]
-
+
if form == 'icla'
_li do
if link == '' # has ICLA bu no karma to view it
diff --git a/www/roster/views/person/github.js.rb
b/www/roster/views/person/github.js.rb
index 6f0991a..609de76 100644
--- a/www/roster/views/person/github.js.rb
+++ b/www/roster/views/person/github.js.rb
@@ -26,7 +26,7 @@ class PersonGitHub < Vue
# Spare field to allow new entry to be added
_input style: 'font-family:Monospace', size: 20, name: prefix +
current, placeholder: '<new GitHub name>'
_br
-
+
_input type: 'submit', value: 'submit'
end
diff --git a/www/roster/views/person/main.js.rb
b/www/roster/views/person/main.js.rb
index e579782..4040b3e 100644
--- a/www/roster/views/person/main.js.rb
+++ b/www/roster/views/person/main.js.rb
@@ -114,7 +114,7 @@ class Person < Vue
_div.value do
_ul @committer.groups do |group|
next if group == 'apldap'
-
+
if group == 'committers'
_li {_a group, href: "committer/"}
elsif group == 'member'
@@ -159,7 +159,7 @@ class Person < Vue
end
end
end
-
+
# Email addresses
# always present
_PersonEmailForwards person: self, edit: @edit
diff --git a/www/roster/views/pmc/committers.js.rb
b/www/roster/views/pmc/committers.js.rb
index c98ec72..207e08e 100644
--- a/www/roster/views/pmc/committers.js.rb
+++ b/www/roster/views/pmc/committers.js.rb
@@ -45,7 +45,7 @@ class PMCCommitters < Vue
# compute list of committers
def committers
result = []
-
+
@@committee.committers.each do |id|
person = @@committee.roster[id]
person.id = id
diff --git a/www/roster/views/podlings.html.rb
b/www/roster/views/podlings.html.rb
index 2d1ce34..ac6faee 100644
--- a/www/roster/views/podlings.html.rb
+++ b/www/roster/views/podlings.html.rb
@@ -28,7 +28,7 @@ _html do
podlings: 'podlings'
}
) do
-
+
# ********************************************************************
# * Summary *
# ********************************************************************
diff --git a/www/roster/views/polyfill.js.rb b/www/roster/views/polyfill.js.rb
index ae00cc8..75ce53b 100644
--- a/www/roster/views/polyfill.js.rb
+++ b/www/roster/views/polyfill.js.rb
@@ -17,7 +17,7 @@ class Polyfill
first = document.getElementsByTagName('script')[0]
first.parentNode.insertBefore(script, first)
end
-
+
if @names.include? 'fetch' and defined? fetch
self.complete()
else
diff --git a/www/roster/views/ppmc/committers.js.rb
b/www/roster/views/ppmc/committers.js.rb
index 9894136..5f19bbd 100644
--- a/www/roster/views/ppmc/committers.js.rb
+++ b/www/roster/views/ppmc/committers.js.rb
@@ -71,7 +71,7 @@ class PPMCCommitters < Vue
# compute list of committers
def committers
result = []
-
+
@@ppmc.committers.each do |id|
person = @@ppmc.roster[id]
person.id = id
diff --git a/www/roster/views/ppmc/members.js.rb
b/www/roster/views/ppmc/members.js.rb
index f5870ab..3e77ef4 100644
--- a/www/roster/views/ppmc/members.js.rb
+++ b/www/roster/views/ppmc/members.js.rb
@@ -107,7 +107,7 @@ class PPMCMembers < Vue
# compute roster
def roster
result = []
-
+
@@ppmc.owners.each do |id|
person = @@ppmc.roster[id]
person.id = id
@@ -146,7 +146,7 @@ class PPMCMember < Vue
_td @@person.githubUsername
_td @@person.name
end
-
+
_td data_ids: @@person.id do
if @@person.selected
if @@auth.ipmc and not @@person.icommit
diff --git a/www/roster/views/ppmc/mentors.js.rb
b/www/roster/views/ppmc/mentors.js.rb
index 8a5a037..1a3be7c 100644
--- a/www/roster/views/ppmc/mentors.js.rb
+++ b/www/roster/views/ppmc/mentors.js.rb
@@ -31,7 +31,7 @@ class PPMCMentors < Vue
# compute roster
def roster
result = []
-
+
@@ppmc.mentors.each do |id|
person = @@ppmc.roster[id]
person.id = id
@@ -74,7 +74,7 @@ class PPMCMentor < Vue
_td @@person.githubUsername
_td @@person.name
end
-
+
_td data_ids: @@person.id do
# TODO: how does this become enabled?
if @@person.selected
diff --git a/www/roster/views/ppmcs.html.rb b/www/roster/views/ppmcs.html.rb
index 015acc3..9cbcf1f 100644
--- a/www/roster/views/ppmcs.html.rb
+++ b/www/roster/views/ppmcs.html.rb
@@ -50,9 +50,9 @@ _html do
_a.label_danger ppmc.display_name, href:
"ppmc/#{ppmc.name}", title: 'LDAP project not yet set up'
end
end
-
+
_td ppmc.startdate
-
+
_td do
# using _p here messes up the sort
if project_names.include? ppmc.name
diff --git a/www/secretary/icla-parse.cgi b/www/secretary/icla-parse.cgi
index be17385..b0166c5 100755
--- a/www/secretary/icla-parse.cgi
+++ b/www/secretary/icla-parse.cgi
@@ -24,11 +24,11 @@ puts ""
begin
require_relative 'workbench/models/mailbox'
require_relative 'iclaparser'
-
+
message = Mailbox.find(pathinfo)
-
+
path = message.find(iclaname).as_file.path
-
+
parsed = ICLAParser.parse(path)
parsed.sort_by{|k,v| k.to_s }.each do |k,v|
puts "%-20s %s" % [k,v] unless k == :_meta
@@ -49,7 +49,7 @@ begin
puts "metadata:"
puts metadata
end
-
+
rescue Exception => e
p e
end
diff --git a/www/secretary/iclaparser.rb b/www/secretary/iclaparser.rb
index 2bc6b47..db70a3d 100644
--- a/www/secretary/iclaparser.rb
+++ b/www/secretary/iclaparser.rb
@@ -61,7 +61,7 @@ module ICLAParser
def set_text_font_and_size(*args)
@tfs=args
end
-
+
def show_text(string)
font = @fontdict[@tfs.first]
utf8 = ICLAParser.string_to_utf8(string, font)
@@ -91,11 +91,11 @@ module ICLAParser
def get_text
@texts
end
-
+
def get_lines
@lines
end
-
+
end
def self.string_to_utf8(string, font)
@@ -149,7 +149,7 @@ module ICLAParser
reader.objects.each do |k,v|
type = v[:Type] rescue nil
subtype = v[:Subtype] rescue nil
-
+
if type == :Annot
if subtype == :FreeText # These are not directly associated with
forms
rect = v[:Rect]
diff --git a/www/secretary/ldap-check-committers.cgi
b/www/secretary/ldap-check-committers.cgi
index 029c37e..19ed332 100755
--- a/www/secretary/ldap-check-committers.cgi
+++ b/www/secretary/ldap-check-committers.cgi
@@ -27,7 +27,7 @@ _html do
people = ASF::Person.preload(%w(uid createTimestamp asf-banned asf-altEmail
mail loginShell))
_h2 'people who are not committers (excluding nologin)'
-
+
non_committers = people.reject { |p| p.nologin? or old.include? p.name or
p.name == 'apldaptest'}
if non_committers.length > 0
_table do
diff --git a/www/secretary/ldap-check.cgi b/www/secretary/ldap-check.cgi
index 9930469..755edc2 100755
--- a/www/secretary/ldap-check.cgi
+++ b/www/secretary/ldap-check.cgi
@@ -60,7 +60,7 @@ _html do
projects = ASF::Project.list
pmcs = ASF::Committee.pmcs
-
+
projects.sort_by(&:name).each do |p|
po=p.ownerids
pm=p.memberids
@@ -119,7 +119,7 @@ _html do
end
_h2 'people who are not committers (excluding nologin)'
-
+
non_committers = people.reject { |p| p.nologin? or old.include? p.name or
p.name == 'apldaptest'}
if non_committers.length > 0
_table do
@@ -156,10 +156,10 @@ _html do
end
_h2 'committers who are not in LDAP people'
-
+
# which committers are not people?
non_people = old.reject {|id| people.map(&:name).include? id}
-
+
if non_people.length > 0
_table do
_tr do
diff --git a/www/secretary/ldap-names.cgi b/www/secretary/ldap-names.cgi
index e74e119..a3a742e 100755
--- a/www/secretary/ldap-names.cgi
+++ b/www/secretary/ldap-names.cgi
@@ -24,14 +24,14 @@ _html do
}
if @updates
-
+
##################################################################
# Apply Updates #
##################################################################
-
+
_h2_ 'Applying updates'
updates = JSON.parse(@updates)
-
+
# update LDAP
unless updates.empty?
unless ASF::Service.find('asf-secretary').members.include?
ASF::Person.new($USER)
@@ -211,7 +211,7 @@ _html do
####################################################################
# Form used to submit changes #
####################################################################
-
+
_form_ method: 'post' do
_input type: 'hidden', name: 'updates'
_input type: 'submit', value: 'Commit Changes', disabled: true
@@ -221,17 +221,17 @@ _html do
####################################################################
# Client side logic #
####################################################################
-
+
_script do
-
+
# enable submit button only when there are modifications
def enable_submit()
button = document.querySelector('input[type=submit]')
modified = document.querySelectorAll('td.modified')
-
+
button.disabled = (modified.length == 0)
end
-
+
Array(document.getElementsByTagName('td')).each do |td|
next unless td.getAttribute('copyAble') == 'true'
# double-click: copy to previous cell
@@ -248,22 +248,22 @@ _html do
enable_submit()
end
end
-
+
# capture modifications when button is pressed
document.querySelector('input[type=submit]').addEventListener(:click) do
updates = {}
# Must agree with number of columns in the main table above
columnNames = %w(uid icla_file legal_name public_name cn givenName
newGiven sn newSN unused)
-
+
Array(document.querySelectorAll('td.modified')).each do |td|
id = td.parentNode.firstElementChild.textContent.strip()
updates[id] ||= {}
updates[id][columnNames[td.cellIndex]] = td.textContent
end
-
+
document.querySelector('form input').value = JSON.stringify(updates)
end
-
+
# force submit state on initial load (i.e., disable submit button)
enable_submit()
end
diff --git a/www/secretary/memapp_check.cgi b/www/secretary/memapp_check.cgi
index 605615b..b5a6cf2 100755
--- a/www/secretary/memapp_check.cgi
+++ b/www/secretary/memapp_check.cgi
@@ -22,7 +22,7 @@ end
status = ASF::Member.status
members = ASF::Member.new.map {|id, text| ASF::Person.find(id)}
-
+
# These members don't have ids, so cannot use the Person class
members << PersonNoId.new("Shane Caraveo")
members << PersonNoId.new("Robert Hartill")
diff --git a/www/secretary/public-names.cgi b/www/secretary/public-names.cgi
index 359dfb2..9e3156b 100755
--- a/www/secretary/public-names.cgi
+++ b/www/secretary/public-names.cgi
@@ -90,14 +90,14 @@ _html do
if names['legal_name']
iclas[pattern,1] = names['legal_name'].gsub("\u00A0", ' ')
end
-
+
if names['public_name']
iclas[pattern,2] = names['public_name'].gsub("\u00A0", ' ')
end
end
iclas # return the updated file
-
+
end
end
diff --git a/www/secretary/workbench/parsemail.rb
b/www/secretary/workbench/parsemail.rb
index 391a416..16697ff 100644
--- a/www/secretary/workbench/parsemail.rb
+++ b/www/secretary/workbench/parsemail.rb
@@ -37,7 +37,7 @@ Dir[File.join(ARCHIVE, '2*')].sort.each do |name|
not ARGV.any? {|arg| name.include? "/#{arg}"}
print "#{name.ljust(width)}\r"
width = name.length
-
+
# parse mailbox
Mailbox.new(name).parse
end
diff --git a/www/secretary/workbench/views/actions/ccla.json.rb
b/www/secretary/workbench/views/actions/ccla.json.rb
index d4d4d09..d7f9d72 100644
--- a/www/secretary/workbench/views/actions/ccla.json.rb
+++ b/www/secretary/workbench/views/actions/ccla.json.rb
@@ -37,7 +37,7 @@ _personalize_email(env.user)
########################################################################
task "svn commit documents/cclas/#@filename#{fileext} and update cclas.txt" do
-
+
# construct line to be inserted in cclas.txt
@cclalines = "notinavail:" + @company.strip
unless @contact.empty?
diff --git a/www/secretary/workbench/views/actions/parse-icla.json.rb
b/www/secretary/workbench/views/actions/parse-icla.json.rb
index a8f6177..4d00a34 100644
--- a/www/secretary/workbench/views/actions/parse-icla.json.rb
+++ b/www/secretary/workbench/views/actions/parse-icla.json.rb
@@ -12,15 +12,15 @@ ALIASES = {
if attachment.end_with? '.pdf'
message = Mailbox.find(@message)
-
+
path = message.find(attachment).as_file.path
-
+
parsed = ICLAParser.parse(path)
# Extract the project and adjust if necessary
project = parsed[:Project]
parsed [:PDFProject] = project # retain the original value
-
+
if project
project.downcase!
projects = (ASF::Podling.current+ASF::Committee.pmcs).map(&:name)
diff --git a/www/secretary/workbench/views/forms/ccla.js.rb
b/www/secretary/workbench/views/forms/ccla.js.rb
index f626bdc..8e917c5 100644
--- a/www/secretary/workbench/views/forms/ccla.js.rb
+++ b/www/secretary/workbench/views/forms/ccla.js.rb
@@ -87,7 +87,7 @@ class CCLA < Vue
# state
def mounted()
name = @@headers.name || ''
-
+
# reorder name if there is a single comma present
parts = name.split(',')
if parts.length == 2 and parts[1] !~ /^\s*(jr|ph\.d)\.?$/i
diff --git a/www/secretary/workbench/views/forms/grant.js.rb
b/www/secretary/workbench/views/forms/grant.js.rb
index 8e8d385..a36554b 100644
--- a/www/secretary/workbench/views/forms/grant.js.rb
+++ b/www/secretary/workbench/views/forms/grant.js.rb
@@ -77,7 +77,7 @@ class Grant < Vue
# state
def mounted()
name = @@headers.name || ''
-
+
# reorder name if there is a single comma present
parts = name.split(',')
if parts.length == 2 and parts[1] !~ /^\s*(jr|ph\.d)\.?$/i
diff --git a/www/secretary/workbench/views/parts.js.rb
b/www/secretary/workbench/views/parts.js.rb
index 3eb40cb..567e8ee 100644
--- a/www/secretary/workbench/views/parts.js.rb
+++ b/www/secretary/workbench/views/parts.js.rb
@@ -463,7 +463,7 @@ class Parts < Vue
url = message.sub('/workbench/','/icla-parse/') + attachment
window.parent.frames.content.location.href = url
end
-
+
########################################################################
# Update email #
########################################################################
diff --git a/www/secretary/workbench/views/tasklist.html.rb
b/www/secretary/workbench/views/tasklist.html.rb
index 51afe0e..925c316 100644
--- a/www/secretary/workbench/views/tasklist.html.rb
+++ b/www/secretary/workbench/views/tasklist.html.rb
@@ -15,7 +15,7 @@ _html do
_header do
_h1.bg_warning 'Operations to be performed'
end
-
+
_ul.tasklist! do
@dryrun['tasklist'].each do |task|
_li do
diff --git a/www/site.cgi b/www/site.cgi
index b316dbe..5f1455c 100755
--- a/www/site.cgi
+++ b/www/site.cgi
@@ -78,7 +78,7 @@ _html do
# Encapsulate data display (same for projects and podlings)
display_application(path_info, sites, analysis, checks_performed,
cgi_for_tlps)
end
-
+
_script %{
var table = $(".table").stupidtable();
table.on("aftertablesort", function (event, data) {
diff --git a/www/status/index.cgi b/www/status/index.cgi
index 43e57c3..5323d7c 100755
--- a/www/status/index.cgi
+++ b/www/status/index.cgi
@@ -44,7 +44,7 @@ print <<-EOF
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css"/>
<link rel="stylesheet" type="text/css" href="css/status.css"/>
-
+
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
<script type="text/javascript" src="js/status.js"></script>
diff --git a/www/status/monitors/git.rb b/www/status/monitors/git.rb
index c0b8992..5010237 100644
--- a/www/status/monitors/git.rb
+++ b/www/status/monitors/git.rb
@@ -72,7 +72,7 @@ def Monitor.git(previous_status)
'Auto packing the repository',
'See "git help gc" for manual housekeeping',
]
-
+
lines.reject! do |line|
line.start_with?(*start_ignores) or
line =~ SUMMARY_RE or
@@ -132,7 +132,7 @@ def Monitor.git(previous_status)
break
end
end
-
+
{data: status}
end
diff --git a/www/status/monitors/svn.rb b/www/status/monitors/svn.rb
index d5a2743..ebb96b4 100644
--- a/www/status/monitors/svn.rb
+++ b/www/status/monitors/svn.rb
@@ -94,7 +94,7 @@ def Monitor.svn(previous_status)
break
end
end
-
+
{data: status}
end
diff --git a/www/test/example.cgi b/www/test/example.cgi
index c99e529..e261993 100755
--- a/www/test/example.cgi
+++ b/www/test/example.cgi
@@ -177,7 +177,7 @@ _html do
end
end
end
-
+
# IF YOU WANT TO DO WORK BASED ON ?QUERY=value
query = CGI::parse(ENV['QUERY_STRING'])
if query.has_key?('value')
@@ -187,7 +187,7 @@ _html do
_p "Value Query Passed: #{query['query']}"
_p query.inspect
end
-
+
# IF YOU WANT TO DISPLAY A FORM and handle the POST
_div id: 'example-form'
if _.post?