|
1 | 1 | #!/bin/bash
|
2 | 2 |
|
3 |
| -# Parse SDK and version args |
4 |
| -CHANNEL="${1:-stable}" |
5 |
| -VERSION="${3:-2.0.2}" |
| 3 | +# Options |
| 4 | +ARCH=$(echo "${RUNNER_ARCH:-x64}" | awk '{print tolower($0)}') |
| 5 | +OS=$(echo "${RUNNER_OS:-macOS}" | awk '{print tolower($0)}') |
6 | 6 |
|
7 |
| -# Parse OS Environment |
8 |
| -OS="${2:-Linux}" |
9 |
| -OS=$(echo "$OS" | awk '{print tolower($0)}') |
| 7 | +# Args |
| 8 | +FLUTTER_VERSION=${1:-3.0.2} |
| 9 | +FLUTTER_CHANNEL=${2:-stable} |
| 10 | +FLUTTER_OS=$OS |
| 11 | +FLUTTER_ARCH="" |
10 | 12 |
|
11 | 13 | # OS archive file extension
|
12 | 14 | EXT="zip"
|
13 | 15 | if [[ $OS == linux ]]
|
14 | 16 | then
|
15 |
| - EXT="tar.xz" |
| 17 | + EXT="tar.xz" |
| 18 | +fi |
| 19 | + |
| 20 | +# Apple Intel or Apple Silicon |
| 21 | +if [[ $OS == macos ]] |
| 22 | +then |
| 23 | + if [[ $ARCH == 'arm64' ]] |
| 24 | + then |
| 25 | + FLUTTER_ARCH="_$ARCH" |
| 26 | + fi |
16 | 27 | fi
|
17 | 28 |
|
18 | 29 | # Flutter runner tool cache
|
19 |
| -FLUTTER_RUNNER_TOOL_CACHE="${RUNNER_TOOL_CACHE}/${VERSION}-${CHANNEL}" |
| 30 | +# path: "${{ runner.tool_cache }}/flutter-${{ runner.os }}-${{ inputs.version }}-${{ runner.arch }}" |
| 31 | +# key: flutter-action-setup-flutter-${{ runner.os }}-${{ inputs.version }}-${{ runner.arch }} |
| 32 | +FLUTTER_RUNNER_TOOL_CACHE="${RUNNER_TOOL_CACHE}/flutter-${RUNNER_OS}-${FLUTTER_VERSION}-${RUNNER_ARCH}" |
20 | 33 |
|
21 | 34 | # Check if Flutter SDK already exists
|
22 | 35 | # Otherwise download and install
|
| 36 | +# https://storage.googleapis.com/flutter_infra_release/releases/stable/macos/flutter_macos_arm64_3.0.2-stable.zip |
| 37 | +FLUTTER_RELEASE_URL="https://storage.googleapis.com/flutter_infra_release/releases" |
| 38 | + |
| 39 | + |
23 | 40 | if [ ! -d "${FLUTTER_RUNNER_TOOL_CACHE}" ]; then
|
24 |
| - echo "Installing Flutter SDK version \"${VERSION}\" from the ${CHANNEL} channel on ${OS}" |
25 |
| - |
26 |
| - # Calculate download Url. Based on: |
27 |
| - # https://flutter.dev/docs/development/tools/sdk/releases |
28 |
| - PREFIX="https://storage.googleapis.com/flutter_infra_release/releases" |
29 |
| - BUILD="flutter_${OS}_${VERSION}-${CHANNEL}.${EXT}" |
30 |
| - |
31 |
| - URL="${PREFIX}/${CHANNEL}/${OS}/${BUILD}" |
32 |
| - echo "Downloading ${URL}..." |
33 |
| - |
34 |
| - # Download installation archive |
35 |
| - curl --connect-timeout 15 --retry 5 "$URL" > "/tmp/${BUILD}" |
36 |
| - |
37 |
| - # Prepare tool cache folder |
38 |
| - mkdir -p "${FLUTTER_RUNNER_TOOL_CACHE}" |
39 |
| - |
40 |
| - # Extracting installation archive |
41 |
| - if [[ $OS == linux ]] |
42 |
| - then |
43 |
| - tar -C "${FLUTTER_RUNNER_TOOL_CACHE}" -xf "/tmp/${BUILD}" > /dev/null |
44 |
| - else |
45 |
| - unzip "/tmp/${BUILD}" -d "${FLUTTER_RUNNER_TOOL_CACHE}" > /dev/null |
46 |
| - fi |
47 |
| - |
48 |
| - if [ $? -ne 0 ]; then |
49 |
| - echo -e "::error::Download failed! Please check passed arguments." |
50 |
| - exit 1 |
51 |
| - fi |
| 41 | + echo "Installing Flutter SDK version \"${FLUTTER_VERSION}\" from the ${FLUTTER_CHANNEL} channel on ${FLUTTER_OS}" |
| 42 | + |
| 43 | + # Linux |
| 44 | + # /stable /linux/ flutter_linux_2.10.2-stable.tar.xz |
| 45 | + # /beta /linux/ flutter_linux_3.1.0-9.0.pre-beta.tar.xz |
| 46 | + |
| 47 | + # macOS |
| 48 | + # /stable /macos/ flutter_macos_3.0.2-stable.zip |
| 49 | + # /stable /macos/ flutter_macos_arm64_3.0.2-stable.zip |
| 50 | + # /beta /macos/ flutter_macos_arm64_3.1.0-9.0.pre-beta.zip |
| 51 | + # /beta /macos/ flutter_macos_3.1.0-9.0.pre-beta.zip |
| 52 | + |
| 53 | + # Windows |
| 54 | + # /stable /windows/ flutter_windows_3.0.2-stable.zip |
| 55 | + # /beta /windows/ flutter_windows_3.1.0-9.0.pre-beta.zip |
| 56 | + FLUTTER_BUILD="flutter_${FLUTTER_OS}${FLUTTER_ARCH}_${FLUTTER_VERSION}-${FLUTTER_CHANNEL}.${EXT}" |
| 57 | + FLUTTER_DOWNLOAD_URL="${FLUTTER_RELEASE_URL}/${FLUTTER_CHANNEL}/${FLUTTER_OS}/${FLUTTER_BUILD}" |
| 58 | + |
| 59 | + echo "Downloading ${FLUTTER_DOWNLOAD_URL}" |
| 60 | + |
| 61 | + # Download installation archive |
| 62 | + DOWNLOAD_PATH="/tmp/${FLUTTER_BUILD}" |
| 63 | + curl --connect-timeout 15 --retry 5 "$FLUTTER_DOWNLOAD_URL" > ${DOWNLOAD_PATH} |
| 64 | + |
| 65 | + # Prepare tool cache folder |
| 66 | + mkdir -p "${FLUTTER_RUNNER_TOOL_CACHE}" |
| 67 | + |
| 68 | + # Extracting installation archive |
| 69 | + if [[ $OS == linux ]] |
| 70 | + then |
| 71 | + tar -C "${FLUTTER_RUNNER_TOOL_CACHE}" -xf ${DOWNLOAD_PATH} > /dev/null |
| 72 | + else |
| 73 | + unzip ${DOWNLOAD_PATH} -d "${FLUTTER_RUNNER_TOOL_CACHE}" > /dev/null |
| 74 | + fi |
| 75 | + |
| 76 | + if [ $? -ne 0 ]; then |
| 77 | + echo -e "::error::Download failed! Please check passed arguments." |
| 78 | + exit 1 |
| 79 | + fi |
| 80 | +else |
| 81 | + echo "Cache restored Flutter SDK version \"${FLUTTER_VERSION}\" from the ${FLUTTER_CHANNEL} channel on ${FLUTTER_OS}" |
52 | 82 | fi
|
53 | 83 |
|
54 | 84 | # Configure pub to use a fixed location.
|
|
0 commit comments