ann-flutter-flavor 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/Gemfile +3 -0
  4. data/Gemfile.lock +271 -0
  5. data/README.md +283 -0
  6. data/Rakefile +6 -0
  7. data/ann-flutter-flavor.gemspec +25 -0
  8. data/lib/ann-flutter-flavor.rb +10 -0
  9. data/lib/ann_flutter_flavor/version.rb +3 -0
  10. data/lib/fastlane/plugin/ann_flutter_flavor/actions/ann_compile_build_action.rb +219 -0
  11. data/lib/fastlane/plugin/ann_flutter_flavor/actions/ann_download_from_app_store_action.rb +183 -0
  12. data/lib/fastlane/plugin/ann_flutter_flavor/actions/ann_download_from_play_store_action.rb +168 -0
  13. data/lib/fastlane/plugin/ann_flutter_flavor/actions/ann_emulators_action.rb +180 -0
  14. data/lib/fastlane/plugin/ann_flutter_flavor/actions/ann_run_tests_action.rb +128 -0
  15. data/lib/fastlane/plugin/ann_flutter_flavor/actions/ann_setup_action.rb +137 -0
  16. data/lib/fastlane/plugin/ann_flutter_flavor/actions/ann_upload_to_app_store_action.rb +280 -0
  17. data/lib/fastlane/plugin/ann_flutter_flavor/actions/ann_upload_to_firebase_action.rb +199 -0
  18. data/lib/fastlane/plugin/ann_flutter_flavor/actions/ann_upload_to_play_store_action.rb +248 -0
  19. data/lib/fastlane/plugin/ann_flutter_flavor/helper/lanes_android.rb +120 -0
  20. data/lib/fastlane/plugin/ann_flutter_flavor/helper/lanes_annai.rb +502 -0
  21. data/lib/fastlane/plugin/ann_flutter_flavor/helper/lanes_ios.rb +157 -0
  22. data/lib/fastlane/plugin/ann_flutter_flavor/helper/lanes_setup.rb +161 -0
  23. data/lib/fastlane/plugin/ann_flutter_flavor/helper/podspec_bridge.rb +153 -0
  24. data/lib/fastlane/plugin/ann_flutter_flavor/helper/test_integration.rb +346 -0
  25. data/lib/fastlane/plugin/ann_flutter_flavor/helper/utils_project_config.rb +102 -0
  26. data/lib/fastlane/plugin/ann_flutter_flavor/helper/utils_spec_loader.rb +363 -0
  27. data/lib/fastlane/plugin/ann_flutter_flavor/helper/utils_status.rb +115 -0
  28. data/lib/fastlane/plugin/ann_flutter_flavor.rb +23 -0
  29. data/plugin_manager.sh +140 -0
  30. metadata +113 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 984f73b5f299d07b74007d531c54f535f3d9dd5673c8dfe2c113a83fa04eddbc
4
+ data.tar.gz: 11e4d5d85dc16b3c25bf5843f47ad86c1f71d5501292c92a82081d9a7167fb9b
5
+ SHA512:
6
+ metadata.gz: cc98fcdf4a4c1ea4292c53cc7cc5257128f95299718e4b07b291e984c20014f8e29bfb19734286a0466d6897543aa817bc81c1e4b50b35a5c171ab6cb94b1bda
7
+ data.tar.gz: 8823491564fa0e1f851efa2dc2badeefd07784b518af0ea9514a5d22481c151733865c6b0d4b86c633b428c6a30d70914446afdb66aea2ea730b88871b82410b
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ /pkg/
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,271 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ annai-flutter-flavor (0.1.2)
5
+ fastlane (>= 2.232.2)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ CFPropertyList (3.0.8)
11
+ abbrev (0.1.2)
12
+ addressable (2.8.8)
13
+ public_suffix (>= 2.0.2, < 8.0)
14
+ artifactory (3.0.17)
15
+ atomos (0.1.3)
16
+ aws-eventstream (1.4.0)
17
+ aws-partitions (1.1220.0)
18
+ aws-sdk-core (3.242.0)
19
+ aws-eventstream (~> 1, >= 1.3.0)
20
+ aws-partitions (~> 1, >= 1.992.0)
21
+ aws-sigv4 (~> 1.9)
22
+ base64
23
+ bigdecimal
24
+ jmespath (~> 1, >= 1.6.1)
25
+ logger
26
+ aws-sdk-kms (1.122.0)
27
+ aws-sdk-core (~> 3, >= 3.241.4)
28
+ aws-sigv4 (~> 1.5)
29
+ aws-sdk-s3 (1.213.0)
30
+ aws-sdk-core (~> 3, >= 3.241.4)
31
+ aws-sdk-kms (~> 1)
32
+ aws-sigv4 (~> 1.5)
33
+ aws-sigv4 (1.12.1)
34
+ aws-eventstream (~> 1, >= 1.0.2)
35
+ babosa (1.0.4)
36
+ base64 (0.2.0)
37
+ benchmark (0.5.0)
38
+ bigdecimal (4.0.1)
39
+ claide (1.1.0)
40
+ coderay (1.1.3)
41
+ colored (1.2)
42
+ colored2 (3.1.2)
43
+ commander (4.6.0)
44
+ highline (~> 2.0.0)
45
+ csv (3.3.5)
46
+ declarative (0.0.20)
47
+ diff-lcs (1.6.2)
48
+ digest-crc (0.7.0)
49
+ rake (>= 12.0.0, < 14.0.0)
50
+ domain_name (0.6.20240107)
51
+ dotenv (2.8.1)
52
+ emoji_regex (3.2.3)
53
+ excon (0.112.0)
54
+ faraday (1.10.5)
55
+ faraday-em_http (~> 1.0)
56
+ faraday-em_synchrony (~> 1.0)
57
+ faraday-excon (~> 1.1)
58
+ faraday-httpclient (~> 1.0)
59
+ faraday-multipart (~> 1.0)
60
+ faraday-net_http (~> 1.0)
61
+ faraday-net_http_persistent (~> 1.0)
62
+ faraday-patron (~> 1.0)
63
+ faraday-rack (~> 1.0)
64
+ faraday-retry (~> 1.0)
65
+ ruby2_keywords (>= 0.0.4)
66
+ faraday-cookie_jar (0.0.8)
67
+ faraday (>= 0.8.0)
68
+ http-cookie (>= 1.0.0)
69
+ faraday-em_http (1.0.0)
70
+ faraday-em_synchrony (1.0.1)
71
+ faraday-excon (1.1.0)
72
+ faraday-httpclient (1.0.1)
73
+ faraday-multipart (1.2.0)
74
+ multipart-post (~> 2.0)
75
+ faraday-net_http (1.0.2)
76
+ faraday-net_http_persistent (1.2.0)
77
+ faraday-patron (1.0.0)
78
+ faraday-rack (1.0.0)
79
+ faraday-retry (1.0.3)
80
+ faraday_middleware (1.2.1)
81
+ faraday (~> 1.0)
82
+ fastimage (2.4.0)
83
+ fastlane (2.232.2)
84
+ CFPropertyList (>= 2.3, < 4.0.0)
85
+ abbrev (~> 0.1.2)
86
+ addressable (>= 2.8, < 3.0.0)
87
+ artifactory (~> 3.0)
88
+ aws-sdk-s3 (~> 1.197)
89
+ babosa (>= 1.0.3, < 2.0.0)
90
+ base64 (~> 0.2.0)
91
+ benchmark (>= 0.1.0)
92
+ bundler (>= 1.17.3, < 5.0.0)
93
+ colored (~> 1.2)
94
+ commander (~> 4.6)
95
+ csv (~> 3.3)
96
+ dotenv (>= 2.1.1, < 3.0.0)
97
+ emoji_regex (>= 0.1, < 4.0)
98
+ excon (>= 0.71.0, < 1.0.0)
99
+ faraday (~> 1.0)
100
+ faraday-cookie_jar (~> 0.0.6)
101
+ faraday_middleware (~> 1.0)
102
+ fastimage (>= 2.1.0, < 3.0.0)
103
+ fastlane-sirp (>= 1.0.0)
104
+ gh_inspector (>= 1.1.2, < 2.0.0)
105
+ google-apis-androidpublisher_v3 (~> 0.3)
106
+ google-apis-playcustomapp_v1 (~> 0.1)
107
+ google-cloud-env (>= 1.6.0, <= 2.1.1)
108
+ google-cloud-storage (~> 1.31)
109
+ highline (~> 2.0)
110
+ http-cookie (~> 1.0.5)
111
+ json (< 3.0.0)
112
+ jwt (>= 2.1.0, < 3)
113
+ logger (>= 1.6, < 2.0)
114
+ mini_magick (>= 4.9.4, < 5.0.0)
115
+ multipart-post (>= 2.0.0, < 3.0.0)
116
+ mutex_m (~> 0.3.0)
117
+ naturally (~> 2.2)
118
+ nkf (~> 0.2.0)
119
+ optparse (>= 0.1.1, < 1.0.0)
120
+ ostruct (>= 0.1.0)
121
+ plist (>= 3.1.0, < 4.0.0)
122
+ rubyzip (>= 2.0.0, < 3.0.0)
123
+ security (= 0.1.5)
124
+ simctl (~> 1.6.3)
125
+ terminal-notifier (>= 2.0.0, < 3.0.0)
126
+ terminal-table (~> 3)
127
+ tty-screen (>= 0.6.3, < 1.0.0)
128
+ tty-spinner (>= 0.8.0, < 1.0.0)
129
+ word_wrap (~> 1.0.0)
130
+ xcodeproj (>= 1.13.0, < 2.0.0)
131
+ xcpretty (~> 0.4.1)
132
+ xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
133
+ fastlane-sirp (1.0.0)
134
+ sysrandom (~> 1.0)
135
+ gh_inspector (1.1.3)
136
+ google-apis-androidpublisher_v3 (0.96.0)
137
+ google-apis-core (>= 0.15.0, < 2.a)
138
+ google-apis-core (0.18.0)
139
+ addressable (~> 2.5, >= 2.5.1)
140
+ googleauth (~> 1.9)
141
+ httpclient (>= 2.8.3, < 3.a)
142
+ mini_mime (~> 1.0)
143
+ mutex_m
144
+ representable (~> 3.0)
145
+ retriable (>= 2.0, < 4.a)
146
+ google-apis-iamcredentials_v1 (0.26.0)
147
+ google-apis-core (>= 0.15.0, < 2.a)
148
+ google-apis-playcustomapp_v1 (0.17.0)
149
+ google-apis-core (>= 0.15.0, < 2.a)
150
+ google-apis-storage_v1 (0.61.0)
151
+ google-apis-core (>= 0.15.0, < 2.a)
152
+ google-cloud-core (1.8.0)
153
+ google-cloud-env (>= 1.0, < 3.a)
154
+ google-cloud-errors (~> 1.0)
155
+ google-cloud-env (2.1.1)
156
+ faraday (>= 1.0, < 3.a)
157
+ google-cloud-errors (1.5.0)
158
+ google-cloud-storage (1.58.0)
159
+ addressable (~> 2.8)
160
+ digest-crc (~> 0.4)
161
+ google-apis-core (>= 0.18, < 2)
162
+ google-apis-iamcredentials_v1 (~> 0.18)
163
+ google-apis-storage_v1 (>= 0.42)
164
+ google-cloud-core (~> 1.6)
165
+ googleauth (~> 1.9)
166
+ mini_mime (~> 1.0)
167
+ googleauth (1.11.2)
168
+ faraday (>= 1.0, < 3.a)
169
+ google-cloud-env (~> 2.1)
170
+ jwt (>= 1.4, < 3.0)
171
+ multi_json (~> 1.11)
172
+ os (>= 0.9, < 2.0)
173
+ signet (>= 0.16, < 2.a)
174
+ highline (2.0.3)
175
+ http-cookie (1.0.8)
176
+ domain_name (~> 0.5)
177
+ httpclient (2.9.0)
178
+ mutex_m
179
+ io-console (0.8.2)
180
+ jmespath (1.6.2)
181
+ json (2.18.1)
182
+ jwt (2.10.2)
183
+ base64
184
+ logger (1.7.0)
185
+ method_source (1.1.0)
186
+ mini_magick (4.13.2)
187
+ mini_mime (1.1.5)
188
+ multi_json (1.19.1)
189
+ multipart-post (2.4.1)
190
+ mutex_m (0.3.0)
191
+ nanaimo (0.4.0)
192
+ naturally (2.3.0)
193
+ nkf (0.2.0)
194
+ optparse (0.8.1)
195
+ os (1.1.4)
196
+ ostruct (0.6.3)
197
+ plist (3.7.2)
198
+ pry (0.16.0)
199
+ coderay (~> 1.1)
200
+ method_source (~> 1.0)
201
+ reline (>= 0.6.0)
202
+ public_suffix (7.0.2)
203
+ rake (13.3.1)
204
+ reline (0.6.3)
205
+ io-console (~> 0.5)
206
+ representable (3.2.0)
207
+ declarative (< 0.1.0)
208
+ trailblazer-option (>= 0.1.1, < 0.2.0)
209
+ uber (< 0.2.0)
210
+ retriable (3.2.1)
211
+ rexml (3.4.4)
212
+ rouge (3.28.0)
213
+ rspec (3.4.0)
214
+ rspec-core (~> 3.4.0)
215
+ rspec-expectations (~> 3.4.0)
216
+ rspec-mocks (~> 3.4.0)
217
+ rspec-core (3.4.4)
218
+ rspec-support (~> 3.4.0)
219
+ rspec-expectations (3.4.0)
220
+ diff-lcs (>= 1.2.0, < 2.0)
221
+ rspec-support (~> 3.4.0)
222
+ rspec-mocks (3.4.1)
223
+ diff-lcs (>= 1.2.0, < 2.0)
224
+ rspec-support (~> 3.4.0)
225
+ rspec-support (3.4.1)
226
+ ruby2_keywords (0.0.5)
227
+ rubyzip (2.4.1)
228
+ security (0.1.5)
229
+ signet (0.21.0)
230
+ addressable (~> 2.8)
231
+ faraday (>= 0.17.5, < 3.a)
232
+ jwt (>= 1.5, < 4.0)
233
+ multi_json (~> 1.10)
234
+ simctl (1.6.10)
235
+ CFPropertyList
236
+ naturally
237
+ sysrandom (1.0.5)
238
+ terminal-notifier (2.0.0)
239
+ terminal-table (3.0.2)
240
+ unicode-display_width (>= 1.1.1, < 3)
241
+ trailblazer-option (0.1.2)
242
+ tty-cursor (0.7.1)
243
+ tty-screen (0.8.2)
244
+ tty-spinner (0.9.3)
245
+ tty-cursor (~> 0.7)
246
+ uber (0.1.0)
247
+ unicode-display_width (2.6.0)
248
+ word_wrap (1.0.0)
249
+ xcodeproj (1.27.0)
250
+ CFPropertyList (>= 2.3.3, < 4.0)
251
+ atomos (~> 0.1.3)
252
+ claide (>= 1.0.2, < 2.0)
253
+ colored2 (~> 3.1)
254
+ nanaimo (~> 0.4.0)
255
+ rexml (>= 3.3.6, < 4.0)
256
+ xcpretty (0.4.1)
257
+ rouge (~> 3.28.0)
258
+ xcpretty-travis-formatter (1.0.1)
259
+ xcpretty (~> 0.2, >= 0.0.7)
260
+
261
+ PLATFORMS
262
+ arm64-darwin-25
263
+ ruby
264
+
265
+ DEPENDENCIES
266
+ annai-flutter-flavor!
267
+ pry
268
+ rspec (~> 3.4.0)
269
+
270
+ BUNDLED WITH
271
+ 2.7.2
data/README.md ADDED
@@ -0,0 +1,283 @@
1
+ # ANN Flutter Flavor — Fastlane Plugin
2
+
3
+ [![RubyGems](https://img.shields.io/gem/v/ann-flutter-flavor)](https://rubygems.org/gems/ann-flutter-flavor)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+
6
+ Fastlane plugin that reads `annspec.yaml` and provides lanes for building, signing, uploading and testing all Flutter flavors across Android, iOS and Web — without writing repetitive Fastfile boilerplate for each flavor.
7
+
8
+ ---
9
+
10
+ ## Installation
11
+
12
+ Add to your `Pluginfile`:
13
+
14
+ ```ruby
15
+ gem 'ann-flutter-flavor'
16
+ ```
17
+
18
+ Then run:
19
+
20
+ ```bash
21
+ fastlane add_plugin ann_flutter_flavor
22
+ # or
23
+ bundle install
24
+ ```
25
+
26
+ Or add directly via Fastlane:
27
+
28
+ ```bash
29
+ fastlane add_plugin ann_flutter_flavor
30
+ ```
31
+
32
+ ---
33
+
34
+ ## Quick start
35
+
36
+ ```ruby
37
+ # Fastfile
38
+ lane :deploy_android do
39
+ ann_compile_build(platform: :android, build_config: "release")
40
+ ann_upload_to_play_store(platform: :android)
41
+ end
42
+
43
+ lane :deploy_ios do
44
+ ann_compile_build(platform: :ios, build_config: "release")
45
+ ann_upload_to_app_store(platform: :ios)
46
+ end
47
+ ```
48
+
49
+ Run a lane:
50
+
51
+ ```bash
52
+ bundle exec fastlane deploy_android
53
+ bundle exec fastlane deploy_ios
54
+ ```
55
+
56
+ ---
57
+
58
+ ## Actions
59
+
60
+ ### `ann_compile_build` — Build all flavors for a platform
61
+
62
+ Builds every flavor defined in `annspec.yaml` for a given platform. Supports building a subset of flavors via the `flavor` parameter.
63
+
64
+ ```ruby
65
+ ann_compile_build(
66
+ platform: :android, # :ios, :android, or :web
67
+ build_config: "release", # "debug", "profile", "release"
68
+ sub_command: "appbundle", # "apk", "appbundle", "ipa", "web"
69
+ flavor: "production", # Comma-separated. Omit to build ALL flavors
70
+ clean: false, # Run flutter clean before building
71
+ main_file: "lib/main.dart", # Default main file (overridden per-flavor in spec)
72
+ skip_sound_null_safety: false,
73
+ skip_code_sign: false,
74
+ export_options_plist: "", # iOS only — path to ExportOptions.plist
75
+ additional_parameter: "", # Extra flutter build flags
76
+ spec_file: nil # Custom path to annspec.yaml (optional)
77
+ )
78
+ ```
79
+
80
+ **Examples:**
81
+
82
+ ```ruby
83
+ # Build all Android flavors
84
+ ann_compile_build(platform: :android)
85
+
86
+ # Build specific iOS flavors only
87
+ ann_compile_build(platform: :ios, flavor: "production,staging", build_config: "release")
88
+
89
+ # Build web with clean
90
+ ann_compile_build(platform: :web, sub_command: "web", clean: true)
91
+ ```
92
+
93
+ ---
94
+
95
+ ### `ann_upload_to_play_store` — Upload Android to Google Play
96
+
97
+ Builds and uploads all Android flavors to the Google Play Store using the `google_api_key` defined in `annspec.yaml`.
98
+
99
+ ```ruby
100
+ ann_upload_to_play_store(
101
+ flavor: "production", # Specific flavor(s). Omit for all
102
+ clean: false,
103
+ spec_file: nil
104
+ )
105
+ ```
106
+
107
+ ---
108
+
109
+ ### `ann_upload_to_app_store` — Upload iOS to App Store
110
+
111
+ Builds and uploads all iOS flavors to the Apple App Store using the `apple_api_key` and `export_options_plist` defined in `annspec.yaml`.
112
+
113
+ ```ruby
114
+ ann_upload_to_app_store(
115
+ flavor: "production", # Specific flavor(s). Omit for all
116
+ clean: false,
117
+ spec_file: nil
118
+ )
119
+ ```
120
+
121
+ ---
122
+
123
+ ### `ann_upload_to_firebase` — Deploy web to Firebase Hosting
124
+
125
+ Builds and deploys all web flavors to Firebase Hosting.
126
+
127
+ ```ruby
128
+ ann_upload_to_firebase(
129
+ flavor: "web", # Specific flavor(s). Omit for all
130
+ clean: false,
131
+ spec_file: nil
132
+ )
133
+ ```
134
+
135
+ ---
136
+
137
+ ### `ann_run_tests` — Run integration tests
138
+
139
+ Runs integration tests for all flavors of a given platform using emulators/simulators.
140
+
141
+ ```ruby
142
+ ann_run_tests(
143
+ platform: :android, # :ios or :android
144
+ test_spec_file: nil # Path to test spec YAML (optional)
145
+ )
146
+ ```
147
+
148
+ ---
149
+
150
+ ### `ann_open_emulators` — Start emulators/simulators
151
+
152
+ Opens the required emulators or simulators for a platform before running tests.
153
+
154
+ ```ruby
155
+ ann_open_emulators(
156
+ platform: :android,
157
+ test_spec_file: nil
158
+ )
159
+ ```
160
+
161
+ ---
162
+
163
+ ### `annai_upgrade_setup` — Maintenance setup
164
+
165
+ Runs comprehensive Flutter and Fastlane maintenance: `flutter upgrade`, `flutter doctor`, `bundle update`, gem install.
166
+
167
+ ```ruby
168
+ annai_upgrade_setup # Skip if already up to date
169
+ annai_upgrade_setup(force: true) # Force run regardless
170
+ ```
171
+
172
+ ---
173
+
174
+ ### `annai_cleanup` — Clean build artifacts
175
+
176
+ Runs `flutter clean` and removes platform build folders.
177
+
178
+ ```ruby
179
+ annai_cleanup
180
+ annai_cleanup(force: true)
181
+ ```
182
+
183
+ ---
184
+
185
+ ## Configuration
186
+
187
+ The plugin reads `annspec.yaml` from your Flutter project root. Keys used by Fastlane actions:
188
+
189
+ ```yaml
190
+ annai_app:
191
+ android:
192
+ default:
193
+ fastlane:
194
+ google_api_key: "../annai_app_data/keys/android/google-api-key.json"
195
+
196
+ flavor:
197
+ production:
198
+ main_file: "lib/flavors/main_prod.dart"
199
+ version_name: 2.1.0
200
+ version_code: 20100
201
+
202
+ ios:
203
+ default:
204
+ fastlane:
205
+ apple_api_key: "../annai_app_data/keys/ios/apple_api_key.json"
206
+ export_options_plist: "../annai_app_data/keys/ios/exportOptions.plist"
207
+
208
+ flavor:
209
+ production:
210
+ apple_id: "1234567890" # Required for App Store upload
211
+ main_file: "lib/flavors/main_prod.dart"
212
+ version_name: 2.1.0
213
+ version_code: 20100
214
+ ```
215
+
216
+ See the [Gradle plugin README](https://github.com/anntech-dev/android-studio-plugins/tree/main/plugins/android-build-flavorize#configuration) for the complete `annspec.yaml` field reference.
217
+
218
+ ---
219
+
220
+ ## Typical CI/CD Fastfile
221
+
222
+ ```ruby
223
+ default_platform(:android)
224
+
225
+ platform :android do
226
+
227
+ lane :build do
228
+ ann_compile_build(
229
+ platform: :android,
230
+ build_config: "release",
231
+ sub_command: "appbundle",
232
+ clean: true
233
+ )
234
+ end
235
+
236
+ lane :deploy do
237
+ ann_upload_to_play_store
238
+ end
239
+
240
+ lane :test do
241
+ ann_open_emulators(platform: :android)
242
+ ann_run_tests(platform: :android)
243
+ end
244
+
245
+ end
246
+
247
+ platform :ios do
248
+
249
+ lane :build do
250
+ ann_compile_build(
251
+ platform: :ios,
252
+ build_config: "release",
253
+ sub_command: "ipa"
254
+ )
255
+ end
256
+
257
+ lane :deploy do
258
+ ann_upload_to_app_store
259
+ end
260
+
261
+ end
262
+ ```
263
+
264
+ ---
265
+
266
+ ## Requirements
267
+
268
+ - Fastlane `>= 2.232.2`
269
+ - Ruby `>= 3.0`
270
+ - Flutter project with `annspec.yaml` at the project root
271
+
272
+ ---
273
+
274
+ ## Related plugins
275
+
276
+ - **[android-build-flavorize](https://central.sonatype.com/artifact/dev.anntech.flavorize/flavorize)** — Gradle plugin for Android build configuration
277
+ - **[android-studio-flavorize](https://plugins.jetbrains.com/plugin/dev.anntech.studio.flavorize)** — Android Studio plugin for interactive spec sync
278
+
279
+ ---
280
+
281
+ ## License
282
+
283
+ [MIT](LICENSE) © [ANN Solutions](https://github.com/anntech-dev)
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
@@ -0,0 +1,25 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('lib', __dir__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+
5
+ require 'ann_flutter_flavor/version'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = "ann-flutter-flavor"
9
+ spec.version = AnnFlutterFlavor::VERSION
10
+ spec.authors = ["ANN Solutions"]
11
+ spec.email = ["support@annaibrands.com"]
12
+ spec.summary = "A fastlane plugin to manage Flutter build flavors and shared setup."
13
+ spec.homepage = "https://github.com/anntech-dev"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
+ spec.bindir = "exe"
18
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
+ spec.require_paths = ["lib"]
20
+
21
+ # Defines the fastlane dependency
22
+ spec.add_dependency "fastlane", ">= 2.232.2"
23
+ spec.add_development_dependency 'pry'
24
+ spec.add_development_dependency 'rspec', '~> 3.4.0'
25
+ end
@@ -0,0 +1,10 @@
1
+ # This file is loaded by require 'annai-flutter-flavor'
2
+
3
+ # Load the version (Good Practice)
4
+ require 'ann_flutter_flavor/version'
5
+
6
+ require 'fastlane'
7
+
8
+ # Load the Fastlane plugin structure (which defines the Plugin class)
9
+ require 'fastlane/plugin/ann_flutter_flavor'
10
+
@@ -0,0 +1,3 @@
1
+ module AnnFlutterFlavor
2
+ VERSION = "0.1.6"
3
+ end