[FL-3246] fbt, ufbt: added checks for appid in app manifests(#2720)
Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
parent
6f6ead1726
commit
754e640c8d
@ -1,7 +1,8 @@
|
|||||||
import os
|
import os
|
||||||
|
import re
|
||||||
from dataclasses import dataclass, field
|
from dataclasses import dataclass, field
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from typing import Callable, List, Optional, Tuple, Union
|
from typing import Callable, ClassVar, List, Optional, Tuple, Union
|
||||||
|
|
||||||
|
|
||||||
class FlipperManifestException(Exception):
|
class FlipperManifestException(Exception):
|
||||||
@ -23,6 +24,8 @@ class FlipperAppType(Enum):
|
|||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class FlipperApplication:
|
class FlipperApplication:
|
||||||
|
APP_ID_REGEX: ClassVar[re.Pattern] = re.compile(r"^[a-z0-9_]+$")
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class ExternallyBuiltFile:
|
class ExternallyBuiltFile:
|
||||||
path: str
|
path: str
|
||||||
@ -84,6 +87,10 @@ class FlipperApplication:
|
|||||||
def __post_init__(self):
|
def __post_init__(self):
|
||||||
if self.apptype == FlipperAppType.PLUGIN:
|
if self.apptype == FlipperAppType.PLUGIN:
|
||||||
self.stack_size = 0
|
self.stack_size = 0
|
||||||
|
if not self.APP_ID_REGEX.match(self.appid):
|
||||||
|
raise FlipperManifestException(
|
||||||
|
f"Invalid appid '{self.appid}'. Must match regex '{self.APP_ID_REGEX}'"
|
||||||
|
)
|
||||||
if isinstance(self.fap_version, str):
|
if isinstance(self.fap_version, str):
|
||||||
try:
|
try:
|
||||||
self.fap_version = tuple(int(v) for v in self.fap_version.split("."))
|
self.fap_version = tuple(int(v) for v in self.fap_version.split("."))
|
||||||
|
|||||||
@ -75,7 +75,7 @@ from fbt.util import (
|
|||||||
wrap_tempfile,
|
wrap_tempfile,
|
||||||
path_as_posix,
|
path_as_posix,
|
||||||
)
|
)
|
||||||
from fbt.appmanifest import FlipperAppType
|
from fbt.appmanifest import FlipperAppType, FlipperApplication
|
||||||
from fbt.sdk.cache import SdkCache
|
from fbt.sdk.cache import SdkCache
|
||||||
|
|
||||||
# Base environment with all tools loaded from SDK
|
# Base environment with all tools loaded from SDK
|
||||||
@ -410,6 +410,12 @@ dist_env.Alias("vscode_dist", vscode_dist)
|
|||||||
# Creating app from base template
|
# Creating app from base template
|
||||||
|
|
||||||
dist_env.SetDefault(FBT_APPID=appenv.subst("$APPID") or "template")
|
dist_env.SetDefault(FBT_APPID=appenv.subst("$APPID") or "template")
|
||||||
|
if fbt_appid := dist_env.subst("$FBT_APPID"):
|
||||||
|
if not FlipperApplication.APP_ID_REGEX.match(fbt_appid):
|
||||||
|
raise UserError(
|
||||||
|
f"Invalid app id '{fbt_appid}'. App id must match {FlipperApplication.APP_ID_REGEX.pattern}"
|
||||||
|
)
|
||||||
|
|
||||||
app_template_dir = project_template_dir.Dir("app_template")
|
app_template_dir = project_template_dir.Dir("app_template")
|
||||||
app_template_dist = []
|
app_template_dist = []
|
||||||
for template_file in app_template_dir.glob("*"):
|
for template_file in app_template_dir.glob("*"):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user