This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/attic.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 0ce562f Regenerated website based on
52978066106fb60662a3ef9b952422f372868ca1 commit
0ce562f is described below
commit 0ce562f0a5f71cbad84076badb6b7bde501ec3f9
Author: GitHub Actions <[email protected]>
AuthorDate: Fri Oct 3 14:16:56 2025 +0000
Regenerated website based on 52978066106fb60662a3ef9b952422f372868ca1 commit
---
output/README.md | 88 ---------------------
output/retire.rb | 231 -------------------------------------------------------
2 files changed, 319 deletions(-)
diff --git a/output/README.md b/output/README.md
deleted file mode 100644
index d42e91d..0000000
--- a/output/README.md
+++ /dev/null
@@ -1,88 +0,0 @@
-<!--
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
--->
-
-# Apache Attic Website
-
-This is the source code for the website at
[attic.apache.org](https://attic.apache.org)
-which manages ASF projects which have retired.
-
-Issue tracking: https://issues.apache.org/jira/projects/ATTIC
-
-Mailing list: [email protected]
https://lists.apache.org/[email protected]
-
-## Overview
-
-This site uses [Jekyll](https://github.com/jekyll/jekyll), which is a static
site generator,
-with the [Just The Docs](https://just-the-docs.github.io/just-the-docs/)
Theme. See:
- - [The Jekyll Docs](https://jekyllrb.com/docs/) on how to install Jekyll and
build this
-site locally.
- - [Just The Docs](https://just-the-docs.github.io/just-the-docs/) on
configuring the theme
-
-The site is built by the GitHub Workflow Action
[website.yml](https://github.com/apache/attic/blob/main/.github/workflows/website.yml)
-
-Source is composed of the following:
-
- - Simple `markdown` pages such as the _home_ (`index.md`) and _Process_
(`process.md`) pages.
- - A `yaml` file for each project in the `_data/projects` directory which
contains all the
- details about the project and its retirement
- - The _Process Tracking_ (`tracking.md`) page which generates a table
showing the status of each
- project generated from the files in `_data/projects' directory.
- - [Jekyll Plugins](https://jekyllrb.com/docs/plugins/) which generate pages
and files for the
- retired projects from the files in `_data/projects' directory:
- - `_plugins/projects-plugin.rb` generates the [project
pages](https://attic.apache.org/projects/)
- from the project's `yaml` data file.
- - `_plugins/attic-banner-plugin.rb` generates a _flag_ file to indicate
that the _Attic Banner_
- should be added to a project's website (based on the project's `yaml`
data file).
- - `_plugins/cwiki-banner-plugin.rb` generates a _flag_ file to indicate
that the _Attic Banner_
- should be added to the project's CWIKI spaces (based on the project's
`yaml` data file).
-
-## Project YAML Data File
-
-Data for retired projects is stored in YAML, which are described on the Attic
-[Data Reference (YAML)](https://attic.apache.org/data.html) page.
-
-## How to test locally (DRAFT) ##
-
-Install Ruby.
-Install bundler if necessary: ```gem install bundler```
-
-If you wish to install the required Gems locally (rather than updating the
system Gems),
-change the bundler installation directory:
-
-```bundle config path 'vendor/bundle' --local```
-
-Now install the required gems:
-
-```bundle install```
-
-To build the site:
-
-```bundle exec jekyll build```
-
-To build the site and make it available at http://127.0.0.1:4000/
-
-```bundle exec jekyll server```
-
-To run retire.rb:
-
-```bundle exec ruby retire.rb projectId ...```
-
-## Testing the Attic banner and CSP using Docker
-
-There is a Docker build for testing the Attic banner and CSP at
https://github.com/apache/attic-docker
diff --git a/output/retire.rb b/output/retire.rb
deleted file mode 100755
index f084642..0000000
--- a/output/retire.rb
+++ /dev/null
@@ -1,231 +0,0 @@
-#!/usr/bin/env ruby
-
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#--------------------------------------------------------
-#
-# Script to create _data/projects YAML file for one or more project ids
-#
-# Usage:
-# ruby retire.rb <list of project ids>
-# e.g.
-# ruby retire.rb gora mxnet
-# This will create/update _data/projects/pid.yaml
-# Review this and commit
-
-# TODO:
-# - does not check for Bugzilla issues
-# - does not check for GitHub issues
-# - Jira: juddi - does not find scout (is there an alias documented somewhere?)
-# - Cwiki: did not find ODE2
-# - aliases: does not check for previous names
-
-# Input:
-# - https://whimsy.apache.org/public/committee-retired.json
-# - https://lists.apache.org/api/preferences.lua
-# - https://cwiki.apache.org/confluence/rest/api/space/
-# - https://issues.apache.org/jira/rest/api/2/project
-# - https://svn.apache.org/repos/asf/
-# - https://gitbox.apache.org/repositories.json
-# -
https://svn.apache.org/repos/asf/infrastructure/site/trunk/content/foundation/records/minutes
(temporary)
-#
-# Output:
-# _data/projects/pid.yaml
-
-require 'yaml'
-require 'net/http'
-require 'uri'
-
-# Sources
-CTTEE_RETIRED = 'https://whimsy.apache.org/public/committee-retired.json'
-CWIKI_INFO =
'https://cwiki.apache.org/confluence/rest/api/space/?type=global&limit=1000'
-# Note: Two Wikis are lower-case: labs, usergrid. Upper case does seem to be
equivalent for display.
-JIRA = 'https://issues.apache.org/jira/rest/api/2/project'
-SVNURL = 'https://svn.apache.org/repos/asf/'
-GITREPOS = 'https://gitbox.apache.org/repositories.json'
-LISTSAO = 'https://lists.apache.org/api/preferences.lua'
-MINUTES =
'https://svn.apache.org/repos/asf/infrastructure/site/trunk/content/foundation/records/minutes/'
-
-def get_url(url)
- uri = URI.parse(url)
- Net::HTTP.start(uri.host, uri.port,
- open_timeout: 5, read_timeout: 5, ssl_timeout: 5,
- use_ssl: uri.scheme == 'https') do |http|
- return http.request Net::HTTP::Get.new uri.request_uri
- end
-end
-
-def get_json(url, key=nil)
- begin
- response = get_url(url)
- json = YAML.safe_load(response.body)
- if key
- return json[key]
- else
- return json
- end
- rescue Net::OpenTimeout => to
- puts to
- return nil
- end
-end
-
-def has_svn(pid)
- url = SVNURL + pid + '/trunk' # ignore site-only repos
- res = get_url(url)
- return res.code == 200
-end
-
-# "key": "GMOxDOC21es",
-# "name": " Apache Geronimo v2.1 - ES ",
-def find_wikis(pid)
- names = []
- WIKIS.each do |a|
- key = a['key']
- names << key if key == pid or key.start_with?(pid) or a['name'].downcase
=~ /\b#{pid}\b/
- end
- names.sort
-end
-
-# Allow for Apache prefix and (Retired) suffixes etc.
-# returns first word, downcased
-# TODO: what about subnames?
-def canon_name(name)
- name.downcase.sub('apache','').gsub('(retired)', '').sub('(old)',
'').strip.split.first
-end
-
-def get_jiras(pid)
- jiras = []
- JIRAS.each do |project|
- key = project['key']
- if pid == key.downcase
- jiras << key
- elsif pid == canon_name(project['name']) # Allow
- jiras << key
- else
- cat = project['projectCategory']
- if cat
- catname = cat['name']
- jiras << key if pid == catname.downcase
- end
- end
- end
- return jiras
-end
-
-def main()
- retirees = get_json(CTTEE_RETIRED)['retired']
- not_retired = ARGV - retirees.keys
- if not_retired.size > 0
- puts "The following projects are not recorded as retired: #{not_retired}"
- end
-
- # TODO filter out done ones
- # process valid projects
- (ARGV - not_retired).each do |pid|
- puts "Processing #{pid}"
- meta = retirees[pid]
- retired_date = Date.parse(meta['retired_date'])
- display_name = meta['display_name']
- description = meta['description'].chomp('.') # we add a full-stop later
- # Allow for desc. starting with a or an or a vowel
- if description =~ %r{^[aA]n? } # starts with A or an?
- description.sub!(/^A/, 'a') # downcase
- sep = ' was '
- elsif description =~ /^[AEIOUaeiou]/ # Vowel
- sep = ' was an '
- else
- sep = ' was '
- end
- project_description = display_name + sep + description + '.'
- data = {
- retirement_date: retired_date,
- attic_issue: 'ATTIC-nnn',
- attic_date: nil,
- attic_banner: true,
- # revived_date: nil,
- project_name: display_name,
- # project_longname: Where to find this?,
- project_description: project_description,
- board_resolution: true,
- board_reports: true,
- downloads: true, # check if there are any?
- }
- data.delete(:project_name) if data[:project_name] == pid.capitalize # Not
needed
- if has_svn pid
- data[:source_repositories] ||= []
- data[:source_repositories] <<
- {
- type: 'Subversion'
- }
- end
-
- has_git = get_json(GITREPOS)['projects'][pid]
- if has_git
- data[:source_repositories] ||= []
- data[:source_repositories] <<
- {
- type: 'Git'
- }
- end
-
- mlists = get_json(LISTSAO)['lists']["#{pid}.apache.org"]&.keys
- if mlists
- # ensure dev sorts first
- data[:mailing_lists] = mlists.sort_by {|l| l == 'dev' ? 'aaa' : l} if
mlists.size > 0
- else
- $stderr.puts "No mailing lists found for #{pid}"
- end
-
- jiras = get_jiras pid
- if jiras.size > 0
- data[:issue_trackers] ||= []
- tracker =
- {
- type: 'JIRA'
- }
- tracker[:keys] = jiras.sort if jiras.size > 1 or jiras.first !=
pid.upcase
- data[:issue_trackers] << tracker
- end
-
- # TODO: Allow for Bugzilla and GitHub
-
- wikis = find_wikis pid
- if wikis.size > 0
- data[:wiki] = {
- type: 'CWIKI'
- }
- data[:wiki][:keys] = wikis if wikis.size > 1 or wikis.first != pid.upcase
- end
-
- dir = ENV['OUTPUT'] || '_data/projects' # Allow override for testing
- output = File.join(dir, "#{pid}.yaml")
- puts "Creating #{output}"
- content = YAML.safe_dump(data, permitted_classes: [Date], stringify_names:
true, indentation: 4)
- # Massage the output to look more like existing files
- tmp = content.sub('project_description: ', "project_description: >-\n ")
- File.write(output, tmp)
- end
-end
-
-if __FILE__ == $0
- JIRAS = get_json(JIRA)
- WIKIS = get_json(CWIKI_INFO, 'results')
- if WIKIS.nil?
- raise IOError.new "Failed to fetch WIKI names - is the Wiki down?"
- end
- main
-end