more work on pubsync and efrocache

This commit is contained in:
Eric Froemling 2019-10-14 12:31:59 -07:00
parent 0ac9fe2a45
commit d8039cc98f
7 changed files with 1741 additions and 1662 deletions

View File

@ -180,6 +180,7 @@
<w>cachable</w>
<w>cachebasename</w>
<w>cacheentry</w>
<w>cachefile</w>
<w>cachemap</w>
<w>cachepath</w>
<w>calced</w>
@ -500,6 +501,7 @@
<w>fieldattr</w>
<w>fieldtypes</w>
<w>filecmp</w>
<w>filehash</w>
<w>fileinput</w>
<w>filelist</w>
<w>filenames</w>
@ -544,6 +546,7 @@
<w>formatmakefile</w>
<w>formatscripts</w>
<w>formatscriptsfull</w>
<w>formatters</w>
<w>fout</w>
<w>fpath</w>
<w>fpathrel</w>
@ -913,6 +916,7 @@
<w>metaprogramming</w>
<w>metascan</w>
<w>meteorshower</w>
<w>mfpath</w>
<w>mhash</w>
<w>mhsh</w>
<w>microprotocols</w>
@ -1376,6 +1380,7 @@
<w>smlh</w>
<w>smtpd</w>
<w>smtplib</w>
<w>smush</w>
<w>snakeshadow</w>
<w>sname</w>
<w>snode</w>

View File

@ -0,0 +1,468 @@
[
"data/scripts/ba/__init__.py",
"data/scripts/ba/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_account.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_achievement.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_activity.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_activitytypes.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_actor.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_app.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_appconfig.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_appdelegate.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_apputils.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_benchmark.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_campaign.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_coopgame.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_coopsession.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_dep.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_enums.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_error.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_freeforallsession.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_gameactivity.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_gameresults.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_gameutils.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_general.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_hooks.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_input.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_lang.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_level.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_lobby.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_maps.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_math.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_messages.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_meta.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_modutils.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_music.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_netutils.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_playlist.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_powerup.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_profile.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_server.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_session.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_stats.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_store.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_team.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_teambasesession.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_teamgame.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_teamssession.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_tips.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_tournament.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/deprecated.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/internal.cpython-37.opt-1.pyc",
"data/scripts/ba/_account.py",
"data/scripts/ba/_achievement.py",
"data/scripts/ba/_activity.py",
"data/scripts/ba/_activitytypes.py",
"data/scripts/ba/_actor.py",
"data/scripts/ba/_app.py",
"data/scripts/ba/_appconfig.py",
"data/scripts/ba/_appdelegate.py",
"data/scripts/ba/_apputils.py",
"data/scripts/ba/_benchmark.py",
"data/scripts/ba/_campaign.py",
"data/scripts/ba/_coopgame.py",
"data/scripts/ba/_coopsession.py",
"data/scripts/ba/_dep.py",
"data/scripts/ba/_enums.py",
"data/scripts/ba/_error.py",
"data/scripts/ba/_freeforallsession.py",
"data/scripts/ba/_gameactivity.py",
"data/scripts/ba/_gameresults.py",
"data/scripts/ba/_gameutils.py",
"data/scripts/ba/_general.py",
"data/scripts/ba/_hooks.py",
"data/scripts/ba/_input.py",
"data/scripts/ba/_lang.py",
"data/scripts/ba/_level.py",
"data/scripts/ba/_lobby.py",
"data/scripts/ba/_maps.py",
"data/scripts/ba/_math.py",
"data/scripts/ba/_messages.py",
"data/scripts/ba/_meta.py",
"data/scripts/ba/_modutils.py",
"data/scripts/ba/_music.py",
"data/scripts/ba/_netutils.py",
"data/scripts/ba/_playlist.py",
"data/scripts/ba/_powerup.py",
"data/scripts/ba/_profile.py",
"data/scripts/ba/_server.py",
"data/scripts/ba/_session.py",
"data/scripts/ba/_stats.py",
"data/scripts/ba/_store.py",
"data/scripts/ba/_team.py",
"data/scripts/ba/_teambasesession.py",
"data/scripts/ba/_teamgame.py",
"data/scripts/ba/_teamssession.py",
"data/scripts/ba/_tips.py",
"data/scripts/ba/_tournament.py",
"data/scripts/ba/deprecated.py",
"data/scripts/ba/internal.py",
"data/scripts/ba/ui/__init__.py",
"data/scripts/ba/ui/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/__init__.py",
"data/scripts/bafoundation/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/__pycache__/dataclassutils.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/__pycache__/err.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/__pycache__/executils.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/__pycache__/jsonutils.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/__pycache__/util.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/dataclassutils.py",
"data/scripts/bafoundation/entity/__init__.py",
"data/scripts/bafoundation/entity/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/entity/__pycache__/_base.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/entity/__pycache__/_entity.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/entity/__pycache__/_field.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/entity/__pycache__/_support.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/entity/__pycache__/_value.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/entity/__pycache__/util.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/entity/_base.py",
"data/scripts/bafoundation/entity/_entity.py",
"data/scripts/bafoundation/entity/_field.py",
"data/scripts/bafoundation/entity/_support.py",
"data/scripts/bafoundation/entity/_value.py",
"data/scripts/bafoundation/entity/util.py",
"data/scripts/bafoundation/err.py",
"data/scripts/bafoundation/executils.py",
"data/scripts/bafoundation/jsonutils.py",
"data/scripts/bafoundation/util.py",
"data/scripts/bastd/__init__.py",
"data/scripts/bastd/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/__pycache__/appdelegate.cpython-37.opt-1.pyc",
"data/scripts/bastd/__pycache__/mainmenu.cpython-37.opt-1.pyc",
"data/scripts/bastd/__pycache__/maps.cpython-37.opt-1.pyc",
"data/scripts/bastd/__pycache__/stdmap.cpython-37.opt-1.pyc",
"data/scripts/bastd/__pycache__/tutorial.cpython-37.opt-1.pyc",
"data/scripts/bastd/activity/__init__.py",
"data/scripts/bastd/activity/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/activity/__pycache__/coopjoinscreen.cpython-37.opt-1.pyc",
"data/scripts/bastd/activity/__pycache__/coopscorescreen.cpython-37.opt-1.pyc",
"data/scripts/bastd/activity/__pycache__/drawscreen.cpython-37.opt-1.pyc",
"data/scripts/bastd/activity/__pycache__/dualteamscorescreen.cpython-37.opt-1.pyc",
"data/scripts/bastd/activity/__pycache__/freeforallendscreen.cpython-37.opt-1.pyc",
"data/scripts/bastd/activity/__pycache__/multiteamendscreen.cpython-37.opt-1.pyc",
"data/scripts/bastd/activity/__pycache__/multiteamjoinscreen.cpython-37.opt-1.pyc",
"data/scripts/bastd/activity/__pycache__/teamsscorescreen.cpython-37.opt-1.pyc",
"data/scripts/bastd/activity/coopjoinscreen.py",
"data/scripts/bastd/activity/coopscorescreen.py",
"data/scripts/bastd/activity/drawscreen.py",
"data/scripts/bastd/activity/dualteamscorescreen.py",
"data/scripts/bastd/activity/freeforallendscreen.py",
"data/scripts/bastd/activity/multiteamendscreen.py",
"data/scripts/bastd/activity/multiteamjoinscreen.py",
"data/scripts/bastd/activity/teamsscorescreen.py",
"data/scripts/bastd/actor/__init__.py",
"data/scripts/bastd/actor/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/background.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/bomb.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/controlsguide.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/flag.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/image.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/onscreencountdown.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/onscreentimer.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/playerspaz.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/popuptext.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/powerupbox.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/respawnicon.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/scoreboard.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/spawner.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/spaz.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/spazappearance.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/spazbot.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/spazfactory.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/text.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/tipstext.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/zoomtext.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/background.py",
"data/scripts/bastd/actor/bomb.py",
"data/scripts/bastd/actor/controlsguide.py",
"data/scripts/bastd/actor/flag.py",
"data/scripts/bastd/actor/image.py",
"data/scripts/bastd/actor/onscreencountdown.py",
"data/scripts/bastd/actor/onscreentimer.py",
"data/scripts/bastd/actor/playerspaz.py",
"data/scripts/bastd/actor/popuptext.py",
"data/scripts/bastd/actor/powerupbox.py",
"data/scripts/bastd/actor/respawnicon.py",
"data/scripts/bastd/actor/scoreboard.py",
"data/scripts/bastd/actor/spawner.py",
"data/scripts/bastd/actor/spaz.py",
"data/scripts/bastd/actor/spazappearance.py",
"data/scripts/bastd/actor/spazbot.py",
"data/scripts/bastd/actor/spazfactory.py",
"data/scripts/bastd/actor/text.py",
"data/scripts/bastd/actor/tipstext.py",
"data/scripts/bastd/actor/zoomtext.py",
"data/scripts/bastd/appdelegate.py",
"data/scripts/bastd/game/__init__.py",
"data/scripts/bastd/game/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/assault.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/capturetheflag.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/chosenone.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/conquest.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/deathmatch.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/easteregghunt.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/elimination.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/football.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/hockey.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/keepaway.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/kingofthehill.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/meteorshower.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/ninjafight.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/onslaught.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/race.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/runaround.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/targetpractice.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/thelaststand.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/assault.py",
"data/scripts/bastd/game/capturetheflag.py",
"data/scripts/bastd/game/chosenone.py",
"data/scripts/bastd/game/conquest.py",
"data/scripts/bastd/game/deathmatch.py",
"data/scripts/bastd/game/easteregghunt.py",
"data/scripts/bastd/game/elimination.py",
"data/scripts/bastd/game/football.py",
"data/scripts/bastd/game/hockey.py",
"data/scripts/bastd/game/keepaway.py",
"data/scripts/bastd/game/kingofthehill.py",
"data/scripts/bastd/game/meteorshower.py",
"data/scripts/bastd/game/ninjafight.py",
"data/scripts/bastd/game/onslaught.py",
"data/scripts/bastd/game/race.py",
"data/scripts/bastd/game/runaround.py",
"data/scripts/bastd/game/targetpractice.py",
"data/scripts/bastd/game/thelaststand.py",
"data/scripts/bastd/mainmenu.py",
"data/scripts/bastd/mapdata/__init__.py",
"data/scripts/bastd/mapdata/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/big_g.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/bridgit.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/courtyard.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/crag_castle.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/doom_shroom.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/football_stadium.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/happy_thoughts.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/hockey_stadium.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/lake_frigid.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/monkey_face.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/rampage.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/roundabout.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/step_right_up.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/the_pad.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/tip_top.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/tower_d.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/zig_zag.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/big_g.py",
"data/scripts/bastd/mapdata/bridgit.py",
"data/scripts/bastd/mapdata/courtyard.py",
"data/scripts/bastd/mapdata/crag_castle.py",
"data/scripts/bastd/mapdata/doom_shroom.py",
"data/scripts/bastd/mapdata/football_stadium.py",
"data/scripts/bastd/mapdata/happy_thoughts.py",
"data/scripts/bastd/mapdata/hockey_stadium.py",
"data/scripts/bastd/mapdata/lake_frigid.py",
"data/scripts/bastd/mapdata/monkey_face.py",
"data/scripts/bastd/mapdata/rampage.py",
"data/scripts/bastd/mapdata/roundabout.py",
"data/scripts/bastd/mapdata/step_right_up.py",
"data/scripts/bastd/mapdata/the_pad.py",
"data/scripts/bastd/mapdata/tip_top.py",
"data/scripts/bastd/mapdata/tower_d.py",
"data/scripts/bastd/mapdata/zig_zag.py",
"data/scripts/bastd/maps.py",
"data/scripts/bastd/session/__init__.py",
"data/scripts/bastd/session/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/stdmap.py",
"data/scripts/bastd/tutorial.py",
"data/scripts/bastd/ui/__init__.py",
"data/scripts/bastd/ui/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/achievements.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/appinvite.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/characterpicker.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/colorpicker.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/config.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/configerror.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/confirm.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/continues.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/creditslist.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/debug.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/feedback.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/fileselector.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/gather.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/getcurrency.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/getremote.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/helpui.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/iconpicker.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/kiosk.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/mainmenu.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/onscreenkeyboard.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/party.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/partyqueue.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/play.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/playoptions.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/popup.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/promocode.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/purchase.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/qrcode.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/radiogroup.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/report.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/resourcetypeinfo.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/serverdialog.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/specialoffer.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/tabs.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/teamnamescolors.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/telnet.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/tournamententry.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/tournamentscores.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/trophies.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/url.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/watch.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/account/__init__.py",
"data/scripts/bastd/ui/account/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/account/__pycache__/link.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/account/__pycache__/settings.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/account/__pycache__/unlink.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/account/__pycache__/viewer.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/account/link.py",
"data/scripts/bastd/ui/account/settings.py",
"data/scripts/bastd/ui/account/unlink.py",
"data/scripts/bastd/ui/account/viewer.py",
"data/scripts/bastd/ui/achievements.py",
"data/scripts/bastd/ui/appinvite.py",
"data/scripts/bastd/ui/characterpicker.py",
"data/scripts/bastd/ui/colorpicker.py",
"data/scripts/bastd/ui/config.py",
"data/scripts/bastd/ui/configerror.py",
"data/scripts/bastd/ui/confirm.py",
"data/scripts/bastd/ui/continues.py",
"data/scripts/bastd/ui/coop/__init__.py",
"data/scripts/bastd/ui/coop/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/coop/__pycache__/browser.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/coop/__pycache__/gamebutton.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/coop/__pycache__/level.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/coop/browser.py",
"data/scripts/bastd/ui/coop/gamebutton.py",
"data/scripts/bastd/ui/coop/level.py",
"data/scripts/bastd/ui/creditslist.py",
"data/scripts/bastd/ui/debug.py",
"data/scripts/bastd/ui/feedback.py",
"data/scripts/bastd/ui/fileselector.py",
"data/scripts/bastd/ui/gather.py",
"data/scripts/bastd/ui/getcurrency.py",
"data/scripts/bastd/ui/getremote.py",
"data/scripts/bastd/ui/helpui.py",
"data/scripts/bastd/ui/iconpicker.py",
"data/scripts/bastd/ui/kiosk.py",
"data/scripts/bastd/ui/league/__init__.py",
"data/scripts/bastd/ui/league/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/league/__pycache__/rankbutton.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/league/__pycache__/rankwindow.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/league/rankbutton.py",
"data/scripts/bastd/ui/league/rankwindow.py",
"data/scripts/bastd/ui/mainmenu.py",
"data/scripts/bastd/ui/onscreenkeyboard.py",
"data/scripts/bastd/ui/party.py",
"data/scripts/bastd/ui/partyqueue.py",
"data/scripts/bastd/ui/play.py",
"data/scripts/bastd/ui/playlist/__init__.py",
"data/scripts/bastd/ui/playlist/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/playlist/__pycache__/addgame.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/playlist/__pycache__/browser.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/playlist/__pycache__/customizebrowser.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/playlist/__pycache__/edit.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/playlist/__pycache__/editcontroller.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/playlist/__pycache__/editgame.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/playlist/__pycache__/mapselect.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/playlist/__pycache__/share.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/playlist/addgame.py",
"data/scripts/bastd/ui/playlist/browser.py",
"data/scripts/bastd/ui/playlist/customizebrowser.py",
"data/scripts/bastd/ui/playlist/edit.py",
"data/scripts/bastd/ui/playlist/editcontroller.py",
"data/scripts/bastd/ui/playlist/editgame.py",
"data/scripts/bastd/ui/playlist/mapselect.py",
"data/scripts/bastd/ui/playlist/share.py",
"data/scripts/bastd/ui/playoptions.py",
"data/scripts/bastd/ui/popup.py",
"data/scripts/bastd/ui/profile/__init__.py",
"data/scripts/bastd/ui/profile/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/profile/__pycache__/browser.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/profile/__pycache__/edit.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/profile/__pycache__/upgrade.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/profile/browser.py",
"data/scripts/bastd/ui/profile/edit.py",
"data/scripts/bastd/ui/profile/upgrade.py",
"data/scripts/bastd/ui/promocode.py",
"data/scripts/bastd/ui/purchase.py",
"data/scripts/bastd/ui/qrcode.py",
"data/scripts/bastd/ui/radiogroup.py",
"data/scripts/bastd/ui/report.py",
"data/scripts/bastd/ui/resourcetypeinfo.py",
"data/scripts/bastd/ui/serverdialog.py",
"data/scripts/bastd/ui/settings/__init__.py",
"data/scripts/bastd/ui/settings/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/advanced.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/allsettings.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/audio.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/controls.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/gamepad.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/gamepadadvanced.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/gamepadselect.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/graphics.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/keyboard.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/nettesting.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/ps3controller.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/remoteapp.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/testing.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/touchscreen.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/vrtesting.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/wiimote.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/xbox360controller.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/advanced.py",
"data/scripts/bastd/ui/settings/allsettings.py",
"data/scripts/bastd/ui/settings/audio.py",
"data/scripts/bastd/ui/settings/controls.py",
"data/scripts/bastd/ui/settings/gamepad.py",
"data/scripts/bastd/ui/settings/gamepadadvanced.py",
"data/scripts/bastd/ui/settings/gamepadselect.py",
"data/scripts/bastd/ui/settings/graphics.py",
"data/scripts/bastd/ui/settings/keyboard.py",
"data/scripts/bastd/ui/settings/nettesting.py",
"data/scripts/bastd/ui/settings/ps3controller.py",
"data/scripts/bastd/ui/settings/remoteapp.py",
"data/scripts/bastd/ui/settings/testing.py",
"data/scripts/bastd/ui/settings/touchscreen.py",
"data/scripts/bastd/ui/settings/vrtesting.py",
"data/scripts/bastd/ui/settings/wiimote.py",
"data/scripts/bastd/ui/settings/xbox360controller.py",
"data/scripts/bastd/ui/soundtrack/__init__.py",
"data/scripts/bastd/ui/soundtrack/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/soundtrack/__pycache__/browser.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/soundtrack/__pycache__/edit.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/soundtrack/__pycache__/entrytypeselect.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/soundtrack/__pycache__/itunes.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/soundtrack/browser.py",
"data/scripts/bastd/ui/soundtrack/edit.py",
"data/scripts/bastd/ui/soundtrack/entrytypeselect.py",
"data/scripts/bastd/ui/soundtrack/itunes.py",
"data/scripts/bastd/ui/specialoffer.py",
"data/scripts/bastd/ui/store/__init__.py",
"data/scripts/bastd/ui/store/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/store/__pycache__/browser.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/store/__pycache__/button.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/store/__pycache__/item.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/store/browser.py",
"data/scripts/bastd/ui/store/button.py",
"data/scripts/bastd/ui/store/item.py",
"data/scripts/bastd/ui/tabs.py",
"data/scripts/bastd/ui/teamnamescolors.py",
"data/scripts/bastd/ui/telnet.py",
"data/scripts/bastd/ui/tournamententry.py",
"data/scripts/bastd/ui/tournamentscores.py",
"data/scripts/bastd/ui/trophies.py",
"data/scripts/bastd/ui/url.py",
"data/scripts/bastd/ui/watch.py",
"server/__pycache__/config.cpython-37.opt-1.pyc",
"server/__pycache__/server.cpython-37.opt-1.pyc",
"server/config.py",
"server/server.py"
]

View File

@ -936,468 +936,6 @@
"data/models/zoeTorso.bob",
"data/models/zoeUpperArm.bob",
"data/models/zoeUpperLeg.bob",
"data/scripts/ba/__init__.py",
"data/scripts/ba/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_account.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_achievement.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_activity.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_activitytypes.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_actor.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_app.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_appconfig.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_appdelegate.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_apputils.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_benchmark.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_campaign.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_coopgame.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_coopsession.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_dep.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_enums.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_error.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_freeforallsession.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_gameactivity.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_gameresults.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_gameutils.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_general.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_hooks.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_input.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_lang.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_level.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_lobby.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_maps.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_math.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_messages.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_meta.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_modutils.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_music.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_netutils.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_playlist.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_powerup.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_profile.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_server.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_session.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_stats.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_store.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_team.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_teambasesession.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_teamgame.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_teamssession.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_tips.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/_tournament.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/deprecated.cpython-37.opt-1.pyc",
"data/scripts/ba/__pycache__/internal.cpython-37.opt-1.pyc",
"data/scripts/ba/_account.py",
"data/scripts/ba/_achievement.py",
"data/scripts/ba/_activity.py",
"data/scripts/ba/_activitytypes.py",
"data/scripts/ba/_actor.py",
"data/scripts/ba/_app.py",
"data/scripts/ba/_appconfig.py",
"data/scripts/ba/_appdelegate.py",
"data/scripts/ba/_apputils.py",
"data/scripts/ba/_benchmark.py",
"data/scripts/ba/_campaign.py",
"data/scripts/ba/_coopgame.py",
"data/scripts/ba/_coopsession.py",
"data/scripts/ba/_dep.py",
"data/scripts/ba/_enums.py",
"data/scripts/ba/_error.py",
"data/scripts/ba/_freeforallsession.py",
"data/scripts/ba/_gameactivity.py",
"data/scripts/ba/_gameresults.py",
"data/scripts/ba/_gameutils.py",
"data/scripts/ba/_general.py",
"data/scripts/ba/_hooks.py",
"data/scripts/ba/_input.py",
"data/scripts/ba/_lang.py",
"data/scripts/ba/_level.py",
"data/scripts/ba/_lobby.py",
"data/scripts/ba/_maps.py",
"data/scripts/ba/_math.py",
"data/scripts/ba/_messages.py",
"data/scripts/ba/_meta.py",
"data/scripts/ba/_modutils.py",
"data/scripts/ba/_music.py",
"data/scripts/ba/_netutils.py",
"data/scripts/ba/_playlist.py",
"data/scripts/ba/_powerup.py",
"data/scripts/ba/_profile.py",
"data/scripts/ba/_server.py",
"data/scripts/ba/_session.py",
"data/scripts/ba/_stats.py",
"data/scripts/ba/_store.py",
"data/scripts/ba/_team.py",
"data/scripts/ba/_teambasesession.py",
"data/scripts/ba/_teamgame.py",
"data/scripts/ba/_teamssession.py",
"data/scripts/ba/_tips.py",
"data/scripts/ba/_tournament.py",
"data/scripts/ba/deprecated.py",
"data/scripts/ba/internal.py",
"data/scripts/ba/ui/__init__.py",
"data/scripts/ba/ui/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/__init__.py",
"data/scripts/bafoundation/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/__pycache__/dataclassutils.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/__pycache__/err.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/__pycache__/executils.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/__pycache__/jsonutils.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/__pycache__/util.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/dataclassutils.py",
"data/scripts/bafoundation/entity/__init__.py",
"data/scripts/bafoundation/entity/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/entity/__pycache__/_base.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/entity/__pycache__/_entity.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/entity/__pycache__/_field.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/entity/__pycache__/_support.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/entity/__pycache__/_value.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/entity/__pycache__/util.cpython-37.opt-1.pyc",
"data/scripts/bafoundation/entity/_base.py",
"data/scripts/bafoundation/entity/_entity.py",
"data/scripts/bafoundation/entity/_field.py",
"data/scripts/bafoundation/entity/_support.py",
"data/scripts/bafoundation/entity/_value.py",
"data/scripts/bafoundation/entity/util.py",
"data/scripts/bafoundation/err.py",
"data/scripts/bafoundation/executils.py",
"data/scripts/bafoundation/jsonutils.py",
"data/scripts/bafoundation/util.py",
"data/scripts/bastd/__init__.py",
"data/scripts/bastd/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/__pycache__/appdelegate.cpython-37.opt-1.pyc",
"data/scripts/bastd/__pycache__/mainmenu.cpython-37.opt-1.pyc",
"data/scripts/bastd/__pycache__/maps.cpython-37.opt-1.pyc",
"data/scripts/bastd/__pycache__/stdmap.cpython-37.opt-1.pyc",
"data/scripts/bastd/__pycache__/tutorial.cpython-37.opt-1.pyc",
"data/scripts/bastd/activity/__init__.py",
"data/scripts/bastd/activity/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/activity/__pycache__/coopjoinscreen.cpython-37.opt-1.pyc",
"data/scripts/bastd/activity/__pycache__/coopscorescreen.cpython-37.opt-1.pyc",
"data/scripts/bastd/activity/__pycache__/drawscreen.cpython-37.opt-1.pyc",
"data/scripts/bastd/activity/__pycache__/dualteamscorescreen.cpython-37.opt-1.pyc",
"data/scripts/bastd/activity/__pycache__/freeforallendscreen.cpython-37.opt-1.pyc",
"data/scripts/bastd/activity/__pycache__/multiteamendscreen.cpython-37.opt-1.pyc",
"data/scripts/bastd/activity/__pycache__/multiteamjoinscreen.cpython-37.opt-1.pyc",
"data/scripts/bastd/activity/__pycache__/teamsscorescreen.cpython-37.opt-1.pyc",
"data/scripts/bastd/activity/coopjoinscreen.py",
"data/scripts/bastd/activity/coopscorescreen.py",
"data/scripts/bastd/activity/drawscreen.py",
"data/scripts/bastd/activity/dualteamscorescreen.py",
"data/scripts/bastd/activity/freeforallendscreen.py",
"data/scripts/bastd/activity/multiteamendscreen.py",
"data/scripts/bastd/activity/multiteamjoinscreen.py",
"data/scripts/bastd/activity/teamsscorescreen.py",
"data/scripts/bastd/actor/__init__.py",
"data/scripts/bastd/actor/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/background.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/bomb.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/controlsguide.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/flag.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/image.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/onscreencountdown.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/onscreentimer.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/playerspaz.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/popuptext.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/powerupbox.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/respawnicon.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/scoreboard.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/spawner.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/spaz.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/spazappearance.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/spazbot.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/spazfactory.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/text.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/tipstext.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/__pycache__/zoomtext.cpython-37.opt-1.pyc",
"data/scripts/bastd/actor/background.py",
"data/scripts/bastd/actor/bomb.py",
"data/scripts/bastd/actor/controlsguide.py",
"data/scripts/bastd/actor/flag.py",
"data/scripts/bastd/actor/image.py",
"data/scripts/bastd/actor/onscreencountdown.py",
"data/scripts/bastd/actor/onscreentimer.py",
"data/scripts/bastd/actor/playerspaz.py",
"data/scripts/bastd/actor/popuptext.py",
"data/scripts/bastd/actor/powerupbox.py",
"data/scripts/bastd/actor/respawnicon.py",
"data/scripts/bastd/actor/scoreboard.py",
"data/scripts/bastd/actor/spawner.py",
"data/scripts/bastd/actor/spaz.py",
"data/scripts/bastd/actor/spazappearance.py",
"data/scripts/bastd/actor/spazbot.py",
"data/scripts/bastd/actor/spazfactory.py",
"data/scripts/bastd/actor/text.py",
"data/scripts/bastd/actor/tipstext.py",
"data/scripts/bastd/actor/zoomtext.py",
"data/scripts/bastd/appdelegate.py",
"data/scripts/bastd/game/__init__.py",
"data/scripts/bastd/game/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/assault.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/capturetheflag.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/chosenone.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/conquest.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/deathmatch.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/easteregghunt.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/elimination.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/football.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/hockey.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/keepaway.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/kingofthehill.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/meteorshower.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/ninjafight.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/onslaught.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/race.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/runaround.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/targetpractice.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/__pycache__/thelaststand.cpython-37.opt-1.pyc",
"data/scripts/bastd/game/assault.py",
"data/scripts/bastd/game/capturetheflag.py",
"data/scripts/bastd/game/chosenone.py",
"data/scripts/bastd/game/conquest.py",
"data/scripts/bastd/game/deathmatch.py",
"data/scripts/bastd/game/easteregghunt.py",
"data/scripts/bastd/game/elimination.py",
"data/scripts/bastd/game/football.py",
"data/scripts/bastd/game/hockey.py",
"data/scripts/bastd/game/keepaway.py",
"data/scripts/bastd/game/kingofthehill.py",
"data/scripts/bastd/game/meteorshower.py",
"data/scripts/bastd/game/ninjafight.py",
"data/scripts/bastd/game/onslaught.py",
"data/scripts/bastd/game/race.py",
"data/scripts/bastd/game/runaround.py",
"data/scripts/bastd/game/targetpractice.py",
"data/scripts/bastd/game/thelaststand.py",
"data/scripts/bastd/mainmenu.py",
"data/scripts/bastd/mapdata/__init__.py",
"data/scripts/bastd/mapdata/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/big_g.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/bridgit.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/courtyard.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/crag_castle.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/doom_shroom.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/football_stadium.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/happy_thoughts.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/hockey_stadium.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/lake_frigid.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/monkey_face.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/rampage.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/roundabout.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/step_right_up.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/the_pad.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/tip_top.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/tower_d.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/__pycache__/zig_zag.cpython-37.opt-1.pyc",
"data/scripts/bastd/mapdata/big_g.py",
"data/scripts/bastd/mapdata/bridgit.py",
"data/scripts/bastd/mapdata/courtyard.py",
"data/scripts/bastd/mapdata/crag_castle.py",
"data/scripts/bastd/mapdata/doom_shroom.py",
"data/scripts/bastd/mapdata/football_stadium.py",
"data/scripts/bastd/mapdata/happy_thoughts.py",
"data/scripts/bastd/mapdata/hockey_stadium.py",
"data/scripts/bastd/mapdata/lake_frigid.py",
"data/scripts/bastd/mapdata/monkey_face.py",
"data/scripts/bastd/mapdata/rampage.py",
"data/scripts/bastd/mapdata/roundabout.py",
"data/scripts/bastd/mapdata/step_right_up.py",
"data/scripts/bastd/mapdata/the_pad.py",
"data/scripts/bastd/mapdata/tip_top.py",
"data/scripts/bastd/mapdata/tower_d.py",
"data/scripts/bastd/mapdata/zig_zag.py",
"data/scripts/bastd/maps.py",
"data/scripts/bastd/session/__init__.py",
"data/scripts/bastd/session/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/stdmap.py",
"data/scripts/bastd/tutorial.py",
"data/scripts/bastd/ui/__init__.py",
"data/scripts/bastd/ui/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/achievements.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/appinvite.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/characterpicker.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/colorpicker.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/config.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/configerror.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/confirm.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/continues.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/creditslist.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/debug.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/feedback.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/fileselector.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/gather.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/getcurrency.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/getremote.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/helpui.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/iconpicker.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/kiosk.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/mainmenu.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/onscreenkeyboard.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/party.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/partyqueue.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/play.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/playoptions.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/popup.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/promocode.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/purchase.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/qrcode.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/radiogroup.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/report.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/resourcetypeinfo.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/serverdialog.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/specialoffer.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/tabs.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/teamnamescolors.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/telnet.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/tournamententry.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/tournamentscores.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/trophies.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/url.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/__pycache__/watch.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/account/__init__.py",
"data/scripts/bastd/ui/account/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/account/__pycache__/link.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/account/__pycache__/settings.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/account/__pycache__/unlink.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/account/__pycache__/viewer.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/account/link.py",
"data/scripts/bastd/ui/account/settings.py",
"data/scripts/bastd/ui/account/unlink.py",
"data/scripts/bastd/ui/account/viewer.py",
"data/scripts/bastd/ui/achievements.py",
"data/scripts/bastd/ui/appinvite.py",
"data/scripts/bastd/ui/characterpicker.py",
"data/scripts/bastd/ui/colorpicker.py",
"data/scripts/bastd/ui/config.py",
"data/scripts/bastd/ui/configerror.py",
"data/scripts/bastd/ui/confirm.py",
"data/scripts/bastd/ui/continues.py",
"data/scripts/bastd/ui/coop/__init__.py",
"data/scripts/bastd/ui/coop/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/coop/__pycache__/browser.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/coop/__pycache__/gamebutton.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/coop/__pycache__/level.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/coop/browser.py",
"data/scripts/bastd/ui/coop/gamebutton.py",
"data/scripts/bastd/ui/coop/level.py",
"data/scripts/bastd/ui/creditslist.py",
"data/scripts/bastd/ui/debug.py",
"data/scripts/bastd/ui/feedback.py",
"data/scripts/bastd/ui/fileselector.py",
"data/scripts/bastd/ui/gather.py",
"data/scripts/bastd/ui/getcurrency.py",
"data/scripts/bastd/ui/getremote.py",
"data/scripts/bastd/ui/helpui.py",
"data/scripts/bastd/ui/iconpicker.py",
"data/scripts/bastd/ui/kiosk.py",
"data/scripts/bastd/ui/league/__init__.py",
"data/scripts/bastd/ui/league/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/league/__pycache__/rankbutton.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/league/__pycache__/rankwindow.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/league/rankbutton.py",
"data/scripts/bastd/ui/league/rankwindow.py",
"data/scripts/bastd/ui/mainmenu.py",
"data/scripts/bastd/ui/onscreenkeyboard.py",
"data/scripts/bastd/ui/party.py",
"data/scripts/bastd/ui/partyqueue.py",
"data/scripts/bastd/ui/play.py",
"data/scripts/bastd/ui/playlist/__init__.py",
"data/scripts/bastd/ui/playlist/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/playlist/__pycache__/addgame.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/playlist/__pycache__/browser.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/playlist/__pycache__/customizebrowser.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/playlist/__pycache__/edit.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/playlist/__pycache__/editcontroller.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/playlist/__pycache__/editgame.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/playlist/__pycache__/mapselect.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/playlist/__pycache__/share.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/playlist/addgame.py",
"data/scripts/bastd/ui/playlist/browser.py",
"data/scripts/bastd/ui/playlist/customizebrowser.py",
"data/scripts/bastd/ui/playlist/edit.py",
"data/scripts/bastd/ui/playlist/editcontroller.py",
"data/scripts/bastd/ui/playlist/editgame.py",
"data/scripts/bastd/ui/playlist/mapselect.py",
"data/scripts/bastd/ui/playlist/share.py",
"data/scripts/bastd/ui/playoptions.py",
"data/scripts/bastd/ui/popup.py",
"data/scripts/bastd/ui/profile/__init__.py",
"data/scripts/bastd/ui/profile/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/profile/__pycache__/browser.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/profile/__pycache__/edit.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/profile/__pycache__/upgrade.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/profile/browser.py",
"data/scripts/bastd/ui/profile/edit.py",
"data/scripts/bastd/ui/profile/upgrade.py",
"data/scripts/bastd/ui/promocode.py",
"data/scripts/bastd/ui/purchase.py",
"data/scripts/bastd/ui/qrcode.py",
"data/scripts/bastd/ui/radiogroup.py",
"data/scripts/bastd/ui/report.py",
"data/scripts/bastd/ui/resourcetypeinfo.py",
"data/scripts/bastd/ui/serverdialog.py",
"data/scripts/bastd/ui/settings/__init__.py",
"data/scripts/bastd/ui/settings/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/advanced.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/allsettings.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/audio.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/controls.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/gamepad.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/gamepadadvanced.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/gamepadselect.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/graphics.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/keyboard.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/nettesting.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/ps3controller.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/remoteapp.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/testing.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/touchscreen.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/vrtesting.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/wiimote.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/__pycache__/xbox360controller.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/settings/advanced.py",
"data/scripts/bastd/ui/settings/allsettings.py",
"data/scripts/bastd/ui/settings/audio.py",
"data/scripts/bastd/ui/settings/controls.py",
"data/scripts/bastd/ui/settings/gamepad.py",
"data/scripts/bastd/ui/settings/gamepadadvanced.py",
"data/scripts/bastd/ui/settings/gamepadselect.py",
"data/scripts/bastd/ui/settings/graphics.py",
"data/scripts/bastd/ui/settings/keyboard.py",
"data/scripts/bastd/ui/settings/nettesting.py",
"data/scripts/bastd/ui/settings/ps3controller.py",
"data/scripts/bastd/ui/settings/remoteapp.py",
"data/scripts/bastd/ui/settings/testing.py",
"data/scripts/bastd/ui/settings/touchscreen.py",
"data/scripts/bastd/ui/settings/vrtesting.py",
"data/scripts/bastd/ui/settings/wiimote.py",
"data/scripts/bastd/ui/settings/xbox360controller.py",
"data/scripts/bastd/ui/soundtrack/__init__.py",
"data/scripts/bastd/ui/soundtrack/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/soundtrack/__pycache__/browser.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/soundtrack/__pycache__/edit.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/soundtrack/__pycache__/entrytypeselect.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/soundtrack/__pycache__/itunes.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/soundtrack/browser.py",
"data/scripts/bastd/ui/soundtrack/edit.py",
"data/scripts/bastd/ui/soundtrack/entrytypeselect.py",
"data/scripts/bastd/ui/soundtrack/itunes.py",
"data/scripts/bastd/ui/specialoffer.py",
"data/scripts/bastd/ui/store/__init__.py",
"data/scripts/bastd/ui/store/__pycache__/__init__.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/store/__pycache__/browser.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/store/__pycache__/button.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/store/__pycache__/item.cpython-37.opt-1.pyc",
"data/scripts/bastd/ui/store/browser.py",
"data/scripts/bastd/ui/store/button.py",
"data/scripts/bastd/ui/store/item.py",
"data/scripts/bastd/ui/tabs.py",
"data/scripts/bastd/ui/teamnamescolors.py",
"data/scripts/bastd/ui/telnet.py",
"data/scripts/bastd/ui/tournamententry.py",
"data/scripts/bastd/ui/tournamentscores.py",
"data/scripts/bastd/ui/trophies.py",
"data/scripts/bastd/ui/url.py",
"data/scripts/bastd/ui/watch.py",
"data/textures/achievementBoxer.dds",
"data/textures/achievementBoxer.ktx",
"data/textures/achievementBoxer.pvr",
@ -4707,9 +4245,5 @@
"pylib-apple/zipapp.py",
"pylib-apple/zipfile.py",
"pylib-site-packages/__pycache__/typing_extensions.cpython-37.opt-1.pyc",
"pylib-site-packages/typing_extensions.py",
"server/__pycache__/config.cpython-37.opt-1.pyc",
"server/__pycache__/server.cpython-37.opt-1.pyc",
"server/config.py",
"server/server.py"
"pylib-site-packages/typing_extensions.py"
]

File diff suppressed because it is too large Load Diff

View File

@ -86,6 +86,7 @@ def set_config(projroot: Path, config: Dict[str, Any]) -> None:
with Path(projroot, 'config/config.json').open('w') as outfile:
outfile.write(json.dumps(config, indent=2))
def get_public_license(style: str) -> str:
"""Return the MIT license as used for our public facing stuff.

View File

@ -39,6 +39,9 @@ TARGET_TAG = '#__EFROCACHE_TARGET__'
STRIP_BEGIN_TAG = '#__EFROCACHE_STRIP_BEGIN__'
STRIP_END_TAG = '#__EFROCACHE_STRIP_END__'
CACHE_DIR_NAME = '.efrocache'
CACHE_MAP_NAME = '.efrocachemap'
def get_file_hash(path: str) -> str:
"""Return the hash used for caching.
@ -58,13 +61,13 @@ def get_target(path: str) -> None:
import json
from efrotools import run
with open('.efrocachemap') as infile:
with open(CACHE_MAP_NAME) as infile:
efrocachemap = json.loads(infile.read())
if path not in efrocachemap:
raise RuntimeError(f'Path not found in efrocache: {path}')
url = efrocachemap[path]
subpath = '/'.join(url.split('/')[-3:])
local_cache_path = os.path.join('.efrocache', subpath)
local_cache_path = os.path.join(CACHE_DIR_NAME, subpath)
local_cache_path_dl = local_cache_path + '.download'
hashval = ''.join(subpath.split('/'))
@ -74,7 +77,7 @@ def get_target(path: str) -> None:
if os.path.isfile(path):
existing_hash = get_file_hash(path)
if existing_hash == hashval:
os.utime(path)
os.utime(path, None)
print(f'Refreshing from cache: {path}')
return
@ -113,7 +116,7 @@ def filter_makefile(makefile_dir: str, contents: str) -> str:
else:
to_proj_root = ''
cachemap = os.path.join(to_proj_root, '.efrocachemap')
cachemap = os.path.join(to_proj_root, CACHE_MAP_NAME)
lines = contents.splitlines()
snippets = 'tools/snippets'
@ -230,3 +233,68 @@ def _write_cache_files(fnames: List[str], staging_dir: str,
mapping[result[0]] = baseurl + result[1]
with open(mapping_file, 'w') as outfile:
outfile.write(json.dumps(mapping, indent=2, sort_keys=True))
def _check_warm_start_entry(entry: Tuple[str, str]) -> None:
import hashlib
fname, filehash = entry
md5 = hashlib.md5()
with open(fname, 'rb') as infile:
md5.update(infile.read())
md5.update(fname.encode())
finalhash = md5.hexdigest()
# If the file still matches the hash value we have for it,
# go ahead and update its timestamp.
if finalhash == filehash:
os.utime(fname, None)
def _check_warm_start_entries(entries: List[Tuple[str, str]]) -> None:
from multiprocessing import cpu_count
from concurrent.futures import ThreadPoolExecutor
with ThreadPoolExecutor(max_workers=cpu_count()) as executor:
# Converting this to a list pulls results and propagates errors)
list(executor.map(_check_warm_start_entry, entries))
def warm_start_cache() -> None:
"""Efficiently update timestamps on unchanged cached files.
This can be run as a pre-pass before an asset build to quickly
update timestamps on all unchanged asset files. This can save
substantial time compared to letting every asset file update itself
individually during builds as would happen normally after the map is
modified.
"""
import json
# In the public build, let's scan through all files managed by
# efrocache and update any with timestamps older than the latest
# cache-map that we already have the data for.
# Otherwise those files will update individually the next time
# they are 'built'. Even though that only takes a fraction of a
# second per file, it adds up when done for thousands of assets
# each time the cache map changes. It is much more efficient to do
# it in one go here.
cachemap: Dict[str, str]
with open(CACHE_MAP_NAME) as infile:
cachemap = json.loads(infile.read())
assert isinstance(cachemap, dict)
cachemap_mtime = os.path.getmtime(CACHE_MAP_NAME)
entries: List[Tuple[str, str]] = []
for fname, url in cachemap.items():
mtime = os.path.getmtime(fname)
if cachemap_mtime > mtime:
cachefile = CACHE_DIR_NAME + '/' + '/'.join(url.split('/')[-3:])
filehash = ''.join(url.split('/')[-3:])
# Only look at files that already exist and correspond to
# cache files that already exist.
# If this is the case we could probably just update the timestamp
# and call it a day, but let's be super safe by checking hashes
# on existing files to make sure they line up.
if os.path.isfile(fname) and os.path.isfile(cachefile):
entries.append((fname, filehash))
if entries:
_check_warm_start_entries(entries)

View File

@ -516,8 +516,12 @@ def clean_orphaned_assets() -> None:
# Operate from dist root..
os.chdir(PROJROOT)
with open('assets/manifest.json') as infile:
# Our manifest is split into 2 files (public and non-public)
with open('assets/.asset_manifest_1.json') as infile:
manifest = set(json.loads(infile.read()))
with open('assets/.asset_manifest_2.json') as infile:
manifest.update(set(json.loads(infile.read())))
for root, _dirs, fnames in os.walk('assets/build'):
for fname in fnames:
fpath = os.path.join(root, fname)
@ -587,11 +591,6 @@ def check_mac_ssh() -> None:
print('password ssh auth seems disabled; hooray!')
def megalint() -> None:
"""Run really long jetbrains lints."""
print('would do megalint')
def capitalize() -> None:
"""Print args capitalized."""
print(' '.join(w.capitalize() for w in sys.argv[2:]))
@ -638,15 +637,9 @@ def warm_start_asset_build() -> None:
public: bool = get_config(PROJROOT)['public']
if public:
# In the public build, let's scan through all files managed by
# efrocache and update any with timestamps older than the latest
# cache-map that we already have the data for.
# Otherwise those files will update individually the next time
# they are 'built'. Even though that only takes a fraction of a
# second per file, it adds up when done for thousands of assets
# each time the cache map changes. It is much more efficient to do
# it in one go here.
print('WOULD DO EFROCACHE UPDATE PUSH')
from efrotools.efrocache import warm_start_cache
os.chdir(PROJROOT)
warm_start_cache()
else:
# For internal builds we don't use efrocache but we do use an
# internal build cache. Download an initial cache/etc. if need be.
@ -654,5 +647,6 @@ def warm_start_asset_build() -> None:
[str(Path(PROJROOT, 'tools/convert_util')), '--init-asset-cache'],
check=True)
if __name__ == '__main__':
snippets_main(globals())