mirror of
https://github.com/Derpy-Leggies/OnlyLegs.git
synced 2025-01-01 12:26:13 +00:00
Remove theme manager in favour of webassets
This commit is contained in:
parent
c89df1613d
commit
f540c234f3
|
@ -19,9 +19,6 @@ import platformdirs
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
from yaml import safe_load
|
from yaml import safe_load
|
||||||
|
|
||||||
# Utils
|
|
||||||
from gallery.utils import theme_manager
|
|
||||||
|
|
||||||
|
|
||||||
USER_DIR = platformdirs.user_config_dir('onlylegs')
|
USER_DIR = platformdirs.user_config_dir('onlylegs')
|
||||||
|
|
||||||
|
@ -59,14 +56,13 @@ def create_app(test_config=None):
|
||||||
else:
|
else:
|
||||||
app.config.from_mapping(test_config)
|
app.config.from_mapping(test_config)
|
||||||
|
|
||||||
# Load theme
|
|
||||||
theme_manager.compile_theme('default', app.root_path)
|
|
||||||
|
|
||||||
# Load JS assets
|
# Load JS assets
|
||||||
js_pre = Bundle('js/pre/*.js', output='gen/pre_packed.js')
|
js_pre = Bundle('js/pre/*.js', output='gen/pre_packed.js')
|
||||||
js_post = Bundle('js/post/*.js', output='gen/post_packed.js')
|
js_post = Bundle('js/post/*.js', output='gen/post_packed.js')
|
||||||
|
styles = Bundle('sass/style.sass', filters='libsass', output='gen/styles.css')
|
||||||
assets.register('js_pre', js_pre)
|
assets.register('js_pre', js_pre)
|
||||||
assets.register('js_post', js_post)
|
assets.register('js_post', js_post)
|
||||||
|
assets.register('styles', styles)
|
||||||
|
|
||||||
# Error handlers, if the error is not a HTTP error, return 500
|
# Error handlers, if the error is not a HTTP error, return 500
|
||||||
@app.errorhandler(Exception)
|
@app.errorhandler(Exception)
|
||||||
|
|
|
@ -33,6 +33,10 @@
|
||||||
<script type="text/javascript" src="{{ ASSET_URL }}"></script>
|
<script type="text/javascript" src="{{ ASSET_URL }}"></script>
|
||||||
{% endassets %}
|
{% endassets %}
|
||||||
|
|
||||||
|
{% assets "styles" %}
|
||||||
|
<link rel="stylesheet" href="{{ ASSET_URL }}" defer>
|
||||||
|
{% endassets %}
|
||||||
|
|
||||||
{% block head %}{% endblock %}
|
{% block head %}{% endblock %}
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
@ -150,7 +154,7 @@
|
||||||
{% for message in get_flashed_messages() %}
|
{% for message in get_flashed_messages() %}
|
||||||
addNotification('{{ message[0] }}', {{ message[1] }});
|
addNotification('{{ message[0] }}', {{ message[1] }});
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</script>
|
</>
|
||||||
|
|
||||||
{% assets "js_post" %}
|
{% assets "js_post" %}
|
||||||
<script type="text/javascript" src="{{ ASSET_URL }}"></script>
|
<script type="text/javascript" src="{{ ASSET_URL }}"></script>
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
{
|
|
||||||
"name": "default",
|
|
||||||
"version": "23.04.03",
|
|
||||||
"author": "Michał Gdula",
|
|
||||||
"description": "Default theme for OnlyLegs",
|
|
||||||
"uses": "sass"
|
|
||||||
}
|
|
|
@ -1,76 +0,0 @@
|
||||||
"""
|
|
||||||
OnlyLegs - Theme Manager
|
|
||||||
"""
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
import shutil
|
|
||||||
from datetime import datetime
|
|
||||||
import sass
|
|
||||||
import json
|
|
||||||
|
|
||||||
|
|
||||||
def compile_theme(theme_name, app_path):
|
|
||||||
"""
|
|
||||||
Compiles the theme into the static folder
|
|
||||||
"""
|
|
||||||
print(f"Loading '{theme_name}' theme...")
|
|
||||||
|
|
||||||
# Set Paths
|
|
||||||
theme_source = os.path.join(app_path, 'themes', theme_name)
|
|
||||||
theme_target = os.path.join(app_path, 'static', 'theme')
|
|
||||||
|
|
||||||
# If the theme doesn't exist, exit
|
|
||||||
if not os.path.exists(theme_source):
|
|
||||||
print("Theme does not exist!")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
# If the destination folder doesn't exist, create it
|
|
||||||
if not os.path.exists(theme_target):
|
|
||||||
os.makedirs(theme_target)
|
|
||||||
|
|
||||||
# Theme source file doesn't exist, exit
|
|
||||||
if not os.path.join(theme_source, 'style.sass'):
|
|
||||||
print("No sass file found!")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
# Check if the theme has a manifest.json file
|
|
||||||
if os.path.exists(os.path.join(theme_source, 'manifest.json')):
|
|
||||||
source_info = json.load(open(os.path.join(theme_source, 'manifest.json'), encoding='utf-8', mode='r'))
|
|
||||||
else:
|
|
||||||
print("Theme lacks a manifest.json file, exiting as its required!")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
# Check if the theme is upto date
|
|
||||||
if os.path.exists(os.path.join(theme_target, 'manifest.json')):
|
|
||||||
target_info = json.load(open(os.path.join(theme_target, 'manifest.json'), encoding='utf-8', mode='r'))
|
|
||||||
|
|
||||||
if source_info['version'] == target_info['version'] and source_info['name'] == target_info['name']:
|
|
||||||
print("Theme is up to date!")
|
|
||||||
return
|
|
||||||
|
|
||||||
# Compile the theme
|
|
||||||
with open(os.path.join(theme_target, 'style.css'),
|
|
||||||
encoding='utf-8', mode='w+') as file:
|
|
||||||
try:
|
|
||||||
file.write(sass.compile(filename=os.path.join(theme_source, 'style.sass'),
|
|
||||||
output_style='compressed'))
|
|
||||||
except sass.CompileError as err:
|
|
||||||
print("Failed to compile!\n", err)
|
|
||||||
sys.exit(1)
|
|
||||||
print("Compiled successfully!")
|
|
||||||
|
|
||||||
# If the destination folder exists, remove it
|
|
||||||
if os.path.exists(os.path.join(theme_target, 'fonts')):
|
|
||||||
shutil.rmtree(os.path.join(theme_target, 'fonts'))
|
|
||||||
|
|
||||||
# Copy the fonts
|
|
||||||
shutil.copytree(os.path.join(theme_source, 'fonts'),
|
|
||||||
os.path.join(theme_target, 'fonts'))
|
|
||||||
print("Fonts copied successfully!")
|
|
||||||
|
|
||||||
# Copy the manifest
|
|
||||||
shutil.copyfile(os.path.join(theme_source, 'manifest.json'),
|
|
||||||
os.path.join(theme_target, 'manifest.json'))
|
|
||||||
print("Manifest copied successfully!")
|
|
||||||
|
|
||||||
print(f"{datetime.now().hour}:{datetime.now().minute}:{datetime.now().second} - Done!\n")
|
|
Loading…
Reference in a new issue