fastled 1.2.73__tar.gz → 1.2.74__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {fastled-1.2.73 → fastled-1.2.74}/Dockerfile +2 -2
- {fastled-1.2.73 → fastled-1.2.74}/PKG-INFO +1 -1
- {fastled-1.2.73 → fastled-1.2.74}/compiler/compile.py +76 -32
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/__init__.py +1 -1
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/docker_manager.py +30 -2
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled.egg-info/PKG-INFO +1 -1
- {fastled-1.2.73 → fastled-1.2.74}/.aiderignore +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/.dockerignore +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/.github/workflows/build_multi_docker_image.yml +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/.github/workflows/build_webpage.yml +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/.github/workflows/lint.yml +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/.github/workflows/publish_release.yml +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/.github/workflows/template_build_docker_image.yml +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/.github/workflows/test_build_exe.yml +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/.github/workflows/test_macos.yml +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/.github/workflows/test_ubuntu.yml +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/.github/workflows/test_win.yml +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/.gitignore +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/.pylintrc +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/.vscode/launch.json +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/.vscode/settings.json +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/.vscode/tasks.json +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/LICENSE +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/MANIFEST.in +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/README.md +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/RELEASE.md +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/TODO.md +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/build_exe.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/build_site.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/clean +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/CMakeLists.txt +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/__init__.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/arduino-pre-process.sh +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/build.sh +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/build_archive.sh +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/build_fast.sh +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/code_sync.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/compile_lock.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/entrypoint.sh +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/extra/100dots.html +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/extra/demo_threejs.html +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/extra/micdemo.html +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/extra/mp3upload.html +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/extra/webgl_postprocessing_unreal_bloom.html +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/final_prewarm.sh +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/init_runtime.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/install-arduino-cli.sh +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/libcompile/CMakeLists.txt +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/paths.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/pre-process.sh +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/prewarm.sh +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/process-ino.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/process_extended.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/pyproject.toml +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/run.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/server.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/sketch_hasher.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/compiler/wasm_compiler_flags.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/docker-compose.yml +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/install +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/install_linux.sh +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/lint +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/pyproject.toml +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/requirements.testing.txt +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/setup.cfg +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/setup.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/app.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/assets/example.txt +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/assets/localhost-key.pem +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/assets/localhost.pem +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/cli.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/cli_test.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/client_server.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/compile_server.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/compile_server_impl.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/filewatcher.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/interactive_srcs.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/keyboard.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/keyz.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/live_client.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/open_browser.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/parse_args.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/paths.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/project_init.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/select_sketch_directory.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/server_fastapi.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/server_fastapi_cli.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/server_flask.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/server_start.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/settings.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/site/build.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/site/examples.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/sketch.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/spinner.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/string_diff.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/test/can_run_local_docker_tests.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/test/examples.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/types.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/util.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled/web_compile.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled.egg-info/SOURCES.txt +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled.egg-info/dependency_links.txt +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled.egg-info/entry_points.txt +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled.egg-info/requires.txt +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/src/fastled.egg-info/top_level.txt +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/test +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/tests/integration/test_build_examples.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/tests/integration/test_examples.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/tests/unit/html/index.html +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_api.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_bad_ino.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_cli.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_compile_server.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_docker_linux_on_windows.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_embedded_data.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_filechanger.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_http_server.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_ino/bad/bad.ino +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_ino/bad_platformio/bad_platformio.ino +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_ino/bad_platformio/platformio.ini +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_ino/embedded/data/bigdata.dat +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_ino/embedded/wasm.ino +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_ino/wasm/wasm.ino +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_project_init.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_server_and_client_seperatly.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_string_diff.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/tests/unit/test_webcompile.py +0 -0
- {fastled-1.2.73 → fastled-1.2.74}/upload_package.sh +0 -0
@@ -41,8 +41,8 @@
|
|
41
41
|
|
42
42
|
# This will be set to arm64 to support MacOS M1+ devices (and Linux-based arm64 devices)
|
43
43
|
ARG PLATFORM_TAG=""
|
44
|
-
|
45
|
-
ARG EMSDK_VERSION_TAG="3.1.70"
|
44
|
+
ARG EMSDK_VERSION_TAG="4.0.8"
|
45
|
+
# ARG EMSDK_VERSION_TAG="3.1.70"
|
46
46
|
|
47
47
|
# Use only Emscripten base image
|
48
48
|
FROM emscripten/emsdk:${EMSDK_VERSION_TAG}${PLATFORM_TAG}
|
@@ -89,6 +89,33 @@ def copy_files(src_dir: Path, js_src: Path) -> None:
|
|
89
89
|
shutil.copy2(item, js_src / item.name)
|
90
90
|
|
91
91
|
|
92
|
+
def _banner(msg: str) -> str:
|
93
|
+
"""
|
94
|
+
Create a banner for the given message.
|
95
|
+
Example:
|
96
|
+
msg = "Hello, World!"
|
97
|
+
print -> "#################"
|
98
|
+
"# Hello, World! #"
|
99
|
+
"#################"
|
100
|
+
"""
|
101
|
+
lines = msg.split("\n")
|
102
|
+
# Find the width of the widest line
|
103
|
+
max_width = max(len(line) for line in lines)
|
104
|
+
width = max_width + 4 # Add 4 for "# " and " #"
|
105
|
+
|
106
|
+
# Create the top border
|
107
|
+
banner = "\n" + "#" * width + "\n"
|
108
|
+
|
109
|
+
# Add each line with proper padding
|
110
|
+
for line in lines:
|
111
|
+
padding = max_width - len(line)
|
112
|
+
banner += f"# {line}{' ' * padding} #\n"
|
113
|
+
|
114
|
+
# Add the bottom border
|
115
|
+
banner += "#" * width + "\n"
|
116
|
+
return banner
|
117
|
+
|
118
|
+
|
92
119
|
def compile(
|
93
120
|
compiler_root: Path, build_mode: BuildMode, auto_clean: bool, no_platformio: bool
|
94
121
|
) -> int:
|
@@ -96,7 +123,7 @@ def compile(
|
|
96
123
|
max_attempts = 1
|
97
124
|
env = os.environ.copy()
|
98
125
|
env["BUILD_MODE"] = build_mode.name
|
99
|
-
print(f"
|
126
|
+
print(_banner(f"WASM is building in mode: {build_mode.name}"))
|
100
127
|
cmd_list: list[str] = []
|
101
128
|
if no_platformio:
|
102
129
|
# execute build_archive.syh
|
@@ -113,6 +140,7 @@ def compile(
|
|
113
140
|
cmd_list.append("-v")
|
114
141
|
|
115
142
|
def _open_process(cmd_list: list[str] = cmd_list) -> subprocess.Popen:
|
143
|
+
print(_banner("Running command:\n " + subprocess.list2cmdline(cmd_list)))
|
116
144
|
out = subprocess.Popen(
|
117
145
|
cmd_list,
|
118
146
|
cwd=compiler_root,
|
@@ -138,7 +166,7 @@ def compile(
|
|
138
166
|
relative_output = _make_timestamps_relative("\n".join(output_lines))
|
139
167
|
print(relative_output)
|
140
168
|
if process.returncode == 0:
|
141
|
-
print(f"Compilation successful on attempt {attempt}")
|
169
|
+
print(_banner(f"Compilation successful on attempt {attempt}"))
|
142
170
|
return 0
|
143
171
|
else:
|
144
172
|
raise subprocess.CalledProcessError(process.returncode, ["pio", "run"])
|
@@ -199,7 +227,7 @@ def transform_to_cpp(src_dir: Path) -> None:
|
|
199
227
|
def insert_headers(
|
200
228
|
src_dir: Path, exclusion_folders: List[Path], file_extensions: List[str]
|
201
229
|
) -> None:
|
202
|
-
print("Inserting headers in source files...")
|
230
|
+
print(_banner("Inserting headers in source files..."))
|
203
231
|
for file in src_dir.rglob("*"):
|
204
232
|
if (
|
205
233
|
file.suffix in file_extensions
|
@@ -213,7 +241,7 @@ def process_ino_files(src_dir: Path) -> None:
|
|
213
241
|
transform_to_cpp(src_dir)
|
214
242
|
exclusion_folders: List[Path] = []
|
215
243
|
insert_headers(src_dir, exclusion_folders, _FILE_EXTENSIONS)
|
216
|
-
print("Transform to cpp and insert header operations completed.")
|
244
|
+
print(_banner("Transform to cpp and insert header operations completed."))
|
217
245
|
|
218
246
|
|
219
247
|
def _make_timestamps_relative(stdout: str) -> str:
|
@@ -381,7 +409,7 @@ def process_compile(
|
|
381
409
|
if rtn != 0:
|
382
410
|
print("Compilation failed.")
|
383
411
|
raise RuntimeError("Compilation failed.")
|
384
|
-
print("Compilation successful.")
|
412
|
+
print(_banner("Compilation successful."))
|
385
413
|
|
386
414
|
|
387
415
|
def cleanup(args: Args, js_src: Path) -> None:
|
@@ -422,9 +450,15 @@ def run(args: Args) -> int:
|
|
422
450
|
print(f"Using mapped directory: {args.mapped_dir}")
|
423
451
|
|
424
452
|
if args.profile:
|
425
|
-
print("Enabling profiling for compilation.")
|
453
|
+
print(_banner("Enabling profiling for compilation."))
|
426
454
|
# Profile linking
|
427
455
|
os.environ["EMPROFILE"] = "2"
|
456
|
+
else:
|
457
|
+
print(
|
458
|
+
_banner(
|
459
|
+
"Build process profiling is disabled\nuse --profile to get metrics on how long the build process took."
|
460
|
+
)
|
461
|
+
)
|
428
462
|
|
429
463
|
try:
|
430
464
|
|
@@ -477,6 +511,8 @@ def run(args: Args) -> int:
|
|
477
511
|
return 1
|
478
512
|
|
479
513
|
def _get_build_dir_platformio() -> Path:
|
514
|
+
# First assert there is only one build artifact directory.
|
515
|
+
# The name is dynamic: it's your sketch folder name.
|
480
516
|
build_dirs = [d for d in PIO_BUILD_DIR.iterdir() if d.is_dir()]
|
481
517
|
if len(build_dirs) != 1:
|
482
518
|
raise RuntimeError(
|
@@ -493,16 +529,17 @@ def run(args: Args) -> int:
|
|
493
529
|
else:
|
494
530
|
build_dir = _get_build_dir_platformio()
|
495
531
|
|
496
|
-
print("Copying output files...")
|
532
|
+
print(_banner("Copying output files..."))
|
497
533
|
out_dir: Path = src_dir / _FASTLED_OUTPUT_DIR_NAME
|
498
534
|
out_dir.mkdir(parents=True, exist_ok=True)
|
499
535
|
|
500
|
-
|
501
|
-
|
502
|
-
_dst = out_dir /
|
503
|
-
print(f"Copying {
|
504
|
-
shutil.copy2(
|
536
|
+
# Copy all fastled.* build artifacts
|
537
|
+
for file_path in build_dir.glob("fastled.*"):
|
538
|
+
_dst = out_dir / file_path.name
|
539
|
+
print(f"Copying {file_path} to {_dst}")
|
540
|
+
shutil.copy2(file_path, _dst)
|
505
541
|
|
542
|
+
# Copy static files.
|
506
543
|
print(f"Copying {_INDEX_HTML_SRC} to output directory")
|
507
544
|
shutil.copy2(_INDEX_HTML_SRC, out_dir / "index.html")
|
508
545
|
print(f"Copying {_INDEX_CSS_SRC} to output directory")
|
@@ -510,23 +547,30 @@ def run(args: Args) -> int:
|
|
510
547
|
|
511
548
|
# copy all js files in _FASTLED_COMPILER_DIR to output directory
|
512
549
|
Path(out_dir / "modules").mkdir(parents=True, exist_ok=True)
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
if
|
528
|
-
|
529
|
-
|
550
|
+
|
551
|
+
# Recursively copy all non-hidden files and directories
|
552
|
+
print(f"Copying files from {_FASTLED_MODULES_DIR} to {out_dir / 'modules'}")
|
553
|
+
shutil.copytree(
|
554
|
+
src=_FASTLED_MODULES_DIR,
|
555
|
+
dst=out_dir / "modules",
|
556
|
+
dirs_exist_ok=True,
|
557
|
+
ignore=shutil.ignore_patterns(".*"),
|
558
|
+
) # Ignore hidden files
|
559
|
+
|
560
|
+
# Now long needed since now we do glob copy.
|
561
|
+
# fastled_js_mem = build_dir / "fastled.js.mem"
|
562
|
+
# fastled_wasm_map = build_dir / "fastled.wasm.map"
|
563
|
+
# fastled_js_symbols = build_dir / "fastled.js.symbols"
|
564
|
+
# if fastled_js_mem.exists():
|
565
|
+
# print(f"Copying {fastled_js_mem} to output directory")
|
566
|
+
# shutil.copy2(fastled_js_mem, out_dir / fastled_js_mem.name)
|
567
|
+
# if fastled_wasm_map.exists():
|
568
|
+
# print(f"Copying {fastled_wasm_map} to output directory")
|
569
|
+
# shutil.copy2(fastled_wasm_map, out_dir / fastled_wasm_map.name)
|
570
|
+
# if fastled_js_symbols.exists():
|
571
|
+
# print(f"Copying {fastled_js_symbols} to output directory")
|
572
|
+
# shutil.copy2(fastled_js_symbols, out_dir / fastled_js_symbols.name)
|
573
|
+
|
530
574
|
print("Copying index.js to output directory")
|
531
575
|
shutil.copy2(_INDEX_JS_SRC, out_dir / "index.js")
|
532
576
|
optional_input_data_dir = src_dir / "data"
|
@@ -546,7 +590,7 @@ def run(args: Args) -> int:
|
|
546
590
|
if _file.is_file(): # Only copy files, not directories
|
547
591
|
filename: str = _file.name
|
548
592
|
if filename.endswith(".embedded.json"):
|
549
|
-
print("Embedding data file")
|
593
|
+
print(_banner("Embedding data file"))
|
550
594
|
filename_no_embedded = filename.replace(
|
551
595
|
".embedded.json", ""
|
552
596
|
)
|
@@ -577,13 +621,13 @@ def run(args: Args) -> int:
|
|
577
621
|
)
|
578
622
|
|
579
623
|
# Write manifest file even if empty
|
580
|
-
print("Writing manifest files.json")
|
624
|
+
print(_banner("Writing manifest files.json"))
|
581
625
|
manifest_json_str = json.dumps(manifest, indent=2, sort_keys=True)
|
582
626
|
with open(out_dir / "files.json", "w") as f:
|
583
627
|
f.write(manifest_json_str)
|
584
628
|
cleanup(args, SKETCH_SRC)
|
585
629
|
|
586
|
-
print("Compilation process completed successfully")
|
630
|
+
print(_banner("Compilation process completed successfully"))
|
587
631
|
return 0
|
588
632
|
|
589
633
|
except Exception as e:
|
@@ -13,7 +13,7 @@ from .types import BuildMode, CompileResult, CompileServerError
|
|
13
13
|
# IMPORTANT! There's a bug in github which will REJECT any version update
|
14
14
|
# that has any other change in the repo. Please bump the version as the
|
15
15
|
# ONLY change in a commit, or else the pypi update and the release will fail.
|
16
|
-
__version__ = "1.2.
|
16
|
+
__version__ = "1.2.74"
|
17
17
|
|
18
18
|
DOCKER_FILE = (
|
19
19
|
"https://raw.githubusercontent.com/zackees/fastled-wasm/refs/heads/main/Dockerfile"
|
@@ -99,8 +99,35 @@ class Volume:
|
|
99
99
|
return volumes
|
100
100
|
|
101
101
|
|
102
|
+
class PrintFilter:
|
103
|
+
"""Provides filtering for text output so that source files match up with local names."""
|
104
|
+
|
105
|
+
def __init__(self) -> None:
|
106
|
+
pass
|
107
|
+
|
108
|
+
def _remove_ino_cpp(self, text: str) -> str:
|
109
|
+
return text.replace(".ino.cpp", ".ino")
|
110
|
+
|
111
|
+
def _filter_all(self, text: str) -> str:
|
112
|
+
text = self._remove_ino_cpp(text)
|
113
|
+
return text
|
114
|
+
|
115
|
+
def print(self, text: str | bytes) -> None:
|
116
|
+
"""Prints the text to the console."""
|
117
|
+
if isinstance(text, bytes):
|
118
|
+
text = text.decode("utf-8")
|
119
|
+
text = self._filter_all(text)
|
120
|
+
print(text, end="")
|
121
|
+
|
122
|
+
|
102
123
|
class RunningContainer:
|
103
|
-
def __init__(
|
124
|
+
def __init__(
|
125
|
+
self,
|
126
|
+
container: Container,
|
127
|
+
first_run: bool = False,
|
128
|
+
filter: PrintFilter | None = None,
|
129
|
+
) -> None:
|
130
|
+
self.filter = filter or PrintFilter()
|
104
131
|
self.container = container
|
105
132
|
self.first_run = first_run
|
106
133
|
self.running = True
|
@@ -117,7 +144,8 @@ class RunningContainer:
|
|
117
144
|
for log in self.container.logs(
|
118
145
|
follow=False, since=from_date, until=to_date, stream=True
|
119
146
|
):
|
120
|
-
print(log.decode("utf-8"), end="")
|
147
|
+
# print(log.decode("utf-8"), end="")
|
148
|
+
self.filter.print(log)
|
121
149
|
time.sleep(0.1)
|
122
150
|
from_date = to_date
|
123
151
|
to_date = _utc_now_no_tz()
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|