8535d70d36
* black and isort for tests * black and isort for build * use poetry in Makefile, update pyproject.toml dependencies and add configs for black, pytest, mypy, isort there * switching github workflow to poetry * set mininum version to python 3.7 * fix tests * add types-protobuf to dev packages * fix cln regtest * update docs * try fix 1 * mypy fix2 * fix isort formatting workflow * add prettier to dev docs * multiple valid python version for pyproject * update poetry.lock * remove development installation, not needed anymore * fix migration workflows * format into one test * fix yaml * fix pipeline * fix pipeline * fix again * fix * rename checks * remove venv tests * venv test once Co-authored-by: dni <dni.khr@gmail.com>
106 lines
2.9 KiB
Python
106 lines
2.9 KiB
Python
import glob
|
|
import os
|
|
import subprocess
|
|
import warnings
|
|
from os import path
|
|
from pathlib import Path
|
|
from typing import Any, List, NamedTuple, Optional
|
|
|
|
LNBITS_PATH = path.dirname(path.realpath(__file__)) + "/lnbits"
|
|
|
|
|
|
def get_js_vendored(prefer_minified: bool = False) -> List[str]:
|
|
paths = get_vendored(".js", prefer_minified)
|
|
|
|
def sorter(key: str):
|
|
if "moment@" in key:
|
|
return 1
|
|
if "vue@" in key:
|
|
return 2
|
|
if "vue-router@" in key:
|
|
return 3
|
|
if "polyfills" in key:
|
|
return 4
|
|
return 9
|
|
|
|
return sorted(paths, key=sorter)
|
|
|
|
|
|
def get_css_vendored(prefer_minified: bool = False) -> List[str]:
|
|
paths = get_vendored(".css", prefer_minified)
|
|
|
|
def sorter(key: str):
|
|
if "quasar@" in key:
|
|
return 1
|
|
if "vue@" in key:
|
|
return 2
|
|
if "chart.js@" in key:
|
|
return 100
|
|
return 9
|
|
|
|
return sorted(paths, key=sorter)
|
|
|
|
|
|
def get_vendored(ext: str, prefer_minified: bool = False) -> List[str]:
|
|
paths: List[str] = []
|
|
for path in glob.glob(
|
|
os.path.join(LNBITS_PATH, "static/vendor/**"), recursive=True
|
|
):
|
|
if path.endswith(".min" + ext):
|
|
# path is minified
|
|
unminified = path.replace(".min" + ext, ext)
|
|
if prefer_minified:
|
|
paths.append(path)
|
|
if unminified in paths:
|
|
paths.remove(unminified)
|
|
elif unminified not in paths:
|
|
paths.append(path)
|
|
|
|
elif path.endswith(ext):
|
|
# path is not minified
|
|
minified = path.replace(ext, ".min" + ext)
|
|
if not prefer_minified:
|
|
paths.append(path)
|
|
if minified in paths:
|
|
paths.remove(minified)
|
|
elif minified not in paths:
|
|
paths.append(path)
|
|
|
|
return sorted(paths)
|
|
|
|
|
|
def url_for_vendored(abspath: str) -> str:
|
|
return "/" + os.path.relpath(abspath, LNBITS_PATH)
|
|
|
|
|
|
def transpile_scss():
|
|
with warnings.catch_warnings():
|
|
warnings.simplefilter("ignore")
|
|
from scss.compiler import compile_string # type: ignore
|
|
|
|
with open(os.path.join(LNBITS_PATH, "static/scss/base.scss")) as scss:
|
|
with open(os.path.join(LNBITS_PATH, "static/css/base.css"), "w") as css:
|
|
css.write(compile_string(scss.read()))
|
|
|
|
|
|
def bundle_vendored():
|
|
for getfiles, outputpath in [
|
|
(get_js_vendored, os.path.join(LNBITS_PATH, "static/bundle.js")),
|
|
(get_css_vendored, os.path.join(LNBITS_PATH, "static/bundle.css")),
|
|
]:
|
|
output = ""
|
|
for path in getfiles():
|
|
with open(path) as f:
|
|
output += "/* " + url_for_vendored(path) + " */\n" + f.read() + ";\n"
|
|
with open(outputpath, "w") as f:
|
|
f.write(output)
|
|
|
|
|
|
def build():
|
|
transpile_scss()
|
|
bundle_vendored()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
build()
|