Add Poetry as a build system
This commit is contained in:
parent
c4924bcf24
commit
50a5f47308
110
build.py
Normal file
110
build.py
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
import warnings
|
||||||
|
import subprocess
|
||||||
|
import glob
|
||||||
|
import os
|
||||||
|
from os import path
|
||||||
|
from typing import Any, List, NamedTuple, Optional
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
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()
|
||||||
|
# root = Path("lnbits/static/foo")
|
||||||
|
# root.mkdir(parents=True)
|
||||||
|
# root.joinpath("example.css").write_text("")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
build()
|
||||||
|
|
||||||
|
#def build(setup_kwargs):
|
||||||
|
# """Build """
|
||||||
|
# transpile_scss()
|
||||||
|
# bundle_vendored()
|
||||||
|
# subprocess.run(["ls", "-la", "./lnbits/static"])
|
1165
poetry.lock
generated
Normal file
1165
poetry.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
70
pyproject.toml
Normal file
70
pyproject.toml
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
[tool.poetry]
|
||||||
|
name = "lnbits"
|
||||||
|
version = "0.1.0"
|
||||||
|
description = ""
|
||||||
|
authors = ["matthewcroughan <matt@croughan.sh>"]
|
||||||
|
|
||||||
|
[tool.poetry.build]
|
||||||
|
generate-setup-file = false
|
||||||
|
script = "build.py"
|
||||||
|
|
||||||
|
[tool.poetry.dependencies]
|
||||||
|
python = "^3.9"
|
||||||
|
aiofiles = "0.7.0"
|
||||||
|
asgiref = "3.4.1"
|
||||||
|
attrs = "21.2.0"
|
||||||
|
bech32 = "1.2.0"
|
||||||
|
bitstring = "3.1.9"
|
||||||
|
cerberus = "1.3.4"
|
||||||
|
certifi = "2021.5.30"
|
||||||
|
charset-normalizer = "2.0.6"
|
||||||
|
click = "8.0.1"
|
||||||
|
ecdsa = "0.17.0"
|
||||||
|
embit = "0.4.9"
|
||||||
|
environs = "9.3.3"
|
||||||
|
fastapi = "0.78.0"
|
||||||
|
h11 = "0.12.0"
|
||||||
|
httpcore = "0.13.7"
|
||||||
|
httptools = "0.2.0"
|
||||||
|
httpx = "0.19.0"
|
||||||
|
idna = "3.2"
|
||||||
|
importlib-metadata = "4.8.1"
|
||||||
|
jinja2 = "3.0.1"
|
||||||
|
lnurl = "0.3.6"
|
||||||
|
markupsafe = "2.0.1"
|
||||||
|
marshmallow = "3.13.0"
|
||||||
|
outcome = "1.1.0"
|
||||||
|
psycopg2-binary = "2.9.1"
|
||||||
|
pycryptodomex = "3.14.1"
|
||||||
|
pydantic = "1.8.2"
|
||||||
|
pypng = "0.0.21"
|
||||||
|
pyqrcode = "1.2.1"
|
||||||
|
pyscss = "1.3.7"
|
||||||
|
python-dotenv = "0.19.0"
|
||||||
|
pyyaml = "5.4.1"
|
||||||
|
represent = "1.6.0.post0"
|
||||||
|
rfc3986 = "1.5.0"
|
||||||
|
secp256k1 = "0.14.0"
|
||||||
|
shortuuid = "1.0.1"
|
||||||
|
six = "1.16.0"
|
||||||
|
sniffio = "1.2.0"
|
||||||
|
sqlalchemy = "1.3.23"
|
||||||
|
sqlalchemy-aio = "0.16.0"
|
||||||
|
sse-starlette = "0.6.2"
|
||||||
|
typing-extensions = "3.10.0.2"
|
||||||
|
uvicorn = "0.18.1"
|
||||||
|
uvloop = "0.16.0"
|
||||||
|
watchgod = "0.7"
|
||||||
|
websockets = "10.0"
|
||||||
|
zipp = "3.5.0"
|
||||||
|
loguru = "0.5.3"
|
||||||
|
cffi = "1.15.0"
|
||||||
|
|
||||||
|
[tool.poetry.dev-dependencies]
|
||||||
|
|
||||||
|
[build-system]
|
||||||
|
requires = ["poetry-core>=1.0.0"]
|
||||||
|
build-backend = "poetry.core.masonry.api"
|
||||||
|
|
||||||
|
[tool.poetry.scripts]
|
||||||
|
lnbits = "lnbits.server:main"
|
Loading…
Reference in New Issue
Block a user