mirror of
https://github.com/ByteWelder/Tactility.git
synced 2026-02-21 07:55:06 +00:00
Updated tactility.py to v1.2.0
This commit is contained in:
parent
df7121a64c
commit
01fac2c6a1
@ -9,16 +9,19 @@ import time
|
|||||||
import urllib.request
|
import urllib.request
|
||||||
import zipfile
|
import zipfile
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
# Targetable platforms that represent a specific hardware target
|
# Targetable platforms that represent a specific hardware target
|
||||||
platform_targets = ["esp32", "esp32s3"]
|
platform_targets = ["esp32", "esp32s3"]
|
||||||
# All valid platform commandline arguments
|
# All valid platform commandline arguments
|
||||||
platform_arguments = platform_targets.copy()
|
platform_arguments = platform_targets.copy()
|
||||||
platform_arguments.append("all")
|
platform_arguments.append("all")
|
||||||
ttbuild_path = ".tactility"
|
ttbuild_path = ".tactility"
|
||||||
ttbuild_version = "1.0.0"
|
ttbuild_version = "1.2.0"
|
||||||
ttbuild_properties_file = "tactility.properties"
|
ttbuild_properties_file = "tactility.properties"
|
||||||
ttbuild_cdn = "https://cdn.tactility.one"
|
ttbuild_cdn = "https://cdn.tactility.one"
|
||||||
ttbuild_sdk_json_validity = 3600 # seconds
|
ttbuild_sdk_json_validity = 3600 # seconds
|
||||||
|
ttport = 6666
|
||||||
verbose = False
|
verbose = False
|
||||||
use_local_sdk = False
|
use_local_sdk = False
|
||||||
|
|
||||||
@ -54,19 +57,21 @@ def print_help():
|
|||||||
print("Usage: python tactility.py [action] [options]")
|
print("Usage: python tactility.py [action] [options]")
|
||||||
print("")
|
print("")
|
||||||
print("Actions:")
|
print("Actions:")
|
||||||
print(" build [esp32,esp32s3,all,local] Build the app for the specified platform")
|
print(" build [esp32,esp32s3,all,local] Build the app for the specified platform")
|
||||||
print(" esp32: ESP32")
|
print(" esp32: ESP32")
|
||||||
print(" esp32s3: ESP32 S3")
|
print(" esp32s3: ESP32 S3")
|
||||||
print(" all: all supported ESP platforms")
|
print(" all: all supported ESP platforms")
|
||||||
print(" clean Clean the build folders")
|
print(" clean Clean the build folders")
|
||||||
print(" clearcache Clear the SDK cache")
|
print(" clearcache Clear the SDK cache")
|
||||||
print(" updateself Update this tool")
|
print(" updateself Update this tool")
|
||||||
|
print(" run [ip] [app id] Run an application")
|
||||||
|
print(" install [ip] [esp32,esp32s3] Install an application")
|
||||||
print("")
|
print("")
|
||||||
print("Options:")
|
print("Options:")
|
||||||
print(" --help Show this commandline info")
|
print(" --help Show this commandline info")
|
||||||
print(" --local-sdk Use SDK specifiedc by environment variable TACTILITY_SDK_PATH")
|
print(" --local-sdk Use SDK specified by environment variable TACTILITY_SDK_PATH")
|
||||||
print(" --skip-build Run everything except the idf.py/CMake commands")
|
print(" --skip-build Run everything except the idf.py/CMake commands")
|
||||||
print(" --verbose Show extra console output")
|
print(" --verbose Show extra console output")
|
||||||
|
|
||||||
def download_file(url, filepath):
|
def download_file(url, filepath):
|
||||||
global verbose
|
global verbose
|
||||||
@ -100,6 +105,9 @@ def exit_with_error(message):
|
|||||||
print_error(message)
|
print_error(message)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
def get_url(ip, path):
|
||||||
|
return f"http://{ip}:{ttport}{path}"
|
||||||
|
|
||||||
def is_valid_platform_name(name):
|
def is_valid_platform_name(name):
|
||||||
global platform_arguments
|
global platform_arguments
|
||||||
return name in platform_arguments
|
return name in platform_arguments
|
||||||
@ -340,9 +348,6 @@ def build_action(platform_arg):
|
|||||||
if not use_local_sdk:
|
if not use_local_sdk:
|
||||||
if should_fetch_sdkconfig_files():
|
if should_fetch_sdkconfig_files():
|
||||||
fetch_sdkconfig_files()
|
fetch_sdkconfig_files()
|
||||||
# Update SDK cache
|
|
||||||
if should_update_sdk_json() and not update_sdk_json():
|
|
||||||
exit_with_error("Failed to retrieve SDK info")
|
|
||||||
sdk_json = read_sdk_json()
|
sdk_json = read_sdk_json()
|
||||||
validate_self(sdk_json)
|
validate_self(sdk_json)
|
||||||
if not "versions" in sdk_json:
|
if not "versions" in sdk_json:
|
||||||
@ -380,6 +385,56 @@ def update_self_action():
|
|||||||
else:
|
else:
|
||||||
exit_with_error("Update failed")
|
exit_with_error("Update failed")
|
||||||
|
|
||||||
|
def get_device_info(ip):
|
||||||
|
print(f"Getting device info from {ip}")
|
||||||
|
url = get_url(ip, "/info")
|
||||||
|
try:
|
||||||
|
response = requests.get(url)
|
||||||
|
if response.status_code != 200:
|
||||||
|
print_error("Run failed")
|
||||||
|
else:
|
||||||
|
print(response.json())
|
||||||
|
print(f"{shell_color_green}Run successful ✅{shell_color_reset}")
|
||||||
|
except requests.RequestException as e:
|
||||||
|
print(f"Request failed: {e}")
|
||||||
|
|
||||||
|
def run_action(ip, app_id):
|
||||||
|
print(f"Running {app_id} on {ip}")
|
||||||
|
url = get_url(ip, "/app/run")
|
||||||
|
params = {'id': app_id}
|
||||||
|
try:
|
||||||
|
response = requests.post(url, params=params)
|
||||||
|
if response.status_code != 200:
|
||||||
|
print_error("Run failed")
|
||||||
|
else:
|
||||||
|
print(f"{shell_color_green}Run successful ✅{shell_color_reset}")
|
||||||
|
except requests.RequestException as e:
|
||||||
|
print(f"Request failed: {e}")
|
||||||
|
|
||||||
|
def install_action(ip, platform):
|
||||||
|
file_path = find_elf_file(platform)
|
||||||
|
if file_path is None:
|
||||||
|
print_error(f"File not found: {file_path}")
|
||||||
|
return
|
||||||
|
print(f"Installing {file_path} to {ip}")
|
||||||
|
url = get_url(ip, "/app/install")
|
||||||
|
try:
|
||||||
|
# Prepare multipart form data
|
||||||
|
with open(file_path, 'rb') as file:
|
||||||
|
files = {
|
||||||
|
'elf': file
|
||||||
|
}
|
||||||
|
response = requests.put(url, files=files)
|
||||||
|
if response.status_code != 200:
|
||||||
|
print_error("Install failed")
|
||||||
|
else:
|
||||||
|
print(f"{shell_color_green}Installation successful ✅{shell_color_reset}")
|
||||||
|
except requests.RequestException as e:
|
||||||
|
print_error(f"Installation failed: {e}")
|
||||||
|
except IOError as e:
|
||||||
|
print_error(f"File error: {e}")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
print(f"Tactility Build System v{ttbuild_version}")
|
print(f"Tactility Build System v{ttbuild_version}")
|
||||||
if "--help" in sys.argv:
|
if "--help" in sys.argv:
|
||||||
@ -393,6 +448,9 @@ if __name__ == "__main__":
|
|||||||
verbose = "--verbose" in sys.argv
|
verbose = "--verbose" in sys.argv
|
||||||
skip_build = "--skip-build" in sys.argv
|
skip_build = "--skip-build" in sys.argv
|
||||||
use_local_sdk = "--local-sdk" in sys.argv
|
use_local_sdk = "--local-sdk" in sys.argv
|
||||||
|
# Update SDK cache (sdk.json)
|
||||||
|
if should_update_sdk_json() and not update_sdk_json():
|
||||||
|
exit_with_error("Failed to retrieve SDK info")
|
||||||
# Actions
|
# Actions
|
||||||
if action_arg == "build":
|
if action_arg == "build":
|
||||||
if len(sys.argv) < 3:
|
if len(sys.argv) < 3:
|
||||||
@ -405,6 +463,16 @@ if __name__ == "__main__":
|
|||||||
clear_cache_action()
|
clear_cache_action()
|
||||||
elif action_arg == "updateself":
|
elif action_arg == "updateself":
|
||||||
update_self_action()
|
update_self_action()
|
||||||
|
elif action_arg == "run":
|
||||||
|
if len(sys.argv) < 4:
|
||||||
|
print_help()
|
||||||
|
exit_with_error("Commandline parameter missing")
|
||||||
|
run_action(sys.argv[2], sys.argv[3])
|
||||||
|
elif action_arg == "install":
|
||||||
|
if len(sys.argv) < 4:
|
||||||
|
print_help()
|
||||||
|
exit_with_error("Commandline parameter missing")
|
||||||
|
install_action(sys.argv[2], sys.argv[3])
|
||||||
else:
|
else:
|
||||||
print_help()
|
print_help()
|
||||||
exit_with_error("Unknown commandline parameter")
|
exit_with_error("Unknown commandline parameter")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user