Implement GitHub repo extraction in build process
Co-authored-by: netmindz <442066+netmindz@users.noreply.github.com>
This commit is contained in:
1916
compile_commands.json
Normal file
1916
compile_commands.json
Normal file
File diff suppressed because it is too large
Load Diff
43
pio-scripts/set_repo.py
Normal file
43
pio-scripts/set_repo.py
Normal 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}"'])
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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!)
|
||||||
|
|||||||
Reference in New Issue
Block a user