cooked I Am
This commit is contained in:
@@ -46,10 +46,11 @@ jobs:
|
|||||||
name: wakey-rootfs
|
name: wakey-rootfs
|
||||||
path: dist/wakey-rootfs-*armv7-unknown-linux-musleabihf.tgz
|
path: dist/wakey-rootfs-*armv7-unknown-linux-musleabihf.tgz
|
||||||
|
|
||||||
- name: Publish Release to Gitea (API)
|
- name: Publish Release to Gitea
|
||||||
if: startsWith(github.ref, 'refs/tags/')
|
if: startsWith(github.ref, 'refs/tags/')
|
||||||
shell: pwsh
|
uses: actions/gitea-release-action@v1
|
||||||
env:
|
with:
|
||||||
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
token: ${{ secrets.GITEA_TOKEN }}
|
||||||
run: |
|
files: |
|
||||||
./scripts/ci_gitea_release.ps1 -Tag "$env:GITHUB_REF_NAME" -AssetPattern "dist/wakey-rootfs-*armv7-unknown-linux-musleabihf.tgz"
|
dist/wakey-rootfs-*armv7-unknown-linux-musleabihf.tgz
|
||||||
|
tag_name: ${{ github.ref_name }}
|
||||||
|
|||||||
Generated
+4
-17
@@ -174,7 +174,7 @@ dependencies = [
|
|||||||
"mime",
|
"mime",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
"serde_core",
|
"serde_core",
|
||||||
"serde_html_form 0.2.8",
|
"serde_html_form",
|
||||||
"serde_path_to_error",
|
"serde_path_to_error",
|
||||||
"tower-layer",
|
"tower-layer",
|
||||||
"tower-service",
|
"tower-service",
|
||||||
@@ -1716,19 +1716,6 @@ dependencies = [
|
|||||||
"serde_core",
|
"serde_core",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "serde_html_form"
|
|
||||||
version = "0.4.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "0946d52b4b7e28823148aebbeceb901012c595ad737920d504fa8634bb099e6f"
|
|
||||||
dependencies = [
|
|
||||||
"form_urlencoded",
|
|
||||||
"indexmap 2.13.1",
|
|
||||||
"itoa",
|
|
||||||
"ryu",
|
|
||||||
"serde_core",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_json"
|
name = "serde_json"
|
||||||
version = "1.0.149"
|
version = "1.0.149"
|
||||||
@@ -2385,7 +2372,7 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wakey"
|
name = "wakey"
|
||||||
version = "0.1.7"
|
version = "0.2.0-a1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"axum",
|
"axum",
|
||||||
@@ -2398,7 +2385,7 @@ dependencies = [
|
|||||||
"lda-ipjs",
|
"lda-ipjs",
|
||||||
"macaddr",
|
"macaddr",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_html_form 0.4.0",
|
"serde_html_form",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tower-http",
|
"tower-http",
|
||||||
@@ -2411,7 +2398,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wakey-agent"
|
name = "wakey-agent"
|
||||||
version = "0.1.0"
|
version = "0.0.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"clap",
|
"clap",
|
||||||
|
|||||||
+12
-9
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "wakey"
|
name = "wakey"
|
||||||
version = "0.1.7"
|
version = "0.2.0-a1"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
publish = ["gitea"]
|
publish = ["gitea"]
|
||||||
|
|
||||||
@@ -28,22 +28,25 @@ tower-http = { version = "0", features = ["fs", "trace"] }
|
|||||||
tracing = "0.1"
|
tracing = "0.1"
|
||||||
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] }
|
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] }
|
||||||
urlencoding = "2"
|
urlencoding = "2"
|
||||||
wakey-core = { path = "wakey-core" }
|
|
||||||
wakey-linux = { path = "wakey-linux" }
|
|
||||||
|
|
||||||
[profile.release]
|
[profile.release]
|
||||||
opt-level = "z"
|
opt-level = "z"
|
||||||
strip = true
|
strip = true
|
||||||
|
|
||||||
[features]
|
|
||||||
default = ["very-smart-parsing"]
|
|
||||||
very-smart-parsing = [
|
|
||||||
] # this is the a-bit-redundant parse thing that copilot made
|
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
members = ["ipjs", "wakey-agent", "wakey-core", "wakey-linux"]
|
members = ["ipjs", "wakey-agent", "wakey-core", "wakey-linux"]
|
||||||
|
|
||||||
[dependencies.lda-ipjs]
|
[dependencies.lda-ipjs]
|
||||||
path = "ipjs"
|
path = "ipjs"
|
||||||
registry = "gitea"
|
registry = "gitea"
|
||||||
version = "*"
|
version = "0"
|
||||||
|
|
||||||
|
[dependencies.wakey-core]
|
||||||
|
path = "wakey-core"
|
||||||
|
registry = "gitea"
|
||||||
|
version = "0"
|
||||||
|
|
||||||
|
[dependencies.wakey-linux]
|
||||||
|
path = "wakey-linux"
|
||||||
|
registry = "gitea"
|
||||||
|
version = "0"
|
||||||
|
|||||||
@@ -34,6 +34,19 @@ ensure_dirs() {
|
|||||||
mkdir -p "$RUNNER_HOME" "$(dirname "$RUNNER_BIN")"
|
mkdir -p "$RUNNER_HOME" "$(dirname "$RUNNER_BIN")"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ensure_runner_bin() {
|
||||||
|
if [[ ! -x "$RUNNER_BIN" ]]; then
|
||||||
|
echo "Runner binary not found or not executable at $RUNNER_BIN" >&2
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
runner_pids() {
|
||||||
|
ps -eo pid=,args= | awk -v bin="$RUNNER_BIN" -v config="$CONFIG_PATH" '
|
||||||
|
$2 == bin && $3 == "daemon" && $4 == "--config" && $5 == config { print $1 }
|
||||||
|
'
|
||||||
|
}
|
||||||
|
|
||||||
update_runner() {
|
update_runner() {
|
||||||
ensure_dirs
|
ensure_dirs
|
||||||
local api="https://gitea.com/api/v1/repos/gitea/act_runner/releases/latest"
|
local api="https://gitea.com/api/v1/repos/gitea/act_runner/releases/latest"
|
||||||
@@ -62,6 +75,7 @@ PY
|
|||||||
|
|
||||||
register_runner() {
|
register_runner() {
|
||||||
ensure_dirs
|
ensure_dirs
|
||||||
|
ensure_runner_bin
|
||||||
|
|
||||||
if [[ -z "$SERVER_URL" || -z "$TOKEN" ]]; then
|
if [[ -z "$SERVER_URL" || -z "$TOKEN" ]]; then
|
||||||
echo "register requires SERVER_URL and TOKEN (or --server-url/--token)" >&2
|
echo "register requires SERVER_URL and TOKEN (or --server-url/--token)" >&2
|
||||||
@@ -79,6 +93,7 @@ register_runner() {
|
|||||||
start_runner() {
|
start_runner() {
|
||||||
local mode="${1:-daemon}"
|
local mode="${1:-daemon}"
|
||||||
ensure_dirs
|
ensure_dirs
|
||||||
|
ensure_runner_bin
|
||||||
|
|
||||||
if [[ ! -f "$CONFIG_PATH" ]]; then
|
if [[ ! -f "$CONFIG_PATH" ]]; then
|
||||||
echo "Runner config not found at $CONFIG_PATH" >&2
|
echo "Runner config not found at $CONFIG_PATH" >&2
|
||||||
@@ -104,14 +119,21 @@ start_runner() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
stop_runner() {
|
stop_runner() {
|
||||||
pkill -f "$RUNNER_BIN" || true
|
local pids
|
||||||
|
pids="$(runner_pids)"
|
||||||
|
if [[ -z "$pids" ]]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
kill $pids
|
||||||
}
|
}
|
||||||
|
|
||||||
status_runner() {
|
status_runner() {
|
||||||
if pgrep -f "$RUNNER_BIN" >/dev/null; then
|
ensure_runner_bin
|
||||||
|
|
||||||
|
if [[ -n "$(runner_pids)" ]]; then
|
||||||
echo "act_runner is running"
|
echo "act_runner is running"
|
||||||
else
|
else
|
||||||
echo "act_runner is not running"
|
echo "act_runner is off"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,57 +0,0 @@
|
|||||||
param(
|
|
||||||
[Parameter(Mandatory = $true)][string]$Tag,
|
|
||||||
[Parameter(Mandatory = $true)][string]$AssetPattern,
|
|
||||||
[string]$ServerUrl,
|
|
||||||
[string]$Token,
|
|
||||||
[string]$Owner,
|
|
||||||
[string]$Repo
|
|
||||||
)
|
|
||||||
|
|
||||||
$ErrorActionPreference = 'Stop'
|
|
||||||
|
|
||||||
# Resolve token
|
|
||||||
if (-not $Token) { $Token = $env:GITEA_TOKEN }
|
|
||||||
if (-not $Token) { throw 'Missing Gitea token. Set -Token or $env:GITEA_TOKEN' }
|
|
||||||
|
|
||||||
# Resolve repo owner/name
|
|
||||||
if (-not $Owner -or -not $Repo) {
|
|
||||||
if ($env:GITHUB_REPOSITORY) {
|
|
||||||
$parts = $env:GITHUB_REPOSITORY -split '/'
|
|
||||||
if (-not $Owner -and $parts.Length -ge 1) { $Owner = $parts[0] }
|
|
||||||
if (-not $Repo -and $parts.Length -ge 2) { $Repo = $parts[1] }
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
throw 'Missing Owner/Repo and GITHUB_REPOSITORY not set'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Resolve API base
|
|
||||||
$api = $env:GITHUB_API_URL
|
|
||||||
if (-not $api -and $env:GITHUB_SERVER_URL) { $api = "$($env:GITHUB_SERVER_URL)/api/v1" }
|
|
||||||
if (-not $api -and $ServerUrl) { $api = "$ServerUrl/api/v1" }
|
|
||||||
if (-not $api) { throw 'Could not determine Gitea API URL. Provide -ServerUrl or set GITHUB_SERVER_URL/GITHUB_API_URL' }
|
|
||||||
|
|
||||||
# Find asset
|
|
||||||
$asset = Get-ChildItem -Path $AssetPattern -ErrorAction Stop | Select-Object -First 1
|
|
||||||
if (-not $asset) { throw "No asset matches pattern: $AssetPattern" }
|
|
||||||
|
|
||||||
$headers = @{ Authorization = "token $Token" }
|
|
||||||
$body = @{ tag_name = $Tag; name = $Tag; draft = $false; prerelease = $false } | ConvertTo-Json
|
|
||||||
|
|
||||||
Write-Host "Creating release $Tag for $Owner/$Repo"
|
|
||||||
try {
|
|
||||||
$release = Invoke-RestMethod -Headers $headers -Uri "$api/repos/$Owner/$Repo/releases" -Method Post -Body $body -ContentType 'application/json'
|
|
||||||
}
|
|
||||||
catch {
|
|
||||||
# If already exists, fetch by tag
|
|
||||||
Write-Host "Create failed; trying to fetch existing release for tag $Tag" -ForegroundColor Yellow
|
|
||||||
$release = Invoke-RestMethod -Headers $headers -Uri "$api/repos/$Owner/$Repo/releases/tags/$Tag" -Method Get
|
|
||||||
}
|
|
||||||
|
|
||||||
$rid = $release.id
|
|
||||||
if (-not $rid) { throw "Failed to resolve release id: $($release | ConvertTo-Json -Depth 5)" }
|
|
||||||
|
|
||||||
$uploadUri = "$api/repos/$Owner/$Repo/releases/$rid/assets?name=$($asset.Name)"
|
|
||||||
Write-Host "Uploading asset $($asset.Name)"
|
|
||||||
Invoke-WebRequest -UseBasicParsing -Headers $headers -Uri $uploadUri -Method Post -InFile $asset.FullName -ContentType 'application/octet-stream' | Out-Null
|
|
||||||
Write-Host "Release published: tag $Tag with asset $($asset.Name)"
|
|
||||||
+1
-1
@@ -13,7 +13,7 @@ param(
|
|||||||
[string]$Registry,
|
[string]$Registry,
|
||||||
[ValidateSet('wsl', 'windows', 'none')]
|
[ValidateSet('wsl', 'windows', 'none')]
|
||||||
[string]$RunnerMode = 'wsl',
|
[string]$RunnerMode = 'wsl',
|
||||||
[string]$WslDistro = $(if ($env:WAKEY_WSL_DISTRO) { $env:WAKEY_WSL_DISTRO } else { 'FedoraLinux' })
|
[string]$WslDistro = $(if ($env:WAKEY_WSL_DISTRO) { $env:WAKEY_WSL_DISTRO } else { 'FedoraLinux-43' })
|
||||||
)
|
)
|
||||||
|
|
||||||
$ErrorActionPreference = 'Stop'
|
$ErrorActionPreference = 'Stop'
|
||||||
|
|||||||
+15
-5
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "wakey-agent"
|
name = "wakey-agent"
|
||||||
version = "0.1.0"
|
version = "0.0.1"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
@@ -9,14 +9,24 @@ clap = { version = "4", features = ["derive"] }
|
|||||||
futures-util = "0.3"
|
futures-util = "0.3"
|
||||||
http = "1"
|
http = "1"
|
||||||
macaddr = { version = "1", features = ["serde", "serde_std"] }
|
macaddr = { version = "1", features = ["serde", "serde_std"] }
|
||||||
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] }
|
reqwest = { version = "0.12", default-features = false, features = [
|
||||||
|
"json",
|
||||||
|
"rustls-tls",
|
||||||
|
] }
|
||||||
serde = { version = "1", features = ["derive"] }
|
serde = { version = "1", features = ["derive"] }
|
||||||
serde_json = "1"
|
serde_json = "1"
|
||||||
tokio = { version = "1", features = ["fs", "macros", "rt-multi-thread", "time", "signal", "sync"] }
|
tokio = { version = "1", features = [
|
||||||
|
"fs",
|
||||||
|
"macros",
|
||||||
|
"rt-multi-thread",
|
||||||
|
"time",
|
||||||
|
"signal",
|
||||||
|
"sync",
|
||||||
|
] }
|
||||||
tokio-tungstenite = { version = "0.24", features = ["rustls-tls-webpki-roots"] }
|
tokio-tungstenite = { version = "0.24", features = ["rustls-tls-webpki-roots"] }
|
||||||
toml = "0.8"
|
toml = "0.8"
|
||||||
tracing = "0.1"
|
tracing = "0.1"
|
||||||
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] }
|
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] }
|
||||||
url = "2"
|
url = "2"
|
||||||
wakey = { path = ".." }
|
wakey = { path = "..", registry = "gitea" }
|
||||||
wakey-core = { path = "../wakey-core" }
|
wakey-core = { path = "../wakey-core", registry = "gitea" }
|
||||||
|
|||||||
Reference in New Issue
Block a user