|
11 | 11 | # Set the mode based on the first argument
|
12 | 12 | mode=$1
|
13 | 13 |
|
14 |
| -DARWIN_PATH="$(dirname "$0")/../node_modules/@expo/swiftlint/bin/darwin-arm64/swiftlint" |
15 |
| -LINUX_PATH="$(dirname "$0")/../node_modules/@expo/swiftlint/bin/linux-x64/swiftlint" |
| 14 | +SWIFT_PATH=$(which swift 2>/dev/null || true) |
| 15 | + |
| 16 | +if [ -z "$SWIFT_PATH" ]; then |
| 17 | + echo "SwiftLint requires swift, which is not installed or not found in PATH" |
| 18 | + echo "To install Swift:" |
| 19 | + echo " * ubuntu: follow steps here: https://www.swift.org/install/" |
| 20 | + echo " * arch: yay -S swift-bin" |
| 21 | + exit 1 |
| 22 | +fi |
| 23 | + |
| 24 | +LINUX_BIN="https://github.com/realm/SwiftLint/releases/download/0.61.0/swiftlint_linux_amd64.zip" |
| 25 | +LINUX_SHA="sha256:02f4f580bbb27fb618dbfa24ce2f14c926461c85c26941289f58340151b63ae4" |
| 26 | +DARWIN_BIN="https://github.com/realm/SwiftLint/releases/download/0.61.0/portable_swiftlint.zip" |
| 27 | +DARWIN_SHA="sha256:2342f3784307a02117e18f745fcd350c6acc6cab0e521c0c0e01c32a53a3b274" |
16 | 28 |
|
17 | 29 | if [[ "$OSTYPE" == "darwin"* ]]; then
|
18 |
| - CMD="$DARWIN_PATH" |
| 30 | + EXPECTED_SHA="$DARWIN_SHA" |
| 31 | + EXPECTED_BIN="$DARWIN_BIN" |
19 | 32 | else
|
20 |
| - CMD="$LINUX_PATH" |
| 33 | + EXPECTED_SHA="$LINUX_SHA" |
| 34 | + EXPECTED_BIN="$LINUX_BIN" |
21 | 35 | fi
|
22 | 36 |
|
| 37 | +# Make ../swiftlint folder if it doesn't exist |
| 38 | +SWIFTLINT_DIR="$(dirname "$0")/../swiftlint" |
| 39 | +mkdir -p "$SWIFTLINT_DIR" |
| 40 | + |
| 41 | +# Skip download if sha256sum swiftlint.sha matches EXPECTED_SHA |
| 42 | +SHA_FILE="$SWIFTLINT_DIR/swiftlint.sha" |
| 43 | +if [ -f "$SHA_FILE" ] && [ "$(cat "$SHA_FILE")" = "$EXPECTED_SHA" ]; then |
| 44 | + echo "SwiftLint already downloaded and verified." |
| 45 | +else |
| 46 | + echo "Clearing swiftlint folder..." |
| 47 | + rm -rf "$SWIFTLINT_DIR"/* |
| 48 | + |
| 49 | + echo "Downloading SwiftLint..." |
| 50 | + curl -L "$EXPECTED_BIN" -o "$SWIFTLINT_DIR/swiftlint.zip" |
| 51 | + unzip "$SWIFTLINT_DIR/swiftlint.zip" -d "$SWIFTLINT_DIR" |
| 52 | + # Save sha256sum of swiftlint.zip to ../swiftlint/swiftlint.sha |
| 53 | + echo "$EXPECTED_SHA" > "$SHA_FILE" |
| 54 | + # Remove swiftlint.zip |
| 55 | + rm "$SWIFTLINT_DIR/swiftlint.zip" |
| 56 | +fi |
| 57 | + |
| 58 | +if [ ! -f "$SHA_FILE" ] || [ "$(cat "$SHA_FILE")" != "$EXPECTED_SHA" ]; then |
| 59 | + echo "Invalid SwiftLint, sha doesn't match the expected download." |
| 60 | + exit 1 |
| 61 | +fi |
| 62 | + |
| 63 | +CMD="$(dirname "$0")/../swiftlint/swiftlint" |
| 64 | + |
23 | 65 | if [ "$mode" = "fix" ]; then
|
24 | 66 | $CMD --fix
|
25 | 67 | elif [ "$mode" = "lint" ]; then
|
|
0 commit comments