Skip to content

Commit 880bb04

Browse files
committed
generate licenses list for latest release
1 parent 9a3f27e commit 880bb04

File tree

9 files changed

+101
-3
lines changed

9 files changed

+101
-3
lines changed

.github/workflows/jekyll.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ jobs:
4242
id: pages
4343
uses: actions/configure-pages@v5
4444
- name: Generate changelog
45-
run: pip3 install ghapi~=1.0.4 && python3 generate_changelog.py
45+
run: pip3 install -r requirements.txt && python3 generate_changelog.py
4646
env:
4747
GITHUB_TOKEN: ${{ github.token }}
4848
- name: Build with Jekyll

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@ _site/
55
.bundle
66
.idea/
77
/env
8-
/_i18n/**/changelog.md
8+
/_i18n/**/changelog.md
9+
/_includes/licenses.md

_i18n/de.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ faq_permissions_play_billing: Google Play-Rechnungsdienst (nur Google Play-Versi
143143
faq_permissions_play_billing_desc: Zur Abwicklung von In-App-Käufen für Spenden über Google Play
144144

145145
changelog: Neuigkeiten
146+
licenses: Lizenzen
146147

147148
donate: Spenden
148149
donate_desc: EVMap ist kostenlos und Open Source. Über <a href="https://github.com/ev-map/EVMap">GitHub</a> kann jeder zur Weiterentwicklung der App beitragen. Um die laufenden Kosten für die Datenquellen zu decken, freut sich der Entwickler über Spenden mit einem Betrag deiner Wahl.

_i18n/en.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ donate_referral_links_eprimo_desc: Sign up for a contract for home electricity o
152152
donate_referral_links_octopusenergy_desc: Sign up for a contract for home electricity or gas from Octopus Energy — when registering through the link, you receive a 100€ discount on our first bill and 50€ bonus go to the developer.
153153

154154
changelog: What's New
155+
licenses: Licenses
155156

156157
privacy: Privacy
157158
privacy_policy: Privacy Policy

_includes/footer.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,9 @@
6262
<div class="footerLinks">
6363
{% assign pages = site.pages | sort: "order" %}
6464
{% for page in pages %}
65+
{% if page.include_in_footer != false %}
6566
<a href="{{ site.baseurl }}{{ page.url | relative_url }}">{% t page.title %}</a>
67+
{% endif %}
6668
{% endfor %}
6769
{% if site.data.app_info.presskit_download_link %}
6870
<a href="{{ site.data.app_info.presskit_download_link }}">Press Kit</a>

_pages/licenses.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
layout: page
3+
title: licenses
4+
include_in_header: false
5+
include_in_footer: false
6+
order: 100
7+
---
8+
9+
{% include licenses.md %}

_pages/privacypolicy.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
layout: page
33
title: privacy
44
include_in_header: false
5-
order: 100
5+
order: 101
66
---
77

88
**{% t privacy_last_updated %}**

generate_licenses.py

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
import requests
2+
import html
3+
4+
from pathlib import Path
5+
6+
from ghapi.all import GhApi
7+
from ghapi.page import pages
8+
9+
from collections import defaultdict
10+
11+
owner = "ev-map"
12+
repo = "EVMap"
13+
output_path = Path("_includes")
14+
output_filename = "licenses.md"
15+
16+
api = GhApi(owner=owner, repo=repo)
17+
18+
output_file = open(output_path / output_filename, 'w', encoding='utf-8')
19+
20+
print('generating OSS licenses...')
21+
release = api.repos.get_latest_release()
22+
asset = next(a for a in release["assets"] if a["name"] == "aboutlibraries.json")
23+
24+
library_data = requests.get(asset["browser_download_url"]).json()
25+
26+
num_libs_by_license = defaultdict(lambda: 0)
27+
28+
output_file.write("# Libraries\n")
29+
for library in library_data["libraries"]:
30+
output_file.write(f"## {library['name'] if 'name' in library else library['uniqueId']} {library['artifactVersion']}\n")
31+
devs = [dev['name'] for dev in library['developers'] if 'name' in dev]
32+
if len(devs) > 0:
33+
output_file.write(f"*{', '.join(devs)}*<br>")
34+
35+
licenses = []
36+
for lic in library['licenses']:
37+
name = library_data['licenses'][lic]['name']
38+
link = f"#license_{lic}" if "content" in library_data['licenses'][lic] else library_data['licenses'][lic]["url"]
39+
result = f"[{name}]({link})"
40+
licenses.append(result)
41+
42+
output_file.write(f"License: {', '.join(licenses)}\n")
43+
output_file.write("\n")
44+
45+
for lic in library['licenses']:
46+
num_libs_by_license[lic] += 1
47+
48+
output_file.write("# Licenses\n")
49+
libs_sorted = sorted(num_libs_by_license.keys(), key=lambda lib: num_libs_by_license[lib], reverse=True)
50+
for key in libs_sorted:
51+
license = library_data['licenses'][key]
52+
if not 'content' in license:
53+
continue
54+
output_file.write(f"<h2 id=\"license_{key}\">{license['name']}</h2>\n")
55+
output_file.write("<pre>" + html.escape(license['content']) + "</pre>\n")
56+
output_file.write("\n")
57+
58+
59+
#
60+
#
61+
# tag = release['tag_name']
62+
# if release['draft'] or release['prerelease'] or 'beta' in tag:
63+
# continue
64+
#
65+
# print(tag)
66+
#
67+
# date = parse_date(release['published_at'])
68+
# for lang in langs:
69+
# output_files[lang].write(f"# Version {tag}\n")
70+
# output_files[lang].write(f"*{date.strftime(date_formats[lang])}*\n\n")
71+
#
72+
# changelogs = extract_changelogs(tag)
73+
# body = release['body']
74+
# if changelogs is not None:
75+
# for lang in langs:
76+
# output_files[lang].write(changelogs[lang] + "\n\n")
77+
# elif body is not None:
78+
# for lang in langs:
79+
# output_files[lang].write(body + "\n\n")
80+
# else:
81+
# for lang in langs:
82+
# output_files[lang].write("\n\n")

requirements.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ghapi~=1.0.4
2+
requests~=2.32.4

0 commit comments

Comments
 (0)