Release 1.0.0
This commit is contained in:
parent
dc9ddedd62
commit
8e67dd0013
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<svg width="188.10706mm" height="188.10849mm" viewBox="-370.16 -451.22 1004.42 1004.43" version="1.1" id="svg1" xmlns="http://www.w3.org/2000/svg" style="" xmlns:bx="https://boxy-svg.com">
|
<svg width="188.10706mm" height="188.10849mm" viewBox="-369.65 -450.7 1003.4 1003.4" version="1.1" id="svg1" xmlns="http://www.w3.org/2000/svg" style="" xmlns:bx="https://boxy-svg.com">
|
||||||
<defs>
|
<defs>
|
||||||
<bx:export>
|
<bx:export>
|
||||||
<bx:file format="png" path="YrXtals.png" width="2048" height="2048" antialiasing="true"/>
|
<bx:file format="png" path="YrXtals.png" width="2048" height="2048" antialiasing="true"/>
|
||||||
|
|
@ -129,17 +129,31 @@
|
||||||
<clipPath id="clip_56">
|
<clipPath id="clip_56">
|
||||||
<path transform="matrix(1,0,0,-1,0,1100)" d="M460.6656 679.4189H499.30079V722.2H460.6656Z"/>
|
<path transform="matrix(1,0,0,-1,0,1100)" d="M460.6656 679.4189H499.30079V722.2H460.6656Z"/>
|
||||||
</clipPath>
|
</clipPath>
|
||||||
|
<linearGradient gradientUnits="userSpaceOnUse" x1="132.409" y1="-454.047" x2="132.409" y2="549.353" id="gradient-0" gradientTransform="matrix(0.732425, -0.68085, 0.814721, 0.876444, 2.999553, 89.861458)">
|
||||||
|
<stop offset="0" style="stop-color: rgb(176, 6, 238);"/>
|
||||||
|
<stop offset="0.212" style="stop-color: rgb(219, 124, 255);"/>
|
||||||
|
<stop offset="0.506" style="stop-color: rgb(156, 31, 255);"/>
|
||||||
|
<stop offset="0.778" style="stop-color: rgb(212, 82, 240);"/>
|
||||||
|
<stop offset="1" style="stop-color: rgb(157, 6, 233);"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient gradientUnits="userSpaceOnUse" x1="132.05" y1="-450.7" x2="132.05" y2="552.7" id="gradient-1" gradientTransform="matrix(0.623477, -0.781845, 0.907049, 0.723328, -38.765553, 205.291539)">
|
||||||
|
<stop offset="0" style="stop-color: rgb(205, 119, 223);"/>
|
||||||
|
<stop offset="0.103" style="stop-color: rgb(113, 103, 103);"/>
|
||||||
|
<stop offset="0.508" style="stop-color: rgb(137, 21, 102);"/>
|
||||||
|
<stop offset="0.91" style="stop-color: rgb(56, 56, 56);"/>
|
||||||
|
<stop offset="1" style="stop-color: rgb(102, 0, 152);"/>
|
||||||
|
</linearGradient>
|
||||||
</defs>
|
</defs>
|
||||||
<rect x="-369.65" y="-450.7" width="1003.4" height="1003.4" style="stroke: rgb(0, 0, 0); fill: rgb(111, 2, 151);" rx="235.581" ry="235.581"/>
|
<rect x="-369.65" y="-450.7" width="1003.4" height="1003.4" style="fill: url("#gradient-0"); stroke-width: 4px;" rx="227.843" ry="227.843"/>
|
||||||
<rect x="-341.3" y="-422.36" width="946.705" height="946.71" style="stroke: rgb(0, 0, 0); fill: rgb(255, 255, 255);" rx="227.635" ry="227.635"/>
|
<path d="M -141.807 -452.7 L 405.907 -452.7 C 469.233 -452.613 526.947 -426.864 568.431 -385.381 C 609.915 -343.897 635.663 -286.183 635.75 -222.857 L 635.75 324.857 C 635.663 388.183 609.914 445.897 568.431 487.381 C 526.947 528.865 469.233 554.613 405.907 554.7 L -141.807 554.7 C -205.133 554.613 -262.847 528.864 -304.331 487.381 C -345.815 445.897 -371.563 388.183 -371.65 324.857 L -371.65 -222.857 C -371.563 -286.183 -345.814 -343.897 -304.331 -385.381 C -262.847 -426.865 -205.133 -452.613 -141.807 -452.7 Z M -301.502 -382.552 C -342.481 -341.573 -367.737 -285.365 -367.65 -222.857 L -367.65 324.857 C -367.737 387.365 -342.482 443.573 -301.502 484.552 C -260.523 525.531 -204.315 550.787 -141.807 550.7 L 405.907 550.7 C 468.415 550.787 524.623 525.532 565.602 484.552 C 606.581 443.573 631.837 387.365 631.75 324.857 L 631.75 -222.857 C 631.837 -285.365 606.582 -341.573 565.602 -382.552 C 524.623 -423.531 468.415 -448.787 405.907 -448.7 L -141.807 -448.7 C -204.315 -448.787 -260.523 -423.532 -301.502 -382.552 Z" style="fill: url("#gradient-1");" id="bg-color"/>
|
||||||
|
<path d="M -135.32 -429.58 H 399.426 A 213.2 213.2 0 0 1 612.626 -216.38 V 318.371 A 213.2 213.2 0 0 1 399.426 531.571 H -135.32 A 213.2 213.2 0 0 1 -348.52 318.371 V -216.38 A 213.2 213.2 0 0 1 -135.32 -429.58 Z" style="stroke: rgb(0, 0, 0); fill: rgb(255, 255, 255);"/>
|
||||||
<g style="" transform="matrix(3.259924, 0, 0, 3.259924, -280.996301, -166.755917)">
|
<g style="" transform="matrix(3.259924, 0, 0, 3.259924, -280.996301, -166.755917)">
|
||||||
<path d="M 93.139 -69.117 C 93.147 -69.117 93.131 -69.117 93.139 -69.117 Z" style="stroke: rgb(0, 0, 0); stroke-width: 0.999; fill: rgb(143, 0, 153);"/>
|
<path d="M 93.139 -69.117 C 93.147 -69.117 93.131 -69.117 93.139 -69.117 Z" style="stroke: rgb(0, 0, 0); stroke-width: 0.999; fill: rgb(143, 0, 153);"/>
|
||||||
<path d="M 64.957 -104.47 C 64.957 -104.47 64.958 -104.47 64.958 -104.47 C 64.958 -104.47 64.957 -104.47 64.957 -104.47 Z" style="stroke: rgb(0, 0, 0); stroke-width: 1.001; fill: rgb(143, 0, 153);"/>
|
|
||||||
<path d="M 54.797 -40.397 C 54.798 -40.397 54.799 -40.397 54.8 -40.397 C 54.802 -40.397 54.804 -40.397 54.806 -40.397 C 54.808 -40.397 54.81 -40.397 54.812 -40.397 C 54.39 -40.527 53.956 -40.667 53.507 -40.817 C 53.949 -40.667 54.379 -40.527 54.797 -40.397 Z" style="stroke: rgb(0, 0, 0); stroke-width: 1.001; fill: rgb(143, 0, 153);"/>
|
<path d="M 54.797 -40.397 C 54.798 -40.397 54.799 -40.397 54.8 -40.397 C 54.802 -40.397 54.804 -40.397 54.806 -40.397 C 54.808 -40.397 54.81 -40.397 54.812 -40.397 C 54.39 -40.527 53.956 -40.667 53.507 -40.817 C 53.949 -40.667 54.379 -40.527 54.797 -40.397 Z" style="stroke: rgb(0, 0, 0); stroke-width: 1.001; fill: rgb(143, 0, 153);"/>
|
||||||
<g clip-path="url(#clip_2)" transform="matrix(1.412778, 0, 0, 1.412778, -450.940786, -603.416369)">
|
<g clip-path="url(#clip_2)" transform="matrix(1.412778, 0, 0, 1.412778, -450.940786, -603.416369)">
|
||||||
<g mask="url(#mask_3)">
|
<g mask="url(#mask_3)">
|
||||||
<g transform="matrix(.998544,0,0,1.0018468,323.7247,420.21757)">
|
<g transform="matrix(.998544,0,0,1.0018468,323.7247,420.21757)">
|
||||||
<image id="image_5" width="182" height="169" href="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAALYAAACpCAIAAAAJElAdAAAACXBIWXMAAA7EAAAO xAGVKw4bAAAAcElEQVR4nO3BMQEAAADCoPVPbQlPoAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4GppKgABmb1xeQAAAABJRU5ErkJggg=="/>
|
<image id="image_5" width="182" height="161" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALYAAAChBAMAAACYDVgUAAAAD1BMVEUAAAAAAAAAAAAAAAAAAABPDueNAAAABXRSTlP/v4BAAFxSy3QAAABFSURBVHic7csxEcAgEADBRwIWHglEQvxrykDBhCZVKma3ueoiAAAAAAAAAAAAAAAAAADOUOqU3+qyXa8z+pDZZvt1/+gBpzAdxbxanAcAAAAASUVORK5CYII=" x="0" y="0"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<path transform="matrix(1,0,0,-1,0,1100)" d="M363.6 601.9439H462.335V688.25607H363.6Z" fill="#9202c8"/>
|
<path transform="matrix(1,0,0,-1,0,1100)" d="M363.6 601.9439H462.335V688.25607H363.6Z" fill="#9202c8"/>
|
||||||
|
|
@ -193,7 +207,7 @@
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#clip_28)" transform="matrix(1.412778, 0, 0, 1.412778, -450.940786, -603.416369)">
|
<g clip-path="url(#clip_28)" transform="matrix(1.412778, 0, 0, 1.412778, -450.940786, -603.416369)">
|
||||||
<g clip-path="url(#clip_29)">
|
<g clip-path="url(#clip_29)">
|
||||||
<path transform="matrix(1,-.0003653096,.0003653096,1,340.1353,386.31739)" stroke-width="1" stroke-linecap="butt" stroke-miterlimit="4" stroke-linejoin="miter" fill="none" stroke="#000000" d="M8.176741 30.99982V27.99982H14.17674V21.99982H17.17674V18.99982H20.17674V27.99982H26.17674V30.99982H20.17674V42.99982H23.17674V39.99982H29.17674V42.99982H26.17674V45.99982H17.17674V42.99982H14.17674V30.99982ZM8.176741 30.99982"/>
|
<path transform="matrix(1,-.0003653096,.0003653096,1,340.1353,386.31739)" stroke-width="1" stroke-linecap="butt" stroke-miterlimit="4" stroke-linejoin="miter" fill="none" stroke="#000000" d="M 8.177 31 L 8.177 28 L 14.177 28 L 14.177 22 L 17.177 22 L 17.177 19 L 20.177 19 L 20.177 28 L 26.177 28 L 26.177 31 L 20.177 31 L 20.177 35.5 L 20.177 43 L 23.177 43 L 23.177 40 L 29.177 40 L 29.177 43 L 26.177 43 L 26.177 46 L 17.177 46 L 17.177 43 L 14.177 43 L 14.177 31 L 8.177 31 Z M 8.177 31"/>
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#clip_30)" transform="matrix(1.412778, 0, 0, 1.412778, -450.940786, -603.416369)">
|
<g clip-path="url(#clip_30)" transform="matrix(1.412778, 0, 0, 1.412778, -450.940786, -603.416369)">
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 67 KiB |
|
|
@ -0,0 +1,18 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
||||||
|
|
||||||
|
rm -rf "$ROOT/build/android" "$ROOT/build/android-release"
|
||||||
|
rm -rf "$ROOT/android/app/build" "$ROOT/android/build" "$ROOT/android/.gradle"
|
||||||
|
rm -rf "$ROOT/android/app/src/main/jniLibs"
|
||||||
|
for d in "$ROOT/android/app/src/main/res"/mipmap-*; do
|
||||||
|
[ -d "$d" ] && rm -rf "$d"
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "${1:-}" = "--cargo" ]; then
|
||||||
|
cargo clean --target aarch64-linux-android --release 2>/dev/null || true
|
||||||
|
cargo clean --target armv7-linux-androideabi --release 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "cleaned: android build, gradle caches, jniLibs, mipmap-* buckets"
|
||||||
|
|
@ -30,6 +30,7 @@ for entry in "${DENSITIES[@]}"; do
|
||||||
bucket="${entry%% *}"
|
bucket="${entry%% *}"
|
||||||
size="${entry##* }"
|
size="${entry##* }"
|
||||||
dir="$RES/mipmap-$bucket"
|
dir="$RES/mipmap-$bucket"
|
||||||
|
rm -rf "$dir"
|
||||||
mkdir -p "$dir"
|
mkdir -p "$dir"
|
||||||
rsvg-convert --width="$size" --height="$size" "$SVG" -o "$dir/ic_launcher.png"
|
rsvg-convert --width="$size" --height="$size" "$SVG" -o "$dir/ic_launcher.png"
|
||||||
done
|
done
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
||||||
|
|
||||||
|
rm -rf "$ROOT/build/ios" "$ROOT/build/ios-release"
|
||||||
|
rm -rf "$ROOT/ios/Assets.xcassets/AppIcon.appiconset"
|
||||||
|
rm -rf "$ROOT/ios/YrXtals.xcodeproj"
|
||||||
|
|
||||||
|
if [ "${1:-}" = "--cargo" ]; then
|
||||||
|
cargo clean --target aarch64-apple-ios --release 2>/dev/null || true
|
||||||
|
cargo clean --target aarch64-apple-ios-sim --release 2>/dev/null || true
|
||||||
|
cargo clean --target aarch64-apple-ios --profile release-debug 2>/dev/null || true
|
||||||
|
cargo clean --target aarch64-apple-ios-sim --profile release-debug 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "cleaned: build/ios, build/ios-release, AppIcon.appiconset, YrXtals.xcodeproj"
|
||||||
|
|
@ -16,8 +16,26 @@ if ! command -v rsvg-convert >/dev/null 2>&1; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
rm -rf "$APPICON"
|
||||||
mkdir -p "$APPICON"
|
mkdir -p "$APPICON"
|
||||||
|
|
||||||
|
WORK_SVG="$(mktemp -t icon-svg.XXXXXX)"
|
||||||
|
trap 'rm -f "$WORK_SVG"' EXIT
|
||||||
|
|
||||||
|
# pulls the gradient labeled #bg-color and paints it across the whole viewBox under the existing artwork.
|
||||||
|
BG_FLAG=()
|
||||||
|
if grep -q 'id="bg-color"' "$SVG"; then
|
||||||
|
VIEWBOX="$(grep -oE 'viewBox="[^"]+"' "$SVG" | head -1 | sed -E 's/viewBox="//;s/"$//')"
|
||||||
|
read -r VBX VBY VBW VBH <<<"$VIEWBOX"
|
||||||
|
INJECT="<rect x=\"${VBX}\" y=\"${VBY}\" width=\"${VBW}\" height=\"${VBH}\" fill=\"url(#bg-color)\"/>"
|
||||||
|
awk -v inj="$INJECT" '/<\/defs>/ {print; print inj; next} {print}' "$SVG" > "$WORK_SVG"
|
||||||
|
echo "Injected #bg-color full-canvas fill"
|
||||||
|
else
|
||||||
|
cp "$SVG" "$WORK_SVG"
|
||||||
|
BG_FLAG=(--background-color="${YRXTALS_ICON_BG:-black}")
|
||||||
|
echo "No #bg-color id; falling back to solid ${YRXTALS_ICON_BG:-black}"
|
||||||
|
fi
|
||||||
|
|
||||||
SIZES=(
|
SIZES=(
|
||||||
"Icon-20.png 20"
|
"Icon-20.png 20"
|
||||||
"Icon-20@2x.png 40"
|
"Icon-20@2x.png 40"
|
||||||
|
|
@ -39,9 +57,18 @@ SIZES=(
|
||||||
for entry in "${SIZES[@]}"; do
|
for entry in "${SIZES[@]}"; do
|
||||||
name="${entry%% *}"
|
name="${entry%% *}"
|
||||||
size="${entry##* }"
|
size="${entry##* }"
|
||||||
rsvg-convert --width="$size" --height="$size" "$SVG" -o "$APPICON/$name"
|
rsvg-convert "${BG_FLAG[@]}" --width="$size" --height="$size" "$WORK_SVG" -o "$APPICON/$name"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# strips the alpha channel from the 1024 marketing icon for App Store validation.
|
||||||
|
if command -v magick >/dev/null 2>&1; then
|
||||||
|
magick "$APPICON/Icon-1024.png" -alpha remove -alpha off "$APPICON/Icon-1024.png"
|
||||||
|
elif command -v convert >/dev/null 2>&1; then
|
||||||
|
convert "$APPICON/Icon-1024.png" -alpha remove -alpha off "$APPICON/Icon-1024.png"
|
||||||
|
else
|
||||||
|
echo "WARNING: ImageMagick not on PATH; the 1024 icon still has an alpha channel. brew install imagemagick" >&2
|
||||||
|
fi
|
||||||
|
|
||||||
cat > "$ASSETS/Contents.json" <<'EOF'
|
cat > "$ASSETS/Contents.json" <<'EOF'
|
||||||
{
|
{
|
||||||
"info" : {
|
"info" : {
|
||||||
|
|
|
||||||
|
|
@ -75,6 +75,35 @@ if [ -f "$ACTOOL_PARTIAL" ]; then
|
||||||
/usr/libexec/PlistBuddy -c "Merge $ACTOOL_PARTIAL" "$APP/Info.plist" 2>/dev/null || true
|
/usr/libexec/PlistBuddy -c "Merge $ACTOOL_PARTIAL" "$APP/Info.plist" 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# injects the DT* and BuildMachineOSBuild keys App Store validation demands.
|
||||||
|
SDK_VER="$(xcrun --sdk "$SDK_NAME" --show-sdk-version)"
|
||||||
|
SDK_BUILD="$(xcrun --sdk "$SDK_NAME" --show-sdk-build-version)"
|
||||||
|
XCODE_VER_LINE="$(xcodebuild -version | head -1)"
|
||||||
|
XCODE_BUILD_LINE="$(xcodebuild -version | grep 'Build version')"
|
||||||
|
XCODE_VER="$(echo "$XCODE_VER_LINE" | awk '{print $2}')"
|
||||||
|
XCODE_BUILD="$(echo "$XCODE_BUILD_LINE" | awk '{print $3}')"
|
||||||
|
IFS='.' read -r XV_MAJ XV_MIN XV_PAT <<< "$XCODE_VER"
|
||||||
|
XV_MAJ="${XV_MAJ:-0}"; XV_MIN="${XV_MIN:-0}"; XV_PAT="${XV_PAT:-0}"
|
||||||
|
DT_XCODE="$((XV_MAJ * 100 + XV_MIN * 10 + XV_PAT))"
|
||||||
|
OS_BUILD="$(sw_vers -buildVersion)"
|
||||||
|
|
||||||
|
set_or_add() {
|
||||||
|
local key="$1" val="$2"
|
||||||
|
/usr/libexec/PlistBuddy -c "Set :$key $val" "$APP/Info.plist" 2>/dev/null \
|
||||||
|
|| /usr/libexec/PlistBuddy -c "Add :$key string $val" "$APP/Info.plist"
|
||||||
|
}
|
||||||
|
plutil -replace CFBundleSupportedPlatforms -json '["iPhoneOS"]' "$APP/Info.plist"
|
||||||
|
|
||||||
|
set_or_add BuildMachineOSBuild "$OS_BUILD"
|
||||||
|
set_or_add DTCompiler com.apple.compilers.llvm.clang.1_0
|
||||||
|
set_or_add DTPlatformBuild "$SDK_BUILD"
|
||||||
|
set_or_add DTPlatformName "$SDK_NAME"
|
||||||
|
set_or_add DTPlatformVersion "$SDK_VER"
|
||||||
|
set_or_add DTSDKBuild "$SDK_BUILD"
|
||||||
|
set_or_add DTSDKName "${SDK_NAME}${SDK_VER}"
|
||||||
|
set_or_add DTXcode "$DT_XCODE"
|
||||||
|
set_or_add DTXcodeBuild "$XCODE_BUILD"
|
||||||
|
|
||||||
RUST_FLAGS=(-import-objc-header "$ROOT/include/yr_xtals.h" -L "$RUST_LIB" -lyr_crystals)
|
RUST_FLAGS=(-import-objc-header "$ROOT/include/yr_xtals.h" -L "$RUST_LIB" -lyr_crystals)
|
||||||
|
|
||||||
echo "Compiling Swift (release, no DEBUG)..."
|
echo "Compiling Swift (release, no DEBUG)..."
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
||||||
|
|
||||||
|
rm -rf "$ROOT/build" "$ROOT/target" /tmp/yr_crystals-target
|
||||||
|
|
||||||
|
echo "cleaned: build/, target/, /tmp/yr_crystals-target"
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
||||||
|
|
||||||
|
rm -rf "$ROOT/build" "$ROOT/target" /tmp/yr_crystals-target
|
||||||
|
|
||||||
|
echo "cleaned: build/, target/, /tmp/yr_crystals-target"
|
||||||
|
|
@ -118,6 +118,9 @@ fn print_help() {
|
||||||
eprintln!(" generate-icons-android rasterize assets/Icon.svg into android mipmap buckets");
|
eprintln!(" generate-icons-android rasterize assets/Icon.svg into android mipmap buckets");
|
||||||
eprintln!(" xcodeproj-ios generate ios/YrXtals.xcodeproj via xcodegen");
|
eprintln!(" xcodeproj-ios generate ios/YrXtals.xcodeproj via xcodegen");
|
||||||
eprintln!(" release-ios build an App Store-signed .ipa for Transporter");
|
eprintln!(" release-ios build an App Store-signed .ipa for Transporter");
|
||||||
|
eprintln!(" clean wipe build/, target/, /tmp/yr_crystals-target");
|
||||||
|
eprintln!(" clean-ios wipe iOS build dirs + generated assets (--cargo also runs cargo clean)");
|
||||||
|
eprintln!(" clean-android wipe android build dirs + generated assets (--cargo also runs cargo clean)");
|
||||||
eprintln!();
|
eprintln!();
|
||||||
eprintln!("append -macos / -windows / -linux / -ios / -android to force a platform.");
|
eprintln!("append -macos / -windows / -linux / -ios / -android to force a platform.");
|
||||||
eprintln!("trailing args pass through to the script — iOS scripts take [sim|device].");
|
eprintln!("trailing args pass through to the script — iOS scripts take [sim|device].");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue