Port
This commit is contained in:
@@ -1,108 +0,0 @@
|
||||
import fetch from "node-fetch";
|
||||
import { getOctokit, context } from "@actions/github";
|
||||
|
||||
async function getAssetSign(url) {
|
||||
const response = await fetch(url, {
|
||||
method: "GET",
|
||||
headers: {
|
||||
"Content-Type": "application/octet-stream",
|
||||
},
|
||||
});
|
||||
|
||||
return response.text();
|
||||
}
|
||||
|
||||
async function createTauriRelease() {
|
||||
if (process.env.GITHUB_TOKEN === undefined) {
|
||||
throw new Error("GITHUB_TOKEN is not found!");
|
||||
}
|
||||
|
||||
const github = getOctokit(process.env.GITHUB_TOKEN);
|
||||
const { repos } = github.rest;
|
||||
const repoMetaData = {
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
};
|
||||
|
||||
const tagsResult = await repos.listTags({ ...repoMetaData, per_page: 10, page: 1 });
|
||||
const latestTag = tagsResult.data.find((tag) => tag.name.startsWith("v"));
|
||||
console.log(latestTag);
|
||||
|
||||
const latestRelease = await repos.getReleaseByTag({ ...repoMetaData, tag: latestTag.name });
|
||||
const latestAssets = latestRelease.data.assets;
|
||||
|
||||
const windowsX86_64 = {};
|
||||
const linuxX86_64 = {};
|
||||
const darwinX86_64 = {};
|
||||
const darwinAarch64 = {};
|
||||
|
||||
const promises = latestAssets.map(async (asset) => {
|
||||
const { name, browser_download_url } = asset;
|
||||
|
||||
if (/\.msi\.zip$/.test(name)) {
|
||||
windowsX86_64.url = browser_download_url;
|
||||
}
|
||||
if (/\.msi\.zip\.sig$/.test(name)) {
|
||||
windowsX86_64.signature = await getAssetSign(browser_download_url);
|
||||
}
|
||||
|
||||
if (/\.AppImage\.tar\.gz$/.test(name)) {
|
||||
linuxX86_64.url = browser_download_url;
|
||||
}
|
||||
if (/\.AppImage\.tar\.gz\.sig$/.test(name)) {
|
||||
linuxX86_64.signature = await getAssetSign(browser_download_url);
|
||||
}
|
||||
|
||||
if (/universal\.app\.tar\.gz$/.test(name)) {
|
||||
darwinX86_64.url = browser_download_url;
|
||||
}
|
||||
if (/universal\.app\.tar\.gz\.sig$/.test(name)) {
|
||||
darwinX86_64.signature = await getAssetSign(browser_download_url);
|
||||
}
|
||||
|
||||
if (/universal\.app\.tar\.gz$/.test(name)) {
|
||||
darwinAarch64.url = browser_download_url;
|
||||
}
|
||||
if (/universal\.app\.tar\.gz\.sig$/.test(name)) {
|
||||
darwinAarch64.signature = await getAssetSign(browser_download_url);
|
||||
}
|
||||
});
|
||||
|
||||
await Promise.allSettled(promises);
|
||||
|
||||
const releaseData = {
|
||||
name: latestTag.name,
|
||||
notes: `https://github.com/${repoMetaData.owner}/${repoMetaData.repo}/releases/tag/${latestTag.name}`,
|
||||
pub_date: new Date().toISOString(),
|
||||
platforms: {},
|
||||
};
|
||||
|
||||
if (windowsX86_64.url) releaseData.platforms["windows-x86_64"] = windowsX86_64;
|
||||
else console.error('Failed to get release for windowsX86_64');
|
||||
|
||||
if (linuxX86_64.url) releaseData.platforms["linux-x86_64"] = linuxX86_64;
|
||||
else console.error('Failed to get release for linuxX86_64');
|
||||
|
||||
if (darwinX86_64.url) releaseData.platforms["darwin-x86_64"] = darwinX86_64;
|
||||
else console.error('Failed to get release for darwinX86_64');
|
||||
|
||||
if (darwinAarch64.url) releaseData.platforms["darwin-aarch64"] = darwinAarch64;
|
||||
else console.error('Failed to get release for darwinAarch64');
|
||||
|
||||
const releaseResult = await repos.getReleaseByTag({ ...repoMetaData, tag: 'tauri' });
|
||||
const tauriRelease = releaseResult.data;
|
||||
|
||||
const prevReleaseAsset = tauriRelease.assets.find((asset) => asset.name === 'release.json');
|
||||
if (prevReleaseAsset) {
|
||||
await repos.deleteReleaseAsset({ ...repoMetaData, asset_id: prevReleaseAsset.id });
|
||||
}
|
||||
|
||||
console.log(releaseData);
|
||||
await repos.uploadReleaseAsset({
|
||||
...repoMetaData,
|
||||
release_id: tauriRelease.id,
|
||||
name: 'release.json',
|
||||
data: JSON.stringify(releaseData, null, 2),
|
||||
});
|
||||
}
|
||||
createTauriRelease();
|
||||
49
scripts/sync-android-icons.sh
Executable file
49
scripts/sync-android-icons.sh
Executable file
@@ -0,0 +1,49 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -eu
|
||||
|
||||
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname "$0")" && pwd)
|
||||
REPO_ROOT=$(CDPATH= cd -- "$SCRIPT_DIR/.." && pwd)
|
||||
|
||||
SOURCE_ICON="$REPO_ROOT/src-tauri/icons/icon.png"
|
||||
ANDROID_RES_DIR="$REPO_ROOT/src-tauri/gen/android/app/src/main/res"
|
||||
|
||||
if [ ! -f "$SOURCE_ICON" ]; then
|
||||
echo "Missing source icon: $SOURCE_ICON" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d "$ANDROID_RES_DIR" ]; then
|
||||
echo "Missing Android resources directory: $ANDROID_RES_DIR" >&2
|
||||
echo "Run android init first." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
resize_icon() {
|
||||
size="$1"
|
||||
output="$2"
|
||||
sips -z "$size" "$size" "$SOURCE_ICON" --out "$output" >/dev/null
|
||||
}
|
||||
|
||||
for spec in \
|
||||
"48 mipmap-mdpi" \
|
||||
"72 mipmap-hdpi" \
|
||||
"96 mipmap-xhdpi" \
|
||||
"144 mipmap-xxhdpi" \
|
||||
"192 mipmap-xxxhdpi"
|
||||
do
|
||||
set -- $spec
|
||||
resize_icon "$1" "$ANDROID_RES_DIR/$2/ic_launcher.png"
|
||||
resize_icon "$1" "$ANDROID_RES_DIR/$2/ic_launcher_round.png"
|
||||
done
|
||||
|
||||
for spec in \
|
||||
"108 mipmap-mdpi" \
|
||||
"162 mipmap-hdpi" \
|
||||
"216 mipmap-xhdpi" \
|
||||
"324 mipmap-xxhdpi" \
|
||||
"432 mipmap-xxxhdpi"
|
||||
do
|
||||
set -- $spec
|
||||
resize_icon "$1" "$ANDROID_RES_DIR/$2/ic_launcher_foreground.png"
|
||||
done
|
||||
99
scripts/with-android-java.sh
Executable file
99
scripts/with-android-java.sh
Executable file
@@ -0,0 +1,99 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -eu
|
||||
|
||||
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname "$0")" && pwd)
|
||||
REPO_ROOT=$(CDPATH= cd -- "$SCRIPT_DIR/.." && pwd)
|
||||
|
||||
prefer_java_home() {
|
||||
if command -v /usr/libexec/java_home >/dev/null 2>&1; then
|
||||
/usr/libexec/java_home -v 17 2>/dev/null || true
|
||||
fi
|
||||
}
|
||||
|
||||
prefer_homebrew_openjdk_17() {
|
||||
for candidate in \
|
||||
"/opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home" \
|
||||
"/usr/local/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home"
|
||||
do
|
||||
if [ -x "$candidate/bin/java" ]; then
|
||||
printf '%s\n' "$candidate"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
prefer_android_studio_jbr() {
|
||||
for candidate in \
|
||||
"/Applications/Android Studio.app/Contents/jbr/Contents/Home" \
|
||||
"/Applications/Android Studio Preview.app/Contents/jbr/Contents/Home"
|
||||
do
|
||||
if [ -x "$candidate/bin/java" ]; then
|
||||
printf '%s\n' "$candidate"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
java_major_version() {
|
||||
"$1/bin/java" -version 2>&1 | awk -F '"' '/version/ { split($2, v, "."); print v[1]; exit }'
|
||||
}
|
||||
|
||||
SELECTED_JAVA_HOME=""
|
||||
|
||||
if [ -n "${JAVA_HOME:-}" ] && [ -x "${JAVA_HOME}/bin/java" ]; then
|
||||
CURRENT_MAJOR=$(java_major_version "$JAVA_HOME" || true)
|
||||
if [ "$CURRENT_MAJOR" = "17" ]; then
|
||||
SELECTED_JAVA_HOME="$JAVA_HOME"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$SELECTED_JAVA_HOME" ]; then
|
||||
CANDIDATE=$(prefer_java_home)
|
||||
if [ -n "$CANDIDATE" ] && [ -x "$CANDIDATE/bin/java" ]; then
|
||||
SELECTED_JAVA_HOME="$CANDIDATE"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$SELECTED_JAVA_HOME" ]; then
|
||||
CANDIDATE=$(prefer_homebrew_openjdk_17 || true)
|
||||
if [ -n "$CANDIDATE" ]; then
|
||||
SELECTED_JAVA_HOME="$CANDIDATE"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$SELECTED_JAVA_HOME" ]; then
|
||||
CANDIDATE=$(prefer_android_studio_jbr || true)
|
||||
if [ -n "$CANDIDATE" ]; then
|
||||
SELECTED_JAVA_HOME="$CANDIDATE"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$SELECTED_JAVA_HOME" ]; then
|
||||
cat >&2 <<'EOF'
|
||||
Unable to find a Java 17 runtime for Android builds.
|
||||
|
||||
Install JDK 17 or Android Studio, then rerun the Android command.
|
||||
You can also export JAVA_HOME to a Java 17 installation manually.
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
|
||||
export JAVA_HOME="$SELECTED_JAVA_HOME"
|
||||
export PATH="$JAVA_HOME/bin:$PATH"
|
||||
|
||||
# Homebrew's standalone `libzip` can shadow the JDK's bundled zip native
|
||||
# library on macOS, which breaks Gradle startup with Inflater.initIDs errors.
|
||||
JAVA_DYLD_PATH="$JAVA_HOME/lib:$JAVA_HOME/lib/server"
|
||||
if [ -n "${DYLD_LIBRARY_PATH:-}" ]; then
|
||||
export DYLD_LIBRARY_PATH="$JAVA_DYLD_PATH:$DYLD_LIBRARY_PATH"
|
||||
else
|
||||
export DYLD_LIBRARY_PATH="$JAVA_DYLD_PATH"
|
||||
fi
|
||||
|
||||
cd "$REPO_ROOT"
|
||||
exec "$@"
|
||||
Reference in New Issue
Block a user