Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Split longer lines in action.yaml #288

Merged
merged 2 commits into from Mar 31, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/workflow.yaml
Expand Up @@ -69,7 +69,7 @@ jobs:
- uses: ./
with:
channel: stable
flutter-version: "3.10.6"
flutter-version: 3.10.6
cache: true
- run: dart --version
shell: bash
Expand Down
2 changes: 1 addition & 1 deletion README.md
Expand Up @@ -57,7 +57,7 @@ steps:
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: "3.x"
flutter-version: 3.x
channel: any
- run: flutter --version
```
Expand Down
31 changes: 26 additions & 5 deletions action.yaml
Expand Up @@ -4,6 +4,7 @@ author: Alif Rachmawadi
branding:
icon: maximize
color: blue

inputs:
flutter-version:
description: The Flutter version to make available on the path
Expand Down Expand Up @@ -37,6 +38,7 @@ inputs:
description: The architecture of Flutter SDK executable (x64 or arm64)
required: false
default: "${{ runner.arch }}"

outputs:
CACHE-KEY:
value: "${{ steps.flutter-action.outputs.CACHE-KEY }}"
Expand All @@ -59,32 +61,51 @@ outputs:
PUB-CACHE-PATH:
value: "${{ steps.flutter-action.outputs.PUB-CACHE-PATH }}"
description: Path to pub cache

runs:
using: composite
steps:
- name: Make setup script executable
run: chmod +x "$GITHUB_ACTION_PATH/setup.sh"
shell: bash
- name: Print configuration

- name: Set action inputs
id: flutter-action
run: $GITHUB_ACTION_PATH/setup.sh -p -c '${{ inputs.cache-path }}' -k '${{ inputs.cache-key }}' -d '${{ inputs.pub-cache-path }}' -l '${{ inputs.pub-cache-key }}' -n '${{ inputs.flutter-version }}' -a '${{ inputs.architecture }}' ${{ inputs.channel }}
shell: bash
run: |
$GITHUB_ACTION_PATH/setup.sh -p \
-c '${{ inputs.cache-path }}' \
-k '${{ inputs.cache-key }}' \
-d '${{ inputs.pub-cache-path }}' \
-l '${{ inputs.pub-cache-key }}' \
-n '${{ inputs.flutter-version }}' \
-a '${{ inputs.architecture }}' \
${{ inputs.channel }}

- name: Cache Flutter
if: ${{ inputs.cache == 'true' }}
uses: actions/cache@v4
if: ${{ inputs.cache == 'true' }}
with:
path: ${{ steps.flutter-action.outputs.CACHE-PATH }}
key: ${{ steps.flutter-action.outputs.CACHE-KEY }}
restore-keys: |
${{ steps.flutter-action.outputs.CACHE-KEY }}

- name: Cache pub dependencies
if: ${{ inputs.cache == 'true' }}
uses: actions/cache@v4
if: ${{ inputs.cache == 'true' }}
with:
path: ${{ steps.flutter-action.outputs.PUB-CACHE-PATH }}
key: ${{ steps.flutter-action.outputs.PUB-CACHE-KEY }}-${{ hashFiles('**/pubspec.lock') }}
restore-keys: |
${{ steps.flutter-action.outputs.PUB-CACHE-KEY }}-${{ hashFiles('**/pubspec.lock') }}
${{ steps.flutter-action.outputs.PUB-CACHE-KEY }}
- run: $GITHUB_ACTION_PATH/setup.sh -c '${{ steps.flutter-action.outputs.CACHE-PATH }}' -n '${{ steps.flutter-action.outputs.VERSION }}' -a '${{ steps.flutter-action.outputs.ARCHITECTURE }}' ${{ steps.flutter-action.outputs.CHANNEL }}

- name: Run setup script
shell: bash
run: |
$GITHUB_ACTION_PATH/setup.sh \
-c '${{ steps.flutter-action.outputs.CACHE-PATH }}' \
-n '${{ steps.flutter-action.outputs.VERSION }}' \
-a '${{ steps.flutter-action.outputs.ARCHITECTURE }}' \
${{ steps.flutter-action.outputs.CHANNEL }}
49 changes: 27 additions & 22 deletions setup.sh
Expand Up @@ -32,7 +32,7 @@ not_found_error() {
}

transform_path() {
if [[ "$OS_NAME" == windows ]]; then
if [ "$OS_NAME" = windows ]; then
echo "$1" | sed -e 's/^\///' -e 's/\//\\/g'
else
echo "$1"
Expand All @@ -48,7 +48,8 @@ download_archive() {

mkdir -p "$2"

if [[ "$archive_name" == *zip ]]; then
case "$archive_name" in
*.zip)
EXTRACT_PATH="$RUNNER_TEMP/_unzip_temp"
unzip -q -o "$archive_local" -d "$EXTRACT_PATH"
# Remove the folder again so that the move command can do a simple rename
Expand All @@ -58,9 +59,11 @@ download_archive() {
rm -r "$2"
mv "$EXTRACT_PATH"/flutter "$2"
rm -r "$EXTRACT_PATH"
else
;;
*)
tar xf "$archive_local" -C "$2" --strip-components=1
fi
;;
esac

rm "$archive_local"
}
Expand Down Expand Up @@ -88,18 +91,18 @@ while getopts 'tc:k:d:l:pa:n:' flag; do
esac
done

[[ -z $ARCH ]] && ARCH="$ARCH_NAME"
[ -z "$ARCH" ] && ARCH="$ARCH_NAME"

ARR_CHANNEL=("${@:$OPTIND:1}")
CHANNEL="${ARR_CHANNEL[0]}"

[[ -z $CHANNEL ]] && CHANNEL=stable
[[ -z $VERSION ]] && VERSION=any
[[ -z $ARCH ]] && ARCH=x64
[[ -z $CACHE_PATH ]] && CACHE_PATH="$RUNNER_TEMP/flutter/:channel:-:version:-:arch:"
[[ -z $CACHE_KEY ]] && CACHE_KEY="flutter-:os:-:channel:-:version:-:arch:-:hash:"
[[ -z $PUB_CACHE_KEY ]] && PUB_CACHE_KEY="flutter-pub-:os:-:channel:-:version:-:arch:-:hash:"
[[ -z $PUB_CACHE_PATH ]] && PUB_CACHE_PATH="default"
[ -z "$CHANNEL" ] && CHANNEL=stable
[ -z "$VERSION" ] && VERSION=any
[ -z "$ARCH" ] && ARCH=x64
[ -z "$CACHE_PATH" ] && CACHE_PATH="$RUNNER_TEMP/flutter/:channel:-:version:-:arch:"
[ -z "$CACHE_KEY" ] && CACHE_KEY="flutter-:os:-:channel:-:version:-:arch:-:hash:"
[ -z "$PUB_CACHE_KEY" ] && PUB_CACHE_KEY="flutter-pub-:os:-:channel:-:version:-:arch:-:hash:"
[ -z "$PUB_CACHE_PATH" ] && PUB_CACHE_PATH="default"

# `PUB_CACHE` is what Dart and Flutter looks for in the environment, while
# `PUB_CACHE_PATH` is passed in from the action.
Expand All @@ -110,29 +113,31 @@ CHANNEL="${ARR_CHANNEL[0]}"
if [ -z "$PUB_CACHE" ]; then
if [ "$PUB_CACHE_PATH" != "default" ]; then
PUB_CACHE="$PUB_CACHE_PATH"
elif [ "$OS_NAME" == "windows" ]; then
elif [ "$OS_NAME" = "windows" ]; then
PUB_CACHE="$LOCALAPPDATA\\Pub\\Cache"
else
PUB_CACHE="$HOME/.pub-cache"
fi
fi

if [[ "$TEST_MODE" == true ]]; then
if [ "$TEST_MODE" = true ]; then
RELEASE_MANIFEST=$(cat "$(dirname -- "${BASH_SOURCE[0]}")/test/$MANIFEST_JSON_PATH")
else
RELEASE_MANIFEST=$(curl --silent --connect-timeout 15 --retry 5 "$MANIFEST_URL")
fi

if [[ "$CHANNEL" == "master" || "$CHANNEL" == "main" ]]; then
if [ "$CHANNEL" = "master" ] || [ "$CHANNEL" = "main" ]; then
VERSION_MANIFEST="{\"channel\":\"$CHANNEL\",\"version\":\"$VERSION\",\"dart_sdk_arch\":\"$ARCH\",\"hash\":\"$CHANNEL\",\"sha256\":\"$CHANNEL\"}"
else
VERSION_MANIFEST=$(echo "$RELEASE_MANIFEST" | filter_by_channel "$CHANNEL" | filter_by_arch "$ARCH" | filter_by_version "$VERSION")
fi

if [[ "$VERSION_MANIFEST" == *null* ]]; then
case "$VERSION_MANIFEST" in
*null*)
not_found_error "$CHANNEL" "$VERSION" "$ARCH"
exit 1
fi
;;
esac

expand_key() {
version_channel=$(echo "$VERSION_MANIFEST" | jq -r '.channel')
Expand All @@ -155,14 +160,14 @@ CACHE_KEY=$(expand_key "$CACHE_KEY")
PUB_CACHE_KEY=$(expand_key "$PUB_CACHE_KEY")
CACHE_PATH=$(expand_key "$(transform_path "$CACHE_PATH")")

if [[ "$PRINT_ONLY" == true ]]; then
if [ "$PRINT_ONLY" = true ]; then
version_info=$(echo "$VERSION_MANIFEST" | jq -j '.channel,":",.version,":",.dart_sdk_arch // "x64"')

info_channel=$(echo "$version_info" | awk -F ':' '{print $1}')
info_version=$(echo "$version_info" | awk -F ':' '{print $2}')
info_architecture=$(echo "$version_info" | awk -F ':' '{print $3}')

if [[ "$TEST_MODE" == true ]]; then
if [ "$TEST_MODE" = true ]; then
echo "CHANNEL=$info_channel"
echo "VERSION=$info_version"
echo "ARCHITECTURE=$info_architecture"
Expand All @@ -186,10 +191,10 @@ if [[ "$PRINT_ONLY" == true ]]; then
exit 0
fi

if [[ ! -x "$CACHE_PATH/bin/flutter" ]]; then
if [[ "$CHANNEL" == "master" || "$CHANNEL" == "main" ]]; then
if [ ! -x "$CACHE_PATH/bin/flutter" ]; then
if [ "$CHANNEL" = "master" ] || [ "$CHANNEL" = "main" ]; then
git clone -b "$CHANNEL" https://github.com/flutter/flutter.git "$CACHE_PATH"
if [[ "$VERSION" != "any" ]]; then
if [ "$VERSION" != "any" ]; then
git config --global --add safe.directory "$CACHE_PATH"
(cd "$CACHE_PATH" && git checkout "$VERSION")
fi
Expand Down