Merge branch 'ofw-dev' into dev

This commit is contained in:
MX 2023-06-07 21:03:36 +03:00
commit 35ea46fd13
No known key found for this signature in database
GPG key ID: 7CCC66B7DBDD1C83
3 changed files with 38 additions and 2 deletions

View file

@ -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("."))

View file

@ -3,6 +3,29 @@
# Requiremets: # Requiremets:
# cxxfilt==0.3.0 # cxxfilt==0.3.0
# Most part of this code written by Lars-Dominik Braun <lars@6xq.net> https://github.com/PromyLOPh/linkermapviz
# and distributes under MIT licence
# Copyright (c) 2017 Lars-Dominik Braun <lars@6xq.net>
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
import sys import sys
import re import re
import os import os

View file

@ -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("*"):