ruby_everywhere 0.1.15 → 0.2.0
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.
- checksums.yaml +4 -4
- data/bridge/README.md +57 -2
- data/bridge/everywhere/bridge.js +803 -9
- data/bridge/package.json +1 -1
- data/lib/everywhere/builders/ios.rb +364 -0
- data/lib/everywhere/cli.rb +2 -0
- data/lib/everywhere/commands/build.rb +17 -1
- data/lib/everywhere/commands/clean.rb +19 -10
- data/lib/everywhere/commands/dev.rb +182 -19
- data/lib/everywhere/commands/doctor.rb +45 -3
- data/lib/everywhere/commands/icon.rb +14 -0
- data/lib/everywhere/commands/install.rb +37 -6
- data/lib/everywhere/commands/logs.rb +56 -0
- data/lib/everywhere/commands/platform/build.rb +3 -3
- data/lib/everywhere/commands/platform/runner.rb +1 -1
- data/lib/everywhere/commands/release.rb +1 -1
- data/lib/everywhere/commands/shell_dir.rb +11 -4
- data/lib/everywhere/config.rb +366 -1
- data/lib/everywhere/engine.rb +33 -1
- data/lib/everywhere/icon.rb +50 -0
- data/lib/everywhere/log_filter.rb +28 -2
- data/lib/everywhere/mobile_config_endpoint.rb +75 -0
- data/lib/everywhere/mobile_configs_controller.rb +46 -0
- data/lib/everywhere/native_helper.rb +156 -0
- data/lib/everywhere/paths.rb +41 -0
- data/lib/everywhere/raster.rb +17 -0
- data/lib/everywhere/shellout.rb +3 -1
- data/lib/everywhere/simulator.rb +74 -0
- data/lib/everywhere/ui.rb +18 -0
- data/lib/everywhere/version.rb +1 -1
- data/support/mobile/ios/App/App.xcconfig +6 -0
- data/support/mobile/ios/App/AppDelegate.swift +163 -0
- data/support/mobile/ios/App/Assets.xcassets/AccentColor.colorset/Contents.json +20 -0
- data/support/mobile/ios/App/Assets.xcassets/AppIcon.appiconset/AppIcon.png +0 -0
- data/support/mobile/ios/App/Assets.xcassets/AppIcon.appiconset/Contents.json +14 -0
- data/support/mobile/ios/App/Assets.xcassets/Contents.json +6 -0
- data/support/mobile/ios/App/Assets.xcassets/LaunchBackground.colorset/Contents.json +38 -0
- data/support/mobile/ios/App/Base.lproj/LaunchScreen.storyboard +32 -0
- data/support/mobile/ios/App/Bridge/BiometricsComponent.swift +276 -0
- data/support/mobile/ios/App/Bridge/HapticsComponent.swift +47 -0
- data/support/mobile/ios/App/Bridge/NotificationComponent.swift +56 -0
- data/support/mobile/ios/App/Bridge/PermissionsComponent.swift +142 -0
- data/support/mobile/ios/App/Bridge/StorageComponent.swift +63 -0
- data/support/mobile/ios/App/ErrorViewController.swift +64 -0
- data/support/mobile/ios/App/EverywhereConfig.swift +268 -0
- data/support/mobile/ios/App/EverywhereHost.swift +34 -0
- data/support/mobile/ios/App/Extensions/EverywhereExtensions.swift +32 -0
- data/support/mobile/ios/App/Info.plist +28 -0
- data/support/mobile/ios/App/Resources/everywhere.json +8 -0
- data/support/mobile/ios/App/Resources/path-configuration.json +19 -0
- data/support/mobile/ios/App/SceneDelegate.swift +443 -0
- data/support/mobile/ios/App.xcodeproj/project.pbxproj +454 -0
- data/support/mobile/ios/App.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- data/support/mobile/ios/App.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +14 -0
- data/support/mobile/ios/App.xcodeproj/xcshareddata/xcschemes/App.xcscheme +77 -0
- data/support/mobile/ios/NativeExtensions/Package.swift +26 -0
- data/support/mobile/ios/NativeExtensions/Sources/NativeExtensions/Exports.swift +5 -0
- data/support/mobile/ios/README.md +66 -0
- metadata +35 -1
|
@@ -0,0 +1,454 @@
|
|
|
1
|
+
// !$*UTF8*$!
|
|
2
|
+
{
|
|
3
|
+
archiveVersion = 1;
|
|
4
|
+
classes = {
|
|
5
|
+
};
|
|
6
|
+
objectVersion = 70;
|
|
7
|
+
objects = {
|
|
8
|
+
|
|
9
|
+
/* Begin PBXBuildFile section */
|
|
10
|
+
EBE000000000000000000031 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE000000000000000000013 /* AppDelegate.swift */; };
|
|
11
|
+
EBE000000000000000000032 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE000000000000000000014 /* SceneDelegate.swift */; };
|
|
12
|
+
EBE000000000000000000033 /* EverywhereConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE000000000000000000015 /* EverywhereConfig.swift */; };
|
|
13
|
+
EBE000000000000000000034 /* ErrorViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE000000000000000000016 /* ErrorViewController.swift */; };
|
|
14
|
+
EBE000000000000000000035 /* NotificationComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE000000000000000000017 /* NotificationComponent.swift */; };
|
|
15
|
+
EBE000000000000000000044 /* HapticsComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE000000000000000000043 /* HapticsComponent.swift */; };
|
|
16
|
+
EBE000000000000000000046 /* PermissionsComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE000000000000000000045 /* PermissionsComponent.swift */; };
|
|
17
|
+
EBE000000000000000000058 /* BiometricsComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE000000000000000000057 /* BiometricsComponent.swift */; };
|
|
18
|
+
EBE000000000000000000060 /* StorageComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE000000000000000000059 /* StorageComponent.swift */; };
|
|
19
|
+
EBE000000000000000000063 /* EverywhereHost.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBE000000000000000000062 /* EverywhereHost.swift */; };
|
|
20
|
+
EBE000000000000000000036 /* everywhere.json in Resources */ = {isa = PBXBuildFile; fileRef = EBE000000000000000000018 /* everywhere.json */; };
|
|
21
|
+
EBE000000000000000000037 /* path-configuration.json in Resources */ = {isa = PBXBuildFile; fileRef = EBE000000000000000000019 /* path-configuration.json */; };
|
|
22
|
+
EBE000000000000000000038 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EBE000000000000000000020 /* Assets.xcassets */; };
|
|
23
|
+
EBE000000000000000000039 /* Base in Resources */ = {isa = PBXBuildFile; fileRef = EBE000000000000000000021 /* Base */; };
|
|
24
|
+
EBE000000000000000000040 /* HotwireNative in Frameworks */ = {isa = PBXBuildFile; productRef = EBE000000000000000000042 /* HotwireNative */; };
|
|
25
|
+
EBE000000000000000000066 /* NativeExtensions in Frameworks */ = {isa = PBXBuildFile; productRef = EBE000000000000000000065 /* NativeExtensions */; };
|
|
26
|
+
/* End PBXBuildFile section */
|
|
27
|
+
|
|
28
|
+
/* Begin PBXFileReference section */
|
|
29
|
+
EBE000000000000000000006 /* App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = App.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
30
|
+
EBE000000000000000000011 /* App.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = App.xcconfig; sourceTree = "<group>"; };
|
|
31
|
+
EBE000000000000000000012 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
|
32
|
+
EBE000000000000000000013 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
|
33
|
+
EBE000000000000000000014 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; };
|
|
34
|
+
EBE000000000000000000015 /* EverywhereConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EverywhereConfig.swift; sourceTree = "<group>"; };
|
|
35
|
+
EBE000000000000000000016 /* ErrorViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ErrorViewController.swift; sourceTree = "<group>"; };
|
|
36
|
+
EBE000000000000000000017 /* NotificationComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationComponent.swift; sourceTree = "<group>"; };
|
|
37
|
+
EBE000000000000000000043 /* HapticsComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HapticsComponent.swift; sourceTree = "<group>"; };
|
|
38
|
+
EBE000000000000000000045 /* PermissionsComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PermissionsComponent.swift; sourceTree = "<group>"; };
|
|
39
|
+
EBE000000000000000000057 /* BiometricsComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BiometricsComponent.swift; sourceTree = "<group>"; };
|
|
40
|
+
EBE000000000000000000059 /* StorageComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StorageComponent.swift; sourceTree = "<group>"; };
|
|
41
|
+
EBE000000000000000000018 /* everywhere.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = everywhere.json; sourceTree = "<group>"; };
|
|
42
|
+
EBE000000000000000000019 /* path-configuration.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = "path-configuration.json"; sourceTree = "<group>"; };
|
|
43
|
+
EBE000000000000000000020 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
|
44
|
+
EBE000000000000000000021 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
|
45
|
+
EBE000000000000000000062 /* EverywhereHost.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EverywhereHost.swift; sourceTree = "<group>"; };
|
|
46
|
+
/* End PBXFileReference section */
|
|
47
|
+
|
|
48
|
+
/* Begin PBXFileSystemSynchronizedRootGroup section */
|
|
49
|
+
EBE000000000000000000061 /* Extensions */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = Extensions; sourceTree = "<group>"; };
|
|
50
|
+
/* End PBXFileSystemSynchronizedRootGroup section */
|
|
51
|
+
|
|
52
|
+
/* Begin PBXFrameworksBuildPhase section */
|
|
53
|
+
EBE000000000000000000009 /* Frameworks */ = {
|
|
54
|
+
isa = PBXFrameworksBuildPhase;
|
|
55
|
+
buildActionMask = 2147483647;
|
|
56
|
+
files = (
|
|
57
|
+
EBE000000000000000000040 /* HotwireNative in Frameworks */,
|
|
58
|
+
EBE000000000000000000066 /* NativeExtensions in Frameworks */,
|
|
59
|
+
);
|
|
60
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
61
|
+
};
|
|
62
|
+
/* End PBXFrameworksBuildPhase section */
|
|
63
|
+
|
|
64
|
+
/* Begin PBXGroup section */
|
|
65
|
+
EBE000000000000000000002 = {
|
|
66
|
+
isa = PBXGroup;
|
|
67
|
+
children = (
|
|
68
|
+
EBE000000000000000000004 /* App */,
|
|
69
|
+
EBE000000000000000000003 /* Products */,
|
|
70
|
+
);
|
|
71
|
+
sourceTree = "<group>";
|
|
72
|
+
};
|
|
73
|
+
EBE000000000000000000003 /* Products */ = {
|
|
74
|
+
isa = PBXGroup;
|
|
75
|
+
children = (
|
|
76
|
+
EBE000000000000000000006 /* App.app */,
|
|
77
|
+
);
|
|
78
|
+
name = Products;
|
|
79
|
+
sourceTree = "<group>";
|
|
80
|
+
};
|
|
81
|
+
EBE000000000000000000004 /* App */ = {
|
|
82
|
+
isa = PBXGroup;
|
|
83
|
+
children = (
|
|
84
|
+
EBE000000000000000000011 /* App.xcconfig */,
|
|
85
|
+
EBE000000000000000000013 /* AppDelegate.swift */,
|
|
86
|
+
EBE000000000000000000014 /* SceneDelegate.swift */,
|
|
87
|
+
EBE000000000000000000015 /* EverywhereConfig.swift */,
|
|
88
|
+
EBE000000000000000000016 /* ErrorViewController.swift */,
|
|
89
|
+
EBE000000000000000000062 /* EverywhereHost.swift */,
|
|
90
|
+
EBE000000000000000000005 /* Bridge */,
|
|
91
|
+
EBE000000000000000000061 /* Extensions */,
|
|
92
|
+
EBE000000000000000000023 /* Resources */,
|
|
93
|
+
EBE000000000000000000012 /* Info.plist */,
|
|
94
|
+
EBE000000000000000000020 /* Assets.xcassets */,
|
|
95
|
+
EBE000000000000000000022 /* LaunchScreen.storyboard */,
|
|
96
|
+
);
|
|
97
|
+
path = App;
|
|
98
|
+
sourceTree = "<group>";
|
|
99
|
+
};
|
|
100
|
+
EBE000000000000000000005 /* Bridge */ = {
|
|
101
|
+
isa = PBXGroup;
|
|
102
|
+
children = (
|
|
103
|
+
EBE000000000000000000017 /* NotificationComponent.swift */,
|
|
104
|
+
EBE000000000000000000043 /* HapticsComponent.swift */,
|
|
105
|
+
EBE000000000000000000045 /* PermissionsComponent.swift */,
|
|
106
|
+
EBE000000000000000000057 /* BiometricsComponent.swift */,
|
|
107
|
+
EBE000000000000000000059 /* StorageComponent.swift */,
|
|
108
|
+
);
|
|
109
|
+
path = Bridge;
|
|
110
|
+
sourceTree = "<group>";
|
|
111
|
+
};
|
|
112
|
+
EBE000000000000000000023 /* Resources */ = {
|
|
113
|
+
isa = PBXGroup;
|
|
114
|
+
children = (
|
|
115
|
+
EBE000000000000000000018 /* everywhere.json */,
|
|
116
|
+
EBE000000000000000000019 /* path-configuration.json */,
|
|
117
|
+
);
|
|
118
|
+
path = Resources;
|
|
119
|
+
sourceTree = "<group>";
|
|
120
|
+
};
|
|
121
|
+
/* End PBXGroup section */
|
|
122
|
+
|
|
123
|
+
/* Begin PBXNativeTarget section */
|
|
124
|
+
EBE000000000000000000007 /* App */ = {
|
|
125
|
+
isa = PBXNativeTarget;
|
|
126
|
+
buildConfigurationList = EBE000000000000000000056 /* Build configuration list for PBXNativeTarget "App" */;
|
|
127
|
+
buildPhases = (
|
|
128
|
+
EBE000000000000000000008 /* Sources */,
|
|
129
|
+
EBE000000000000000000009 /* Frameworks */,
|
|
130
|
+
EBE000000000000000000010 /* Resources */,
|
|
131
|
+
);
|
|
132
|
+
buildRules = (
|
|
133
|
+
);
|
|
134
|
+
dependencies = (
|
|
135
|
+
);
|
|
136
|
+
fileSystemSynchronizedGroups = (
|
|
137
|
+
EBE000000000000000000061 /* Extensions */,
|
|
138
|
+
);
|
|
139
|
+
name = App;
|
|
140
|
+
packageProductDependencies = (
|
|
141
|
+
EBE000000000000000000042 /* HotwireNative */,
|
|
142
|
+
EBE000000000000000000065 /* NativeExtensions */,
|
|
143
|
+
);
|
|
144
|
+
productName = App;
|
|
145
|
+
productReference = EBE000000000000000000006 /* App.app */;
|
|
146
|
+
productType = "com.apple.product-type.application";
|
|
147
|
+
};
|
|
148
|
+
/* End PBXNativeTarget section */
|
|
149
|
+
|
|
150
|
+
/* Begin PBXProject section */
|
|
151
|
+
EBE000000000000000000001 /* Project object */ = {
|
|
152
|
+
isa = PBXProject;
|
|
153
|
+
attributes = {
|
|
154
|
+
BuildIndependentTargetsInParallel = 1;
|
|
155
|
+
LastSwiftUpdateCheck = 1530;
|
|
156
|
+
LastUpgradeCheck = 1530;
|
|
157
|
+
TargetAttributes = {
|
|
158
|
+
EBE000000000000000000007 = {
|
|
159
|
+
CreatedOnToolsVersion = 15.3;
|
|
160
|
+
};
|
|
161
|
+
};
|
|
162
|
+
};
|
|
163
|
+
buildConfigurationList = EBE000000000000000000055 /* Build configuration list for PBXProject "App" */;
|
|
164
|
+
compatibilityVersion = "Xcode 14.0";
|
|
165
|
+
developmentRegion = en;
|
|
166
|
+
hasScannedForEncodings = 0;
|
|
167
|
+
knownRegions = (
|
|
168
|
+
en,
|
|
169
|
+
Base,
|
|
170
|
+
);
|
|
171
|
+
mainGroup = EBE000000000000000000002;
|
|
172
|
+
packageReferences = (
|
|
173
|
+
EBE000000000000000000041 /* XCRemoteSwiftPackageReference "hotwire-native-ios" */,
|
|
174
|
+
EBE000000000000000000064 /* XCLocalSwiftPackageReference "NativeExtensions" */,
|
|
175
|
+
);
|
|
176
|
+
productRefGroup = EBE000000000000000000003 /* Products */;
|
|
177
|
+
projectDirPath = "";
|
|
178
|
+
projectRoot = "";
|
|
179
|
+
targets = (
|
|
180
|
+
EBE000000000000000000007 /* App */,
|
|
181
|
+
);
|
|
182
|
+
};
|
|
183
|
+
/* End PBXProject section */
|
|
184
|
+
|
|
185
|
+
/* Begin PBXResourcesBuildPhase section */
|
|
186
|
+
EBE000000000000000000010 /* Resources */ = {
|
|
187
|
+
isa = PBXResourcesBuildPhase;
|
|
188
|
+
buildActionMask = 2147483647;
|
|
189
|
+
files = (
|
|
190
|
+
EBE000000000000000000036 /* everywhere.json in Resources */,
|
|
191
|
+
EBE000000000000000000037 /* path-configuration.json in Resources */,
|
|
192
|
+
EBE000000000000000000038 /* Assets.xcassets in Resources */,
|
|
193
|
+
EBE000000000000000000039 /* Base in Resources */,
|
|
194
|
+
);
|
|
195
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
196
|
+
};
|
|
197
|
+
/* End PBXResourcesBuildPhase section */
|
|
198
|
+
|
|
199
|
+
/* Begin PBXSourcesBuildPhase section */
|
|
200
|
+
EBE000000000000000000008 /* Sources */ = {
|
|
201
|
+
isa = PBXSourcesBuildPhase;
|
|
202
|
+
buildActionMask = 2147483647;
|
|
203
|
+
files = (
|
|
204
|
+
EBE000000000000000000031 /* AppDelegate.swift in Sources */,
|
|
205
|
+
EBE000000000000000000032 /* SceneDelegate.swift in Sources */,
|
|
206
|
+
EBE000000000000000000033 /* EverywhereConfig.swift in Sources */,
|
|
207
|
+
EBE000000000000000000034 /* ErrorViewController.swift in Sources */,
|
|
208
|
+
EBE000000000000000000035 /* NotificationComponent.swift in Sources */,
|
|
209
|
+
EBE000000000000000000044 /* HapticsComponent.swift in Sources */,
|
|
210
|
+
EBE000000000000000000046 /* PermissionsComponent.swift in Sources */,
|
|
211
|
+
EBE000000000000000000058 /* BiometricsComponent.swift in Sources */,
|
|
212
|
+
EBE000000000000000000060 /* StorageComponent.swift in Sources */,
|
|
213
|
+
EBE000000000000000000063 /* EverywhereHost.swift in Sources */,
|
|
214
|
+
);
|
|
215
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
216
|
+
};
|
|
217
|
+
/* End PBXSourcesBuildPhase section */
|
|
218
|
+
|
|
219
|
+
/* Begin PBXVariantGroup section */
|
|
220
|
+
EBE000000000000000000022 /* LaunchScreen.storyboard */ = {
|
|
221
|
+
isa = PBXVariantGroup;
|
|
222
|
+
children = (
|
|
223
|
+
EBE000000000000000000021 /* Base */,
|
|
224
|
+
);
|
|
225
|
+
name = LaunchScreen.storyboard;
|
|
226
|
+
sourceTree = "<group>";
|
|
227
|
+
};
|
|
228
|
+
/* End PBXVariantGroup section */
|
|
229
|
+
|
|
230
|
+
/* Begin XCBuildConfiguration section */
|
|
231
|
+
EBE000000000000000000051 /* Debug */ = {
|
|
232
|
+
isa = XCBuildConfiguration;
|
|
233
|
+
buildSettings = {
|
|
234
|
+
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
235
|
+
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
|
|
236
|
+
CLANG_ANALYZER_NONNULL = YES;
|
|
237
|
+
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
|
238
|
+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
|
239
|
+
CLANG_ENABLE_MODULES = YES;
|
|
240
|
+
CLANG_ENABLE_OBJC_ARC = YES;
|
|
241
|
+
CLANG_ENABLE_OBJC_WEAK = YES;
|
|
242
|
+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
243
|
+
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
244
|
+
CLANG_WARN_COMMA = YES;
|
|
245
|
+
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
246
|
+
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
|
247
|
+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
248
|
+
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
|
249
|
+
CLANG_WARN_EMPTY_BODY = YES;
|
|
250
|
+
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
251
|
+
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
252
|
+
CLANG_WARN_INT_CONVERSION = YES;
|
|
253
|
+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
254
|
+
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
|
255
|
+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
256
|
+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
257
|
+
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
|
258
|
+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
259
|
+
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
260
|
+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
261
|
+
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
|
262
|
+
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
263
|
+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
264
|
+
COPY_PHASE_STRIP = NO;
|
|
265
|
+
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
266
|
+
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
|
267
|
+
GCC_C_LANGUAGE_STANDARD = gnu17;
|
|
268
|
+
GCC_NO_COMMON_BLOCKS = YES;
|
|
269
|
+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
270
|
+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
271
|
+
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
272
|
+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
273
|
+
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
274
|
+
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
275
|
+
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
|
276
|
+
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
|
|
277
|
+
MTL_FAST_MATH = YES;
|
|
278
|
+
SDKROOT = iphoneos;
|
|
279
|
+
DEBUG_INFORMATION_FORMAT = dwarf;
|
|
280
|
+
ENABLE_TESTABILITY = YES;
|
|
281
|
+
GCC_DYNAMIC_NO_PIC = NO;
|
|
282
|
+
GCC_OPTIMIZATION_LEVEL = 0;
|
|
283
|
+
GCC_PREPROCESSOR_DEFINITIONS = (
|
|
284
|
+
"DEBUG=1",
|
|
285
|
+
"$(inherited)",
|
|
286
|
+
);
|
|
287
|
+
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
|
288
|
+
ONLY_ACTIVE_ARCH = YES;
|
|
289
|
+
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
|
|
290
|
+
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
|
291
|
+
};
|
|
292
|
+
name = Debug;
|
|
293
|
+
};
|
|
294
|
+
EBE000000000000000000052 /* Release */ = {
|
|
295
|
+
isa = XCBuildConfiguration;
|
|
296
|
+
buildSettings = {
|
|
297
|
+
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
298
|
+
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
|
|
299
|
+
CLANG_ANALYZER_NONNULL = YES;
|
|
300
|
+
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
|
301
|
+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
|
|
302
|
+
CLANG_ENABLE_MODULES = YES;
|
|
303
|
+
CLANG_ENABLE_OBJC_ARC = YES;
|
|
304
|
+
CLANG_ENABLE_OBJC_WEAK = YES;
|
|
305
|
+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
306
|
+
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
307
|
+
CLANG_WARN_COMMA = YES;
|
|
308
|
+
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
309
|
+
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
|
310
|
+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
311
|
+
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
|
312
|
+
CLANG_WARN_EMPTY_BODY = YES;
|
|
313
|
+
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
314
|
+
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
315
|
+
CLANG_WARN_INT_CONVERSION = YES;
|
|
316
|
+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
317
|
+
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
|
318
|
+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
319
|
+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
320
|
+
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
|
321
|
+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
322
|
+
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
323
|
+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
324
|
+
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
|
325
|
+
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
326
|
+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
327
|
+
COPY_PHASE_STRIP = NO;
|
|
328
|
+
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
329
|
+
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
|
330
|
+
GCC_C_LANGUAGE_STANDARD = gnu17;
|
|
331
|
+
GCC_NO_COMMON_BLOCKS = YES;
|
|
332
|
+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
333
|
+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
334
|
+
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
335
|
+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
336
|
+
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
337
|
+
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
338
|
+
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
|
339
|
+
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
|
|
340
|
+
MTL_FAST_MATH = YES;
|
|
341
|
+
SDKROOT = iphoneos;
|
|
342
|
+
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
|
343
|
+
ENABLE_NS_ASSERTIONS = NO;
|
|
344
|
+
MTL_ENABLE_DEBUG_INFO = NO;
|
|
345
|
+
SWIFT_COMPILATION_MODE = wholemodule;
|
|
346
|
+
VALIDATE_PRODUCT = YES;
|
|
347
|
+
};
|
|
348
|
+
name = Release;
|
|
349
|
+
};
|
|
350
|
+
EBE000000000000000000053 /* Debug */ = {
|
|
351
|
+
isa = XCBuildConfiguration;
|
|
352
|
+
baseConfigurationReference = EBE000000000000000000011 /* App.xcconfig */;
|
|
353
|
+
buildSettings = {
|
|
354
|
+
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
|
355
|
+
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
|
356
|
+
CODE_SIGN_STYLE = Automatic;
|
|
357
|
+
GENERATE_INFOPLIST_FILE = YES;
|
|
358
|
+
INFOPLIST_FILE = App/Info.plist;
|
|
359
|
+
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
|
360
|
+
INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
|
|
361
|
+
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
|
362
|
+
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = UIInterfaceOrientationPortrait;
|
|
363
|
+
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
|
364
|
+
LD_RUNPATH_SEARCH_PATHS = (
|
|
365
|
+
"$(inherited)",
|
|
366
|
+
"@executable_path/Frameworks",
|
|
367
|
+
);
|
|
368
|
+
PRODUCT_NAME = App;
|
|
369
|
+
SWIFT_EMIT_LOC_STRINGS = YES;
|
|
370
|
+
SWIFT_VERSION = 5.0;
|
|
371
|
+
TARGETED_DEVICE_FAMILY = "1,2";
|
|
372
|
+
};
|
|
373
|
+
name = Debug;
|
|
374
|
+
};
|
|
375
|
+
EBE000000000000000000054 /* Release */ = {
|
|
376
|
+
isa = XCBuildConfiguration;
|
|
377
|
+
baseConfigurationReference = EBE000000000000000000011 /* App.xcconfig */;
|
|
378
|
+
buildSettings = {
|
|
379
|
+
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
|
380
|
+
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
|
381
|
+
CODE_SIGN_STYLE = Automatic;
|
|
382
|
+
GENERATE_INFOPLIST_FILE = YES;
|
|
383
|
+
INFOPLIST_FILE = App/Info.plist;
|
|
384
|
+
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
|
385
|
+
INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
|
|
386
|
+
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
|
387
|
+
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = UIInterfaceOrientationPortrait;
|
|
388
|
+
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
|
389
|
+
LD_RUNPATH_SEARCH_PATHS = (
|
|
390
|
+
"$(inherited)",
|
|
391
|
+
"@executable_path/Frameworks",
|
|
392
|
+
);
|
|
393
|
+
PRODUCT_NAME = App;
|
|
394
|
+
SWIFT_EMIT_LOC_STRINGS = YES;
|
|
395
|
+
SWIFT_VERSION = 5.0;
|
|
396
|
+
TARGETED_DEVICE_FAMILY = "1,2";
|
|
397
|
+
};
|
|
398
|
+
name = Release;
|
|
399
|
+
};
|
|
400
|
+
/* End XCBuildConfiguration section */
|
|
401
|
+
|
|
402
|
+
/* Begin XCConfigurationList section */
|
|
403
|
+
EBE000000000000000000055 /* Build configuration list for PBXProject "App" */ = {
|
|
404
|
+
isa = XCConfigurationList;
|
|
405
|
+
buildConfigurations = (
|
|
406
|
+
EBE000000000000000000051 /* Debug */,
|
|
407
|
+
EBE000000000000000000052 /* Release */,
|
|
408
|
+
);
|
|
409
|
+
defaultConfigurationIsVisible = 0;
|
|
410
|
+
defaultConfigurationName = Release;
|
|
411
|
+
};
|
|
412
|
+
EBE000000000000000000056 /* Build configuration list for PBXNativeTarget "App" */ = {
|
|
413
|
+
isa = XCConfigurationList;
|
|
414
|
+
buildConfigurations = (
|
|
415
|
+
EBE000000000000000000053 /* Debug */,
|
|
416
|
+
EBE000000000000000000054 /* Release */,
|
|
417
|
+
);
|
|
418
|
+
defaultConfigurationIsVisible = 0;
|
|
419
|
+
defaultConfigurationName = Release;
|
|
420
|
+
};
|
|
421
|
+
/* End XCConfigurationList section */
|
|
422
|
+
|
|
423
|
+
/* Begin XCLocalSwiftPackageReference section */
|
|
424
|
+
EBE000000000000000000064 /* XCLocalSwiftPackageReference "NativeExtensions" */ = {
|
|
425
|
+
isa = XCLocalSwiftPackageReference;
|
|
426
|
+
relativePath = NativeExtensions;
|
|
427
|
+
};
|
|
428
|
+
/* End XCLocalSwiftPackageReference section */
|
|
429
|
+
|
|
430
|
+
/* Begin XCRemoteSwiftPackageReference section */
|
|
431
|
+
EBE000000000000000000041 /* XCRemoteSwiftPackageReference "hotwire-native-ios" */ = {
|
|
432
|
+
isa = XCRemoteSwiftPackageReference;
|
|
433
|
+
repositoryURL = "https://github.com/afomera/hotwire-native-ios";
|
|
434
|
+
requirement = {
|
|
435
|
+
branch = "fix/more-menu-navigator";
|
|
436
|
+
kind = branch;
|
|
437
|
+
};
|
|
438
|
+
};
|
|
439
|
+
/* End XCRemoteSwiftPackageReference section */
|
|
440
|
+
|
|
441
|
+
/* Begin XCSwiftPackageProductDependency section */
|
|
442
|
+
EBE000000000000000000042 /* HotwireNative */ = {
|
|
443
|
+
isa = XCSwiftPackageProductDependency;
|
|
444
|
+
package = EBE000000000000000000041 /* XCRemoteSwiftPackageReference "hotwire-native-ios" */;
|
|
445
|
+
productName = HotwireNative;
|
|
446
|
+
};
|
|
447
|
+
EBE000000000000000000065 /* NativeExtensions */ = {
|
|
448
|
+
isa = XCSwiftPackageProductDependency;
|
|
449
|
+
productName = NativeExtensions;
|
|
450
|
+
};
|
|
451
|
+
/* End XCSwiftPackageProductDependency section */
|
|
452
|
+
};
|
|
453
|
+
rootObject = EBE000000000000000000001 /* Project object */;
|
|
454
|
+
}
|
data/support/mobile/ios/App.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"pins" : [
|
|
3
|
+
{
|
|
4
|
+
"identity" : "hotwire-native-ios",
|
|
5
|
+
"kind" : "remoteSourceControl",
|
|
6
|
+
"location" : "https://github.com/afomera/hotwire-native-ios",
|
|
7
|
+
"state" : {
|
|
8
|
+
"branch" : "fix/more-menu-navigator",
|
|
9
|
+
"revision" : "915194a338d0a4c686ee43ace7450b3aa0e885c3"
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
],
|
|
13
|
+
"version" : 3
|
|
14
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<Scheme
|
|
3
|
+
LastUpgradeVersion = "1530"
|
|
4
|
+
version = "1.7">
|
|
5
|
+
<BuildAction
|
|
6
|
+
parallelizeBuildables = "YES"
|
|
7
|
+
buildImplicitDependencies = "YES">
|
|
8
|
+
<BuildActionEntries>
|
|
9
|
+
<BuildActionEntry
|
|
10
|
+
buildForTesting = "YES"
|
|
11
|
+
buildForRunning = "YES"
|
|
12
|
+
buildForProfiling = "YES"
|
|
13
|
+
buildForArchiving = "YES"
|
|
14
|
+
buildForAnalyzing = "YES">
|
|
15
|
+
<BuildableReference
|
|
16
|
+
BuildableIdentifier = "primary"
|
|
17
|
+
BlueprintIdentifier = "EBE000000000000000000007"
|
|
18
|
+
BuildableName = "App.app"
|
|
19
|
+
BlueprintName = "App"
|
|
20
|
+
ReferencedContainer = "container:App.xcodeproj">
|
|
21
|
+
</BuildableReference>
|
|
22
|
+
</BuildActionEntry>
|
|
23
|
+
</BuildActionEntries>
|
|
24
|
+
</BuildAction>
|
|
25
|
+
<TestAction
|
|
26
|
+
buildConfiguration = "Debug"
|
|
27
|
+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
28
|
+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
29
|
+
shouldUseLaunchSchemeArgsEnv = "YES"
|
|
30
|
+
shouldAutocreateTestPlan = "YES">
|
|
31
|
+
</TestAction>
|
|
32
|
+
<LaunchAction
|
|
33
|
+
buildConfiguration = "Debug"
|
|
34
|
+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
35
|
+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
36
|
+
launchStyle = "0"
|
|
37
|
+
useCustomWorkingDirectory = "NO"
|
|
38
|
+
ignoresPersistentStateOnLaunch = "NO"
|
|
39
|
+
debugDocumentVersioning = "YES"
|
|
40
|
+
debugServiceExtension = "internal"
|
|
41
|
+
allowLocationSimulation = "YES">
|
|
42
|
+
<BuildableProductRunnable
|
|
43
|
+
runnableDebuggingMode = "0">
|
|
44
|
+
<BuildableReference
|
|
45
|
+
BuildableIdentifier = "primary"
|
|
46
|
+
BlueprintIdentifier = "EBE000000000000000000007"
|
|
47
|
+
BuildableName = "App.app"
|
|
48
|
+
BlueprintName = "App"
|
|
49
|
+
ReferencedContainer = "container:App.xcodeproj">
|
|
50
|
+
</BuildableReference>
|
|
51
|
+
</BuildableProductRunnable>
|
|
52
|
+
</LaunchAction>
|
|
53
|
+
<ProfileAction
|
|
54
|
+
buildConfiguration = "Release"
|
|
55
|
+
shouldUseLaunchSchemeArgsEnv = "YES"
|
|
56
|
+
savedToolIdentifier = ""
|
|
57
|
+
useCustomWorkingDirectory = "NO"
|
|
58
|
+
debugDocumentVersioning = "YES">
|
|
59
|
+
<BuildableProductRunnable
|
|
60
|
+
runnableDebuggingMode = "0">
|
|
61
|
+
<BuildableReference
|
|
62
|
+
BuildableIdentifier = "primary"
|
|
63
|
+
BlueprintIdentifier = "EBE000000000000000000007"
|
|
64
|
+
BuildableName = "App.app"
|
|
65
|
+
BlueprintName = "App"
|
|
66
|
+
ReferencedContainer = "container:App.xcodeproj">
|
|
67
|
+
</BuildableReference>
|
|
68
|
+
</BuildableProductRunnable>
|
|
69
|
+
</ProfileAction>
|
|
70
|
+
<AnalyzeAction
|
|
71
|
+
buildConfiguration = "Debug">
|
|
72
|
+
</AnalyzeAction>
|
|
73
|
+
<ArchiveAction
|
|
74
|
+
buildConfiguration = "Release"
|
|
75
|
+
revealArchiveInOrganizer = "YES">
|
|
76
|
+
</ArchiveAction>
|
|
77
|
+
</Scheme>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// swift-tools-version:5.9
|
|
2
|
+
// The app's native Swift Package dependencies. This checked-in copy is the
|
|
3
|
+
// empty default so the raw template builds unchanged; `every build` overwrites
|
|
4
|
+
// it from config/everywhere.yml (native.ios.packages) — and rewrites
|
|
5
|
+
// Sources/NativeExtensions/Exports.swift to re-export each product, so the app
|
|
6
|
+
// target's native/ios code can reach them via `import NativeExtensions`.
|
|
7
|
+
//
|
|
8
|
+
// native:
|
|
9
|
+
// ios:
|
|
10
|
+
// packages:
|
|
11
|
+
// - url: https://github.com/simibac/ConfettiSwiftUI
|
|
12
|
+
// from: "1.1.0" # or exact: / branch: / revision:
|
|
13
|
+
// products: [ConfettiSwiftUI] # optional; defaults to the repo name
|
|
14
|
+
import PackageDescription
|
|
15
|
+
|
|
16
|
+
let package = Package(
|
|
17
|
+
name: "NativeExtensions",
|
|
18
|
+
platforms: [.iOS(.v15)],
|
|
19
|
+
products: [
|
|
20
|
+
.library(name: "NativeExtensions", targets: ["NativeExtensions"])
|
|
21
|
+
],
|
|
22
|
+
dependencies: [],
|
|
23
|
+
targets: [
|
|
24
|
+
.target(name: "NativeExtensions")
|
|
25
|
+
]
|
|
26
|
+
)
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// Re-exports the packages pinned under native.ios.packages so the app target's
|
|
2
|
+
// native/ios code can use them with a single `import NativeExtensions`. This
|
|
3
|
+
// checked-in copy is the empty default; `every build` rewrites it with one
|
|
4
|
+
// `@_exported import <Product>` line per pinned product. Do not edit — declare
|
|
5
|
+
// packages under native.ios.packages in config/everywhere.yml instead.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# RubyEverywhere iOS Shell Template
|
|
2
|
+
|
|
3
|
+
A canonical Hotwire Native iOS shell that wraps a deployed Ruby web app (remote
|
|
4
|
+
URL). The RubyEverywhere CLI stamps a copy of this directory per app — the
|
|
5
|
+
template itself is **never edited per-app**.
|
|
6
|
+
|
|
7
|
+
## Freeze rules
|
|
8
|
+
|
|
9
|
+
`App.xcodeproj/project.pbxproj` is written once and frozen. Its object UUIDs
|
|
10
|
+
(`EBE0…NN`) never change. When `every build --target ios-*` stamps a copy of
|
|
11
|
+
this template, it overwrites **exactly** these files and nothing else:
|
|
12
|
+
|
|
13
|
+
1. `App/App.xcconfig` — bundle id, versions, display name, team
|
|
14
|
+
2. `App/Resources/everywhere.json` — runtime config (remote URL, entry path, colors)
|
|
15
|
+
3. `App/Resources/path-configuration.json` — baked rules + `settings.tabs`
|
|
16
|
+
(`Config#path_configuration_json("ios")`); the same document is served live
|
|
17
|
+
at `/everywhere/ios_v1.json` by the gem's `MobileConfigEndpoint`, which the
|
|
18
|
+
shell loads as its second path-configuration source
|
|
19
|
+
4. `App/Assets.xcassets/AppIcon.appiconset/AppIcon.png` — the app icon (1024×1024 opaque PNG)
|
|
20
|
+
5. *(optionally)* `App/Assets.xcassets/AccentColor.colorset/Contents.json` and
|
|
21
|
+
`App/Assets.xcassets/LaunchBackground.colorset/Contents.json` — brand colors
|
|
22
|
+
|
|
23
|
+
Everything the CLI needs to vary per app flows through those files. The product
|
|
24
|
+
is always `App.app` (`PRODUCT_NAME = App` is hardcoded); identity comes from the
|
|
25
|
+
xcconfig (`PRODUCT_BUNDLE_IDENTIFIER`, `MARKETING_VERSION`,
|
|
26
|
+
`CURRENT_PROJECT_VERSION`, `INFOPLIST_KEY_CFBundleDisplayName`,
|
|
27
|
+
`DEVELOPMENT_TEAM`).
|
|
28
|
+
|
|
29
|
+
**Structural changes** (new source files, build settings, resources, package
|
|
30
|
+
bumps) mean deliberately editing `project.pbxproj` here in the template and
|
|
31
|
+
recommitting — never in a stamped copy.
|
|
32
|
+
|
|
33
|
+
## SPM pin policy
|
|
34
|
+
|
|
35
|
+
The project depends on one package:
|
|
36
|
+
`https://github.com/hotwired/hotwire-native-ios`, `upToNextMajorVersion` from
|
|
37
|
+
`1.3.0`. The committed
|
|
38
|
+
`App.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved` pins
|
|
39
|
+
the exact 1.3.x version used for builds; regenerating it (a deliberate act) is
|
|
40
|
+
how the pin moves.
|
|
41
|
+
|
|
42
|
+
## Building standalone
|
|
43
|
+
|
|
44
|
+
The raw template builds green with placeholder values, Simulator-only, no
|
|
45
|
+
signing:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
xcodebuild build -project App.xcodeproj -scheme App -destination 'generic/platform=iOS Simulator' CODE_SIGNING_ALLOWED=NO
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
The shared `App` scheme is required for headless `xcodebuild` — do not delete it.
|
|
52
|
+
|
|
53
|
+
## Dev loop
|
|
54
|
+
|
|
55
|
+
The shell is remote-mode only (`remote_url` in everywhere.json). For local
|
|
56
|
+
development against `http://127.0.0.1:<port>`, launch with an override — the
|
|
57
|
+
Info.plist already allows local networking (`NSAllowsLocalNetworking`, not
|
|
58
|
+
`NSAllowsArbitraryLoads`):
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
xcrun simctl launch --terminate-running-process booted com.rubyeverywhere.app \
|
|
62
|
+
SIMCTL_CHILD_EVERYWHERE_DEV_URL=http://127.0.0.1:3000
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
(`simctl` forwards `SIMCTL_CHILD_*` variables to the app process, where
|
|
66
|
+
`EverywhereConfig.rootURL` reads `EVERYWHERE_DEV_URL`.)
|