Implement GitHub repo extraction in build process

Co-authored-by: netmindz <442066+netmindz@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2025-09-19 10:30:36 +00:00
parent 43e3578d50
commit efeb791807
5 changed files with 1965 additions and 0 deletions

1916
compile_commands.json Normal file

File diff suppressed because it is too large Load Diff

43
pio-scripts/set_repo.py Normal file
View File

@@ -0,0 +1,43 @@
Import('env')
import subprocess
import re
def get_github_repo():
"""Extract GitHub repository name from git remote URL."""
try:
# Get the remote URL for origin
result = subprocess.run(['git', 'remote', 'get-url', 'origin'],
capture_output=True, text=True, check=True)
remote_url = result.stdout.strip()
# Check if it's a GitHub URL
if 'github.com' not in remote_url.lower():
return 'unknown'
# Parse GitHub URL patterns:
# https://github.com/owner/repo.git
# git@github.com:owner/repo.git
# https://github.com/owner/repo
# Remove .git suffix if present
if remote_url.endswith('.git'):
remote_url = remote_url[:-4]
# Handle HTTPS URLs
https_match = re.search(r'github\.com/([^/]+/[^/]+)', remote_url, re.IGNORECASE)
if https_match:
return https_match.group(1)
# Handle SSH URLs
ssh_match = re.search(r'github\.com:([^/]+/[^/]+)', remote_url, re.IGNORECASE)
if ssh_match:
return ssh_match.group(1)
return 'unknown'
except (subprocess.CalledProcessError, FileNotFoundError, Exception):
# Git command failed or git is not available
return 'unknown'
repo = get_github_repo()
env.Append(BUILD_FLAGS=[f'-DWLED_REPO="{repo}"'])

View File

@@ -111,6 +111,7 @@ ldscript_4m1m = eagle.flash.4m1m.ld
[scripts_defaults] [scripts_defaults]
extra_scripts = extra_scripts =
pre:pio-scripts/set_version.py pre:pio-scripts/set_version.py
pre:pio-scripts/set_repo.py
post:pio-scripts/output_bins.py post:pio-scripts/output_bins.py
post:pio-scripts/strip-floats.py post:pio-scripts/strip-floats.py
pre:pio-scripts/user_config_copy.py pre:pio-scripts/user_config_copy.py

View File

@@ -695,6 +695,7 @@ void serializeInfo(JsonObject root)
root[F("vid")] = VERSION; root[F("vid")] = VERSION;
root[F("cn")] = F(WLED_CODENAME); root[F("cn")] = F(WLED_CODENAME);
root[F("release")] = releaseString; root[F("release")] = releaseString;
root[F("repo")] = repoString;
JsonObject leds = root.createNestedObject(F("leds")); JsonObject leds = root.createNestedObject(F("leds"));
leds[F("count")] = strip.getLengthTotal(); leds[F("count")] = strip.getLengthTotal();

View File

@@ -276,10 +276,14 @@ using PSRAMDynamicJsonDocument = BasicJsonDocument<PSRAM_Allocator>;
#ifndef WLED_RELEASE_NAME #ifndef WLED_RELEASE_NAME
#define WLED_RELEASE_NAME "Custom" #define WLED_RELEASE_NAME "Custom"
#endif #endif
#ifndef WLED_REPO
#define WLED_REPO "unknown"
#endif
// Global Variable definitions // Global Variable definitions
WLED_GLOBAL char versionString[] _INIT(TOSTRING(WLED_VERSION)); WLED_GLOBAL char versionString[] _INIT(TOSTRING(WLED_VERSION));
WLED_GLOBAL char releaseString[] _INIT(WLED_RELEASE_NAME); // must include the quotes when defining, e.g -D WLED_RELEASE_NAME=\"ESP32_MULTI_USREMODS\" WLED_GLOBAL char releaseString[] _INIT(WLED_RELEASE_NAME); // must include the quotes when defining, e.g -D WLED_RELEASE_NAME=\"ESP32_MULTI_USREMODS\"
WLED_GLOBAL char repoString[] _INIT(WLED_REPO);
#define WLED_CODENAME "Niji" #define WLED_CODENAME "Niji"
// AP and OTA default passwords (for maximum security change them!) // AP and OTA default passwords (for maximum security change them!)