@@ -48,12 +48,60 @@ jobs:
4848 echo "Flutter is already up to date"
4949 fi
5050
51+ - name : Check for dependency updates
52+ id : check-deps
53+ run : |
54+ echo "Checking for dependency updates..."
55+
56+ # Check dio version
57+ DIO_CURRENT=$(grep "dio:" pubspec.yaml | sed 's/.*: \^//')
58+ echo "Current dio version: $DIO_CURRENT"
59+ DIO_LATEST=$(curl -s https://pub.dev/api/packages/dio | jq -r '.latest.version')
60+ echo "Latest dio version: $DIO_LATEST"
61+
62+ # Check http version
63+ HTTP_CURRENT=$(grep "http:" pubspec.yaml | sed 's/.*: \^//')
64+ echo "Current http version: $HTTP_CURRENT"
65+ HTTP_LATEST=$(curl -s https://pub.dev/api/packages/http | jq -r '.latest.version')
66+ echo "Latest http version: $HTTP_LATEST"
67+
68+ # Set outputs
69+ echo "dio_current=$DIO_CURRENT" >> $GITHUB_OUTPUT
70+ echo "dio_latest=$DIO_LATEST" >> $GITHUB_OUTPUT
71+ echo "http_current=$HTTP_CURRENT" >> $GITHUB_OUTPUT
72+ echo "http_latest=$HTTP_LATEST" >> $GITHUB_OUTPUT
73+
74+ # Check if dependency updates are available
75+ DEPS_AVAILABLE=false
76+ if [ "$DIO_CURRENT" != "$DIO_LATEST" ]; then
77+ echo "Dio update available: $DIO_CURRENT -> $DIO_LATEST"
78+ DEPS_AVAILABLE=true
79+ fi
80+ if [ "$HTTP_CURRENT" != "$HTTP_LATEST" ]; then
81+ echo "HTTP update available: $HTTP_CURRENT -> $HTTP_LATEST"
82+ DEPS_AVAILABLE=true
83+ fi
84+
85+ echo "deps_available=$DEPS_AVAILABLE" >> $GITHUB_OUTPUT
86+
87+ if [ "$DEPS_AVAILABLE" = "true" ]; then
88+ echo "Dependency updates are available"
89+ else
90+ echo "All dependencies are up to date"
91+ fi
92+
5193 - name : Create upgrade branch
52- if : steps.check-upgrade.outputs.upgrade_available == 'true'
94+ if : steps.check-upgrade.outputs.upgrade_available == 'true' || steps.check-deps.outputs.deps_available == 'true'
5395 run : |
5496 git config --local user.email "action@github.com"
5597 git config --local user.name "GitHub Action"
56- BRANCH_NAME="flutter/auto-upgrade-${{ steps.check-upgrade.outputs.latest }}"
98+
99+ if [ "${{ steps.check-upgrade.outputs.upgrade_available }}" == "true" ]; then
100+ BRANCH_NAME="flutter/auto-upgrade-${{ steps.check-upgrade.outputs.latest }}"
101+ else
102+ BRANCH_NAME="deps/auto-update-$(date +%Y%m%d)"
103+ fi
104+
57105 git checkout -b "$BRANCH_NAME"
58106 echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_ENV
59107
@@ -74,8 +122,28 @@ jobs:
74122 # Note: This is a basic approach - you might need more sophisticated version handling
75123 fi
76124
125+ - name : Update dependencies
126+ if : steps.check-deps.outputs.deps_available == 'true'
127+ run : |
128+ echo "Updating dependencies..."
129+
130+ # Update dio if newer version available
131+ if [ "${{ steps.check-deps.outputs.dio_current }}" != "${{ steps.check-deps.outputs.dio_latest }}" ]; then
132+ echo "Updating dio from ${{ steps.check-deps.outputs.dio_current }} to ${{ steps.check-deps.outputs.dio_latest }}"
133+ sed -i.bak "s/dio: \^${{ steps.check-deps.outputs.dio_current }}/dio: ^${{ steps.check-deps.outputs.dio_latest }}/" pubspec.yaml
134+ fi
135+
136+ # Update http if newer version available
137+ if [ "${{ steps.check-deps.outputs.http_current }}" != "${{ steps.check-deps.outputs.http_latest }}" ]; then
138+ echo "Updating http from ${{ steps.check-deps.outputs.http_current }} to ${{ steps.check-deps.outputs.http_latest }}"
139+ sed -i.bak "s/http: \^${{ steps.check-deps.outputs.http_current }}/http: ^${{ steps.check-deps.outputs.http_latest }}/" pubspec.yaml
140+ fi
141+
142+ # Clean up backup files
143+ rm -f pubspec.yaml.bak
144+
77145 - name : Apply automatic fixes
78- if : steps.check-upgrade.outputs.upgrade_available == 'true'
146+ if : steps.check-upgrade.outputs.upgrade_available == 'true' || steps.check-deps.outputs.deps_available == 'true'
79147 run : |
80148 echo "Applying automatic Dart fixes for deprecations and lint issues..."
81149
88156 dart fix --apply || echo "No fixes applied or apply failed"
89157
90158 - name : Install dependencies and test
91- if : steps.check-upgrade.outputs.upgrade_available == 'true'
159+ if : steps.check-upgrade.outputs.upgrade_available == 'true' || steps.check-deps.outputs.deps_available == 'true'
92160 run : |
93161 flutter pub get
94162
@@ -103,7 +171,7 @@ jobs:
103171 flutter test || echo "Tests failed - upgrade may need manual review"
104172
105173 - name : Check for changes
106- if : steps.check-upgrade.outputs.upgrade_available == 'true'
174+ if : steps.check-upgrade.outputs.upgrade_available == 'true' || steps.check-deps.outputs.deps_available == 'true'
107175 id : check-changes
108176 run : |
109177 git add .
@@ -116,33 +184,33 @@ jobs:
116184 fi
117185
118186 - name : Commit changes
119- if : steps.check-upgrade.outputs.upgrade_available == 'true' && steps.check-changes.outputs.has_changes == 'true'
187+ if : steps.check-upgrade.outputs.upgrade_available == 'true' && steps.check-changes.outputs.has_changes == 'true' || steps.check-deps.outputs.deps_available == 'true' && steps.check-changes.outputs.has_changes == 'true'
120188 run : |
121- git commit -m "chore: upgrade Flutter to ${{ steps.check-upgrade.outputs.latest }}
189+ git commit -m "chore: upgrade Flutter to ${{ steps.check-upgrade.outputs.latest }} and dependencies"
122190
123191 - Automated Flutter upgrade from ${{ steps.current-version.outputs.current }} to ${{ steps.check-upgrade.outputs.latest }}
124192 - Updated dependencies with flutter pub get
125193 - Verified with flutter analyze and flutter test"
126194
127195 - name : Push changes
128- if : steps.check-upgrade.outputs.upgrade_available == 'true' && steps.check-changes.outputs.has_changes == 'true'
196+ if : steps.check-upgrade.outputs.upgrade_available == 'true' && steps.check-changes.outputs.has_changes == 'true' || steps.check-deps.outputs.deps_available == 'true' && steps.check-changes.outputs.has_changes == 'true'
129197 run : |
130198 git push origin "$BRANCH_NAME"
131199
132200 - name : Create Pull Request
133- if : steps.check-upgrade.outputs.upgrade_available == 'true' && steps.check-changes.outputs.has_changes == 'true'
201+ if : steps.check-upgrade.outputs.upgrade_available == 'true' && steps.check-changes.outputs.has_changes == 'true' || steps.check-deps.outputs.deps_available == 'true' && steps.check-changes.outputs.has_changes == 'true'
134202 uses : actions/github-script@v7
135203 with :
136204 script : |
137205 const { data: pullRequest } = await github.rest.pulls.create({
138206 owner: context.repo.owner,
139207 repo: context.repo.repo,
140- title: 'chore: upgrade Flutter to ' + ${{ steps.check-upgrade.outputs.latest }},
208+ title: 'chore: upgrade Flutter to ' + ${{ steps.check-upgrade.outputs.latest }} + ' and dependencies' ,
141209 head: process.env.BRANCH_NAME,
142210 base: 'master', // Change to 'main' if that's your default branch
143211 body: '## Flutter Auto Upgrade
144212
145- This PR was automatically created to upgrade Flutter from **' + ${{ steps.current-version.outputs.current }} + '** to **' + ${{ steps.check-upgrade.outputs.latest }} + '**.
213+ This PR was automatically created to upgrade Flutter from **' + ${{ steps.current-version.outputs.current }} + '** to **' + ${{ steps.check-upgrade.outputs.latest }} + '** and update dependencies .
146214
147215 ### Changes Made:
148216 - Upgraded Flutter to the latest stable version
@@ -168,7 +236,7 @@ jobs:
168236 console.log('Created PR #' + pullRequest.number);
169237
170238 - name : Add labels to PR
171- if : steps.check-upgrade.outputs.upgrade_available == 'true' && steps.check-changes.outputs.has_changes == 'true'
239+ if : steps.check-upgrade.outputs.upgrade_available == 'true' && steps.check-changes.outputs.has_changes == 'true' || steps.check-deps.outputs.deps_available == 'true' && steps.check-changes.outputs.has_changes == 'true'
172240 uses : actions/github-script@v7
173241 with :
174242 script : |
@@ -199,6 +267,12 @@ jobs:
199267 else
200268 echo "Flutter upgrade available, but no changes detected"
201269 fi
270+ elif [ "${{ steps.check-deps.outputs.deps_available }}" == "true" ]; then
271+ if [ "${{ steps.check-changes.outputs.has_changes }}" == "true" ]; then
272+ echo "Dependency updates available, changes detected, and PR created!"
273+ else
274+ echo "Dependency updates available, but no changes detected"
275+ fi
202276 else
203277 echo "Flutter is already up to date (${{ steps.current-version.outputs.current }})"
204278 fi
0 commit comments