|
@ -1,8 +1,12 @@ |
|
|
#!/usr/bin/env python |
|
|
#!/usr/bin/env python |
|
|
|
|
|
from __future__ import print_function |
|
|
|
|
|
|
|
|
|
|
|
import os |
|
|
|
|
|
import sys |
|
|
from subprocess import call |
|
|
from subprocess import call |
|
|
|
|
|
|
|
|
|
|
|
import click |
|
|
from platformio import util |
|
|
from platformio import util |
|
|
import os |
|
|
|
|
|
import time |
|
|
|
|
|
|
|
|
|
|
|
Import("env") |
|
|
Import("env") |
|
|
|
|
|
|
|
@ -31,6 +35,17 @@ class Color(object): |
|
|
def clr(color, text): |
|
|
def clr(color, text): |
|
|
return color + str(text) + '\x1b[0m' |
|
|
return color + str(text) + '\x1b[0m' |
|
|
|
|
|
|
|
|
|
|
|
def print_warning(message, color=Color.LIGHT_YELLOW): |
|
|
|
|
|
print(clr(color, message), file=sys.stderr) |
|
|
|
|
|
|
|
|
|
|
|
def print_filler(fill, color=Color.WHITE, err=False): |
|
|
|
|
|
width, _ = click.get_terminal_size() |
|
|
|
|
|
if len(fill) > 1: |
|
|
|
|
|
fill = fill[0] |
|
|
|
|
|
|
|
|
|
|
|
out = sys.stderr if err else sys.stdout |
|
|
|
|
|
print(clr(color, fill * width), file=out) |
|
|
|
|
|
|
|
|
# ------------------------------------------------------------------------------ |
|
|
# ------------------------------------------------------------------------------ |
|
|
# Callbacks |
|
|
# Callbacks |
|
|
# ------------------------------------------------------------------------------ |
|
|
# ------------------------------------------------------------------------------ |
|
@ -52,12 +67,18 @@ def cpp_check(source, target, env): |
|
|
print("Finished cppcheck...\n") |
|
|
print("Finished cppcheck...\n") |
|
|
|
|
|
|
|
|
def check_size(source, target, env): |
|
|
def check_size(source, target, env): |
|
|
time.sleep(2) |
|
|
|
|
|
size = target[0].get_size() |
|
|
|
|
|
print clr(Color.LIGHT_BLUE, "Binary size: %s bytes" % size) |
|
|
|
|
|
#if size > 512000: |
|
|
|
|
|
# print clr(Color.LIGHT_RED, "File too large for OTA!") |
|
|
|
|
|
# Exit(1) |
|
|
|
|
|
|
|
|
(binary,) = target |
|
|
|
|
|
path = binary.get_abspath() |
|
|
|
|
|
size = os.stat(path).st_size |
|
|
|
|
|
print(clr(Color.LIGHT_BLUE, "Binary size: {} bytes".format(size))) |
|
|
|
|
|
|
|
|
|
|
|
# Warn 1MB variants about exceeding OTA size limit |
|
|
|
|
|
flash_size = int(env.BoardConfig().get("upload.maximum_size", 0)) |
|
|
|
|
|
if (flash_size == 1048576) and (size >= 512000): |
|
|
|
|
|
print_filler("*", color=Color.LIGHT_YELLOW, err=True) |
|
|
|
|
|
print_warning("File is too large for OTA! Here you can find instructions on how to flash it:") |
|
|
|
|
|
print_warning("https://github.com/xoseperez/espurna/wiki/TwoStepUpdates", color=Color.LIGHT_CYAN) |
|
|
|
|
|
print_filler("*", color=Color.LIGHT_YELLOW, err=True) |
|
|
|
|
|
|
|
|
def build_webui(env): |
|
|
def build_webui(env): |
|
|
config = util.load_project_config() |
|
|
config = util.load_project_config() |
|
|