mirror of
https://github.com/hacs/integration.git
synced 2025-08-16 17:12:38 +00:00
Use path instead of proxy for dev frontend (#3097)
This commit is contained in:
@ -1,10 +1,9 @@
|
|||||||
""""Starting setup task: Frontend"."""
|
""""Starting setup task: Frontend"."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import os
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
from aiohttp import web
|
|
||||||
from homeassistant.components.http import HomeAssistantView
|
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
|
|
||||||
from .const import DOMAIN, URL_BASE
|
from .const import DOMAIN, URL_BASE
|
||||||
@ -26,11 +25,13 @@ def async_register_frontend(hass: HomeAssistant, hacs: HacsBase) -> None:
|
|||||||
hacs.async_setup_frontend_endpoint_themes()
|
hacs.async_setup_frontend_endpoint_themes()
|
||||||
|
|
||||||
# Register frontend
|
# Register frontend
|
||||||
if hacs.configuration.frontend_repo_url:
|
if hacs.configuration.dev and (frontend_path := os.getenv("HACS_FRONTEND_DIR")):
|
||||||
hacs.log.warning(
|
hacs.log.warning(
|
||||||
"<HacsFrontend> Frontend development mode enabled. Do not run in production!"
|
"<HacsFrontend> Frontend development mode enabled. Do not run in production!"
|
||||||
)
|
)
|
||||||
hass.http.register_view(HacsFrontendDev())
|
hass.http.register_static_path(
|
||||||
|
f"{URL_BASE}/frontend", f"{frontend_path}/hacs_frontend", cache_headers=False
|
||||||
|
)
|
||||||
elif hacs.configuration.experimental:
|
elif hacs.configuration.experimental:
|
||||||
hacs.log.info("<HacsFrontend> Using experimental frontend")
|
hacs.log.info("<HacsFrontend> Using experimental frontend")
|
||||||
hass.http.register_static_path(
|
hass.http.register_static_path(
|
||||||
@ -72,23 +73,3 @@ def async_register_frontend(hass: HomeAssistant, hacs: HacsBase) -> None:
|
|||||||
|
|
||||||
# Setup plugin endpoint if needed
|
# Setup plugin endpoint if needed
|
||||||
hacs.async_setup_frontend_endpoint_plugin()
|
hacs.async_setup_frontend_endpoint_plugin()
|
||||||
|
|
||||||
|
|
||||||
class HacsFrontendDev(HomeAssistantView):
|
|
||||||
"""Dev View Class for HACS."""
|
|
||||||
|
|
||||||
requires_auth = False
|
|
||||||
name = "hacs_files:frontend"
|
|
||||||
url = r"/hacsfiles/frontend/{requested_file:.+}"
|
|
||||||
|
|
||||||
async def get(self, request, requested_file): # pylint: disable=unused-argument
|
|
||||||
"""Handle HACS Web requests."""
|
|
||||||
hacs: HacsBase = request.app["hass"].data.get(DOMAIN)
|
|
||||||
requested = requested_file.split("/")[-1]
|
|
||||||
request = await hacs.session.get(f"{hacs.configuration.frontend_repo_url}/{requested}")
|
|
||||||
if request.status == 200:
|
|
||||||
result = await request.read()
|
|
||||||
response = web.Response(body=result)
|
|
||||||
response.headers["Content-Type"] = "application/javascript"
|
|
||||||
|
|
||||||
return response
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
declare frontend_dir
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
cd "$(dirname "$0")/.."
|
cd "$(dirname "$0")/.."
|
||||||
@ -19,8 +21,15 @@ logger:
|
|||||||
" >> "configuration.yaml"
|
" >> "configuration.yaml"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
while getopts u:a:f: flag
|
||||||
|
do
|
||||||
|
case "${flag}" in
|
||||||
|
f) frontend_dir=${OPTARG};;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
echo "Installing HACS frontend"
|
echo "Installing HACS frontend"
|
||||||
bash "scripts/install/frontend"
|
[ -z "${frontend_dir}" ] && bash "scripts/install/frontend"
|
||||||
|
|
||||||
# Start Home Assistant
|
# Start Home Assistant
|
||||||
hass -c . --debug
|
HACS_FRONTEND_DIR="$(readlink -f ${frontend_dir})" hass -c . --debug
|
Reference in New Issue
Block a user