@@ -8,13 +8,24 @@ FLUTTER_CHANNEL=${2:-"stable"}
8
8
FLUTTER_OS=$OS
9
9
10
10
# Flutter SDK release manifest
11
- FLUTTER_RELEASE_URL=" https://storage.googleapis.com/flutter_infra_release/releases"
12
11
FLUTTER_RELEASE_MANIFEST_URL=" https://storage.googleapis.com/flutter_infra_release/releases/releases_$FLUTTER_OS .json"
13
- FLUTTER_RELEASE_MANIFEST_FILE=" ${RUNNER_TEMP} /flutter_release.json"
12
+ FLUTTER_RELEASE_MANIFEST_FILE=" ${RUNNER_TEMP} /releases_$FLUTTER_OS .json"
13
+ FLUTTER_RELEASE_BASE_URL=" https://storage.googleapis.com/flutter_infra_release/releases"
14
+
15
+ # Check if Flutter SDK release manifest exists
16
+ # Otherwise fetch and cache it
17
+ if [ ! -f " $FLUTTER_RELEASE_MANIFEST_FILE " ]; then
18
+ echo " Fetching Flutter SDK release manifest..."
19
+ curl -fsSL " $FLUTTER_RELEASE_MANIFEST_URL " -o " $FLUTTER_RELEASE_MANIFEST_FILE "
20
+ if [ $? -ne 0 ]; then
21
+ echo -e " ::warning::Failed to fetch Flutter SDK release manifest."
22
+ fi
23
+ elif [ -f " $FLUTTER_RELEASE_MANIFEST_FILE " ]; then
24
+ echo " Using cached Flutter SDK release manifest."
25
+
26
+ # Obtain the base URL and override FLUTTER_RELEASE_BASE_URL
27
+ FLUTTER_RELEASE_BASE_URL=$( jq -r " .base_url" " $FLUTTER_RELEASE_MANIFEST_FILE " )
14
28
15
- echo " Fetching Flutter SDK release manifest..."
16
- if curl -fsSL " $FLUTTER_RELEASE_MANIFEST_URL " -o " $FLUTTER_RELEASE_MANIFEST_FILE " ;
17
- then
18
29
# Detect the latest version
19
30
if [[ $FLUTTER_VERSION == " latest" ]]
20
31
then
25
36
26
37
# Set the detected version
27
38
FLUTTER_VERSION=$FLUTTER_RELEASE_VERSION
28
- FLUTTER_DOWNLOAD_URL=" ${FLUTTER_RELEASE_URL } /${FLUTTER_RELEASE_ARCHIVE} "
39
+ FLUTTER_DOWNLOAD_URL=" ${FLUTTER_RELEASE_BASE_URL } /${FLUTTER_RELEASE_ARCHIVE} "
29
40
else
30
41
FLUTTER_RELEASE_SHA256=$( jq -r " .releases | map(select(.version == \" ${FLUTTER_VERSION} \" )) | .[0].sha256" " $FLUTTER_RELEASE_MANIFEST_FILE " )
31
42
FLUTTER_RELEASE_ARCHIVE=$( jq -r " .releases | map(select(.version == \" ${FLUTTER_VERSION} \" )) | .[0].archive" " $FLUTTER_RELEASE_MANIFEST_FILE " )
32
43
33
44
# Set the detected version
34
- FLUTTER_DOWNLOAD_URL=" ${FLUTTER_RELEASE_URL } /${FLUTTER_RELEASE_ARCHIVE} "
45
+ FLUTTER_DOWNLOAD_URL=" ${FLUTTER_RELEASE_BASE_URL } /${FLUTTER_RELEASE_ARCHIVE} "
35
46
fi
36
47
else
37
- echo -e " ::warning::Failed to fetch Flutter SDK release manifest. Switched to using default fallback download strategy."
48
+ echo -e " ::warning::Switched to using default fallback download strategy."
38
49
fi
39
50
40
51
# Apple Intel or Apple Silicon
@@ -86,7 +97,7 @@ if [ ! -d "${FLUTTER_RUNNER_TOOL_CACHE}" ]; then
86
97
fi
87
98
88
99
FLUTTER_BUILD=" flutter_${FLUTTER_BUILD_OS} _${FLUTTER_VERSION} -${FLUTTER_CHANNEL} .${EXT} "
89
- FLUTTER_DOWNLOAD_URL=${FLUTTER_DOWNLOAD_URL:- " ${FLUTTER_RELEASE_URL } /${FLUTTER_CHANNEL} /${FLUTTER_OS} /${FLUTTER_BUILD} " }
100
+ FLUTTER_DOWNLOAD_URL=${FLUTTER_DOWNLOAD_URL:- " ${FLUTTER_RELEASE_BASE_URL } /${FLUTTER_CHANNEL} /${FLUTTER_OS} /${FLUTTER_BUILD} " }
90
101
91
102
# Download installation archive
92
103
echo " Downloading ${FLUTTER_DOWNLOAD_URL} "
0 commit comments