eh, big stuff

This commit is contained in:
SandPoot
2022-04-07 01:41:07 -03:00
parent 42e1e33c30
commit 80400f18e7
9 changed files with 62 additions and 274 deletions
+11 -10
View File
@@ -11,43 +11,44 @@ jobs:
name: "Compile changelogs"
runs-on: ubuntu-20.04
steps:
- name: "Check for CHANGELOG_ENABLER secret and pass true to output if it exists to be checked by later steps"
- name: "Check for ACTION_ENABLER secret and pass true to output if it exists to be checked by later steps"
id: value_holder
env:
CHANGELOG_ENABLER: ${{ secrets.CHANGELOG_ENABLER }}
ENABLER_SECRET: ${{ secrets.ACTION_ENABLER }}
run: |
unset SECRET_EXISTS
if [ -n $CHANGELOG_ENABLER ]; then SECRET_EXISTS='true' ; fi
echo ::set-output name=CL_ENABLED::${SECRET_EXISTS}
if [ -n "$ENABLER_SECRET" ]; then SECRET_EXISTS=true ; fi
echo "::set-output name=ACTIONS_ENABLED::$SECRET_EXISTS"
- name: "Setup python"
if: steps.value_holder.outputs.CL_ENABLED
if: steps.value_holder.outputs.ACTIONS_ENABLED
uses: actions/setup-python@v1
with:
python-version: '3.x'
- name: "Install deps"
if: steps.value_holder.outputs.CL_ENABLED
if: steps.value_holder.outputs.ACTIONS_ENABLED
run: |
python -m pip install --upgrade pip
python -m pip install pyyaml
sudo apt-get install dos2unix
- name: "Checkout"
if: steps.value_holder.outputs.CL_ENABLED
if: steps.value_holder.outputs.ACTIONS_ENABLED
uses: actions/checkout@v1
with:
fetch-depth: 25
- name: "Compile"
if: steps.value_holder.outputs.CL_ENABLED
if: steps.value_holder.outputs.ACTIONS_ENABLED
run: |
python tools/ss13_genchangelog.py html/changelogs
- name: Commit
if: steps.value_holder.outputs.CL_ENABLED
if: steps.value_holder.outputs.ACTIONS_ENABLED
run: |
git config --local user.email "85452301+Sandstorm-Bot@users.noreply.github.com"
git config --local user.name "Sandstorm Bot"
git pull origin master
git add html/changelogs
git commit -m "Automatic changelog compile [ci skip]" -a || true
- name: "Push"
if: steps.value_holder.outputs.CL_ENABLED
if: steps.value_holder.outputs.ACTIONS_ENABLED
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
+27 -27
View File
@@ -1,17 +1,17 @@
2022-03-03:
TripleShades:
- rscadd: [Omega] Windoors to Atmos flaps
- rscadd: [Omega] Windoor to Librarian desk
- rscadd: [Omega] Another belt switch to Cargo
- rscadd: [Omega] Superfluous decals
- rscadd: [Omega] Two space heaters
- rscadd: [Omega] Two empty medkits and health scanners to Robotics
- rscadd: [Omega] More painting mounts in the Library
- remove: [Omega] Superfluous decals
- bugfix: [Omega] Organ Fridge no longer invisibly takes up the tile it was shifted from
- tweak: [Omega] Maint garden is no longer spaced at the cost of losing a puddle
- tweak: [Omega] Moves around the blood crate in Medbay to swap with a vendor
- tweak: [Omega] Moved around Library book shelves"
- rscadd: '[Omega] Windoors to Atmos flaps'
- rscadd: '[Omega] Windoor to Librarian desk'
- rscadd: '[Omega] Another belt switch to Cargo'
- rscadd: '[Omega] Superfluous decals'
- rscadd: '[Omega] Two space heaters'
- rscadd: '[Omega] Two empty medkits and health scanners to Robotics'
- rscadd: '[Omega] More painting mounts in the Library'
- remove: '[Omega] Superfluous decals'
- bugfix: '[Omega] Organ Fridge no longer invisibly takes up the tile it was shifted from'
- tweak: '[Omega] Maint garden is no longer spaced at the cost of losing a puddle'
- tweak: '[Omega] Moves around the blood crate in Medbay to swap with a vendor'
- tweak: '[Omega] Moved around Library book shelves"'
2022-03-04:
BongaTheProto:
- bugfix: Fixes femcum hydratation
@@ -19,8 +19,8 @@
BongaTheProto:
- bugfix: Tops will now use the shirt slot
TripleShades:
- rscdel: [Omega] Hundreds of decals
- tweak: [Omega] Three airlock rooms to space dont have vents now to stop tiles ripping up
- rscdel: '[Omega] Hundreds of decals'
- tweak: '[Omega] Three airlock rooms to space dont have vents now to stop tiles ripping up'
2022-03-08:
Putnam3145:
- config: Made a config entry lowertext thing actually work right
@@ -48,10 +48,10 @@
- balance: Regenerative cores when used on Synthetics on lavaland now heal for 20 brute + burn instead of 5
- balance: Regenerative cores when used now on lavaland now only heal 5 brute + burn, regardless of whom they are used on. Additionally, their damage slowdown negation is reduced to ten seconds.
TripleShades:
- rscdel: [Omega] Engineering Supermatter shortcut airlock to Cooling Loop
- tweak: [Omega] Gravity Generator walkable area"
- bugfix: [Omega] Two Xenobiology pens now have chutes
- bugfix: [Omega] Makes a t-junction pipe in Atmospherics not visible above the floor
- rscdel: '[Omega] Engineering Supermatter shortcut airlock to Cooling Loop'
- tweak: '[Omega] Gravity Generator walkable area"'
- bugfix: '[Omega] Two Xenobiology pens now have chutes'
- bugfix: '[Omega] Makes a t-junction pipe in Atmospherics not visible above the floor'
2022-03-14:
Putnam3145:
- bugfix: atmos equalization config now works properly
@@ -65,8 +65,8 @@
- bugfix: Fixed LOG_VICTIM.
2022-03-18:
TripleShades:
- rscadd: [Omega] Aix Mixer pipe
- rscadd: [Omega] Wire to Turbine
- rscadd: '[Omega] Aix Mixer pipe'
- rscadd: '[Omega] Wire to Turbine'
2022-03-20:
Melbert:
- bugfix: Balloon alerts sourced on turfs work properly.
@@ -84,8 +84,8 @@
BlueWildrose:
- balance: Xenobiology's Advanced Mutation Toxin has another cure now, which is Mutadone. In addition, it no longer instantly transforms slime subspecies upon contraction.
TripleShades:
- rscadd: [Omega] Gravity Generator room scrubber
- tweak: [Omega] tcomms vents are now passive
- rscadd: '[Omega] Gravity Generator room scrubber'
- tweak: '[Omega] tcomms vents are now passive'
2022-03-24:
SandPoot:
- bugfix: Fixes any sort of crate related syndicate item fetching.
@@ -108,11 +108,11 @@
- rscadd: Added cameras to some areas in current rotation stations for parity
- rscadd: Added light switches to many areas in current rotation stations
- rscadd: Added atmos alarms to a few areas in current rotation stations for parity
- rscadd: [Box] Gives Morgue Maintenance an APC
- rscdel: [Omega] Removes Arrivals Lobby APC since it's now part of the hallway
- rscadd: '[Box] Gives Morgue Maintenance an APC'
- rscdel: '[Omega] Removes Arrivals Lobby APC since it''s now part of the hallway'
- bugfix: Fixes a few duplicate c_tags for current rotation ruins and stations
- bugfix: Fixes some incorrectly placed areas in current rotation stations
- bugfix: Fixes pipes that led to nowhere in current rotation stations
- bugfix: [Box] Kitchen Cold Room should now lose power via proper area connection
- bugfix: [Box] Chief Engineer's Office should no longer be announced as Command erroneously due to mapping error
- bugfix: [Omega] Law Office APC should no longer control the Restrooms
- bugfix: '[Box] Kitchen Cold Room should now lose power via proper area connection'
- bugfix: '[Box] Chief Engineer''s Office should no longer be announced as Command erroneously due to mapping error'
- bugfix: '[Omega] Law Office APC should no longer control the Restrooms'
+10 -4
View File
@@ -11,16 +11,16 @@
# - (fixes bugs)
# wip
# - (work in progress)
# qol
# - (quality of life)
# tweak
# - (tweaks something)
# soundadd
# - (adds a sound)
# sounddel
# - (removes a sound)
# rscadd
# - (adds a feature)
# rscdel
# - (removes a feature)
# rscadd
# - (adds a feature)
# imageadd
# - (adds an image or sprite)
# imagedel
@@ -29,6 +29,8 @@
# - (fixes spelling or grammar)
# experiment
# - (experimental change)
# tgs
# - (messing around with tgs)
# balance
# - (balance changes)
# code_imp
@@ -41,6 +43,10 @@
# - (makes changes to administrator tools)
# server
# - (miscellaneous changes to server)
# expansion
# - (expands something)
# qol
# - (quality of life)
#################################
# Your name.
+5 -6
View File
@@ -18,25 +18,24 @@ import yaml from 'js-yaml';
const icons = {
bugfix: { icon: 'bug', color: 'green' },
wip: { icon: 'hammer', color: 'orange' },
qol: { icon: 'hand-holding-heart', color: 'green' },
tweak: { icon: 'wrench', color: 'green' },
soundadd: { icon: 'tg-sound-plus', color: 'green' },
sounddel: { icon: 'tg-sound-minus', color: 'red' },
add: { icon: 'check-circle', color: 'green' },
expansion: { icon: 'check-circle', color: 'green' },
rscadd: { icon: 'check-circle', color: 'green' },
rscdel: { icon: 'times-circle', color: 'red' },
rscadd: { icon: 'check-circle', color: 'green' },
imageadd: { icon: 'tg-image-plus', color: 'green' },
imagedel: { icon: 'tg-image-minus', color: 'red' },
spellcheck: { icon: 'spell-check', color: 'green' },
experiment: { icon: 'radiation', color: 'yellow' },
tgs: { icon: 'toolbox', color: 'purple' },
balance: { icon: 'balance-scale-right', color: 'yellow' },
code_imp: { icon: 'code', color: 'green' },
refactor: { icon: 'tools', color: 'green' },
config: { icon: 'cogs', color: 'purple' },
admin: { icon: 'user-shield', color: 'purple' },
server: { icon: 'server', color: 'purple' },
tgs: { icon: 'toolbox', color: 'purple' },
tweak: { icon: 'wrench', color: 'green' },
expansion: { icon: 'check-circle', color: 'green' },
qol: { icon: 'hand-holding-heart', color: 'green' },
unknown: { icon: 'info-circle', color: 'label' },
};
@@ -832,6 +832,9 @@ function checkchangelog($payload, $compile = true) {
$currentchangelogblock[] = array('type' => 'balance', 'body' => $item);
}
break;
case 'tgs':
$currentchangelogblock[] = array('type' => 'tgs', 'body' => $item);
break;
case 'code_imp':
case 'code':
if($item != 'changed some code'){
-4
View File
@@ -1,4 +0,0 @@
@echo off
rem Cheridan asked for this. - N3X
call python ss13_genchangelog.py ../html/changelog.html ../html/changelogs
pause
-4
View File
@@ -1,4 +0,0 @@
PyYAML==6.0
beautifulsoup4==4.10.0
ruamel.yaml==0.17.20
PyGithub==1.55
-215
View File
@@ -1,215 +0,0 @@
'''
Usage:
$ python ss13_genchangelog.py [--dry-run] html/changelog.html html/changelogs/
ss13_genchangelog.py - Generate changelog from YAML.
Copyright 2013 Rob "N3X15" Nelson <nexis@7chan.org>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
'''
from __future__ import print_function
import yaml, os, glob, sys, re, time, argparse
from datetime import datetime, date, timedelta
from time import time
today = date.today()
dateformat = "%d %B %Y"
opt = argparse.ArgumentParser()
opt.add_argument('-d', '--dry-run', dest='dryRun', default=False, action='store_true', help='Only parse changelogs and, if needed, the targetFile. (A .dry_changelog.yml will be output for debugging purposes.)')
opt.add_argument('-t', '--time-period', dest='timePeriod', default=9, type=int, help='Define how many weeks back the changelog should display')
opt.add_argument('targetFile', help='The HTML changelog we wish to update.')
opt.add_argument('ymlDir', help='The directory of YAML changelogs we will use.')
args = opt.parse_args()
all_changelog_entries = {}
validPrefixes = [
'bugfix',
'wip',
'tweak',
'soundadd',
'sounddel',
'rscdel',
'rscadd',
'imageadd',
'imagedel',
'spellcheck',
'experiment',
'tgs',
'balance',
'code_imp',
'refactor',
'config',
'admin',
'server'
]
def dictToTuples(inp):
return [(k, v) for k, v in inp.items()]
changelog_cache = os.path.join(args.ymlDir, '.all_changelog.yml')
failed_cache_read = True
if os.path.isfile(changelog_cache):
try:
with open(changelog_cache,encoding='utf-8') as f:
(_, all_changelog_entries) = yaml.load_all(f)
failed_cache_read = False
# Convert old timestamps to newer format.
new_entries = {}
for _date in all_changelog_entries.keys():
ty = type(_date).__name__
# print(ty)
if ty in ['str', 'unicode']:
temp_data = all_changelog_entries[_date]
_date = datetime.strptime(_date, dateformat).date()
new_entries[_date] = temp_data
else:
new_entries[_date] = all_changelog_entries[_date]
all_changelog_entries = new_entries
except Exception as e:
print("Failed to read cache:")
print(e, file=sys.stderr)
if args.dryRun:
changelog_cache = os.path.join(args.ymlDir, '.dry_changelog.yml')
if failed_cache_read and os.path.isfile(args.targetFile):
from bs4 import BeautifulSoup
from bs4.element import NavigableString
print(' Generating cache...')
with open(args.targetFile, 'r', encoding='utf-8') as f:
soup = BeautifulSoup(f)
for e in soup.find_all('div', {'class':'commit'}):
entry = {}
date = datetime.strptime(e.h2.string.strip(), dateformat).date() # key
for authorT in e.find_all('h3', {'class':'author'}):
author = authorT.string
# Strip suffix
if author.endswith('updated:'):
author = author[:-8]
author = author.strip()
# Find <ul>
ulT = authorT.next_sibling
while(ulT.name != 'ul'):
ulT = ulT.next_sibling
changes = []
for changeT in ulT.children:
if changeT.name != 'li': continue
val = changeT.decode_contents(formatter="html")
newdat = {changeT['class'][0] + '': val + ''}
if newdat not in changes:
changes += [newdat]
if len(changes) > 0:
entry[author] = changes
if date in all_changelog_entries:
all_changelog_entries[date].update(entry)
else:
all_changelog_entries[date] = entry
del_after = []
print('Reading changelogs...')
for fileName in glob.glob(os.path.join(args.ymlDir, "*.yml")):
name, ext = os.path.splitext(os.path.basename(fileName))
if name.startswith('.'): continue
if name == 'example': continue
fileName = os.path.abspath(fileName)
print(' Reading {}...'.format(fileName))
cl = {}
with open(fileName, 'r',encoding='utf-8') as f:
cl = yaml.load(f)
f.close()
if today not in all_changelog_entries:
all_changelog_entries[today] = {}
author_entries = all_changelog_entries[today].get(cl['author'], [])
if len(cl['changes']):
new = 0
for change in cl['changes']:
if change not in author_entries:
(change_type, _) = dictToTuples(change)[0]
if change_type not in validPrefixes:
print(' {0}: Invalid prefix {1}'.format(fileName, change_type), file=sys.stderr)
author_entries += [change]
new += 1
all_changelog_entries[today][cl['author']] = author_entries
if new > 0:
print(' Added {0} new changelog entries.'.format(new))
if cl.get('delete-after', False):
if os.path.isfile(fileName):
if args.dryRun:
print(' Would delete {0} (delete-after set)...'.format(fileName))
else:
del_after += [fileName]
if args.dryRun: continue
cl['changes'] = []
with open(fileName, 'w', encoding='utf-8') as f:
yaml.dump(cl, f, default_flow_style=False)
targetDir = os.path.dirname(args.targetFile)
with open(args.targetFile.replace('.htm', '.dry.htm') if args.dryRun else args.targetFile, 'w', encoding='utf-8') as changelog:
with open(os.path.join(targetDir, 'templates', 'header.html'), 'r', encoding='utf-8') as h:
for line in h:
changelog.write(line)
weekstoshow = timedelta(weeks=args.timePeriod)
for _date in reversed(sorted(all_changelog_entries.keys())):
if not (today - _date < weekstoshow):
continue
entry_htm = '\n'
entry_htm += '\t\t\t<h2 class="date">{date}</h2>\n'.format(date=_date.strftime(dateformat))
write_entry = False
for author in sorted(all_changelog_entries[_date].keys()):
if len(all_changelog_entries[_date]) == 0: continue
author_htm = '\t\t\t<h3 class="author">{author} updated:</h3>\n'.format(author=author)
author_htm += '\t\t\t<ul class="changes bgimages16">\n'
changes_added = []
for (css_class, change) in (dictToTuples(e)[0] for e in all_changelog_entries[_date][author]):
if change in changes_added: continue
write_entry = True
changes_added += [change]
author_htm += '\t\t\t\t<li class="{css_class}">{change}</li>\n'.format(css_class=css_class, change=change.strip())
author_htm += '\t\t\t</ul>\n'
if len(changes_added) > 0:
entry_htm += author_htm
if write_entry:
changelog.write(entry_htm)
with open(os.path.join(targetDir, 'templates', 'footer.html'), 'r', encoding='utf-8') as h:
for line in h:
changelog.write(line)
with open(changelog_cache, 'w') as f:
cache_head = 'DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.'
yaml.dump_all([cache_head, all_changelog_entries], f, default_flow_style=False)
if len(del_after):
print('Cleaning up...')
for fileName in del_after:
if os.path.isfile(fileName):
print(' Deleting {0} (delete-after set)...'.format(fileName))
os.remove(fileName)
+6 -4
View File
@@ -46,22 +46,24 @@ all_changelog_entries = {}
validPrefixes = [
'bugfix',
'wip',
'qol',
'tweak',
'soundadd',
'sounddel',
'rscadd',
'rscdel',
'rscadd',
'imageadd',
'imagedel',
'expansion',
'spellcheck',
'experiment',
'tgs',
'balance',
'code_imp',
'refactor',
'config',
'admin',
'server'
'server',
'expansion',
'qol'
]
def dictToTuples(inp):