solara 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/solara/lib/core/.DS_Store +0 -0
- data/solara/lib/core/aliases/alias_generator.rb +1 -0
- data/solara/lib/core/aliases/alias_generator_manager.rb +2 -1
- data/solara/lib/core/aliases/solara_terminal_setup.rb +1 -1
- data/solara/lib/core/brands/brand_font_switcher.rb +154 -0
- data/solara/lib/core/brands/brand_onboarder.rb +8 -6
- data/solara/lib/core/brands/brand_switcher.rb +232 -166
- data/solara/lib/core/brands/brands_manager.rb +15 -39
- data/solara/lib/core/dashboard/brand/BrandDetail.js +19 -0
- data/solara/lib/core/dashboard/brand/BrandDetailController.js +50 -8
- data/solara/lib/core/dashboard/brand/BrandDetailModel.js +9 -30
- data/solara/lib/core/dashboard/brand/BrandDetailView.js +49 -3
- data/solara/lib/core/dashboard/brand/InfoPlistStringCatalogManager.js +19 -0
- data/solara/lib/core/dashboard/brand/brand.html +209 -62
- data/solara/lib/core/dashboard/brand/source/BrandLocalSource.js +1 -1
- data/solara/lib/core/dashboard/brand/source/BrandRemoteSource.js +38 -53
- data/solara/lib/core/dashboard/brands/BrandsController.js +6 -5
- data/solara/lib/core/dashboard/brands/BrandsModel.js +2 -2
- data/solara/lib/core/dashboard/brands/BrandsView.js +2 -2
- data/solara/lib/core/dashboard/brands/brands.html +3 -1
- data/solara/lib/core/dashboard/component/AliasesBottomSheet.js +7 -5
- data/solara/lib/core/dashboard/dashboard_manager.rb +2 -0
- data/solara/lib/core/dashboard/dashboard_server.rb +1 -3
- data/solara/lib/core/dashboard/handler/brand_alisases_handler.rb +4 -11
- data/solara/lib/core/dashboard/handler/brand_configurations_manager.rb +11 -11
- data/solara/lib/core/dashboard/handler/{brand_configurations_handler.rb → brand_details_handler.rb} +4 -4
- data/solara/lib/core/dashboard/handler/brands_handler.rb +1 -1
- data/solara/lib/core/dashboard/handler/edit_section_handler.rb +8 -8
- data/solara/lib/core/doctor/brand_doctor.rb +31 -31
- data/solara/lib/core/doctor/doctor_manager.rb +0 -1
- data/solara/lib/core/doctor/project_doctor.rb +0 -1
- data/solara/lib/core/doctor/schema/platform/android/android_config.json +0 -4
- data/solara/lib/core/doctor/schema/platform/ios/InfoPlist.xcstrings +15 -0
- data/solara/lib/core/doctor/schema/platform/ios/ios_config.json +0 -5
- data/solara/lib/core/doctor/schema/platform/shared/brand_config.json +9 -0
- data/solara/lib/core/doctor/schema/platform/shared/theme.json +94 -9
- data/solara/lib/core/doctor/validator/brand_settings_validator.rb +6 -0
- data/solara/lib/core/doctor/validator/brand_settings_validator_manager.rb +9 -21
- data/solara/lib/core/doctor/validator/template/android_template_validation_config.yml +22 -4
- data/solara/lib/core/doctor/validator/template/flutter_template_validation_config.yml +22 -6
- data/solara/lib/core/doctor/validator/template/ios_template_validation_config.yml +22 -4
- data/solara/lib/core/scripts/brand_config_generator.rb +1 -0
- data/solara/lib/core/scripts/brand_config_manager.rb +2 -4
- data/solara/lib/core/scripts/brand_exporter.rb +1 -1
- data/solara/lib/core/scripts/brand_importer.rb +2 -3
- data/solara/lib/core/scripts/brand_offboarder.rb +5 -0
- data/solara/lib/core/scripts/brand_resources_manager.rb +127 -54
- data/solara/lib/core/scripts/directory_creator.rb +2 -2
- data/solara/lib/core/scripts/file_manager.rb +53 -19
- data/solara/lib/core/scripts/file_path.rb +175 -30
- data/solara/lib/core/scripts/folder_copier.rb +3 -7
- data/solara/lib/core/scripts/gitignore_manager.rb +21 -10
- data/solara/lib/core/scripts/interactive_file_system_validator.rb +8 -2
- data/solara/lib/core/scripts/platform/android/android_manifest_switcher.rb +3 -3
- data/solara/lib/core/scripts/platform/android/android_strings_switcher.rb +26 -24
- data/solara/lib/core/scripts/platform/android/gradle_switcher.rb +7 -6
- data/solara/lib/core/scripts/platform/ios/infoplist_string_catalog_manager.rb +123 -0
- data/solara/lib/core/scripts/platform/ios/infoplist_switcher.rb +59 -0
- data/solara/lib/core/scripts/platform/ios/ios_plist_manager.rb +11 -20
- data/solara/lib/core/scripts/platform/ios/plist_font_manager.rb +33 -0
- data/solara/lib/core/scripts/platform/ios/xcconfig_generator.rb +15 -3
- data/solara/lib/core/scripts/platform/ios/xcode_asset_manager.rb +2 -3
- data/solara/lib/core/scripts/platform/ios/xcode_project_manager.rb +80 -1
- data/solara/lib/core/scripts/platform/ios/xcode_project_switcher.rb +15 -34
- data/solara/lib/core/scripts/solara_logger.rb +10 -0
- data/solara/lib/core/scripts/solara_settings_manager.rb +26 -1
- data/solara/lib/core/scripts/strings_xml_manager.rb +17 -2
- data/solara/lib/core/scripts/theme_generator.rb +133 -130
- data/solara/lib/core/scripts/yaml_manager.rb +23 -0
- data/solara/lib/core/solara_configurator.rb +1 -1
- data/solara/lib/core/template/brands/android/android_config.json +0 -1
- data/solara/lib/core/template/brands/android/res/values/strings.xml +4 -0
- data/solara/lib/core/template/brands/ios/InfoPlist.xcstrings +30 -0
- data/solara/lib/core/template/brands/ios/ios_config.json +1 -2
- data/solara/lib/core/template/brands/shared/brand_config.json +1 -0
- data/solara/lib/core/template/brands/shared/theme.json +3 -3
- data/solara/lib/core/template/config/android_template_config.json +11 -1
- data/solara/lib/core/template/config/flutter_template_config.json +12 -2
- data/solara/lib/core/template/config/ios_template_config.json +11 -1
- data/solara/lib/core/template/project_template_generator.rb +8 -3
- data/solara/lib/solara/version.rb +1 -1
- data/solara/lib/solara.rb +8 -4
- data/solara/lib/solara_initializer.rb +5 -2
- data/solara/lib/solara_manager.rb +1 -1
- metadata +62 -43
- data/solara/lib/core/dashboard/handler/brand_section_handler.rb +0 -20
- data/solara/lib/core/doctor/validator/directory_structure_validator.rb +0 -38
- data/solara/lib/core/doctor/validator/file_structure_validator.rb +0 -37
- data/solara/lib/core/scripts/platform/ios/ios_file_path_manager.rb +0 -109
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/.DS_Store +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/100.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/102.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/1024.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/114.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/120.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/128.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/144.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/152.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/16.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/167.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/172.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/180.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/196.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/20.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/216.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/256.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/29.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/32.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/40.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/48.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/50.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/512.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/55.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/57.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/58.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/60.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/64.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/66.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/72.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/76.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/80.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/87.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/88.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/92.png +0 -0
- /data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/Contents.json +0 -0
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solara
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Malek Kamel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-09-
|
11
|
+
date: 2024-09-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 0.4.1
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: plist
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 3.7.1
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 3.7.1
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: bundler
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -152,6 +166,7 @@ files:
|
|
152
166
|
- solara/lib/core/aliases/alias_generator.rb
|
153
167
|
- solara/lib/core/aliases/alias_generator_manager.rb
|
154
168
|
- solara/lib/core/aliases/solara_terminal_setup.rb
|
169
|
+
- solara/lib/core/brands/brand_font_switcher.rb
|
155
170
|
- solara/lib/core/brands/brand_onboarder.rb
|
156
171
|
- solara/lib/core/brands/brand_switcher.rb
|
157
172
|
- solara/lib/core/brands/brands_manager.rb
|
@@ -161,6 +176,7 @@ files:
|
|
161
176
|
- solara/lib/core/dashboard/brand/BrandDetailController.js
|
162
177
|
- solara/lib/core/dashboard/brand/BrandDetailModel.js
|
163
178
|
- solara/lib/core/dashboard/brand/BrandDetailView.js
|
179
|
+
- solara/lib/core/dashboard/brand/InfoPlistStringCatalogManager.js
|
164
180
|
- solara/lib/core/dashboard/brand/brand.html
|
165
181
|
- solara/lib/core/dashboard/brand/source/BrandLocalSource.js
|
166
182
|
- solara/lib/core/dashboard/brand/source/BrandRemoteSource.js
|
@@ -179,10 +195,9 @@ files:
|
|
179
195
|
- solara/lib/core/dashboard/dashboard_server.rb
|
180
196
|
- solara/lib/core/dashboard/handler/base_handler.rb
|
181
197
|
- solara/lib/core/dashboard/handler/brand_alisases_handler.rb
|
182
|
-
- solara/lib/core/dashboard/handler/brand_configurations_handler.rb
|
183
198
|
- solara/lib/core/dashboard/handler/brand_configurations_manager.rb
|
199
|
+
- solara/lib/core/dashboard/handler/brand_details_handler.rb
|
184
200
|
- solara/lib/core/dashboard/handler/brand_icon_handler.rb
|
185
|
-
- solara/lib/core/dashboard/handler/brand_section_handler.rb
|
186
201
|
- solara/lib/core/dashboard/handler/brands_handler.rb
|
187
202
|
- solara/lib/core/dashboard/handler/current_brand_handler.rb
|
188
203
|
- solara/lib/core/dashboard/handler/doctor_handler.rb
|
@@ -207,13 +222,13 @@ files:
|
|
207
222
|
- solara/lib/core/doctor/schema/brand_configurations.json
|
208
223
|
- solara/lib/core/doctor/schema/platform/android/android_config.json
|
209
224
|
- solara/lib/core/doctor/schema/platform/android/android_signing.json
|
225
|
+
- solara/lib/core/doctor/schema/platform/ios/InfoPlist.xcstrings
|
210
226
|
- solara/lib/core/doctor/schema/platform/ios/ios_config.json
|
211
227
|
- solara/lib/core/doctor/schema/platform/ios/ios_signing.json
|
228
|
+
- solara/lib/core/doctor/schema/platform/shared/brand_config.json
|
212
229
|
- solara/lib/core/doctor/schema/platform/shared/theme.json
|
213
230
|
- solara/lib/core/doctor/validator/brand_settings_validator.rb
|
214
231
|
- solara/lib/core/doctor/validator/brand_settings_validator_manager.rb
|
215
|
-
- solara/lib/core/doctor/validator/directory_structure_validator.rb
|
216
|
-
- solara/lib/core/doctor/validator/file_structure_validator.rb
|
217
232
|
- solara/lib/core/doctor/validator/json_file_validator.rb
|
218
233
|
- solara/lib/core/doctor/validator/json_schema_validator.rb
|
219
234
|
- solara/lib/core/doctor/validator/project_filesystem_validator.rb
|
@@ -238,8 +253,10 @@ files:
|
|
238
253
|
- solara/lib/core/scripts/platform/android/android_strings_switcher.rb
|
239
254
|
- solara/lib/core/scripts/platform/android/gradle_switcher.rb
|
240
255
|
- solara/lib/core/scripts/platform/android/properties_generator.rb
|
241
|
-
- solara/lib/core/scripts/platform/ios/
|
256
|
+
- solara/lib/core/scripts/platform/ios/infoplist_string_catalog_manager.rb
|
257
|
+
- solara/lib/core/scripts/platform/ios/infoplist_switcher.rb
|
242
258
|
- solara/lib/core/scripts/platform/ios/ios_plist_manager.rb
|
259
|
+
- solara/lib/core/scripts/platform/ios/plist_font_manager.rb
|
243
260
|
- solara/lib/core/scripts/platform/ios/xcconfig_generator.rb
|
244
261
|
- solara/lib/core/scripts/platform/ios/xcode_asset_manager.rb
|
245
262
|
- solara/lib/core/scripts/platform/ios/xcode_project_manager.rb
|
@@ -267,45 +284,47 @@ files:
|
|
267
284
|
- solara/lib/core/template/brands/android/res/mipmap-xxhdpi/ic_launcher_round.png
|
268
285
|
- solara/lib/core/template/brands/android/res/mipmap-xxxhdpi/ic_launcher.png
|
269
286
|
- solara/lib/core/template/brands/android/res/mipmap-xxxhdpi/ic_launcher_round.png
|
287
|
+
- solara/lib/core/template/brands/android/res/values/strings.xml
|
270
288
|
- solara/lib/core/template/brands/brands.json
|
271
|
-
- solara/lib/core/template/brands/ios/
|
272
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/100.png
|
273
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/102.png
|
274
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/1024.png
|
275
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/114.png
|
276
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/120.png
|
277
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/128.png
|
278
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/144.png
|
279
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/152.png
|
280
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/16.png
|
281
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/167.png
|
282
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/172.png
|
283
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/180.png
|
284
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/196.png
|
285
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/20.png
|
286
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/216.png
|
287
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/256.png
|
288
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/29.png
|
289
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/32.png
|
290
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/40.png
|
291
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/48.png
|
292
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/50.png
|
293
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/512.png
|
294
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/55.png
|
295
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/57.png
|
296
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/58.png
|
297
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/60.png
|
298
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/64.png
|
299
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/66.png
|
300
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/72.png
|
301
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/76.png
|
302
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/80.png
|
303
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/87.png
|
304
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/88.png
|
305
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/92.png
|
306
|
-
- solara/lib/core/template/brands/ios/assets/AppIcon.appiconset/Contents.json
|
289
|
+
- solara/lib/core/template/brands/ios/InfoPlist.xcstrings
|
307
290
|
- solara/lib/core/template/brands/ios/ios_config.json
|
308
291
|
- solara/lib/core/template/brands/ios/ios_signing.json
|
292
|
+
- solara/lib/core/template/brands/ios/xcassets/.DS_Store
|
293
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/100.png
|
294
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/102.png
|
295
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/1024.png
|
296
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/114.png
|
297
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/120.png
|
298
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/128.png
|
299
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/144.png
|
300
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/152.png
|
301
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/16.png
|
302
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/167.png
|
303
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/172.png
|
304
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/180.png
|
305
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/196.png
|
306
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/20.png
|
307
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/216.png
|
308
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/256.png
|
309
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/29.png
|
310
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/32.png
|
311
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/40.png
|
312
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/48.png
|
313
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/50.png
|
314
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/512.png
|
315
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/55.png
|
316
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/57.png
|
317
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/58.png
|
318
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/60.png
|
319
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/64.png
|
320
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/66.png
|
321
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/72.png
|
322
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/76.png
|
323
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/80.png
|
324
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/87.png
|
325
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/88.png
|
326
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/92.png
|
327
|
+
- solara/lib/core/template/brands/ios/xcassets/AppIcon.appiconset/Contents.json
|
309
328
|
- solara/lib/core/template/brands/shared/.DS_Store
|
310
329
|
- solara/lib/core/template/brands/shared/brand_config.json
|
311
330
|
- solara/lib/core/template/brands/shared/theme.json
|
@@ -1,20 +0,0 @@
|
|
1
|
-
class BrandSectionHandler < BaseHandler
|
2
|
-
def mount
|
3
|
-
@server.mount_proc("/section") do |req, res|
|
4
|
-
begin
|
5
|
-
query = CGI.parse(req.query_string)
|
6
|
-
path = query['path']&.first
|
7
|
-
if File.exist?(path)
|
8
|
-
res.body = File.read(path)
|
9
|
-
res['Content-Type'] = 'application/json'
|
10
|
-
else
|
11
|
-
res.status = 404
|
12
|
-
res.body = JSON.generate({ error: "Config file not found: #{path}" })
|
13
|
-
res['Content-Type'] = 'application/json'
|
14
|
-
end
|
15
|
-
rescue StandardError => e
|
16
|
-
handle_error(res, e, "Error in brand section handler")
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
Dir[File.expand_path('*.rb', __dir__)].each { |file| require_relative file }
|
2
|
-
|
3
|
-
class DirectoryStructure
|
4
|
-
attr_reader :path, :use_glob
|
5
|
-
|
6
|
-
def initialize(path, use_glob: true)
|
7
|
-
@path = path
|
8
|
-
@use_glob = use_glob
|
9
|
-
end
|
10
|
-
|
11
|
-
def self.expand(pattern, use_glob: true)
|
12
|
-
if use_glob
|
13
|
-
Dir.glob(pattern).select { |path| File.directory?(path) }.map do |path|
|
14
|
-
DirectoryStructure.new(path, use_glob: use_glob)
|
15
|
-
end
|
16
|
-
else
|
17
|
-
[DirectoryStructure.new(pattern, use_glob: use_glob)]
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
class DirectoryStructureValidator < ValidationStrategy
|
23
|
-
def initialize(dir)
|
24
|
-
@dir = dir
|
25
|
-
end
|
26
|
-
|
27
|
-
def validate(project_path)
|
28
|
-
full_path = File.join(project_path, @dir.path)
|
29
|
-
paths = @dir.use_glob ? DirectoryStructure.expand(full_path) : [@dir]
|
30
|
-
|
31
|
-
if paths.any? { |path| File.directory?(path.path) }
|
32
|
-
Solara.logger.passed("Directory exists: '#{@dir.path}'")
|
33
|
-
else
|
34
|
-
raise ValidationError, "Directory missing: '#{@dir.path}'"
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
Dir[File.expand_path('*.rb', __dir__)].each { |file| require_relative file }
|
2
|
-
|
3
|
-
class FileStructure
|
4
|
-
attr_reader :path, :use_glob
|
5
|
-
|
6
|
-
def initialize(path, use_glob: true)
|
7
|
-
@path = path
|
8
|
-
@use_glob = use_glob
|
9
|
-
end
|
10
|
-
|
11
|
-
def self.expand(pattern, use_glob: true)
|
12
|
-
if use_glob
|
13
|
-
Dir.glob(pattern).select { |path| File.file?(path) }.map do |path|
|
14
|
-
FileStructure.new(path, use_glob: use_glob)
|
15
|
-
end
|
16
|
-
else
|
17
|
-
[FileStructure.new(pattern, use_glob: use_glob)]
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
class FileStructureValidator < ValidationStrategy
|
23
|
-
def initialize(file)
|
24
|
-
@file = file
|
25
|
-
end
|
26
|
-
|
27
|
-
def validate(project_path)
|
28
|
-
full_path = File.join(project_path, @file.path)
|
29
|
-
paths = @file.use_glob ? FileStructure.expand(full_path) : [@file]
|
30
|
-
|
31
|
-
if paths.any? { |path| File.file?(path.path) }
|
32
|
-
Solara.logger.passed("File exists: '#{@file.path}'")
|
33
|
-
else
|
34
|
-
raise ValidationError, "File missing: '#{@file.path}'"
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
@@ -1,109 +0,0 @@
|
|
1
|
-
Dir.glob("#{__dir__}/*.rb").each { |file| require file }
|
2
|
-
require 'singleton'
|
3
|
-
require 'pathname'
|
4
|
-
|
5
|
-
class IOSFilePathManager
|
6
|
-
include Singleton
|
7
|
-
|
8
|
-
def initialize
|
9
|
-
@platform = SolaraSettingsManager.instance.platform
|
10
|
-
@project_root = SolaraSettingsManager.instance.project_root
|
11
|
-
end
|
12
|
-
|
13
|
-
def xcode_project
|
14
|
-
path = ProjectSettingsManager.instance.value('xcodeproj', Platform::IOS)
|
15
|
-
File.join(@project_root, path)
|
16
|
-
end
|
17
|
-
|
18
|
-
def xcode_project_directory
|
19
|
-
Pathname.new(xcode_project).parent.to_s
|
20
|
-
end
|
21
|
-
|
22
|
-
def brand_assets(brand_key)
|
23
|
-
File.join(FilePath.brands, brand_key, FilePath.ios, 'assets')
|
24
|
-
end
|
25
|
-
|
26
|
-
def brand_xcconfig
|
27
|
-
File.join(artifacts, 'Brand.xcconfig')
|
28
|
-
end
|
29
|
-
|
30
|
-
def artifacts
|
31
|
-
case @platform
|
32
|
-
when Platform::Flutter
|
33
|
-
return File.join(@project_root, FilePath.ios, 'Flutter', 'Artifacts')
|
34
|
-
when Platform::IOS
|
35
|
-
return File.join(xcode_project_directory, 'Artifacts')
|
36
|
-
else
|
37
|
-
raise ArgumentError, "Invalid platform: #{@platform}"
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
def info_plist
|
42
|
-
path = ProjectSettingsManager.instance.value('Info.plist', Platform::IOS)
|
43
|
-
File.join(@project_root, path)
|
44
|
-
end
|
45
|
-
|
46
|
-
def assets
|
47
|
-
path = ProjectSettingsManager.instance.value('Assets.xcassets', Platform::IOS)
|
48
|
-
File.join(@project_root, path)
|
49
|
-
end
|
50
|
-
|
51
|
-
def assets_directory
|
52
|
-
File.dirname(assets)
|
53
|
-
end
|
54
|
-
|
55
|
-
def assets_artifacts
|
56
|
-
File.join(assets_directory, 'Assets.xcassets', 'Artifacts')
|
57
|
-
end
|
58
|
-
|
59
|
-
def assets_artifcats
|
60
|
-
File.join(assets, 'Artifacts')
|
61
|
-
end
|
62
|
-
|
63
|
-
def app_xcconfig(name)
|
64
|
-
case @platform
|
65
|
-
when Platform::Flutter
|
66
|
-
return File.join(@project_root, FilePath.ios, 'Flutter', name)
|
67
|
-
when Platform::IOS
|
68
|
-
return File.join(xcode_project_directory, 'XCConfig', name)
|
69
|
-
else
|
70
|
-
raise ArgumentError, "Invalid platform: #{@platform}"
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
def app_xcconfig_directory
|
75
|
-
Pathname.new(app_xcconfig('Debug.xcconfig')).parent.to_s
|
76
|
-
end
|
77
|
-
|
78
|
-
def brand_app_icon(brand_key)
|
79
|
-
File.join(FilePath.brands, brand_key, FilePath.ios, 'assets', 'AppIcon.appiconset')
|
80
|
-
end
|
81
|
-
|
82
|
-
def brand_app_icon_image(brand_key)
|
83
|
-
appicon_set_path = brand_app_icon(brand_key)
|
84
|
-
|
85
|
-
if appicon_set_path.nil?
|
86
|
-
raise "Error: AppIcon.appiconset not found for brand #{brand_key}"
|
87
|
-
end
|
88
|
-
|
89
|
-
contents_json_path = File.join(appicon_set_path, 'Contents.json')
|
90
|
-
|
91
|
-
unless File.exist?(contents_json_path)
|
92
|
-
raise "Error: Contents.json not found in AppIcon.appiconset for brand #{brand_key}"
|
93
|
-
end
|
94
|
-
|
95
|
-
contents = JSON.parse(File.read(contents_json_path))
|
96
|
-
|
97
|
-
largest_image = contents['images'].max_by do |img|
|
98
|
-
size = img['size'].scan(/(\d+)x(\d+)/).first&.map(&:to_i)
|
99
|
-
size ? size[0] * size[1] : 0
|
100
|
-
end
|
101
|
-
|
102
|
-
if largest_image
|
103
|
-
File.join(appicon_set_path, largest_image['filename'])
|
104
|
-
else
|
105
|
-
raise "No images found in Contents.json for brand #{brand_key}"
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
/data/solara/lib/core/template/brands/ios/{assets → xcassets}/AppIcon.appiconset/Contents.json
RENAMED
File without changes
|