diff --git a/.redbreast.yml b/.redbreast.yml deleted file mode 100644 index e31b199..0000000 --- a/.redbreast.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -:language: swift -:bundles: -- :name: Sentinel - :reference: ".sentinel" - :assetsSearchPath: "*.xcassets" - :outputSourcePathImages: "Sentinel/Classes/Core/UIImageExtension.swift" -:app_name: Sentinel diff --git a/Example/Podfile.lock b/Example/Podfile.lock index 9c2df75..3dbbb64 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,29 +1,17 @@ PODS: - - Sentinel (0.9.0): - - Sentinel/Default (= 0.9.0) - - Sentinel/Core (0.9.0) - - Sentinel/CustomInfo (0.9.0): + - Sentinel (1.0.0): + - Sentinel/Default (= 1.0.0) + - Sentinel/Core (1.0.0) + - Sentinel/CustomLocation (1.0.0): - Sentinel/Core - - Sentinel/CustomLocation (0.9.0): + - Sentinel/Default (1.0.0): - Sentinel/Core - - Sentinel/Default (0.9.0): - - Sentinel/Core - - Sentinel/CustomInfo - Sentinel/CustomLocation - - Sentinel/GeneralInfo - - Sentinel/OptionSwitch - - Sentinel/PerformanceInfo - Sentinel/TextEditing - Sentinel/UserDefaults - - Sentinel/GeneralInfo (0.9.0): - - Sentinel/CustomInfo - - Sentinel/OptionSwitch (0.9.0): - - Sentinel/Core - - Sentinel/PerformanceInfo (0.9.0): - - Sentinel/Core - - Sentinel/TextEditing (0.9.0): + - Sentinel/TextEditing (1.0.0): - Sentinel/Core - - Sentinel/UserDefaults (0.9.0): + - Sentinel/UserDefaults (1.0.0): - Sentinel/Core DEPENDENCIES: @@ -34,8 +22,8 @@ EXTERNAL SOURCES: :path: "../" SPEC CHECKSUMS: - Sentinel: af74edfd482fda424c0a5e5736240658431dda0b + Sentinel: 520de6ff6a0d15a64eba7130ba94798c5e9d8d08 PODFILE CHECKSUM: e10a3a2088aa5a9d18babe53feee8f6ae6fbb221 -COCOAPODS: 1.10.1 +COCOAPODS: 1.11.0 diff --git a/Example/Pods/Local Podspecs/Sentinel.podspec.json b/Example/Pods/Local Podspecs/Sentinel.podspec.json index bb3b5f3..5bf961b 100644 --- a/Example/Pods/Local Podspecs/Sentinel.podspec.json +++ b/Example/Pods/Local Podspecs/Sentinel.podspec.json @@ -1,9 +1,9 @@ { "name": "Sentinel", - "version": "0.9.0", + "version": "1.0.0", "summary": "Developer's toolbox for debugging applications", "description": "Sentinel is a simple library which gives developers a possibility to configure one entry point for every debug tool.\nThe idea of Sentinel is to give ability to developers to configure screen with multiple debug tools which are available via some event (e.g. shake, notification).", - "homepage": "https://github.com/infinum/ios-toolbox", + "homepage": "https://github.com/infinum/ios-sentinel", "license": { "type": "MIT", "file": "LICENSE" @@ -14,14 +14,20 @@ "Nikola Majcen": "nikola.majcen@infinum.com" }, "source": { - "git": "https://github.com/infinum/ios-toolbox.git", - "tag": "0.9.0" + "git": "https://github.com/infinum/ios-sentinel.git", + "tag": "1.0.0" }, "requires_arc": true, "platforms": { "ios": "10.0" }, "swift_versions": "5.0", + "resource_bundles": { + "Sentinel": [ + "Sentinel/Assets/**/*" + ] + }, + "resources": "Sentinel/Assets/**/*.{pdf}", "default_subspecs": "Default", "subspecs": [ { @@ -47,24 +53,6 @@ ] } }, - { - "name": "CustomInfo", - "source_files": "Sentinel/Classes/CustomInfo/**/*", - "dependencies": { - "Sentinel/Core": [ - - ] - } - }, - { - "name": "GeneralInfo", - "source_files": "Sentinel/Classes/GeneralInfo/**/*", - "dependencies": { - "Sentinel/CustomInfo": [ - - ] - } - }, { "name": "TextEditing", "source_files": "Sentinel/Classes/TextEditing/**/*", @@ -74,24 +62,6 @@ ] } }, - { - "name": "OptionSwitch", - "source_files": "Sentinel/Classes/OptionSwitch/**/*", - "dependencies": { - "Sentinel/Core": [ - - ] - } - }, - { - "name": "PerformanceInfo", - "source_files": "Sentinel/Classes/PerformanceInfo/**/*", - "dependencies": { - "Sentinel/Core": [ - - ] - } - }, { "name": "Loggie", "source_files": "Sentinel/Classes/Loggie/**/*", @@ -116,15 +86,6 @@ ] } }, - { - "name": "AnalyticsCollector", - "source_files": "Sentinel/Classes/AnalyticsCollector/**/*", - "dependencies": { - "Sentinel/Core": [ - - ] - } - }, { "name": "Default", "dependencies": { @@ -136,21 +97,9 @@ ], "Sentinel/CustomLocation": [ - ], - "Sentinel/CustomInfo": [ - - ], - "Sentinel/GeneralInfo": [ - ], "Sentinel/TextEditing": [ - ], - "Sentinel/OptionSwitch": [ - - ], - "Sentinel/PerformanceInfo": [ - ] } } diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock index 9c2df75..3dbbb64 100644 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -1,29 +1,17 @@ PODS: - - Sentinel (0.9.0): - - Sentinel/Default (= 0.9.0) - - Sentinel/Core (0.9.0) - - Sentinel/CustomInfo (0.9.0): + - Sentinel (1.0.0): + - Sentinel/Default (= 1.0.0) + - Sentinel/Core (1.0.0) + - Sentinel/CustomLocation (1.0.0): - Sentinel/Core - - Sentinel/CustomLocation (0.9.0): + - Sentinel/Default (1.0.0): - Sentinel/Core - - Sentinel/Default (0.9.0): - - Sentinel/Core - - Sentinel/CustomInfo - Sentinel/CustomLocation - - Sentinel/GeneralInfo - - Sentinel/OptionSwitch - - Sentinel/PerformanceInfo - Sentinel/TextEditing - Sentinel/UserDefaults - - Sentinel/GeneralInfo (0.9.0): - - Sentinel/CustomInfo - - Sentinel/OptionSwitch (0.9.0): - - Sentinel/Core - - Sentinel/PerformanceInfo (0.9.0): - - Sentinel/Core - - Sentinel/TextEditing (0.9.0): + - Sentinel/TextEditing (1.0.0): - Sentinel/Core - - Sentinel/UserDefaults (0.9.0): + - Sentinel/UserDefaults (1.0.0): - Sentinel/Core DEPENDENCIES: @@ -34,8 +22,8 @@ EXTERNAL SOURCES: :path: "../" SPEC CHECKSUMS: - Sentinel: af74edfd482fda424c0a5e5736240658431dda0b + Sentinel: 520de6ff6a0d15a64eba7130ba94798c5e9d8d08 PODFILE CHECKSUM: e10a3a2088aa5a9d18babe53feee8f6ae6fbb221 -COCOAPODS: 1.10.1 +COCOAPODS: 1.11.0 diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index a6d6bc8..790eafc 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -7,186 +7,201 @@ objects = { /* Begin PBXBuildFile section */ - 055F29FFE4A09604385DB65DC50C4FC0 /* ToolTableItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27D4DA510D59245E62D329CCC4EBC5CB /* ToolTableItem.swift */; }; - 0B76DEBBB8F9EDEE88E8CEA01845A37B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EAB6F611E86A4758835A715E4B4184F6 /* Foundation.framework */; }; - 10D5C1F292E3041A08D55DD47AE3AB18 /* OptionSwitchTableViewCell.xib in Sources */ = {isa = PBXBuildFile; fileRef = B3C98212651E92D017277ABD75B4B579 /* OptionSwitchTableViewCell.xib */; }; - 17B6562027989B2F6073F13676DEFF01 /* CLLocationManager+CustomLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B4C2656C379879F07C9C0E28848BECF /* CLLocationManager+CustomLocation.swift */; }; - 1B638C86E40904DD488569AE39AE6FB9 /* ToolTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59BE42473F05E6399B3EDC9F3B1859C9 /* ToolTable.swift */; }; - 258E5BBCE4FF82B5001D102397E59857 /* CustomLocationProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11315814FF905E8C1CD967BFA8FCDAD8 /* CustomLocationProvider.swift */; }; - 2C62AF6675E94A9C9CD330D8AC432946 /* NavigationToolTableCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B09DFD777E3BA9745AC1A2102E96B373 /* NavigationToolTableCell.swift */; }; - 2E4E5144558E979AD14DCE6ED2887BD7 /* UserDefaultsTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F29EC6D04B671910FA914216382157 /* UserDefaultsTool.swift */; }; - 2E81C360B6639BD7C6714B49DAC91355 /* SentinelUIKitExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDF6396094385945F6BF336E3F5FAC93 /* SentinelUIKitExtensions.swift */; }; - 2FDE0ECC9459E4BD800914542581365E /* MemoryInfoProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = D364422650E36C9CCF8117A92EE24AA3 /* MemoryInfoProvider.swift */; }; - 30A5B5EC9D36FCAAFC6964003F31E321 /* TextEditing.storyboard in Sources */ = {isa = PBXBuildFile; fileRef = 64442341A7E9370170D203C10FFEB151 /* TextEditing.storyboard */; }; - 31F7F7F60A7F9F7F97CFBBEC9675BA3D /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D245E0514AAC1A2B9A6D5EA2F383E90F /* UIKit.framework */; }; - 3689FABCF25D189FFB952726E80CE7CF /* UserDefaults.storyboard in Sources */ = {isa = PBXBuildFile; fileRef = C0052669424702B19A58C4C41CBA717C /* UserDefaults.storyboard */; }; - 3712896F2705E91400E19209 /* assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3712896E2705E91400E19209 /* assets.xcassets */; }; - 371289732705FC5A00E19209 /* UIImage+Resize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 371289722705FC5A00E19209 /* UIImage+Resize.swift */; }; - 377FD4842705CA590006AD3F /* DeviceTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 377FD4832705CA590006AD3F /* DeviceTool.swift */; }; - 3784D1C62703433000C7C827 /* SentinelTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3784D1C52703433000C7C827 /* SentinelTabBarController.swift */; }; - 37D35DCB2707020900AF91C2 /* ViewControllerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37D35DCA2707020900AF91C2 /* ViewControllerType.swift */; }; - 37D35DCD27070D8900AF91C2 /* UIImageExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37D35DCC27070D8900AF91C2 /* UIImageExtension.swift */; }; - 43DEAB0CC02165608DFF8A8B484BD365 /* CPUInfoProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 109874CDAB1885BAB71C5ABCBB9B24D1 /* CPUInfoProvider.swift */; }; - 445BC3DA99C0D4E492325038811F11D6 /* Sentinel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1798190E3F9B3070607FDE53B4341AC /* Sentinel.swift */; }; - 453C69B18384D1FD4749C62BE8185896 /* Pods-Sentinel_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CC63C249594FFB7BA2A29447E90165F /* Pods-Sentinel_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5162A6D204BFD8448D586C63B648D32F /* ToolTableSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5BEFEC9F8877CC09987941786189103 /* ToolTableSection.swift */; }; - 5BC2C8E60F49C240F555CB4383ABDC86 /* PerformanceInfoItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDD07A762A7D9A45FD2AE924F79E1908 /* PerformanceInfoItem.swift */; }; - 5DF8D6472EC24F103FD4E5E8D6B06E15 /* DetailToolTableCell.xib in Sources */ = {isa = PBXBuildFile; fileRef = 66257AB99BFB97A7175694B0318219B9 /* DetailToolTableCell.xib */; }; - 6B23CEE13784B4671A16023145651B81 /* Sentinel.storyboard in Sources */ = {isa = PBXBuildFile; fileRef = C6C8ABDCEBEF42DA4B89F1CE02572D5B /* Sentinel.storyboard */; }; - 72AE478DCAC49054D3A8FAF003DB9F40 /* SentinelInternal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0478B1E8C24818F9EF85F8881B92252B /* SentinelInternal.swift */; }; - 77C12C8C5B3CF688808055546CE9233D /* Pods-Sentinel_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 89C6FAA08483FA46AF62E0083A4A1ECE /* Pods-Sentinel_Example-dummy.m */; }; - 782F6C65FE8C32B94BA11C25393F73D3 /* Sentinel-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = ABCA0BE9A8D5AE19A0FF6D7F6EA71F31 /* Sentinel-dummy.m */; }; - 7E4BB6F555BE518B00860D94CB5E7692 /* PerformanceTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A71D9434333ABF8A48B52D9B569AABB /* PerformanceTool.swift */; }; - 811F3F921077070C23AA5FD542DD4EBD /* SentinelTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91C29F4D3F53382DA8A0AE8562BA0246 /* SentinelTableViewController.swift */; }; - 837CB27FA0A7CF74EA47633CE797DA1A /* PermissionsTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = A779FA318D31A92BCB4935373EB959FD /* PermissionsTool.swift */; }; - 8BAD10621214A84E321415B8489C8D3F /* DetailToolTableCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = E73D1F4DDB5FF4D7454BB82EE7922216 /* DetailToolTableCell.swift */; }; - 8BFDA1B37E1731C4C6A026E2D3145951 /* NavigationToolTableCell.xib in Sources */ = {isa = PBXBuildFile; fileRef = D02D3760817E75AA5CACC9AEAA4A1637 /* NavigationToolTableCell.xib */; }; - 960018D0E71BE7A89EBF52633FBDEB5C /* ApplicationTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E4D95B24611928DEB2809DCD6C7A65E /* ApplicationTool.swift */; }; - 972DF9BBC874D5003A33BC24EFCC665B /* PerformanceInfo.storyboard in Sources */ = {isa = PBXBuildFile; fileRef = D4D31D0ADD988E9F73A98960720A9AD8 /* PerformanceInfo.storyboard */; }; - A5BEEA9485999AD6DC7AAD1263B73A04 /* CustomLocationTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAFC4E246EF8B766433A2D6827983019 /* CustomLocationTool.swift */; }; - A9A283357528BA5214C8C416BB715E86 /* OptionSwitchItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B16BFCFAA23A6B32D113275DA3891FE /* OptionSwitchItem.swift */; }; - AA1EB183A487C608F307D59CDC8CF62C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EAB6F611E86A4758835A715E4B4184F6 /* Foundation.framework */; }; - ACBB2D36F4AA38CC9FBC2060D24AFF3D /* Pods-Sentinel_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3737F3A9AFF9607DB0AEDEEEBAB55101 /* Pods-Sentinel_Tests-dummy.m */; }; - B7196500922E8805BD9D1DF21E66653B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EAB6F611E86A4758835A715E4B4184F6 /* Foundation.framework */; }; - BFF73ABAF4F5C239FAD801AC7D7112E7 /* CustomLocationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DC3F5227EF9208DF8DD64E11B734C31 /* CustomLocationViewController.swift */; }; - C08C01A9ED38630D55A2DD21D4FD4F9A /* TextEditingTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A5A4FEBD0D7379DC32EC081240FB354 /* TextEditingTool.swift */; }; - C4F51FC2EBDC16868E83D1449614BD09 /* PerformanceInfoTableViewCell.xib in Sources */ = {isa = PBXBuildFile; fileRef = 09BA84116F6D6D4C6C03B2ECA1C85C5E /* PerformanceInfoTableViewCell.xib */; }; - CB19C9BCCEC59C92FC0AA10992CEA644 /* SystemInfoProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA7D1163B3C6CB33253565CDD48B02BA /* SystemInfoProvider.swift */; }; - CCB4A5062B1860D651B947C588054554 /* UserDefaultsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D4185532AC9601D568EDC2AED4BC963 /* UserDefaultsViewController.swift */; }; - CEC9C3F8B9E32E8618D0D81416E426FE /* Tool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7844DC91CAF7100B5CF6EA49CADCF9B7 /* Tool.swift */; }; - D0BF0D63B845BC00E5A8B4E8A684F0AE /* Pods-Sentinel_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D3908B2A61F0DD8BEE4E68CA7C472C70 /* Pods-Sentinel_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA86A9DB641093861B74BDD084E1A722 /* TextEditingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CC4F02A3BB946569A4A53595A1B2065 /* TextEditingViewController.swift */; }; - DC4EF9FD4BBFF8E8BF072B26B590AB9E /* OptionSwitchTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CA3EFBE620BB521963B4CC4F1C1F96D /* OptionSwitchTableViewCell.swift */; }; - E632399CC240CBDA518BC15304EF400B /* SourceScreenProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32D68E09B53EBF4BF2CC6C994FE948A4 /* SourceScreenProvider.swift */; }; - E7C5F6C19A95A212C06F852DBF11EB86 /* Trigger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 460EABEAE5E3AE6EF071BAD74E8595A3 /* Trigger.swift */; }; - E8E6D4660B6D8CD2007F10ADF92228E3 /* CustomInfoTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 629DB4B62FA95FED8FB6337DD602540D /* CustomInfoTool.swift */; }; - F6D90AFA186B21D231E5723DD86AF442 /* Sentinel-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 196588FDB3155CB7A95618ECF17AEAD3 /* Sentinel-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FB320894038652D3859ED5E758F96986 /* CustomLocation.storyboard in Sources */ = {isa = PBXBuildFile; fileRef = 4AAD242513970EE40C40BA3E6999E731 /* CustomLocation.storyboard */; }; - FBE2AF072AF2AD7F4CE2F369AC2A7DAB /* PerformanceInfoTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9ACD16744845C8397B93B2F6E4398E7F /* PerformanceInfoTableViewCell.swift */; }; + 003D357A71BD4884CF20A7B738819A11 /* Trigger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5AE28E4EBBFD8E6898484581C19D720F /* Trigger.swift */; }; + 029609BE2884CE5E611F1C11832C47D5 /* UIImage+Bundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = C86DF43DD95CC4B9A5BADFD1E95C42AF /* UIImage+Bundle.swift */; }; + 0B047CBE939F9EC5CACAE3AF9C22070D /* OptionSwitchTableViewCell.xib in Sources */ = {isa = PBXBuildFile; fileRef = 99C6DDBA9F59461F61701349445785F8 /* OptionSwitchTableViewCell.xib */; }; + 122EF7221CB690EC2CD283BE17CD636E /* NavigationToolTableCell.xib in Sources */ = {isa = PBXBuildFile; fileRef = 7C2271BFAA0BADA608C291A4C95AABB8 /* NavigationToolTableCell.xib */; }; + 16CEC87C047D66B9FAD8D7B66991ACAB /* PerformanceInfo.storyboard in Sources */ = {isa = PBXBuildFile; fileRef = 9881229C79A4105A9C9EC186F0009F00 /* PerformanceInfo.storyboard */; }; + 1B166D11BAE125324397378B02C53240 /* CustomLocationTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 609A65653BA7E4C56144F65768E7DA0D /* CustomLocationTool.swift */; }; + 1E1B2C29B7E439ED8CE948DE783116BF /* MemoryInfoProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D2F85307E4B6B5F681A7D166F4E00D6 /* MemoryInfoProvider.swift */; }; + 2DE1993035237EA93FFD232047940B09 /* CustomLocationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 927BDB4C303572101888686686254FB7 /* CustomLocationViewController.swift */; }; + 32EFE9BB6C47D9E758A1C10CF1C46025 /* DetailToolTableCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19743A05A4D483E2A91BF27DD0644D62 /* DetailToolTableCell.swift */; }; + 35CBC186DE385AE7C5A4B5B8D07741B6 /* Sentinel-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 840D2391902DC96B2586BAFE3313F4FD /* Sentinel-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3761107927426A710050A9E8 /* UIImage+Assets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3761107827426A710050A9E8 /* UIImage+Assets.swift */; }; + 3EA3419B9BEAD640EB5C70E42A3E4C8D /* DeviceTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6DF56F6A21844A950DA501C73D7B57E /* DeviceTool.swift */; }; + 46B86E290AEED299FD5577116F78BB3E /* Pods-Sentinel_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 89C6FAA08483FA46AF62E0083A4A1ECE /* Pods-Sentinel_Example-dummy.m */; }; + 4F5893A5DBD064590A55AE9A9FF55E01 /* CPUInfoProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB7DBC2AF0F6E648994F1477ED66332A /* CPUInfoProvider.swift */; }; + 5155AD0219476468287AD74361B70E14 /* UserDefaultsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D26AB7ACBFCA7F0DE1A3DB04A998BE9A /* UserDefaultsViewController.swift */; }; + 54166381E654242B76C4D74A9C5EDB5A /* SentinelInternal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68833DC95C937BBC523E1614B694E82B /* SentinelInternal.swift */; }; + 54DF532D1A216B62C1C6C876E6E8EAF7 /* TextEditingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D678D0F16BB680CEAB23BFBC60ECCBD1 /* TextEditingViewController.swift */; }; + 575A66A33267F549708FEB69969CBE58 /* ApplicationTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14E1B110C5BE8B5066D7A10B884FCED9 /* ApplicationTool.swift */; }; + 5A3D76150331AA1378E52A7AD4469FE8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EAB6F611E86A4758835A715E4B4184F6 /* Foundation.framework */; }; + 6426150ACE2D0FF805B3BF91FEE0E39C /* PerformanceInfoTableViewCell.xib in Sources */ = {isa = PBXBuildFile; fileRef = 96092BC62D8466FC951696DDC5508D87 /* PerformanceInfoTableViewCell.xib */; }; + 7046F84E64E1D55752186737C824FF14 /* PreferencesTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041D1EB216EE101733CC9A55262A71BD /* PreferencesTool.swift */; }; + 7490CB42522F260184909160D4C6D4AC /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D245E0514AAC1A2B9A6D5EA2F383E90F /* UIKit.framework */; }; + 7AF02E0D0FE790042441806D3F3DCA9A /* CLLocationManager+CustomLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = E166CF0E9A47766C0AB03EB8B7B44452 /* CLLocationManager+CustomLocation.swift */; }; + 7E606326D999ED59E901D6F48CA6302B /* TextEditingTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = B876C3A22570FA547BCAA1734827FD62 /* TextEditingTool.swift */; }; + 7ECD821301F46404D99DFC18293CE6CC /* OptionSwitchTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C3107615E25434128F7ACB36E4A64FA /* OptionSwitchTableViewCell.swift */; }; + 7EFA41C7E30B30722E23072CE1F6186F /* SentinelUIKitExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B76F5FC2A4F7D9D944DDEBE0045861A /* SentinelUIKitExtensions.swift */; }; + 7F494F70156DD86C8201B335DAF30F8A /* SystemInfoProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12147EBFF45BE7601260929C8FAA27D1 /* SystemInfoProvider.swift */; }; + 80AB6A89970B56A683B90164F526EBA9 /* SentinelTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FD90ACD3F1A5190659CC992DF52A26F /* SentinelTableViewController.swift */; }; + 847B5467D3A663862B1A1BC5B27F35CB /* Sentinel-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E19C93C0E1B6A6DB625907B3C22E30A /* Sentinel-dummy.m */; }; + 86A2D60E22DA0C91C83B7425730AB233 /* ToolTableSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = B63F479FCAE064D42A1E65B06BD9707F /* ToolTableSection.swift */; }; + 8EEB172115FD7AB2BAD4EF96B440DF2F /* ToolTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55CAB8EF3A0BB7B1240DEE9FD4320EAB /* ToolTable.swift */; }; + 907CB1DCF4723A718AA9F51BC8A60BC3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EAB6F611E86A4758835A715E4B4184F6 /* Foundation.framework */; }; + 94E1BBA5EEB3F1E9B30D757C86354E90 /* UserDefaultsTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = D70A7F5861612DF70CBD58C4FB229FCD /* UserDefaultsTool.swift */; }; + 9AF09BA86618A2C9B5071586562EC469 /* CustomLocation.storyboard in Sources */ = {isa = PBXBuildFile; fileRef = 740803DFD7FCDE0F0E2D7012C2A6642B /* CustomLocation.storyboard */; }; + 9E9A56C3F63CCDE723599A4443D4FB32 /* UserDefaults.storyboard in Sources */ = {isa = PBXBuildFile; fileRef = A4E405BA93E248D57FD33DC3ACFBA60C /* UserDefaults.storyboard */; }; + A0975BD6CE58803E8AC9ADE8F092856F /* DetailToolTableCell.xib in Sources */ = {isa = PBXBuildFile; fileRef = 1FDE38BD1B0E69B4F524F0361167CD77 /* DetailToolTableCell.xib */; }; + A20F405F619D318A0B956CDB75772EA1 /* TextEditing.storyboard in Sources */ = {isa = PBXBuildFile; fileRef = F923F2ACD922658848B6FE9BE4F96AAD /* TextEditing.storyboard */; }; + A411F40B77B665E8160B0E27E8B07DDD /* PerformanceTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A85A3F65F012AC7DF64CE32F1252843 /* PerformanceTool.swift */; }; + A902DF428D8BADEC589C854586EF8B27 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EAB6F611E86A4758835A715E4B4184F6 /* Foundation.framework */; }; + A9F4AD33DC59D07324341F29F277E9FF /* CustomLocationProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78CCE3AA3639A845D5CA2E1FF1DF6ECE /* CustomLocationProvider.swift */; }; + B23641FF4898CF2A0121F8859419A180 /* Pods-Sentinel_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CC63C249594FFB7BA2A29447E90165F /* Pods-Sentinel_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B40BD9D6EA4805C9A0E676F6E9B2A48C /* Pods-Sentinel_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3737F3A9AFF9607DB0AEDEEEBAB55101 /* Pods-Sentinel_Tests-dummy.m */; }; + BE2DEA6F31D10B70CA0FBF3729462936 /* Sentinel-Sentinel in Resources */ = {isa = PBXBuildFile; fileRef = 2E1AA5D1D3E95612E2BD2EA95F67C327 /* Sentinel-Sentinel */; }; + C38F22264AA28EC904380AFDE04A12FE /* Sentinel.storyboard in Sources */ = {isa = PBXBuildFile; fileRef = 5869C03D555F426EF3EDCF5CA1AE48FB /* Sentinel.storyboard */; }; + C5541061EB9CC982C7A4C2BAAB21C1BB /* assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C12E4C21A72EB87EB6484EB5B013E309 /* assets.xcassets */; }; + D039F128023B3D3749E702E318973174 /* SourceScreenProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2270880D57D0D6778EFD5300F986BBCA /* SourceScreenProvider.swift */; }; + D334B74F1F0A340979F2A470FC1094EA /* PerformanceInfoItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF52AC1BF4F150BDC76E88932FC01D38 /* PerformanceInfoItem.swift */; }; + D45E6493FD41DD7AFDA785993EBDDA4C /* Pods-Sentinel_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D3908B2A61F0DD8BEE4E68CA7C472C70 /* Pods-Sentinel_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E1340DBDDF3A98E82AAC45E9AFF67676 /* PerformanceInfoTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A867C79ED26FD51019988301F963081B /* PerformanceInfoTableViewCell.swift */; }; + E22A68F3EBE9B42CCD794A5B83BA1A43 /* CustomInfoTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB5C214A92FDD2FCA28E920003DD1550 /* CustomInfoTool.swift */; }; + E535B201236E234BFCA72DDE07D81C49 /* Sentinel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D971BD16AC67E3AD4CBE94EE39AF3F5E /* Sentinel.swift */; }; + E543B48107A5F6880F3C11FCCFDC08CF /* NavigationToolTableCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE0808BB4BF6ED3F3598462B8A410F58 /* NavigationToolTableCell.swift */; }; + E8CB68893DCC895B8464C7B6BABD989D /* ToolTableItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = F01F415D2BE910FA7B551719072FE12A /* ToolTableItem.swift */; }; + F2131097313E088941506C6CAD1E6EED /* OptionSwitchItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73022355E0F91E882A0CD2317A15C0AB /* OptionSwitchItem.swift */; }; + F2BFD3C72B7F6AD882CE95C133200434 /* SentinelTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6770A0CC8FBC3195B0BD5982D2A2EB13 /* SentinelTabBarController.swift */; }; + FAD691F3E343112471C5B924537C2C7D /* Tool.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0DF9700C389D5341697900F1FE45C14 /* Tool.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 4234959383EBF4959CDABC16D973B727 /* PBXContainerItemProxy */ = { + 39E3895387C584983700F094ED903794 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F402433F0FA4E4D3D7AF80AFBDD40215; + remoteInfo = Sentinel; + }; + 906CAF01D52D23A51BAED3356CC90D20 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 254C1FBF05728FD8BE3AFCBC3F313646; remoteInfo = "Pods-Sentinel_Example"; }; - 5850551AB252289B541B6826DC709A91 /* PBXContainerItemProxy */ = { + C172841712980625012D99B2A8D09BC5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = F402433F0FA4E4D3D7AF80AFBDD40215; - remoteInfo = Sentinel; + remoteGlobalIDString = 8ACB6013C7A59AFAD22BD744A5CEE9FE; + remoteInfo = "Sentinel-Sentinel"; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0478B1E8C24818F9EF85F8881B92252B /* SentinelInternal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SentinelInternal.swift; sourceTree = ""; }; - 09BA84116F6D6D4C6C03B2ECA1C85C5E /* PerformanceInfoTableViewCell.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; path = PerformanceInfoTableViewCell.xib; sourceTree = ""; }; - 0B16BFCFAA23A6B32D113275DA3891FE /* OptionSwitchItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = OptionSwitchItem.swift; sourceTree = ""; }; - 0D4185532AC9601D568EDC2AED4BC963 /* UserDefaultsViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserDefaultsViewController.swift; path = Sentinel/Classes/UserDefaults/UserDefaultsViewController.swift; sourceTree = ""; }; - 109874CDAB1885BAB71C5ABCBB9B24D1 /* CPUInfoProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CPUInfoProvider.swift; sourceTree = ""; }; - 11315814FF905E8C1CD967BFA8FCDAD8 /* CustomLocationProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CustomLocationProvider.swift; sourceTree = ""; }; - 196588FDB3155CB7A95618ECF17AEAD3 /* Sentinel-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Sentinel-umbrella.h"; sourceTree = ""; }; - 1CA3EFBE620BB521963B4CC4F1C1F96D /* OptionSwitchTableViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = OptionSwitchTableViewCell.swift; sourceTree = ""; }; - 27D4DA510D59245E62D329CCC4EBC5CB /* ToolTableItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ToolTableItem.swift; path = Sentinel/Classes/Core/ToolTableItem.swift; sourceTree = ""; }; - 2DC3F5227EF9208DF8DD64E11B734C31 /* CustomLocationViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomLocationViewController.swift; path = Sentinel/Classes/CustomLocation/CustomLocationViewController.swift; sourceTree = ""; }; - 32D68E09B53EBF4BF2CC6C994FE948A4 /* SourceScreenProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SourceScreenProvider.swift; path = Sentinel/Classes/Core/SourceScreenProvider.swift; sourceTree = ""; }; - 3712896E2705E91400E19209 /* assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = assets.xcassets; sourceTree = ""; }; - 371289722705FC5A00E19209 /* UIImage+Resize.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "UIImage+Resize.swift"; path = "Sentinel/Classes/Core/UIImage+Resize.swift"; sourceTree = ""; }; + 041D1EB216EE101733CC9A55262A71BD /* PreferencesTool.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PreferencesTool.swift; sourceTree = ""; }; + 04F8F28B88EB7CCBF84E8B5D0837E1FC /* Sentinel-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Sentinel-Info.plist"; sourceTree = ""; }; + 0C3107615E25434128F7ACB36E4A64FA /* OptionSwitchTableViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = OptionSwitchTableViewCell.swift; sourceTree = ""; }; + 12147EBFF45BE7601260929C8FAA27D1 /* SystemInfoProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SystemInfoProvider.swift; sourceTree = ""; }; + 14E1B110C5BE8B5066D7A10B884FCED9 /* ApplicationTool.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ApplicationTool.swift; sourceTree = ""; }; + 19743A05A4D483E2A91BF27DD0644D62 /* DetailToolTableCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DetailToolTableCell.swift; sourceTree = ""; }; + 1B76F5FC2A4F7D9D944DDEBE0045861A /* SentinelUIKitExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SentinelUIKitExtensions.swift; sourceTree = ""; }; + 1FDE38BD1B0E69B4F524F0361167CD77 /* DetailToolTableCell.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; path = DetailToolTableCell.xib; sourceTree = ""; }; + 2270880D57D0D6778EFD5300F986BBCA /* SourceScreenProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SourceScreenProvider.swift; path = Sentinel/Classes/Core/SourceScreenProvider.swift; sourceTree = ""; }; + 2DBF82C22D2D765ABE0606F829364146 /* Sentinel.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Sentinel.modulemap; sourceTree = ""; }; + 2E1AA5D1D3E95612E2BD2EA95F67C327 /* Sentinel-Sentinel */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "Sentinel-Sentinel"; path = Sentinel.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; 3737F3A9AFF9607DB0AEDEEEBAB55101 /* Pods-Sentinel_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Sentinel_Tests-dummy.m"; sourceTree = ""; }; - 377FD4832705CA590006AD3F /* DeviceTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = DeviceTool.swift; path = Sentinel/Classes/DeviceTool/DeviceTool.swift; sourceTree = ""; }; - 3784D1C52703433000C7C827 /* SentinelTabBarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentinelTabBarController.swift; sourceTree = ""; }; - 37D35DCA2707020900AF91C2 /* ViewControllerType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ViewControllerType.swift; path = Sentinel/Classes/Core/ViewControllerType.swift; sourceTree = ""; }; - 37D35DCC27070D8900AF91C2 /* UIImageExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = UIImageExtension.swift; path = Sentinel/Classes/Core/UIImageExtension.swift; sourceTree = ""; }; - 45E1A9A14D5BCA28BD98037B5373DDF2 /* Sentinel.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; path = Sentinel.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 460EABEAE5E3AE6EF071BAD74E8595A3 /* Trigger.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Trigger.swift; path = Sentinel/Classes/Core/Trigger.swift; sourceTree = ""; }; - 4AAD242513970EE40C40BA3E6999E731 /* CustomLocation.storyboard */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.storyboard; name = CustomLocation.storyboard; path = Sentinel/Classes/CustomLocation/CustomLocation.storyboard; sourceTree = ""; }; - 4B4C2656C379879F07C9C0E28848BECF /* CLLocationManager+CustomLocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "CLLocationManager+CustomLocation.swift"; sourceTree = ""; }; + 3761107827426A710050A9E8 /* UIImage+Assets.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+Assets.swift"; sourceTree = ""; }; + 3E19C93C0E1B6A6DB625907B3C22E30A /* Sentinel-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Sentinel-dummy.m"; sourceTree = ""; }; + 506DA1B239F0027DEF29621F8BC500DC /* Sentinel.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Sentinel.debug.xcconfig; sourceTree = ""; }; + 55CAB8EF3A0BB7B1240DEE9FD4320EAB /* ToolTable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ToolTable.swift; path = Sentinel/Classes/Core/ToolTable.swift; sourceTree = ""; }; 55CD7B5D6B41371E48802E60F2D85413 /* Pods-Sentinel_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Sentinel_Example-acknowledgements.markdown"; sourceTree = ""; }; - 59BE42473F05E6399B3EDC9F3B1859C9 /* ToolTable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ToolTable.swift; path = Sentinel/Classes/Core/ToolTable.swift; sourceTree = ""; }; - 5CC4F02A3BB946569A4A53595A1B2065 /* TextEditingViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TextEditingViewController.swift; path = Sentinel/Classes/TextEditing/TextEditingViewController.swift; sourceTree = ""; }; - 629DB4B62FA95FED8FB6337DD602540D /* CustomInfoTool.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomInfoTool.swift; path = Sentinel/Classes/CustomInfo/CustomInfoTool.swift; sourceTree = ""; }; - 64442341A7E9370170D203C10FFEB151 /* TextEditing.storyboard */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.storyboard; name = TextEditing.storyboard; path = Sentinel/Classes/TextEditing/TextEditing.storyboard; sourceTree = ""; }; - 65C9954C4CF9EB181467C37DE9785CCF /* Pods_Sentinel_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Sentinel_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 66257AB99BFB97A7175694B0318219B9 /* DetailToolTableCell.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; path = DetailToolTableCell.xib; sourceTree = ""; }; + 5869C03D555F426EF3EDCF5CA1AE48FB /* Sentinel.storyboard */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.storyboard; path = Sentinel.storyboard; sourceTree = ""; }; + 5AE28E4EBBFD8E6898484581C19D720F /* Trigger.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Trigger.swift; path = Sentinel/Classes/Core/Trigger.swift; sourceTree = ""; }; + 609A65653BA7E4C56144F65768E7DA0D /* CustomLocationTool.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomLocationTool.swift; path = Sentinel/Classes/CustomLocation/CustomLocationTool.swift; sourceTree = ""; }; + 65C9954C4CF9EB181467C37DE9785CCF /* Pods-Sentinel_Tests */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-Sentinel_Tests"; path = Pods_Sentinel_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6770A0CC8FBC3195B0BD5982D2A2EB13 /* SentinelTabBarController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SentinelTabBarController.swift; sourceTree = ""; }; + 68833DC95C937BBC523E1614B694E82B /* SentinelInternal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SentinelInternal.swift; sourceTree = ""; }; 6A2FAB1C2CA0327702BEBE0ED264FD12 /* Pods-Sentinel_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Sentinel_Tests-acknowledgements.markdown"; sourceTree = ""; }; + 6B5628DC5E102EF7BB7A3CA7162950CE /* ResourceBundle-Sentinel-Sentinel-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-Sentinel-Sentinel-Info.plist"; sourceTree = ""; }; 6CC63C249594FFB7BA2A29447E90165F /* Pods-Sentinel_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Sentinel_Example-umbrella.h"; sourceTree = ""; }; - 6E4D95B24611928DEB2809DCD6C7A65E /* ApplicationTool.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ApplicationTool.swift; path = Sentinel/Classes/GeneralInfo/ApplicationTool.swift; sourceTree = ""; }; - 7675A55F4DB9663570209AC976AF3A10 /* Sentinel.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Sentinel.release.xcconfig; sourceTree = ""; }; - 7844DC91CAF7100B5CF6EA49CADCF9B7 /* Tool.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Tool.swift; path = Sentinel/Classes/Core/Tool.swift; sourceTree = ""; }; - 7A71D9434333ABF8A48B52D9B569AABB /* PerformanceTool.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PerformanceTool.swift; path = Sentinel/Classes/PerformanceInfo/PerformanceTool.swift; sourceTree = ""; }; - 864FD1113191E342DD07576BB12E6833 /* Sentinel-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Sentinel-prefix.pch"; sourceTree = ""; }; + 73022355E0F91E882A0CD2317A15C0AB /* OptionSwitchItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = OptionSwitchItem.swift; sourceTree = ""; }; + 740803DFD7FCDE0F0E2D7012C2A6642B /* CustomLocation.storyboard */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.storyboard; name = CustomLocation.storyboard; path = Sentinel/Classes/CustomLocation/CustomLocation.storyboard; sourceTree = ""; }; + 78CCE3AA3639A845D5CA2E1FF1DF6ECE /* CustomLocationProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CustomLocationProvider.swift; sourceTree = ""; }; + 7A85A3F65F012AC7DF64CE32F1252843 /* PerformanceTool.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PerformanceTool.swift; sourceTree = ""; }; + 7C2271BFAA0BADA608C291A4C95AABB8 /* NavigationToolTableCell.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; path = NavigationToolTableCell.xib; sourceTree = ""; }; + 840D2391902DC96B2586BAFE3313F4FD /* Sentinel-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Sentinel-umbrella.h"; sourceTree = ""; }; 89C6FAA08483FA46AF62E0083A4A1ECE /* Pods-Sentinel_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Sentinel_Example-dummy.m"; sourceTree = ""; }; 8C131C23A2981681C44E4F97E273B562 /* Pods-Sentinel_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Sentinel_Tests.modulemap"; sourceTree = ""; }; 9127529398114DBEE725B2F92658F523 /* Pods-Sentinel_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Sentinel_Tests-acknowledgements.plist"; sourceTree = ""; }; - 91C29F4D3F53382DA8A0AE8562BA0246 /* SentinelTableViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SentinelTableViewController.swift; sourceTree = ""; }; + 927BDB4C303572101888686686254FB7 /* CustomLocationViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomLocationViewController.swift; path = Sentinel/Classes/CustomLocation/CustomLocationViewController.swift; sourceTree = ""; }; 9569796757499011EED7D03B408B6F1A /* Pods-Sentinel_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Sentinel_Tests.release.xcconfig"; sourceTree = ""; }; - 9A5A4FEBD0D7379DC32EC081240FB354 /* TextEditingTool.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TextEditingTool.swift; path = Sentinel/Classes/TextEditing/TextEditingTool.swift; sourceTree = ""; }; - 9ACD16744845C8397B93B2F6E4398E7F /* PerformanceInfoTableViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PerformanceInfoTableViewCell.swift; sourceTree = ""; }; + 96092BC62D8466FC951696DDC5508D87 /* PerformanceInfoTableViewCell.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; path = PerformanceInfoTableViewCell.xib; sourceTree = ""; }; + 9881229C79A4105A9C9EC186F0009F00 /* PerformanceInfo.storyboard */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.storyboard; path = PerformanceInfo.storyboard; sourceTree = ""; }; + 99C6DDBA9F59461F61701349445785F8 /* OptionSwitchTableViewCell.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; path = OptionSwitchTableViewCell.xib; sourceTree = ""; }; + 9D2F85307E4B6B5F681A7D166F4E00D6 /* MemoryInfoProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MemoryInfoProvider.swift; sourceTree = ""; }; 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 9FD90ACD3F1A5190659CC992DF52A26F /* SentinelTableViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SentinelTableViewController.swift; sourceTree = ""; }; + A162FE110224332DA9561178F9BCEF3C /* Sentinel-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Sentinel-prefix.pch"; sourceTree = ""; }; + A4E405BA93E248D57FD33DC3ACFBA60C /* UserDefaults.storyboard */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.storyboard; name = UserDefaults.storyboard; path = Sentinel/Classes/UserDefaults/UserDefaults.storyboard; sourceTree = ""; }; A66CE977C2A4DD6409F650637CBD401F /* Pods-Sentinel_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Sentinel_Example.debug.xcconfig"; sourceTree = ""; }; - A779FA318D31A92BCB4935373EB959FD /* PermissionsTool.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PermissionsTool.swift; path = Sentinel/Classes/OptionSwitch/PermissionsTool.swift; sourceTree = ""; }; - A8F29EC6D04B671910FA914216382157 /* UserDefaultsTool.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserDefaultsTool.swift; path = Sentinel/Classes/UserDefaults/UserDefaultsTool.swift; sourceTree = ""; }; - AA7D1163B3C6CB33253565CDD48B02BA /* SystemInfoProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SystemInfoProvider.swift; sourceTree = ""; }; - ABCA0BE9A8D5AE19A0FF6D7F6EA71F31 /* Sentinel-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Sentinel-dummy.m"; sourceTree = ""; }; - B09DFD777E3BA9745AC1A2102E96B373 /* NavigationToolTableCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NavigationToolTableCell.swift; sourceTree = ""; }; + A867C79ED26FD51019988301F963081B /* PerformanceInfoTableViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PerformanceInfoTableViewCell.swift; sourceTree = ""; }; B14684E93C90965E041B3092E4D0C959 /* Pods-Sentinel_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Sentinel_Example-frameworks.sh"; sourceTree = ""; }; - B1798190E3F9B3070607FDE53B4341AC /* Sentinel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Sentinel.swift; path = Sentinel/Classes/Core/Sentinel.swift; sourceTree = ""; }; B27D12816652F5CE8F68FECC2498878C /* Pods-Sentinel_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Sentinel_Example.modulemap"; sourceTree = ""; }; - B2808675AB91D13F4925FC9B58988A4A /* Sentinel-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Sentinel-Info.plist"; sourceTree = ""; }; - B3C98212651E92D017277ABD75B4B579 /* OptionSwitchTableViewCell.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; path = OptionSwitchTableViewCell.xib; sourceTree = ""; }; - B6E84629736A699BD1CF483B3B400384 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; - BAFC4E246EF8B766433A2D6827983019 /* CustomLocationTool.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomLocationTool.swift; path = Sentinel/Classes/CustomLocation/CustomLocationTool.swift; sourceTree = ""; }; - BDD07A762A7D9A45FD2AE924F79E1908 /* PerformanceInfoItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PerformanceInfoItem.swift; sourceTree = ""; }; - C0052669424702B19A58C4C41CBA717C /* UserDefaults.storyboard */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.storyboard; name = UserDefaults.storyboard; path = Sentinel/Classes/UserDefaults/UserDefaults.storyboard; sourceTree = ""; }; - C0F5D78F1C67966A7FC449B67275BA99 /* Sentinel.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Sentinel.debug.xcconfig; sourceTree = ""; }; - C0F64F1B2DF5473AE11CADF61CD35707 /* Sentinel.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Sentinel.modulemap; sourceTree = ""; }; + B63F479FCAE064D42A1E65B06BD9707F /* ToolTableSection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ToolTableSection.swift; path = Sentinel/Classes/Core/ToolTableSection.swift; sourceTree = ""; }; + B876C3A22570FA547BCAA1734827FD62 /* TextEditingTool.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TextEditingTool.swift; path = Sentinel/Classes/TextEditing/TextEditingTool.swift; sourceTree = ""; }; + C0DF9700C389D5341697900F1FE45C14 /* Tool.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Tool.swift; path = Sentinel/Classes/Core/Tool.swift; sourceTree = ""; }; + C12E4C21A72EB87EB6484EB5B013E309 /* assets.xcassets */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder.assetcatalog; name = assets.xcassets; path = Sentinel/Assets/assets.xcassets; sourceTree = ""; }; C3831A0EE07DA0231A8F1CB9F738F429 /* Pods-Sentinel_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Sentinel_Tests.debug.xcconfig"; sourceTree = ""; }; C3969767F71788948A392AAED1152725 /* Pods-Sentinel_Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Sentinel_Tests-Info.plist"; sourceTree = ""; }; - C5BEFEC9F8877CC09987941786189103 /* ToolTableSection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ToolTableSection.swift; path = Sentinel/Classes/Core/ToolTableSection.swift; sourceTree = ""; }; - C6C8ABDCEBEF42DA4B89F1CE02572D5B /* Sentinel.storyboard */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.storyboard; path = Sentinel.storyboard; sourceTree = ""; }; - D02D3760817E75AA5CACC9AEAA4A1637 /* NavigationToolTableCell.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; path = NavigationToolTableCell.xib; sourceTree = ""; }; + C86DF43DD95CC4B9A5BADFD1E95C42AF /* UIImage+Bundle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIImage+Bundle.swift"; path = "Sentinel/Classes/Core/UIImage+Bundle.swift"; sourceTree = ""; }; + CF2E00E9F6BDD248ED8064228BC177C9 /* Sentinel.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; path = Sentinel.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; D245E0514AAC1A2B9A6D5EA2F383E90F /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - D364422650E36C9CCF8117A92EE24AA3 /* MemoryInfoProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MemoryInfoProvider.swift; sourceTree = ""; }; + D26AB7ACBFCA7F0DE1A3DB04A998BE9A /* UserDefaultsViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserDefaultsViewController.swift; path = Sentinel/Classes/UserDefaults/UserDefaultsViewController.swift; sourceTree = ""; }; D3908B2A61F0DD8BEE4E68CA7C472C70 /* Pods-Sentinel_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Sentinel_Tests-umbrella.h"; sourceTree = ""; }; - D4D31D0ADD988E9F73A98960720A9AD8 /* PerformanceInfo.storyboard */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.storyboard; name = PerformanceInfo.storyboard; path = Sentinel/Classes/PerformanceInfo/PerformanceInfo.storyboard; sourceTree = ""; }; - DA6F656ACB4F354E2B0B0D8829821734 /* Sentinel.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Sentinel.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DDF6396094385945F6BF336E3F5FAC93 /* SentinelUIKitExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SentinelUIKitExtensions.swift; sourceTree = ""; }; - E73D1F4DDB5FF4D7454BB82EE7922216 /* DetailToolTableCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DetailToolTableCell.swift; sourceTree = ""; }; + D3A1B30930641B1C20DFD007DCCCB8A8 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + D678D0F16BB680CEAB23BFBC60ECCBD1 /* TextEditingViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TextEditingViewController.swift; path = Sentinel/Classes/TextEditing/TextEditingViewController.swift; sourceTree = ""; }; + D6DF56F6A21844A950DA501C73D7B57E /* DeviceTool.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DeviceTool.swift; sourceTree = ""; }; + D70A7F5861612DF70CBD58C4FB229FCD /* UserDefaultsTool.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserDefaultsTool.swift; path = Sentinel/Classes/UserDefaults/UserDefaultsTool.swift; sourceTree = ""; }; + D971BD16AC67E3AD4CBE94EE39AF3F5E /* Sentinel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Sentinel.swift; path = Sentinel/Classes/Core/Sentinel.swift; sourceTree = ""; }; + DA6F656ACB4F354E2B0B0D8829821734 /* Sentinel */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Sentinel; path = Sentinel.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DE0808BB4BF6ED3F3598462B8A410F58 /* NavigationToolTableCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NavigationToolTableCell.swift; sourceTree = ""; }; + E166CF0E9A47766C0AB03EB8B7B44452 /* CLLocationManager+CustomLocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "CLLocationManager+CustomLocation.swift"; sourceTree = ""; }; EAB6F611E86A4758835A715E4B4184F6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - EE306C9DD4ED21D2A2A9B86EEA3410CE /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + EB5C214A92FDD2FCA28E920003DD1550 /* CustomInfoTool.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomInfoTool.swift; path = Sentinel/Classes/Core/CustomInfoTool.swift; sourceTree = ""; }; + EB7DBC2AF0F6E648994F1477ED66332A /* CPUInfoProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CPUInfoProvider.swift; sourceTree = ""; }; + EF52AC1BF4F150BDC76E88932FC01D38 /* PerformanceInfoItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PerformanceInfoItem.swift; sourceTree = ""; }; + F01F415D2BE910FA7B551719072FE12A /* ToolTableItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ToolTableItem.swift; path = Sentinel/Classes/Core/ToolTableItem.swift; sourceTree = ""; }; + F091E4D213BAD953AEDF6131E5848A55 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; F0C518BCD254C6BED6EDFAA897D668F7 /* Pods-Sentinel_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Sentinel_Example-acknowledgements.plist"; sourceTree = ""; }; - F4A9B14258CE10FBC253BB5B34DAAE75 /* Pods_Sentinel_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Sentinel_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F4A9B14258CE10FBC253BB5B34DAAE75 /* Pods-Sentinel_Example */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-Sentinel_Example"; path = Pods_Sentinel_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; F6D219D153A366859D6A80F165E2D93E /* Pods-Sentinel_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Sentinel_Example-Info.plist"; sourceTree = ""; }; + F923F2ACD922658848B6FE9BE4F96AAD /* TextEditing.storyboard */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.storyboard; name = TextEditing.storyboard; path = Sentinel/Classes/TextEditing/TextEditing.storyboard; sourceTree = ""; }; + FACA734A3CEA1EF4CBCFAC48E0AAED93 /* Sentinel.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Sentinel.release.xcconfig; sourceTree = ""; }; FCD5716A347A57C5EB37EDE8EE5438D4 /* Pods-Sentinel_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Sentinel_Example.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - C05854686678D99BF72CDBC0C9461775 /* Frameworks */ = { + 6001246ABD90C3A452C62D43CBD4921D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AA1EB183A487C608F307D59CDC8CF62C /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - C9FD69F9B710AA7835E9D10969AA7307 /* Frameworks */ = { + 6A36C98EB471CED862E3A32FB79C16FD /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0B76DEBBB8F9EDEE88E8CEA01845A37B /* Foundation.framework in Frameworks */, + 5A3D76150331AA1378E52A7AD4469FE8 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - FC780F7602BED3A7CF7E75AB92559D61 /* Frameworks */ = { + 89511783AE589F3D9AE7395E0176B211 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B7196500922E8805BD9D1DF21E66653B /* Foundation.framework in Frameworks */, - 31F7F7F60A7F9F7F97CFBBEC9675BA3D /* UIKit.framework in Frameworks */, + A902DF428D8BADEC589C854586EF8B27 /* Foundation.framework in Frameworks */, + 7490CB42522F260184909160D4C6D4AC /* UIKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B4276B654DB7B973A0E992D1E1EB7E65 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 907CB1DCF4723A718AA9F51BC8A60BC3 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -209,88 +224,76 @@ path = "Target Support Files/Pods-Sentinel_Tests"; sourceTree = ""; }; - 146D215BC6C5C1F5878BD2F7FF60F73C /* Development Pods */ = { + 094C6A50608FDEB33F6305BA9A1A849A /* Development Pods */ = { isa = PBXGroup; children = ( - 3B17F18A152B9936620FFEA856824809 /* Sentinel */, + AE30A5CDB709B406645B2908320AA0C0 /* Sentinel */, ); name = "Development Pods"; sourceTree = ""; }; - 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 59DA5C1F72E1D5BABC43EACBA672C3BA /* iOS */, - ); - name = Frameworks; - sourceTree = ""; - }; - 27999F75D9B4FC10806D4864588D2D3F /* Items */ = { + 0B512276F72BCDE5ED06C9DA1B90FD7E /* TextEditing */ = { isa = PBXGroup; children = ( - 0B16BFCFAA23A6B32D113275DA3891FE /* OptionSwitchItem.swift */, - 1CA3EFBE620BB521963B4CC4F1C1F96D /* OptionSwitchTableViewCell.swift */, - B3C98212651E92D017277ABD75B4B579 /* OptionSwitchTableViewCell.xib */, + F923F2ACD922658848B6FE9BE4F96AAD /* TextEditing.storyboard */, + B876C3A22570FA547BCAA1734827FD62 /* TextEditingTool.swift */, + D678D0F16BB680CEAB23BFBC60ECCBD1 /* TextEditingViewController.swift */, ); - name = Items; - path = Sentinel/Classes/OptionSwitch/Items; + name = TextEditing; sourceTree = ""; }; - 2AB3191F2F28007643597A44DC84E80E /* TextEditing */ = { + 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */ = { isa = PBXGroup; children = ( - 64442341A7E9370170D203C10FFEB151 /* TextEditing.storyboard */, - 9A5A4FEBD0D7379DC32EC081240FB354 /* TextEditingTool.swift */, - 5CC4F02A3BB946569A4A53595A1B2065 /* TextEditingViewController.swift */, + 59DA5C1F72E1D5BABC43EACBA672C3BA /* iOS */, ); - name = TextEditing; + name = Frameworks; sourceTree = ""; }; - 2E726A7246F4512148FE35051B58C553 /* CustomLocation */ = { + 3B6DABB2E8626700366F9EF97244A591 /* Products */ = { isa = PBXGroup; children = ( - 4AAD242513970EE40C40BA3E6999E731 /* CustomLocation.storyboard */, - BAFC4E246EF8B766433A2D6827983019 /* CustomLocationTool.swift */, - 2DC3F5227EF9208DF8DD64E11B734C31 /* CustomLocationViewController.swift */, - F2B4132FED9094F6DADBD261F5CA9E99 /* Internal */, + F4A9B14258CE10FBC253BB5B34DAAE75 /* Pods-Sentinel_Example */, + 65C9954C4CF9EB181467C37DE9785CCF /* Pods-Sentinel_Tests */, + DA6F656ACB4F354E2B0B0D8829821734 /* Sentinel */, + 2E1AA5D1D3E95612E2BD2EA95F67C327 /* Sentinel-Sentinel */, ); - name = CustomLocation; + name = Products; sourceTree = ""; }; - 377FD4802705C62F0006AD3F /* DeviceTool */ = { + 424AF9718647BCFE6E9FE6A7DF9231B3 /* PreferencesInfo */ = { isa = PBXGroup; children = ( - 377FD4832705CA590006AD3F /* DeviceTool.swift */, + 73022355E0F91E882A0CD2317A15C0AB /* OptionSwitchItem.swift */, + 0C3107615E25434128F7ACB36E4A64FA /* OptionSwitchTableViewCell.swift */, + 99C6DDBA9F59461F61701349445785F8 /* OptionSwitchTableViewCell.xib */, + 041D1EB216EE101733CC9A55262A71BD /* PreferencesTool.swift */, ); - name = DeviceTool; + name = PreferencesInfo; + path = Sentinel/Classes/Core/PreferencesInfo; sourceTree = ""; }; - 3B17F18A152B9936620FFEA856824809 /* Sentinel */ = { + 493AB136857B8F59F00F2DC30D51A05D /* PerformanceInfo */ = { isa = PBXGroup; children = ( - 377FD4802705C62F0006AD3F /* DeviceTool */, - 7D0B6BE15D8A22A1635D764C0FC46658 /* Core */, - 7A08DA2F2E0F9EC7E1F4DEEFBDB3A727 /* CustomInfo */, - 2E726A7246F4512148FE35051B58C553 /* CustomLocation */, - 4871177614DA1BB76813133175161C2F /* GeneralInfo */, - F30F1EDFFAFEE76A0443AF329F178B41 /* OptionSwitch */, - D04729E16C09AE38A2D0192EFC40B640 /* PerformanceInfo */, - 82EA03F646A85366C1FAA5E9FD638FCF /* Pod */, - 94083E97DB2F8711DD97015934CE5454 /* Support Files */, - 2AB3191F2F28007643597A44DC84E80E /* TextEditing */, - 82121843B7686698945B4C1A873796EF /* UserDefaults */, - 3712896E2705E91400E19209 /* assets.xcassets */, + 9881229C79A4105A9C9EC186F0009F00 /* PerformanceInfo.storyboard */, + 7A85A3F65F012AC7DF64CE32F1252843 /* PerformanceTool.swift */, + BCC2BF216E794E6B8BECF6F8B4C461FC /* Internal */, + C6FABF2BEE193402A6219D5BFF0A1F74 /* Items */, ); - name = Sentinel; - path = ../..; + name = PerformanceInfo; + path = Sentinel/Classes/Core/PerformanceInfo; sourceTree = ""; }; - 4871177614DA1BB76813133175161C2F /* GeneralInfo */ = { + 5326E7427A4A3B8B737611376A0B1F26 /* CustomLocation */ = { isa = PBXGroup; children = ( - 6E4D95B24611928DEB2809DCD6C7A65E /* ApplicationTool.swift */, + 740803DFD7FCDE0F0E2D7012C2A6642B /* CustomLocation.storyboard */, + 609A65653BA7E4C56144F65768E7DA0D /* CustomLocationTool.swift */, + 927BDB4C303572101888686686254FB7 /* CustomLocationViewController.swift */, + 8F4EA703F66A248FDF9FFB8AD6CDD113 /* Internal */, ); - name = GeneralInfo; + name = CustomLocation; sourceTree = ""; }; 59DA5C1F72E1D5BABC43EACBA672C3BA /* iOS */ = { @@ -302,62 +305,36 @@ name = iOS; sourceTree = ""; }; - 79C5115D60BFFCB110E7369F57281D12 /* Internal */ = { - isa = PBXGroup; - children = ( - 109874CDAB1885BAB71C5ABCBB9B24D1 /* CPUInfoProvider.swift */, - D364422650E36C9CCF8117A92EE24AA3 /* MemoryInfoProvider.swift */, - AA7D1163B3C6CB33253565CDD48B02BA /* SystemInfoProvider.swift */, - ); - name = Internal; - path = Sentinel/Classes/PerformanceInfo/Internal; - sourceTree = ""; - }; - 7A08DA2F2E0F9EC7E1F4DEEFBDB3A727 /* CustomInfo */ = { + 77B88AD66DE9A9BA2901B17B53B9AEAC /* ToolTableItems */ = { isa = PBXGroup; children = ( - 629DB4B62FA95FED8FB6337DD602540D /* CustomInfoTool.swift */, + 19743A05A4D483E2A91BF27DD0644D62 /* DetailToolTableCell.swift */, + 1FDE38BD1B0E69B4F524F0361167CD77 /* DetailToolTableCell.xib */, + DE0808BB4BF6ED3F3598462B8A410F58 /* NavigationToolTableCell.swift */, + 7C2271BFAA0BADA608C291A4C95AABB8 /* NavigationToolTableCell.xib */, ); - name = CustomInfo; - sourceTree = ""; - }; - 7D0B6BE15D8A22A1635D764C0FC46658 /* Core */ = { - isa = PBXGroup; - children = ( - 37D35DCC27070D8900AF91C2 /* UIImageExtension.swift */, - 371289722705FC5A00E19209 /* UIImage+Resize.swift */, - 32D68E09B53EBF4BF2CC6C994FE948A4 /* SourceScreenProvider.swift */, - B1798190E3F9B3070607FDE53B4341AC /* Sentinel.swift */, - 7844DC91CAF7100B5CF6EA49CADCF9B7 /* Tool.swift */, - 59BE42473F05E6399B3EDC9F3B1859C9 /* ToolTable.swift */, - 27D4DA510D59245E62D329CCC4EBC5CB /* ToolTableItem.swift */, - C5BEFEC9F8877CC09987941786189103 /* ToolTableSection.swift */, - 460EABEAE5E3AE6EF071BAD74E8595A3 /* Trigger.swift */, - FA048FC1C93F83F94E8D5CCE09401B92 /* Internal */, - 9DB2CED0B5468E7535E8761D2FA6C6DB /* ToolTableItems */, - 37D35DCA2707020900AF91C2 /* ViewControllerType.swift */, - ); - name = Core; + name = ToolTableItems; + path = Sentinel/Classes/Core/ToolTableItems; sourceTree = ""; }; - 82121843B7686698945B4C1A873796EF /* UserDefaults */ = { + 852858AD996942B69283BA89F648DBB0 /* Pod */ = { isa = PBXGroup; children = ( - C0052669424702B19A58C4C41CBA717C /* UserDefaults.storyboard */, - A8F29EC6D04B671910FA914216382157 /* UserDefaultsTool.swift */, - 0D4185532AC9601D568EDC2AED4BC963 /* UserDefaultsViewController.swift */, + D3A1B30930641B1C20DFD007DCCCB8A8 /* LICENSE */, + F091E4D213BAD953AEDF6131E5848A55 /* README.md */, + CF2E00E9F6BDD248ED8064228BC177C9 /* Sentinel.podspec */, ); - name = UserDefaults; + name = Pod; sourceTree = ""; }; - 82EA03F646A85366C1FAA5E9FD638FCF /* Pod */ = { + 8F4EA703F66A248FDF9FFB8AD6CDD113 /* Internal */ = { isa = PBXGroup; children = ( - B6E84629736A699BD1CF483B3B400384 /* LICENSE */, - EE306C9DD4ED21D2A2A9B86EEA3410CE /* README.md */, - 45E1A9A14D5BCA28BD98037B5373DDF2 /* Sentinel.podspec */, + E166CF0E9A47766C0AB03EB8B7B44452 /* CLLocationManager+CustomLocation.swift */, + 78CCE3AA3639A845D5CA2E1FF1DF6ECE /* CustomLocationProvider.swift */, ); - name = Pod; + name = Internal; + path = Sentinel/Classes/CustomLocation/Internal; sourceTree = ""; }; 8F691C6054F4434031502E1A992CC026 /* Pods-Sentinel_Example */ = { @@ -377,141 +354,147 @@ path = "Target Support Files/Pods-Sentinel_Example"; sourceTree = ""; }; - 94083E97DB2F8711DD97015934CE5454 /* Support Files */ = { + A2377F34865A8897255B122F222D0489 /* UserDefaults */ = { isa = PBXGroup; children = ( - C0F64F1B2DF5473AE11CADF61CD35707 /* Sentinel.modulemap */, - ABCA0BE9A8D5AE19A0FF6D7F6EA71F31 /* Sentinel-dummy.m */, - B2808675AB91D13F4925FC9B58988A4A /* Sentinel-Info.plist */, - 864FD1113191E342DD07576BB12E6833 /* Sentinel-prefix.pch */, - 196588FDB3155CB7A95618ECF17AEAD3 /* Sentinel-umbrella.h */, - C0F5D78F1C67966A7FC449B67275BA99 /* Sentinel.debug.xcconfig */, - 7675A55F4DB9663570209AC976AF3A10 /* Sentinel.release.xcconfig */, + A4E405BA93E248D57FD33DC3ACFBA60C /* UserDefaults.storyboard */, + D70A7F5861612DF70CBD58C4FB229FCD /* UserDefaultsTool.swift */, + D26AB7ACBFCA7F0DE1A3DB04A998BE9A /* UserDefaultsViewController.swift */, ); - name = "Support Files"; - path = "Example/Pods/Target Support Files/Sentinel"; + name = UserDefaults; sourceTree = ""; }; - 9DB2CED0B5468E7535E8761D2FA6C6DB /* ToolTableItems */ = { + AE30A5CDB709B406645B2908320AA0C0 /* Sentinel */ = { isa = PBXGroup; children = ( - E73D1F4DDB5FF4D7454BB82EE7922216 /* DetailToolTableCell.swift */, - 66257AB99BFB97A7175694B0318219B9 /* DetailToolTableCell.xib */, - B09DFD777E3BA9745AC1A2102E96B373 /* NavigationToolTableCell.swift */, - D02D3760817E75AA5CACC9AEAA4A1637 /* NavigationToolTableCell.xib */, + C12E4C21A72EB87EB6484EB5B013E309 /* assets.xcassets */, + C4BF731866E9047B4059286E4B24E75F /* Core */, + 5326E7427A4A3B8B737611376A0B1F26 /* CustomLocation */, + 852858AD996942B69283BA89F648DBB0 /* Pod */, + B9F6F5909BC55D4DC51BDB830F42AB39 /* Support Files */, + 0B512276F72BCDE5ED06C9DA1B90FD7E /* TextEditing */, + A2377F34865A8897255B122F222D0489 /* UserDefaults */, ); - name = ToolTableItems; - path = Sentinel/Classes/Core/ToolTableItems; + name = Sentinel; + path = ../..; sourceTree = ""; }; - A3C170216A4ED2D288108EEF562D16B4 /* Items */ = { + B9F6F5909BC55D4DC51BDB830F42AB39 /* Support Files */ = { isa = PBXGroup; children = ( - BDD07A762A7D9A45FD2AE924F79E1908 /* PerformanceInfoItem.swift */, - 9ACD16744845C8397B93B2F6E4398E7F /* PerformanceInfoTableViewCell.swift */, - 09BA84116F6D6D4C6C03B2ECA1C85C5E /* PerformanceInfoTableViewCell.xib */, + 6B5628DC5E102EF7BB7A3CA7162950CE /* ResourceBundle-Sentinel-Sentinel-Info.plist */, + 2DBF82C22D2D765ABE0606F829364146 /* Sentinel.modulemap */, + 3E19C93C0E1B6A6DB625907B3C22E30A /* Sentinel-dummy.m */, + 04F8F28B88EB7CCBF84E8B5D0837E1FC /* Sentinel-Info.plist */, + A162FE110224332DA9561178F9BCEF3C /* Sentinel-prefix.pch */, + 840D2391902DC96B2586BAFE3313F4FD /* Sentinel-umbrella.h */, + 506DA1B239F0027DEF29621F8BC500DC /* Sentinel.debug.xcconfig */, + FACA734A3CEA1EF4CBCFAC48E0AAED93 /* Sentinel.release.xcconfig */, ); - name = Items; - path = Sentinel/Classes/PerformanceInfo/Items; + name = "Support Files"; + path = "Example/Pods/Target Support Files/Sentinel"; sourceTree = ""; }; - ADEF06986999BBC80E0FD346F48AFFAF /* Products */ = { + BCC2BF216E794E6B8BECF6F8B4C461FC /* Internal */ = { isa = PBXGroup; children = ( - F4A9B14258CE10FBC253BB5B34DAAE75 /* Pods_Sentinel_Example.framework */, - 65C9954C4CF9EB181467C37DE9785CCF /* Pods_Sentinel_Tests.framework */, - DA6F656ACB4F354E2B0B0D8829821734 /* Sentinel.framework */, + EB7DBC2AF0F6E648994F1477ED66332A /* CPUInfoProvider.swift */, + 9D2F85307E4B6B5F681A7D166F4E00D6 /* MemoryInfoProvider.swift */, + 12147EBFF45BE7601260929C8FAA27D1 /* SystemInfoProvider.swift */, ); - name = Products; + path = Internal; sourceTree = ""; }; - CF1408CF629C7361332E53B88F7BD30C = { + C4BF731866E9047B4059286E4B24E75F /* Core */ = { isa = PBXGroup; children = ( - 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, - 146D215BC6C5C1F5878BD2F7FF60F73C /* Development Pods */, - 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */, - ADEF06986999BBC80E0FD346F48AFFAF /* Products */, - E1BF3393363293FA2C5AF0C96D0A5677 /* Targets Support Files */, + EB5C214A92FDD2FCA28E920003DD1550 /* CustomInfoTool.swift */, + D971BD16AC67E3AD4CBE94EE39AF3F5E /* Sentinel.swift */, + 2270880D57D0D6778EFD5300F986BBCA /* SourceScreenProvider.swift */, + C0DF9700C389D5341697900F1FE45C14 /* Tool.swift */, + 55CAB8EF3A0BB7B1240DEE9FD4320EAB /* ToolTable.swift */, + F01F415D2BE910FA7B551719072FE12A /* ToolTableItem.swift */, + B63F479FCAE064D42A1E65B06BD9707F /* ToolTableSection.swift */, + 5AE28E4EBBFD8E6898484581C19D720F /* Trigger.swift */, + C86DF43DD95CC4B9A5BADFD1E95C42AF /* UIImage+Bundle.swift */, + C5085EFF63CFE322406F038E7F873FBD /* Internal */, + 493AB136857B8F59F00F2DC30D51A05D /* PerformanceInfo */, + 424AF9718647BCFE6E9FE6A7DF9231B3 /* PreferencesInfo */, + 77B88AD66DE9A9BA2901B17B53B9AEAC /* ToolTableItems */, ); + name = Core; sourceTree = ""; }; - D04729E16C09AE38A2D0192EFC40B640 /* PerformanceInfo */ = { - isa = PBXGroup; - children = ( - D4D31D0ADD988E9F73A98960720A9AD8 /* PerformanceInfo.storyboard */, - 7A71D9434333ABF8A48B52D9B569AABB /* PerformanceTool.swift */, - 79C5115D60BFFCB110E7369F57281D12 /* Internal */, - A3C170216A4ED2D288108EEF562D16B4 /* Items */, - ); - name = PerformanceInfo; - sourceTree = ""; - }; - E1BF3393363293FA2C5AF0C96D0A5677 /* Targets Support Files */ = { + C5085EFF63CFE322406F038E7F873FBD /* Internal */ = { isa = PBXGroup; children = ( - 8F691C6054F4434031502E1A992CC026 /* Pods-Sentinel_Example */, - 053036BFEE8D66B6CDBECD24E5744268 /* Pods-Sentinel_Tests */, + 14E1B110C5BE8B5066D7A10B884FCED9 /* ApplicationTool.swift */, + D6DF56F6A21844A950DA501C73D7B57E /* DeviceTool.swift */, + 5869C03D555F426EF3EDCF5CA1AE48FB /* Sentinel.storyboard */, + 68833DC95C937BBC523E1614B694E82B /* SentinelInternal.swift */, + 6770A0CC8FBC3195B0BD5982D2A2EB13 /* SentinelTabBarController.swift */, + 9FD90ACD3F1A5190659CC992DF52A26F /* SentinelTableViewController.swift */, + 1B76F5FC2A4F7D9D944DDEBE0045861A /* SentinelUIKitExtensions.swift */, + 3761107827426A710050A9E8 /* UIImage+Assets.swift */, ); - name = "Targets Support Files"; + name = Internal; + path = Sentinel/Classes/Core/Internal; sourceTree = ""; }; - F2B4132FED9094F6DADBD261F5CA9E99 /* Internal */ = { + C6FABF2BEE193402A6219D5BFF0A1F74 /* Items */ = { isa = PBXGroup; children = ( - 4B4C2656C379879F07C9C0E28848BECF /* CLLocationManager+CustomLocation.swift */, - 11315814FF905E8C1CD967BFA8FCDAD8 /* CustomLocationProvider.swift */, + EF52AC1BF4F150BDC76E88932FC01D38 /* PerformanceInfoItem.swift */, + A867C79ED26FD51019988301F963081B /* PerformanceInfoTableViewCell.swift */, + 96092BC62D8466FC951696DDC5508D87 /* PerformanceInfoTableViewCell.xib */, ); - name = Internal; - path = Sentinel/Classes/CustomLocation/Internal; + path = Items; sourceTree = ""; }; - F30F1EDFFAFEE76A0443AF329F178B41 /* OptionSwitch */ = { + CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( - A779FA318D31A92BCB4935373EB959FD /* PermissionsTool.swift */, - 27999F75D9B4FC10806D4864588D2D3F /* Items */, + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, + 094C6A50608FDEB33F6305BA9A1A849A /* Development Pods */, + 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */, + 3B6DABB2E8626700366F9EF97244A591 /* Products */, + E1BF3393363293FA2C5AF0C96D0A5677 /* Targets Support Files */, ); - name = OptionSwitch; sourceTree = ""; }; - FA048FC1C93F83F94E8D5CCE09401B92 /* Internal */ = { + E1BF3393363293FA2C5AF0C96D0A5677 /* Targets Support Files */ = { isa = PBXGroup; children = ( - C6C8ABDCEBEF42DA4B89F1CE02572D5B /* Sentinel.storyboard */, - 0478B1E8C24818F9EF85F8881B92252B /* SentinelInternal.swift */, - 91C29F4D3F53382DA8A0AE8562BA0246 /* SentinelTableViewController.swift */, - DDF6396094385945F6BF336E3F5FAC93 /* SentinelUIKitExtensions.swift */, - 3784D1C52703433000C7C827 /* SentinelTabBarController.swift */, + 8F691C6054F4434031502E1A992CC026 /* Pods-Sentinel_Example */, + 053036BFEE8D66B6CDBECD24E5744268 /* Pods-Sentinel_Tests */, ); - name = Internal; - path = Sentinel/Classes/Core/Internal; + name = "Targets Support Files"; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 5218112CC5B9FACCF3866616CAFCFBC5 /* Headers */ = { + 10A6CEC9C74E64ADCE4D100FE48C8D82 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - F6D90AFA186B21D231E5723DD86AF442 /* Sentinel-umbrella.h in Headers */, + 35CBC186DE385AE7C5A4B5B8D07741B6 /* Sentinel-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 70B96992A105A8E14D3196B406BDBBEE /* Headers */ = { + 3EC64EA64D8E33FCF69E2B74755F1093 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 453C69B18384D1FD4749C62BE8185896 /* Pods-Sentinel_Example-umbrella.h in Headers */, + D45E6493FD41DD7AFDA785993EBDDA4C /* Pods-Sentinel_Tests-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - E2F1D4F1A2DF986C212A3F2CE219D591 /* Headers */ = { + B88E538BF3CE3AA1E440DF87C98A9A82 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - D0BF0D63B845BC00E5A8B4E8A684F0AE /* Pods-Sentinel_Tests-umbrella.h in Headers */, + B23641FF4898CF2A0121F8859419A180 /* Pods-Sentinel_Example-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -520,58 +503,76 @@ /* Begin PBXNativeTarget section */ 254C1FBF05728FD8BE3AFCBC3F313646 /* Pods-Sentinel_Example */ = { isa = PBXNativeTarget; - buildConfigurationList = 961DAF57A18D83EAACB071B8519E2400 /* Build configuration list for PBXNativeTarget "Pods-Sentinel_Example" */; + buildConfigurationList = 97CECA2C7429160E40B79AEC0BE6A8F4 /* Build configuration list for PBXNativeTarget "Pods-Sentinel_Example" */; buildPhases = ( - 70B96992A105A8E14D3196B406BDBBEE /* Headers */, - 1B115E6234DE0D69D49DB337D5A0E066 /* Sources */, - C05854686678D99BF72CDBC0C9461775 /* Frameworks */, - C7E7034D74EECE65F32EC3B97F51C85E /* Resources */, + B88E538BF3CE3AA1E440DF87C98A9A82 /* Headers */, + 24A49347F70E68823834794F4EF96E05 /* Sources */, + B4276B654DB7B973A0E992D1E1EB7E65 /* Frameworks */, + 9C3D8D7A448B8CD972F380C3EFED34BB /* Resources */, ); buildRules = ( ); dependencies = ( - C09A5C38A0DA046A1C5FD984BE2F1930 /* PBXTargetDependency */, + AFBD101BF8F4F5A454E6A6A3C5415775 /* PBXTargetDependency */, ); name = "Pods-Sentinel_Example"; - productName = "Pods-Sentinel_Example"; - productReference = F4A9B14258CE10FBC253BB5B34DAAE75 /* Pods_Sentinel_Example.framework */; + productName = Pods_Sentinel_Example; + productReference = F4A9B14258CE10FBC253BB5B34DAAE75 /* Pods-Sentinel_Example */; productType = "com.apple.product-type.framework"; }; 456B9E0EFF5B252F2D01BD09BEE7094C /* Pods-Sentinel_Tests */ = { isa = PBXNativeTarget; - buildConfigurationList = 3912FF649245EB2DE78FDC17F888A593 /* Build configuration list for PBXNativeTarget "Pods-Sentinel_Tests" */; + buildConfigurationList = 974D76B44E958BAAE90264833D7E7D59 /* Build configuration list for PBXNativeTarget "Pods-Sentinel_Tests" */; buildPhases = ( - E2F1D4F1A2DF986C212A3F2CE219D591 /* Headers */, - D00B8D2797DCAD177126F366CCA3EB03 /* Sources */, - C9FD69F9B710AA7835E9D10969AA7307 /* Frameworks */, - FC5A5DB4B3C6ED19CC8B421757AFCFFA /* Resources */, + 3EC64EA64D8E33FCF69E2B74755F1093 /* Headers */, + 79692FDF8C2D1BD09C5CBD4016EC0191 /* Sources */, + 6A36C98EB471CED862E3A32FB79C16FD /* Frameworks */, + 2910D6CC878E5FFB93FDAA0AF21A8630 /* Resources */, ); buildRules = ( ); dependencies = ( - 955DEE2F2EE1F51D4782883DE7BFE509 /* PBXTargetDependency */, + E8835DB32D9C85C9D3AC2BABC4D5D63D /* PBXTargetDependency */, ); name = "Pods-Sentinel_Tests"; - productName = "Pods-Sentinel_Tests"; - productReference = 65C9954C4CF9EB181467C37DE9785CCF /* Pods_Sentinel_Tests.framework */; + productName = Pods_Sentinel_Tests; + productReference = 65C9954C4CF9EB181467C37DE9785CCF /* Pods-Sentinel_Tests */; productType = "com.apple.product-type.framework"; }; + 8ACB6013C7A59AFAD22BD744A5CEE9FE /* Sentinel-Sentinel */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9BA7E0A8D12BD2A0FB4A77484724F4C0 /* Build configuration list for PBXNativeTarget "Sentinel-Sentinel" */; + buildPhases = ( + 79C9776BA5133630BC431BD8AE816E9F /* Sources */, + 6001246ABD90C3A452C62D43CBD4921D /* Frameworks */, + 81A49F1657C46FE10825F5B34ED1FDE1 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Sentinel-Sentinel"; + productName = Sentinel; + productReference = 2E1AA5D1D3E95612E2BD2EA95F67C327 /* Sentinel-Sentinel */; + productType = "com.apple.product-type.bundle"; + }; F402433F0FA4E4D3D7AF80AFBDD40215 /* Sentinel */ = { isa = PBXNativeTarget; - buildConfigurationList = EAA6D1E22B28710272566EF5677E8221 /* Build configuration list for PBXNativeTarget "Sentinel" */; + buildConfigurationList = 3333F5D509FC3282C8C8D48335166968 /* Build configuration list for PBXNativeTarget "Sentinel" */; buildPhases = ( - 5218112CC5B9FACCF3866616CAFCFBC5 /* Headers */, - B44C37269EF4386D791A6F5D6E3AB0C4 /* Sources */, - FC780F7602BED3A7CF7E75AB92559D61 /* Frameworks */, - C5916E52703F4D9BBA19DBB50B333DB5 /* Resources */, + 10A6CEC9C74E64ADCE4D100FE48C8D82 /* Headers */, + 165F96BF1005DFA1A74F3270BE72F0F6 /* Sources */, + 89511783AE589F3D9AE7395E0176B211 /* Frameworks */, + 7ED4AEB69F900FA5BB784232B80FF423 /* Resources */, ); buildRules = ( ); dependencies = ( + 37B22838C44094408B1A5B22F3930D28 /* PBXTargetDependency */, ); name = Sentinel; productName = Sentinel; - productReference = DA6F656ACB4F354E2B0B0D8829821734 /* Sentinel.framework */; + productReference = DA6F656ACB4F354E2B0B0D8829821734 /* Sentinel */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ @@ -580,46 +581,55 @@ BFDFE7DC352907FC980B868725387E98 /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 1100; - LastUpgradeCheck = 1100; + LastSwiftUpdateCheck = 1240; + LastUpgradeCheck = 1240; }; buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( - en, Base, + en, ); mainGroup = CF1408CF629C7361332E53B88F7BD30C; - productRefGroup = ADEF06986999BBC80E0FD346F48AFFAF /* Products */; + productRefGroup = 3B6DABB2E8626700366F9EF97244A591 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 254C1FBF05728FD8BE3AFCBC3F313646 /* Pods-Sentinel_Example */, 456B9E0EFF5B252F2D01BD09BEE7094C /* Pods-Sentinel_Tests */, F402433F0FA4E4D3D7AF80AFBDD40215 /* Sentinel */, + 8ACB6013C7A59AFAD22BD744A5CEE9FE /* Sentinel-Sentinel */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - C5916E52703F4D9BBA19DBB50B333DB5 /* Resources */ = { + 2910D6CC878E5FFB93FDAA0AF21A8630 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3712896F2705E91400E19209 /* assets.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - C7E7034D74EECE65F32EC3B97F51C85E /* Resources */ = { + 7ED4AEB69F900FA5BB784232B80FF423 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + BE2DEA6F31D10B70CA0FBF3729462936 /* Sentinel-Sentinel in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - FC5A5DB4B3C6ED19CC8B421757AFCFFA /* Resources */ = { + 81A49F1657C46FE10825F5B34ED1FDE1 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C5541061EB9CC982C7A4C2BAAB21C1BB /* assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9C3D8D7A448B8CD972F380C3EFED34BB /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -629,98 +639,109 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 1B115E6234DE0D69D49DB337D5A0E066 /* Sources */ = { + 165F96BF1005DFA1A74F3270BE72F0F6 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 77C12C8C5B3CF688808055546CE9233D /* Pods-Sentinel_Example-dummy.m in Sources */, + 575A66A33267F549708FEB69969CBE58 /* ApplicationTool.swift in Sources */, + 7AF02E0D0FE790042441806D3F3DCA9A /* CLLocationManager+CustomLocation.swift in Sources */, + 4F5893A5DBD064590A55AE9A9FF55E01 /* CPUInfoProvider.swift in Sources */, + E22A68F3EBE9B42CCD794A5B83BA1A43 /* CustomInfoTool.swift in Sources */, + 9AF09BA86618A2C9B5071586562EC469 /* CustomLocation.storyboard in Sources */, + A9F4AD33DC59D07324341F29F277E9FF /* CustomLocationProvider.swift in Sources */, + 1B166D11BAE125324397378B02C53240 /* CustomLocationTool.swift in Sources */, + 2DE1993035237EA93FFD232047940B09 /* CustomLocationViewController.swift in Sources */, + 32EFE9BB6C47D9E758A1C10CF1C46025 /* DetailToolTableCell.swift in Sources */, + A0975BD6CE58803E8AC9ADE8F092856F /* DetailToolTableCell.xib in Sources */, + 3EA3419B9BEAD640EB5C70E42A3E4C8D /* DeviceTool.swift in Sources */, + 1E1B2C29B7E439ED8CE948DE783116BF /* MemoryInfoProvider.swift in Sources */, + E543B48107A5F6880F3C11FCCFDC08CF /* NavigationToolTableCell.swift in Sources */, + 122EF7221CB690EC2CD283BE17CD636E /* NavigationToolTableCell.xib in Sources */, + F2131097313E088941506C6CAD1E6EED /* OptionSwitchItem.swift in Sources */, + 7ECD821301F46404D99DFC18293CE6CC /* OptionSwitchTableViewCell.swift in Sources */, + 3761107927426A710050A9E8 /* UIImage+Assets.swift in Sources */, + 0B047CBE939F9EC5CACAE3AF9C22070D /* OptionSwitchTableViewCell.xib in Sources */, + 16CEC87C047D66B9FAD8D7B66991ACAB /* PerformanceInfo.storyboard in Sources */, + D334B74F1F0A340979F2A470FC1094EA /* PerformanceInfoItem.swift in Sources */, + E1340DBDDF3A98E82AAC45E9AFF67676 /* PerformanceInfoTableViewCell.swift in Sources */, + 6426150ACE2D0FF805B3BF91FEE0E39C /* PerformanceInfoTableViewCell.xib in Sources */, + A411F40B77B665E8160B0E27E8B07DDD /* PerformanceTool.swift in Sources */, + 7046F84E64E1D55752186737C824FF14 /* PreferencesTool.swift in Sources */, + C38F22264AA28EC904380AFDE04A12FE /* Sentinel.storyboard in Sources */, + E535B201236E234BFCA72DDE07D81C49 /* Sentinel.swift in Sources */, + 847B5467D3A663862B1A1BC5B27F35CB /* Sentinel-dummy.m in Sources */, + 54166381E654242B76C4D74A9C5EDB5A /* SentinelInternal.swift in Sources */, + F2BFD3C72B7F6AD882CE95C133200434 /* SentinelTabBarController.swift in Sources */, + 80AB6A89970B56A683B90164F526EBA9 /* SentinelTableViewController.swift in Sources */, + 7EFA41C7E30B30722E23072CE1F6186F /* SentinelUIKitExtensions.swift in Sources */, + D039F128023B3D3749E702E318973174 /* SourceScreenProvider.swift in Sources */, + 7F494F70156DD86C8201B335DAF30F8A /* SystemInfoProvider.swift in Sources */, + A20F405F619D318A0B956CDB75772EA1 /* TextEditing.storyboard in Sources */, + 7E606326D999ED59E901D6F48CA6302B /* TextEditingTool.swift in Sources */, + 54DF532D1A216B62C1C6C876E6E8EAF7 /* TextEditingViewController.swift in Sources */, + FAD691F3E343112471C5B924537C2C7D /* Tool.swift in Sources */, + 8EEB172115FD7AB2BAD4EF96B440DF2F /* ToolTable.swift in Sources */, + E8CB68893DCC895B8464C7B6BABD989D /* ToolTableItem.swift in Sources */, + 86A2D60E22DA0C91C83B7425730AB233 /* ToolTableSection.swift in Sources */, + 003D357A71BD4884CF20A7B738819A11 /* Trigger.swift in Sources */, + 029609BE2884CE5E611F1C11832C47D5 /* UIImage+Bundle.swift in Sources */, + 9E9A56C3F63CCDE723599A4443D4FB32 /* UserDefaults.storyboard in Sources */, + 94E1BBA5EEB3F1E9B30D757C86354E90 /* UserDefaultsTool.swift in Sources */, + 5155AD0219476468287AD74361B70E14 /* UserDefaultsViewController.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - B44C37269EF4386D791A6F5D6E3AB0C4 /* Sources */ = { + 24A49347F70E68823834794F4EF96E05 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 17B6562027989B2F6073F13676DEFF01 /* CLLocationManager+CustomLocation.swift in Sources */, - 43DEAB0CC02165608DFF8A8B484BD365 /* CPUInfoProvider.swift in Sources */, - E8E6D4660B6D8CD2007F10ADF92228E3 /* CustomInfoTool.swift in Sources */, - FB320894038652D3859ED5E758F96986 /* CustomLocation.storyboard in Sources */, - 258E5BBCE4FF82B5001D102397E59857 /* CustomLocationProvider.swift in Sources */, - 377FD4842705CA590006AD3F /* DeviceTool.swift in Sources */, - A5BEEA9485999AD6DC7AAD1263B73A04 /* CustomLocationTool.swift in Sources */, - BFF73ABAF4F5C239FAD801AC7D7112E7 /* CustomLocationViewController.swift in Sources */, - 8BAD10621214A84E321415B8489C8D3F /* DetailToolTableCell.swift in Sources */, - 371289732705FC5A00E19209 /* UIImage+Resize.swift in Sources */, - 5DF8D6472EC24F103FD4E5E8D6B06E15 /* DetailToolTableCell.xib in Sources */, - 960018D0E71BE7A89EBF52633FBDEB5C /* ApplicationTool.swift in Sources */, - 2FDE0ECC9459E4BD800914542581365E /* MemoryInfoProvider.swift in Sources */, - 2C62AF6675E94A9C9CD330D8AC432946 /* NavigationToolTableCell.swift in Sources */, - 8BFDA1B37E1731C4C6A026E2D3145951 /* NavigationToolTableCell.xib in Sources */, - A9A283357528BA5214C8C416BB715E86 /* OptionSwitchItem.swift in Sources */, - DC4EF9FD4BBFF8E8BF072B26B590AB9E /* OptionSwitchTableViewCell.swift in Sources */, - 10D5C1F292E3041A08D55DD47AE3AB18 /* OptionSwitchTableViewCell.xib in Sources */, - 837CB27FA0A7CF74EA47633CE797DA1A /* PermissionsTool.swift in Sources */, - 972DF9BBC874D5003A33BC24EFCC665B /* PerformanceInfo.storyboard in Sources */, - 5BC2C8E60F49C240F555CB4383ABDC86 /* PerformanceInfoItem.swift in Sources */, - FBE2AF072AF2AD7F4CE2F369AC2A7DAB /* PerformanceInfoTableViewCell.swift in Sources */, - C4F51FC2EBDC16868E83D1449614BD09 /* PerformanceInfoTableViewCell.xib in Sources */, - 7E4BB6F555BE518B00860D94CB5E7692 /* PerformanceTool.swift in Sources */, - 782F6C65FE8C32B94BA11C25393F73D3 /* Sentinel-dummy.m in Sources */, - 37D35DCD27070D8900AF91C2 /* UIImageExtension.swift in Sources */, - E632399CC240CBDA518BC15304EF400B /* SourceScreenProvider.swift in Sources */, - 37D35DCB2707020900AF91C2 /* ViewControllerType.swift in Sources */, - CB19C9BCCEC59C92FC0AA10992CEA644 /* SystemInfoProvider.swift in Sources */, - 3784D1C62703433000C7C827 /* SentinelTabBarController.swift in Sources */, - 30A5B5EC9D36FCAAFC6964003F31E321 /* TextEditing.storyboard in Sources */, - C08C01A9ED38630D55A2DD21D4FD4F9A /* TextEditingTool.swift in Sources */, - DA86A9DB641093861B74BDD084E1A722 /* TextEditingViewController.swift in Sources */, - CEC9C3F8B9E32E8618D0D81416E426FE /* Tool.swift in Sources */, - 6B23CEE13784B4671A16023145651B81 /* Sentinel.storyboard in Sources */, - 445BC3DA99C0D4E492325038811F11D6 /* Sentinel.swift in Sources */, - 72AE478DCAC49054D3A8FAF003DB9F40 /* SentinelInternal.swift in Sources */, - 811F3F921077070C23AA5FD542DD4EBD /* SentinelTableViewController.swift in Sources */, - 2E81C360B6639BD7C6714B49DAC91355 /* SentinelUIKitExtensions.swift in Sources */, - 1B638C86E40904DD488569AE39AE6FB9 /* ToolTable.swift in Sources */, - 055F29FFE4A09604385DB65DC50C4FC0 /* ToolTableItem.swift in Sources */, - 5162A6D204BFD8448D586C63B648D32F /* ToolTableSection.swift in Sources */, - E7C5F6C19A95A212C06F852DBF11EB86 /* Trigger.swift in Sources */, - 3689FABCF25D189FFB952726E80CE7CF /* UserDefaults.storyboard in Sources */, - 2E4E5144558E979AD14DCE6ED2887BD7 /* UserDefaultsTool.swift in Sources */, - CCB4A5062B1860D651B947C588054554 /* UserDefaultsViewController.swift in Sources */, + 46B86E290AEED299FD5577116F78BB3E /* Pods-Sentinel_Example-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - D00B8D2797DCAD177126F366CCA3EB03 /* Sources */ = { + 79692FDF8C2D1BD09C5CBD4016EC0191 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B40BD9D6EA4805C9A0E676F6E9B2A48C /* Pods-Sentinel_Tests-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 79C9776BA5133630BC431BD8AE816E9F /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - ACBB2D36F4AA38CC9FBC2060D24AFF3D /* Pods-Sentinel_Tests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 955DEE2F2EE1F51D4782883DE7BFE509 /* PBXTargetDependency */ = { + 37B22838C44094408B1A5B22F3930D28 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "Pods-Sentinel_Example"; - target = 254C1FBF05728FD8BE3AFCBC3F313646 /* Pods-Sentinel_Example */; - targetProxy = 4234959383EBF4959CDABC16D973B727 /* PBXContainerItemProxy */; + name = "Sentinel-Sentinel"; + target = 8ACB6013C7A59AFAD22BD744A5CEE9FE /* Sentinel-Sentinel */; + targetProxy = C172841712980625012D99B2A8D09BC5 /* PBXContainerItemProxy */; }; - C09A5C38A0DA046A1C5FD984BE2F1930 /* PBXTargetDependency */ = { + AFBD101BF8F4F5A454E6A6A3C5415775 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Sentinel; target = F402433F0FA4E4D3D7AF80AFBDD40215 /* Sentinel */; - targetProxy = 5850551AB252289B541B6826DC709A91 /* PBXContainerItemProxy */; + targetProxy = 39E3895387C584983700F094ED903794 /* PBXContainerItemProxy */; + }; + E8835DB32D9C85C9D3AC2BABC4D5D63D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-Sentinel_Example"; + target = 254C1FBF05728FD8BE3AFCBC3F313646 /* Pods-Sentinel_Example */; + targetProxy = 906CAF01D52D23A51BAED3356CC90D20 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 44F9C24FEE9C82DD1B8B0987024F7487 /* Release */ = { + 07800313646402FC257A787845072EB5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9569796757499011EED7D03B408B6F1A /* Pods-Sentinel_Tests.release.xcconfig */; + baseConfigurationReference = 506DA1B239F0027DEF29621F8BC500DC /* Sentinel.debug.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -730,30 +751,29 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-Sentinel_Tests/Pods-Sentinel_Tests-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Sentinel/Sentinel-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Sentinel/Sentinel-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Sentinel_Tests/Pods-Sentinel_Tests.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + MODULEMAP_FILE = "Target Support Files/Sentinel/Sentinel.modulemap"; + PRODUCT_MODULE_NAME = Sentinel; + PRODUCT_NAME = Sentinel; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 63E75A9A3B02AEB9904EBAF24B12CD68 /* Debug */ = { + 0B6E365391F2D9F435DB996E46A24FF1 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C0F5D78F1C67966A7FC449B67275BA99 /* Sentinel.debug.xcconfig */; + baseConfigurationReference = C3831A0EE07DA0231A8F1CB9F738F429 /* Pods-Sentinel_Tests.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -763,29 +783,29 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Sentinel/Sentinel-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Sentinel/Sentinel-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-Sentinel_Tests/Pods-Sentinel_Tests-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Sentinel/Sentinel.modulemap"; - PRODUCT_MODULE_NAME = Sentinel; - PRODUCT_NAME = Sentinel; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Sentinel_Tests/Pods-Sentinel_Tests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 78755B31D06972299190DB2EE4DCB8D7 /* Debug */ = { + 667D2E4AF536FE6F80005CEAE1A842AD /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C3831A0EE07DA0231A8F1CB9F738F429 /* Pods-Sentinel_Tests.debug.xcconfig */; + baseConfigurationReference = FACA734A3CEA1EF4CBCFAC48E0AAED93 /* Sentinel.release.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -795,24 +815,24 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-Sentinel_Tests/Pods-Sentinel_Tests-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Sentinel/Sentinel-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Sentinel/Sentinel-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Sentinel_Tests/Pods-Sentinel_Tests.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + MODULEMAP_FILE = "Target Support Files/Sentinel/Sentinel.modulemap"; + PRODUCT_MODULE_NAME = Sentinel; + PRODUCT_NAME = Sentinel; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; 7EE7A78859F657F6BEFC651185B43192 /* Release */ = { isa = XCBuildConfiguration; @@ -875,10 +895,11 @@ }; name = Release; }; - 80BFCB01F4E096F0EBA43F66ADF861F7 /* Release */ = { + 8D25D5F9FB0CFBEBB78C0FA1D8BC3131 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7675A55F4DB9663570209AC976AF3A10 /* Sentinel.release.xcconfig */; + baseConfigurationReference = FCD5716A347A57C5EB37EDE8EE5438D4 /* Pods-Sentinel_Example.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -888,18 +909,19 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Sentinel/Sentinel-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Sentinel/Sentinel-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-Sentinel_Example/Pods-Sentinel_Example-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Sentinel/Sentinel.modulemap"; - PRODUCT_MODULE_NAME = Sentinel; - PRODUCT_NAME = Sentinel; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Sentinel_Example/Pods-Sentinel_Example.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -907,7 +929,7 @@ }; name = Release; }; - 89D809064FF8B3EDAE3330B6CB627EF0 /* Debug */ = { + 8E7C750A9F9DB4E6DBB89CC6891BB7AB /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = A66CE977C2A4DD6409F650637CBD401F /* Pods-Sentinel_Example.debug.xcconfig */; buildSettings = { @@ -940,6 +962,56 @@ }; name = Debug; }; + 99A58CB3FF74CC413EA262D32BB1E35F /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FACA734A3CEA1EF4CBCFAC48E0AAED93 /* Sentinel.release.xcconfig */; + buildSettings = { + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Sentinel"; + IBSC_MODULE = Sentinel; + INFOPLIST_FILE = "Target Support Files/Sentinel/ResourceBundle-Sentinel-Sentinel-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + PRODUCT_NAME = Sentinel; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; + B8D274A66A04B159B9B18D245655FB89 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9569796757499011EED7D03B408B6F1A /* Pods-Sentinel_Tests.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-Sentinel_Tests/Pods-Sentinel_Tests-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Sentinel_Tests/Pods-Sentinel_Tests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; D299434AB35E7FD6F7921C8EF24742FF /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1006,48 +1078,30 @@ }; name = Debug; }; - EBA57558CC9A1BFE4B9EE81E462E2D32 /* Release */ = { + F6A91B98C064FBCC451E08925503E27D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FCD5716A347A57C5EB37EDE8EE5438D4 /* Pods-Sentinel_Example.release.xcconfig */; + baseConfigurationReference = 506DA1B239F0027DEF29621F8BC500DC /* Sentinel.debug.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-Sentinel_Example/Pods-Sentinel_Example-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Sentinel"; + IBSC_MODULE = Sentinel; + INFOPLIST_FILE = "Target Support Files/Sentinel/ResourceBundle-Sentinel-Sentinel-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 10.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Sentinel_Example/Pods-Sentinel_Example.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PRODUCT_NAME = Sentinel; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; + WRAPPER_EXTENSION = bundle; }; - name = Release; + name = Debug; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 3912FF649245EB2DE78FDC17F888A593 /* Build configuration list for PBXNativeTarget "Pods-Sentinel_Tests" */ = { + 3333F5D509FC3282C8C8D48335166968 /* Build configuration list for PBXNativeTarget "Sentinel" */ = { isa = XCConfigurationList; buildConfigurations = ( - 78755B31D06972299190DB2EE4DCB8D7 /* Debug */, - 44F9C24FEE9C82DD1B8B0987024F7487 /* Release */, + 07800313646402FC257A787845072EB5 /* Debug */, + 667D2E4AF536FE6F80005CEAE1A842AD /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -1061,20 +1115,29 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 961DAF57A18D83EAACB071B8519E2400 /* Build configuration list for PBXNativeTarget "Pods-Sentinel_Example" */ = { + 974D76B44E958BAAE90264833D7E7D59 /* Build configuration list for PBXNativeTarget "Pods-Sentinel_Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0B6E365391F2D9F435DB996E46A24FF1 /* Debug */, + B8D274A66A04B159B9B18D245655FB89 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97CECA2C7429160E40B79AEC0BE6A8F4 /* Build configuration list for PBXNativeTarget "Pods-Sentinel_Example" */ = { isa = XCConfigurationList; buildConfigurations = ( - 89D809064FF8B3EDAE3330B6CB627EF0 /* Debug */, - EBA57558CC9A1BFE4B9EE81E462E2D32 /* Release */, + 8E7C750A9F9DB4E6DBB89CC6891BB7AB /* Debug */, + 8D25D5F9FB0CFBEBB78C0FA1D8BC3131 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - EAA6D1E22B28710272566EF5677E8221 /* Build configuration list for PBXNativeTarget "Sentinel" */ = { + 9BA7E0A8D12BD2A0FB4A77484724F4C0 /* Build configuration list for PBXNativeTarget "Sentinel-Sentinel" */ = { isa = XCConfigurationList; buildConfigurations = ( - 63E75A9A3B02AEB9904EBAF24B12CD68 /* Debug */, - 80BFCB01F4E096F0EBA43F66ADF861F7 /* Release */, + F6A91B98C064FBCC451E08925503E27D /* Debug */, + 99A58CB3FF74CC413EA262D32BB1E35F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Example/Pods/Target Support Files/Pods-Sentinel_Example/Pods-Sentinel_Example-frameworks.sh b/Example/Pods/Target Support Files/Pods-Sentinel_Example/Pods-Sentinel_Example-frameworks.sh index 36e5284..b1733f3 100755 --- a/Example/Pods/Target Support Files/Pods-Sentinel_Example/Pods-Sentinel_Example-frameworks.sh +++ b/Example/Pods/Target Support Files/Pods-Sentinel_Example/Pods-Sentinel_Example-frameworks.sh @@ -113,6 +113,7 @@ install_dsym() { rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}" else # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. + mkdir -p "${DWARF_DSYM_FOLDER_PATH}" touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM" fi fi diff --git a/Example/Pods/Target Support Files/Pods-Sentinel_Example/Pods-Sentinel_Example.debug.xcconfig b/Example/Pods/Target Support Files/Pods-Sentinel_Example/Pods-Sentinel_Example.debug.xcconfig index 9d5837b..86f9899 100644 --- a/Example/Pods/Target Support Files/Pods-Sentinel_Example/Pods-Sentinel_Example.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-Sentinel_Example/Pods-Sentinel_Example.debug.xcconfig @@ -3,7 +3,8 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Sentinel" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Sentinel/Sentinel.framework/Headers" -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' +LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift OTHER_LDFLAGS = $(inherited) -framework "Sentinel" -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} diff --git a/Example/Pods/Target Support Files/Pods-Sentinel_Example/Pods-Sentinel_Example.release.xcconfig b/Example/Pods/Target Support Files/Pods-Sentinel_Example/Pods-Sentinel_Example.release.xcconfig index 9d5837b..86f9899 100644 --- a/Example/Pods/Target Support Files/Pods-Sentinel_Example/Pods-Sentinel_Example.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-Sentinel_Example/Pods-Sentinel_Example.release.xcconfig @@ -3,7 +3,8 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Sentinel" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Sentinel/Sentinel.framework/Headers" -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' +LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift OTHER_LDFLAGS = $(inherited) -framework "Sentinel" -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} diff --git a/Example/Pods/Target Support Files/Sentinel/ResourceBundle-Images-Sentinel-Info.plist b/Example/Pods/Target Support Files/Sentinel/ResourceBundle-Images-Sentinel-Info.plist new file mode 100644 index 0000000..e148b98 --- /dev/null +++ b/Example/Pods/Target Support Files/Sentinel/ResourceBundle-Images-Sentinel-Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/Sentinel/ResourceBundle-Sentinel-Sentinel-Info.plist b/Example/Pods/Target Support Files/Sentinel/ResourceBundle-Sentinel-Sentinel-Info.plist new file mode 100644 index 0000000..e148b98 --- /dev/null +++ b/Example/Pods/Target Support Files/Sentinel/ResourceBundle-Sentinel-Sentinel-Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + NSPrincipalClass + + + diff --git a/Example/Pods/Target Support Files/Sentinel/Sentinel-Info.plist b/Example/Pods/Target Support Files/Sentinel/Sentinel-Info.plist index b07fa9b..2243fe6 100644 --- a/Example/Pods/Target Support Files/Sentinel/Sentinel-Info.plist +++ b/Example/Pods/Target Support Files/Sentinel/Sentinel-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 0.9.0 + 1.0.0 CFBundleSignature ???? CFBundleVersion diff --git a/Example/Pods/Target Support Files/Sentinel/Sentinel.debug.xcconfig b/Example/Pods/Target Support Files/Sentinel/Sentinel.debug.xcconfig index 96470e0..ab051fb 100644 --- a/Example/Pods/Target Support Files/Sentinel/Sentinel.debug.xcconfig +++ b/Example/Pods/Target Support Files/Sentinel/Sentinel.debug.xcconfig @@ -1,6 +1,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Sentinel GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift OTHER_LDFLAGS = $(inherited) -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} diff --git a/Example/Pods/Target Support Files/Sentinel/Sentinel.release.xcconfig b/Example/Pods/Target Support Files/Sentinel/Sentinel.release.xcconfig index 96470e0..ab051fb 100644 --- a/Example/Pods/Target Support Files/Sentinel/Sentinel.release.xcconfig +++ b/Example/Pods/Target Support Files/Sentinel/Sentinel.release.xcconfig @@ -1,6 +1,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Sentinel GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LIBRARY_SEARCH_PATHS = $(inherited) "${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift OTHER_LDFLAGS = $(inherited) -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} diff --git a/Example/Sentinel/AppDelegate.swift b/Example/Sentinel/AppDelegate.swift index 957f6b3..bfcef75 100644 --- a/Example/Sentinel/AppDelegate.swift +++ b/Example/Sentinel/AppDelegate.swift @@ -37,16 +37,14 @@ private extension AppDelegate { let configuration = Sentinel.Configuration( trigger: Triggers.shake, tools: [ - ApplicationTool(), UserDefaultsTool(), baseUrlTool, CustomLocationTool(), // BugsnatchTool(triggerActionConfig: EmailConfig()), // LoggieTool(), // AnalyticsCollectorTool(), - optionSwitchTool, - PerformanceTool(), - ] + ], + preferences: optionSwitchItems ) Sentinel.shared.setup(with: configuration) @@ -62,32 +60,31 @@ private extension AppDelegate { ) } - var optionSwitchTool: Tool { - PermissionsTool( - items: [ - OptionSwitchItem( - name: "Analytics", - setter: { AppSwitches.analyticsEnabled = $0 }, - getter: { AppSwitches.analyticsEnabled }, - userDefaults: .standard, - userDefaultsKey: "com.infinum.sentinel.optionSwitch.analytics" - ), - OptionSwitchItem( - name: "Crashlytics", - setter: { AppSwitches.crashlyticsEnabled = $0 }, - getter: { AppSwitches.crashlyticsEnabled }, - userDefaults: .standard, - userDefaultsKey: "com.infinum.sentinel.optionSwitch.crashlytics" - ), - OptionSwitchItem( - name: "Logging", - setter: { AppSwitches.loggingEnabled = $0 }, - getter: { AppSwitches.loggingEnabled }, - userDefaults: .standard, - userDefaultsKey: "com.infinum.sentinel.optionSwitch.logging" - ) - ] - ) + var optionSwitchItems: [OptionSwitchItem] { + [ + OptionSwitchItem( + name: "Analytics", + setter: { AppSwitches.analyticsEnabled = $0 }, + getter: { AppSwitches.analyticsEnabled }, + userDefaults: .standard, + userDefaultsKey: "com.infinum.sentinel.optionSwitch.analytics" + ), + OptionSwitchItem( + name: "Crashlytics", + setter: { AppSwitches.crashlyticsEnabled = $0 }, + getter: { AppSwitches.crashlyticsEnabled }, + userDefaults: .standard, + userDefaultsKey: "com.infinum.sentinel.optionSwitch.crashlytics" + ), + OptionSwitchItem( + name: "Logging", + setter: { AppSwitches.loggingEnabled = $0 }, + getter: { AppSwitches.loggingEnabled }, + userDefaults: .standard, + userDefaultsKey: "com.infinum.sentinel.optionSwitch.logging" + ), + ] + } } diff --git a/Gemfile b/Gemfile deleted file mode 100644 index 5dec194..0000000 --- a/Gemfile +++ /dev/null @@ -1,6 +0,0 @@ -# frozen_string_literal: true - -source "https://rubygems.org" - -gem 'redbreast' - diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index 776e68c..0000000 --- a/Gemfile.lock +++ /dev/null @@ -1,60 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - CFPropertyList (3.0.4) - rexml - activesupport (6.1.4.1) - concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 1.6, < 2) - minitest (>= 5.1) - tzinfo (~> 2.0) - zeitwerk (~> 2.3) - atomos (0.1.3) - claide (1.0.3) - colored2 (3.1.2) - commander (4.6.0) - highline (~> 2.0.0) - concurrent-ruby (1.1.9) - highline (2.0.3) - i18n (1.8.10) - concurrent-ruby (~> 1.0) - minitest (5.14.4) - nanaimo (0.3.0) - pastel (0.8.0) - tty-color (~> 0.5) - redbreast (1.1.2) - activesupport - commander - tty-prompt - xcodeproj - rexml (3.2.5) - tty-color (0.6.0) - tty-cursor (0.7.1) - tty-prompt (0.23.1) - pastel (~> 0.8) - tty-reader (~> 0.8) - tty-reader (0.9.0) - tty-cursor (~> 0.7) - tty-screen (~> 0.8) - wisper (~> 2.0) - tty-screen (0.8.1) - tzinfo (2.0.4) - concurrent-ruby (~> 1.0) - wisper (2.0.1) - xcodeproj (1.21.0) - CFPropertyList (>= 2.3.3, < 4.0) - atomos (~> 0.1.3) - claide (>= 1.0.2, < 2.0) - colored2 (~> 3.1) - nanaimo (~> 0.3.0) - rexml (~> 3.2.4) - zeitwerk (2.4.2) - -PLATFORMS - ruby - -DEPENDENCIES - redbreast - -BUNDLED WITH - 1.17.2 diff --git a/README.md b/README.md index 52c1367..5b46ed4 100644 --- a/README.md +++ b/README.md @@ -10,11 +10,11 @@ ## About -*Sentinel* is a simple library which gives developers a possibility to configure one entry point for every debug tool. The idea of *Sentinel* is to give ability to developers to configure screen with multiple debug tools which are available via some event (e.g. shake, notification). +**Sentinel** is a simple library that gives developers the possibility to configure one entry point for every debug tool. The idea of **Sentinel** is to give the ability to developers to configure a screen with multiple debug tools which are available via some event (e.g. shake, notification). -This library supports both **Swift** and **Objective-C**. +**Sentinel** has a tab bar that contains five screens. Three of those aren't configurable, and two of them are. The first screen is the **Device** screen which allows the user to look into some of the device-specific information. The second screen is the **Application** screen which allows the user to look into some of the application-specific information from the info.plist. The third, the first configurable screen, is the **Tools** screen. **Tools** screen allows you to add as much `Tool` object as your heart desires which can be used by the user to find out some specific information. The fourth, last configurable screen, is the **Preferences** screen. **Preferences** screen allows you to add options that allow or deny some activity inside the app. The last, but not the least, is the **Performance** screen which contains performance-specific information. Later on, we'll explain how you can configure those screens. -*Note*: Current release is an **alpha** release. +This library supports both **Swift** and **Objective-C**. ## Example @@ -46,13 +46,15 @@ In this chapter, some of the most important pieces of the library will be introd #### Configuration -To be able to configure `Sentinel` object, the `Configuration` object is introduced. This object contains multiple objects which defines general *Sentinel* behaviour. The inputs which this object needs are; `trigger`, `sourceScreenProvider` and `tools`. +To be able to configure the `Sentinel` object, the `Configuration` object is introduced. This object contains multiple objects which define general *Sentinel* behaviour. The inputs which this object needs are; `trigger`, `sourceScreenProvider`, `tools`, and `preferences`. The `trigger` object is a type of `Trigger` which defines on which event the *Sentinel* will be triggered. Currently, three types of are supported; `ShakeTrigger`, `ScreenshotTrigger`, `NotificationTrigger`. New triggers can be added as well, just by conforming the `Trigger` protocol. The `sourceScreenProvider` object is a type of `SourceScreenProvider` which should provide a view controller from where will *Sentinel* be presented. Currently, one type is supported; `default`. -The last object needed for configuration is `tools`, which is an array of `Tool` objects. `Tool` objects represents tools which will be available from *Sentinel*. There are multiple tools already supported by the library, but custom tools can be created and added to the *Sentinel*. +The `tools` object is an array of `Tool` objects. `Tool` objects represent tools which will be available from *Sentinel*. There are multiple tools already supported by the library, but custom tools can be created and added to the *Sentinel*. + +The last, but not the least, is the `preferences` object which is an array of `OptionSwitchItem` objects. `OptionSwitchItem` is used to allow the user to switch of some of the preferences which are contained in the app. e.g. The app supports Analitycs and you can add an `OptionSwitchTool` which will be shown on the `Preferences` screen and the user can turn it off if he doesn't want it. #### Custom tools @@ -80,6 +82,15 @@ let configuration = Sentinel.Configuration( GeneralInfoTool(), UserDefaultsTool(), LoggieTool(), + ], + preferences: [ + OptionSwitchItem( + name: "Analytics", + setter: { AppSwitches.analyticsEnabled = $0 }, + getter: { AppSwitches.analyticsEnabled }, + userDefaults: .standard, + userDefaultsKey: "com.infinum.sentinel.optionSwitch.analytics" + ) ] ) diff --git a/Sentinel.podspec b/Sentinel.podspec index e0437a2..10f3c86 100644 --- a/Sentinel.podspec +++ b/Sentinel.podspec @@ -26,9 +26,9 @@ Pod::Spec.new do |s| s.swift_version = '5.0' s.ios.deployment_target = '10.0' s.resource_bundles = { - 'Images' => ['Sentinel/Assets/*.pdf'], + 'Sentinel' => ['Sentinel/Assets/**/*'], } - + s.resources = 'Sentinel/Assets/**/*.{pdf}' s.default_subspec = 'Default' s.subspec 'Core' do |sp| @@ -46,30 +46,10 @@ Pod::Spec.new do |s| sp.dependency 'Sentinel/Core' end - s.subspec 'CustomInfo' do |sp| - sp.source_files = 'Sentinel/Classes/CustomInfo/**/*' - sp.dependency 'Sentinel/Core' - end - - s.subspec 'GeneralInfo' do |sp| - sp.source_files = 'Sentinel/Classes/GeneralInfo/**/*' - sp.dependency 'Sentinel/CustomInfo' - end - s.subspec 'TextEditing' do |sp| sp.source_files = 'Sentinel/Classes/TextEditing/**/*' sp.dependency 'Sentinel/Core' end - - s.subspec 'OptionSwitch' do |sp| - sp.source_files = 'Sentinel/Classes/OptionSwitch/**/*' - sp.dependency 'Sentinel/Core' - end - - s.subspec 'PerformanceInfo' do |sp| - sp.source_files = 'Sentinel/Classes/PerformanceInfo/**/*' - sp.dependency 'Sentinel/Core' - end s.subspec 'Loggie' do |sp| sp.source_files = 'Sentinel/Classes/Loggie/**/*' @@ -94,11 +74,7 @@ Pod::Spec.new do |s| sp.dependency 'Sentinel/Core' sp.dependency 'Sentinel/UserDefaults' sp.dependency 'Sentinel/CustomLocation' - sp.dependency 'Sentinel/CustomInfo' - sp.dependency 'Sentinel/GeneralInfo' sp.dependency 'Sentinel/TextEditing' - sp.dependency 'Sentinel/OptionSwitch' - sp.dependency 'Sentinel/PerformanceInfo' end end diff --git a/assets.xcassets/Contents.json b/Sentinel/Assets/assets.xcassets/Contents.json similarity index 100% rename from assets.xcassets/Contents.json rename to Sentinel/Assets/assets.xcassets/Contents.json diff --git a/Sentinel/Assets/assets.xcassets/application.imageset/Contents.json b/Sentinel/Assets/assets.xcassets/application.imageset/Contents.json new file mode 100644 index 0000000..8b25da5 --- /dev/null +++ b/Sentinel/Assets/assets.xcassets/application.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "application-1.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sentinel/Assets/assets.xcassets/application.imageset/application-1.pdf b/Sentinel/Assets/assets.xcassets/application.imageset/application-1.pdf new file mode 100644 index 0000000..65db094 Binary files /dev/null and b/Sentinel/Assets/assets.xcassets/application.imageset/application-1.pdf differ diff --git a/Sentinel/Assets/assets.xcassets/device.imageset/Contents.json b/Sentinel/Assets/assets.xcassets/device.imageset/Contents.json new file mode 100644 index 0000000..5830797 --- /dev/null +++ b/Sentinel/Assets/assets.xcassets/device.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "device.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sentinel/Assets/assets.xcassets/device.imageset/device.pdf b/Sentinel/Assets/assets.xcassets/device.imageset/device.pdf new file mode 100644 index 0000000..e700c6d Binary files /dev/null and b/Sentinel/Assets/assets.xcassets/device.imageset/device.pdf differ diff --git a/Sentinel/Assets/assets.xcassets/performance.imageset/Contents.json b/Sentinel/Assets/assets.xcassets/performance.imageset/Contents.json new file mode 100644 index 0000000..3a12186 --- /dev/null +++ b/Sentinel/Assets/assets.xcassets/performance.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "performance.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sentinel/Assets/assets.xcassets/performance.imageset/performance.pdf b/Sentinel/Assets/assets.xcassets/performance.imageset/performance.pdf new file mode 100644 index 0000000..93abd38 Binary files /dev/null and b/Sentinel/Assets/assets.xcassets/performance.imageset/performance.pdf differ diff --git a/Sentinel/Assets/assets.xcassets/preferences.imageset/Contents.json b/Sentinel/Assets/assets.xcassets/preferences.imageset/Contents.json new file mode 100644 index 0000000..bb790f5 --- /dev/null +++ b/Sentinel/Assets/assets.xcassets/preferences.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "preferences.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sentinel/Assets/assets.xcassets/preferences.imageset/preferences.pdf b/Sentinel/Assets/assets.xcassets/preferences.imageset/preferences.pdf new file mode 100644 index 0000000..17bac46 Binary files /dev/null and b/Sentinel/Assets/assets.xcassets/preferences.imageset/preferences.pdf differ diff --git a/Sentinel/Assets/assets.xcassets/tools.imageset/Contents.json b/Sentinel/Assets/assets.xcassets/tools.imageset/Contents.json new file mode 100644 index 0000000..1c9610f --- /dev/null +++ b/Sentinel/Assets/assets.xcassets/tools.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "tools-1.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sentinel/Assets/assets.xcassets/tools.imageset/tools-1.pdf b/Sentinel/Assets/assets.xcassets/tools.imageset/tools-1.pdf new file mode 100644 index 0000000..c7bce40 Binary files /dev/null and b/Sentinel/Assets/assets.xcassets/tools.imageset/tools-1.pdf differ diff --git a/Sentinel/Classes/CustomInfo/CustomInfoTool.swift b/Sentinel/Classes/Core/CustomInfoTool.swift similarity index 72% rename from Sentinel/Classes/CustomInfo/CustomInfoTool.swift rename to Sentinel/Classes/Core/CustomInfoTool.swift index 11dd136..f0377e7 100644 --- a/Sentinel/Classes/CustomInfo/CustomInfoTool.swift +++ b/Sentinel/Classes/Core/CustomInfoTool.swift @@ -7,16 +7,16 @@ import Foundation -public class CustomInfoTool: Tool { +@objcMembers +public class CustomInfoTool: NSObject, Tool { // MARK: - Public properties public let name: String - public var type: ViewControllerType = .customInfo - // MARK: - Private properties + // MARK: - Internal properties - private let info: [Section] + let info: [Section] // MARK: - Lifecycle @@ -32,14 +32,9 @@ public class CustomInfoTool: Tool { toolTable.presentPreview(from: viewController) } - public func createViewController(on viewController: UIViewController? = nil) -> UIViewController { - let toolTable = createToolTable(with: info) - return toolTable.createViewController() - } - - // MARK: - Private properties + // MARK: - Internal methods - private func createToolTable(with info: [Section]) -> ToolTable { + func createToolTable(with info: [Section]) -> ToolTable { let sections = info.map { (section) in ToolTableSection( title: section.title, @@ -54,7 +49,7 @@ extension CustomInfoTool { public class Section { - // MARK: - Public properties + // MARK: - Internal properties let title: String? let items: [Item] @@ -69,7 +64,7 @@ extension CustomInfoTool { public class Item { - // MARK: - Public properties + // MARK: - Internal properties let title: String let value: String diff --git a/Sentinel/Classes/GeneralInfo/ApplicationTool.swift b/Sentinel/Classes/Core/Internal/ApplicationTool.swift similarity index 82% rename from Sentinel/Classes/GeneralInfo/ApplicationTool.swift rename to Sentinel/Classes/Core/Internal/ApplicationTool.swift index f479ad3..234691d 100644 --- a/Sentinel/Classes/GeneralInfo/ApplicationTool.swift +++ b/Sentinel/Classes/Core/Internal/ApplicationTool.swift @@ -8,15 +8,15 @@ import Foundation import UIKit -public class ApplicationTool: Tool { +class ApplicationTool: Tool { // MARK: - Lifecycle public init() {} - + // MARK: - Private properties - private(set) lazy var tool = CustomInfoTool( + private lazy var tool = CustomInfoTool( name: "Application", info: [ CustomInfoTool.Section( @@ -39,27 +39,27 @@ public class ApplicationTool: Tool { ] ) + // MARK: - Internal properties + + var toolTable: ToolTable { + return tool.createToolTable(with: tool.info) + } + // MARK: - Public properties public var name: String { tool.name } - - public let type: ViewControllerType = .application // MARK: - Public methods public func presentPreview(from viewController: UIViewController) { tool.presentPreview(from: viewController) } - - public func createViewController(on viewController: UIViewController? = nil) -> UIViewController { - let controller = tool.createViewController() - controller.tabBarItem = UITabBarItem(title: "Application", image: UIImage.Sentinel.application.resize(), tag: 1) - return controller - } } +// MARK: - Internal extension + extension ApplicationTool { - + func stringFromPlist(for key: CFString) -> String { stringFromPlist(for: key as String) } diff --git a/Sentinel/Classes/DeviceTool/DeviceTool.swift b/Sentinel/Classes/Core/Internal/DeviceTool.swift similarity index 76% rename from Sentinel/Classes/DeviceTool/DeviceTool.swift rename to Sentinel/Classes/Core/Internal/DeviceTool.swift index aa27fb1..653dcee 100644 --- a/Sentinel/Classes/DeviceTool/DeviceTool.swift +++ b/Sentinel/Classes/Core/Internal/DeviceTool.swift @@ -8,15 +8,15 @@ import Foundation import UIKit -public class DeviceTool: Tool { +class DeviceTool: Tool { - // MARK: -Lifecycle + // MARK: - Lifecycle public init() {} // MARK: - Private properties - private(set) lazy var tool = CustomInfoTool( + private lazy var tool = CustomInfoTool( name: "Device", info: [ CustomInfoTool.Section(title: "Device", items: [ @@ -29,6 +29,14 @@ public class DeviceTool: Tool { ]) ]) + // MARK: - Internal properties + + var toolTable: ToolTable { + return tool.createToolTable(with: tool.info) + } + + // MARK: - Private properties + private var systemVersion: String { "\(UIDevice.current.systemName) \(UIDevice.current.systemVersion)" } @@ -36,22 +44,15 @@ public class DeviceTool: Tool { // MARK: - Public properties public var name: String { tool.name } - public var type: ViewControllerType = .device // MARK: - Public methods public func presentPreview(from viewController: UIViewController) { tool.presentPreview(from: viewController) } - - public func createViewController(on viewController: UIViewController? = nil) -> UIViewController { - let controller = tool.createViewController() - controller.tabBarItem = UITabBarItem(title: "Device", image: UIImage.Sentinel.device.resize(), tag: 0) - return controller - } } -// MARK: - Private methods +// MARK: - Private extension private extension DeviceTool { diff --git a/Sentinel/Classes/Core/Internal/SentinelInternal.swift b/Sentinel/Classes/Core/Internal/SentinelInternal.swift index de017a5..a59cb5f 100644 --- a/Sentinel/Classes/Core/Internal/SentinelInternal.swift +++ b/Sentinel/Classes/Core/Internal/SentinelInternal.swift @@ -6,6 +6,7 @@ // import Foundation +import UIKit extension Sentinel { @@ -13,10 +14,20 @@ extension Sentinel { /// /// - Parameters: /// - tools: Tools which will be available in the Sentinel. + /// - preferences: items which can allow or deny an activity inside the app /// - viewController: The view controller from where will the Sentinel be presented. - func present(tools: [Tool], on viewController: UIViewController) { - let tabBarControllers = createTabBarControllers(with: tools, viewController: viewController) - let tabBarController = UIStoryboard.sentinel.instantiateViewController(ofType: SentinelTabBarController.self) + func present( + tools: [Tool], + preferences: [OptionSwitchItem], + on viewController: UIViewController + ) { + let tabBarControllers = createTabBarControllers( + with: tools, + preferences: preferences, + viewController: viewController + ) + let tabBarController = UIStoryboard.sentinel + .instantiateViewController(ofType: SentinelTabBarController.self) tabBarController.setupViewControllers(with: tabBarControllers) tabBarController.title = "Sentinel" @@ -25,38 +36,82 @@ extension Sentinel { } } +// MARK: - Private extension + private extension Sentinel { - func createTabBarControllers(with tools: [Tool], viewController: UIViewController) -> [UIViewController] { - var tabBarControllers = tools.filter { tool in - return tool.type == .application || - tool.type == .permissions || - tool.type == .performance - }.map { $0.createViewController(on: viewController) } - - let toolItems = tools.filter { tool in - return tool.type != .application && - tool.type != .permissions && - tool.type != .performance - } - - let toolsViewController = createToolsController(with: toolItems, viewController: viewController) - let deviceViewController = createDeviceViewController() - - tabBarControllers.insert(deviceViewController, at: 0) - tabBarControllers.insert(toolsViewController, at: 2) - return tabBarControllers + func createTabBarControllers( + with tools: [Tool], + preferences: [OptionSwitchItem], + viewController: UIViewController + ) -> [UIViewController] { + return [ + createDeviceViewController(), + createApplicationViewController(), + createToolsController(with: tools), + createPreferencesViewController(preferences), + createPerformanceViewController() + ] } - func createToolsController(with tools: [Tool], viewController: UIViewController) -> UIViewController { - let navigationItems = tools.map { NavigationToolTableItem(title: $0.name, navigate: $0.presentPreview(from:)) } + func createToolsController(with tools: [Tool]) -> UIViewController { + let navigationItems = tools + .map { NavigationToolTableItem(title: $0.name, navigate: $0.presentPreview(from:)) } let section = ToolTableSection(title: "Tools", items: navigationItems) - let toolsViewController = ToolTable(name: "Tools", sections: [section]).createViewController(on: viewController) - toolsViewController.tabBarItem = UITabBarItem(title: "Tools", image: UIImage.Sentinel.tools.resize(), tag: 2) + let toolTable = ToolTable(name: "Tools", sections: [section]) + let toolsViewController = SentinelTableViewController.create(with: toolTable) + toolsViewController.tabBarItem = UITabBarItem( + title: "Tools", + image: UIImage.SentinelImages.tools, + selectedImage: UIImage.SentinelImages.tools + ) return toolsViewController } func createDeviceViewController() -> UIViewController { let deviceInfoItem = DeviceTool() - return deviceInfoItem.createViewController() + let toolTable = deviceInfoItem.toolTable + let viewController = SentinelTableViewController.create(with: toolTable) + viewController.tabBarItem = UITabBarItem( + title: "Device", + image: UIImage.SentinelImages.device, + selectedImage: UIImage.SentinelImages.device + ) + return viewController +} + + func createApplicationViewController() -> UIViewController { + let applicationInfoTool = ApplicationTool() + let toolTable = applicationInfoTool.toolTable + let viewController = SentinelTableViewController.create(with: toolTable) + viewController.tabBarItem = UITabBarItem( + title: "Application", + image: UIImage.SentinelImages.application, + selectedImage: UIImage.SentinelImages.application + ) + return viewController + } + + func createPreferencesViewController(_ items: [OptionSwitchItem]) -> UIViewController { + let preferencesTool = PreferencesTool(items: items) + let toolTable = preferencesTool.toolTable + let viewController = SentinelTableViewController.create(with: toolTable) + viewController.tabBarItem = UITabBarItem( + title: "Preferences", + image: UIImage.SentinelImages.preferences, + selectedImage: UIImage.SentinelImages.preferences + ) + return viewController + } + + func createPerformanceViewController() -> UIViewController { + let performanceInfoTool = PerformanceTool() + let toolTable = performanceInfoTool.toolTable + let viewController = SentinelTableViewController.create(with: toolTable) + viewController.tabBarItem = UITabBarItem( + title: "Performance", + image: UIImage.SentinelImages.performance, + selectedImage: UIImage.SentinelImages.performance + ) + return viewController } } diff --git a/Sentinel/Classes/Core/Internal/UIImage+Assets.swift b/Sentinel/Classes/Core/Internal/UIImage+Assets.swift new file mode 100644 index 0000000..ab896a2 --- /dev/null +++ b/Sentinel/Classes/Core/Internal/UIImage+Assets.swift @@ -0,0 +1,20 @@ +// +// UIImage+Assets.swift +// Sentinel +// +// Created by Zvonimir Medak on 15.11.2021.. +// + +import Foundation + +extension UIImage { + enum SentinelImages{} +} + +extension UIImage.SentinelImages { + static var device = UIImage.load(fromBundleNamed: "device") + static var application = UIImage.load(fromBundleNamed: "application") + static var tools = UIImage.load(fromBundleNamed: "tools") + static var preferences = UIImage.load(fromBundleNamed: "preferences") + static var performance = UIImage.load(fromBundleNamed: "performance") +} diff --git a/Sentinel/Classes/PerformanceInfo/Internal/CPUInfoProvider.swift b/Sentinel/Classes/Core/PerformanceInfo/Internal/CPUInfoProvider.swift similarity index 100% rename from Sentinel/Classes/PerformanceInfo/Internal/CPUInfoProvider.swift rename to Sentinel/Classes/Core/PerformanceInfo/Internal/CPUInfoProvider.swift diff --git a/Sentinel/Classes/PerformanceInfo/Internal/MemoryInfoProvider.swift b/Sentinel/Classes/Core/PerformanceInfo/Internal/MemoryInfoProvider.swift similarity index 100% rename from Sentinel/Classes/PerformanceInfo/Internal/MemoryInfoProvider.swift rename to Sentinel/Classes/Core/PerformanceInfo/Internal/MemoryInfoProvider.swift diff --git a/Sentinel/Classes/PerformanceInfo/Internal/SystemInfoProvider.swift b/Sentinel/Classes/Core/PerformanceInfo/Internal/SystemInfoProvider.swift similarity index 100% rename from Sentinel/Classes/PerformanceInfo/Internal/SystemInfoProvider.swift rename to Sentinel/Classes/Core/PerformanceInfo/Internal/SystemInfoProvider.swift diff --git a/Sentinel/Classes/PerformanceInfo/Items/PerformanceInfoItem.swift b/Sentinel/Classes/Core/PerformanceInfo/Items/PerformanceInfoItem.swift similarity index 96% rename from Sentinel/Classes/PerformanceInfo/Items/PerformanceInfoItem.swift rename to Sentinel/Classes/Core/PerformanceInfo/Items/PerformanceInfoItem.swift index 516b118..cf3b017 100644 --- a/Sentinel/Classes/PerformanceInfo/Items/PerformanceInfoItem.swift +++ b/Sentinel/Classes/Core/PerformanceInfo/Items/PerformanceInfoItem.swift @@ -9,7 +9,7 @@ import Foundation class PerformanceInfoItem: NSObject { - // MARK: - Properties + // MARK: - Internal properties let title: String let valueDidChange: () -> String diff --git a/Sentinel/Classes/PerformanceInfo/Items/PerformanceInfoTableViewCell.swift b/Sentinel/Classes/Core/PerformanceInfo/Items/PerformanceInfoTableViewCell.swift similarity index 95% rename from Sentinel/Classes/PerformanceInfo/Items/PerformanceInfoTableViewCell.swift rename to Sentinel/Classes/Core/PerformanceInfo/Items/PerformanceInfoTableViewCell.swift index d86db41..0e46bb2 100644 --- a/Sentinel/Classes/PerformanceInfo/Items/PerformanceInfoTableViewCell.swift +++ b/Sentinel/Classes/Core/PerformanceInfo/Items/PerformanceInfoTableViewCell.swift @@ -19,7 +19,7 @@ class PerformanceInfoTableViewCell: UITableViewCell { private var valueDidChange: (() -> String)? private var timer: Timer? - // MARK - Lifecycle + // MARK: - Lifecycle override func awakeFromNib() { super.awakeFromNib() @@ -32,7 +32,7 @@ class PerformanceInfoTableViewCell: UITableViewCell { initializeTimer() } - // MARK: - Public methods + // MARK: - Internal methods func configure(with item: PerformanceInfoItem) { self.valueDidChange = item.valueDidChange diff --git a/Sentinel/Classes/PerformanceInfo/Items/PerformanceInfoTableViewCell.xib b/Sentinel/Classes/Core/PerformanceInfo/Items/PerformanceInfoTableViewCell.xib similarity index 100% rename from Sentinel/Classes/PerformanceInfo/Items/PerformanceInfoTableViewCell.xib rename to Sentinel/Classes/Core/PerformanceInfo/Items/PerformanceInfoTableViewCell.xib diff --git a/Sentinel/Classes/PerformanceInfo/PerformanceInfo.storyboard b/Sentinel/Classes/Core/PerformanceInfo/PerformanceInfo.storyboard similarity index 100% rename from Sentinel/Classes/PerformanceInfo/PerformanceInfo.storyboard rename to Sentinel/Classes/Core/PerformanceInfo/PerformanceInfo.storyboard diff --git a/Sentinel/Classes/PerformanceInfo/PerformanceTool.swift b/Sentinel/Classes/Core/PerformanceInfo/PerformanceTool.swift similarity index 81% rename from Sentinel/Classes/PerformanceInfo/PerformanceTool.swift rename to Sentinel/Classes/Core/PerformanceInfo/PerformanceTool.swift index 41788b4..e853503 100644 --- a/Sentinel/Classes/PerformanceInfo/PerformanceTool.swift +++ b/Sentinel/Classes/Core/PerformanceInfo/PerformanceTool.swift @@ -7,12 +7,11 @@ import UIKit -public class PerformanceTool: Tool { +class PerformanceTool: Tool { // MARK: - Public properties public let name: String - public var type: ViewControllerType = .performance // MARK: - Lifecycle @@ -20,19 +19,18 @@ public class PerformanceTool: Tool { self.name = name } + // MARK: - Internal properties + + var toolTable: ToolTable { + return createToolTable() + } + // MARK: - Public methods public func presentPreview(from viewController: UIViewController) { let toolTable = createToolTable() toolTable.presentPreview(from: viewController) } - - public func createViewController(on viewController: UIViewController?) -> UIViewController { - let toolTable = createToolTable() - let controller = toolTable.createViewController() - controller.tabBarItem = UITabBarItem(title: "Performance", image: UIImage.Sentinel.performance.resize(), tag: 1) - return controller - } } // MARK: - Private methods diff --git a/Sentinel/Classes/OptionSwitch/Items/OptionSwitchItem.swift b/Sentinel/Classes/Core/PreferencesInfo/OptionSwitchItem.swift similarity index 97% rename from Sentinel/Classes/OptionSwitch/Items/OptionSwitchItem.swift rename to Sentinel/Classes/Core/PreferencesInfo/OptionSwitchItem.swift index a2fc28d..ff59bf3 100644 --- a/Sentinel/Classes/OptionSwitch/Items/OptionSwitchItem.swift +++ b/Sentinel/Classes/Core/PreferencesInfo/OptionSwitchItem.swift @@ -11,7 +11,7 @@ import Foundation @objcMembers public class OptionSwitchItem: NSObject { - // MARK: - Public properties + // MARK: - Internal properties /// Name of the item let name: String @@ -47,7 +47,7 @@ public class OptionSwitchItem: NSObject { loadStoredValue() } - // MARK: - Public methods + // MARK: - Internal methods /// Changes current enabled state of the feature. /// diff --git a/Sentinel/Classes/OptionSwitch/Items/OptionSwitchTableViewCell.swift b/Sentinel/Classes/Core/PreferencesInfo/OptionSwitchTableViewCell.swift similarity index 100% rename from Sentinel/Classes/OptionSwitch/Items/OptionSwitchTableViewCell.swift rename to Sentinel/Classes/Core/PreferencesInfo/OptionSwitchTableViewCell.swift diff --git a/Sentinel/Classes/OptionSwitch/Items/OptionSwitchTableViewCell.xib b/Sentinel/Classes/Core/PreferencesInfo/OptionSwitchTableViewCell.xib similarity index 100% rename from Sentinel/Classes/OptionSwitch/Items/OptionSwitchTableViewCell.xib rename to Sentinel/Classes/Core/PreferencesInfo/OptionSwitchTableViewCell.xib diff --git a/Sentinel/Classes/OptionSwitch/PermissionsTool.swift b/Sentinel/Classes/Core/PreferencesInfo/PreferencesTool.swift similarity index 62% rename from Sentinel/Classes/OptionSwitch/PermissionsTool.swift rename to Sentinel/Classes/Core/PreferencesInfo/PreferencesTool.swift index d3d40ae..557b60a 100644 --- a/Sentinel/Classes/OptionSwitch/PermissionsTool.swift +++ b/Sentinel/Classes/Core/PreferencesInfo/PreferencesTool.swift @@ -9,21 +9,25 @@ import Foundation /// Provides functionality which gives the user ability /// to change environment variables in the application. -@objcMembers -public class PermissionsTool: Tool { +class PreferencesTool: Tool { // MARK: - Public properties public let name: String - public var type: ViewControllerType = .permissions // MARK: - Private properties private let items: [OptionSwitchItem] + + // MARK: - Internal properties + + var toolTable: ToolTable { + return createToolTable(with: items) + } // MARK: - Lifecycle - public init(name: String = "Permissions", items: [OptionSwitchItem]) { + public init(name: String = "Preferences", items: [OptionSwitchItem]) { self.name = name self.items = items } @@ -34,16 +38,11 @@ public class PermissionsTool: Tool { let toolTable = createToolTable(with: items) toolTable.presentPreview(from: viewController) } - - public func createViewController(on viewController: UIViewController?) -> UIViewController { - let toolTable = createToolTable(with: items) - let controller = toolTable.createViewController(on: nil) - controller.tabBarItem = UITabBarItem(title: "Permissions", image: UIImage.Sentinel.permissions.resize(), tag: 2) - return controller - } } -private extension PermissionsTool { +// MARK: - Private extension + +private extension PreferencesTool { func createToolTable(with items: [OptionSwitchItem]) -> ToolTable { let section = ToolTableSection( title: nil, diff --git a/Sentinel/Classes/Core/Sentinel.swift b/Sentinel/Classes/Core/Sentinel.swift index 5ba5299..d0cdaf9 100644 --- a/Sentinel/Classes/Core/Sentinel.swift +++ b/Sentinel/Classes/Core/Sentinel.swift @@ -14,9 +14,9 @@ import Foundation @objcMembers public class Sentinel: NSObject { - // MARK: - Private properties + // MARK: - Internal properties - internal var configuration: Configuration? + var configuration: Configuration? // MARK: - Public properties @@ -40,7 +40,7 @@ public class Sentinel: NSObject { self.configuration = configuration configuration.trigger.subscribe { [weak self] in guard let viewController = configuration.sourceScreenProvider.viewControllerForShowingTools else { return } - self?.present(tools: configuration.tools, on: viewController) + self?.present(tools: configuration.tools, preferences: configuration.preferences, on: viewController) } } @@ -51,6 +51,7 @@ public class Sentinel: NSObject { /// Based on the provided properties, Sentinel will be shown based on different event /// and it will show different tools. @objcMembers + @objc(Configuration) public class Configuration: NSObject { // MARK: - Public properties @@ -63,6 +64,9 @@ public class Sentinel: NSObject { /// Tools which are available from the Sentinel. public let tools: [Tool] + + /// Items which are shown on preferences screen + public let preferences: [OptionSwitchItem] // MARK: - Lifecycle @@ -72,14 +76,17 @@ public class Sentinel: NSObject { /// - trigger: The trigger event which opens the Sentinel. /// - sourceScreenProvider: The screen from which Sentinel can be presented. /// - tools: Tools available from the Sentinel. + /// - preferences: items which can allow or deny an activity inside the app public init( trigger: Trigger, sourceScreenProvider: SourceScreenProvider = SourceScreenProviders.default, - tools: [Tool] + tools: [Tool], + preferences: [OptionSwitchItem] = [] ) { self.trigger = trigger self.sourceScreenProvider = sourceScreenProvider self.tools = tools + self.preferences = preferences super.init() } } diff --git a/Sentinel/Classes/Core/Tool.swift b/Sentinel/Classes/Core/Tool.swift index 9463020..338b5ed 100644 --- a/Sentinel/Classes/Core/Tool.swift +++ b/Sentinel/Classes/Core/Tool.swift @@ -13,11 +13,9 @@ public protocol Tool { /// The name of the tool. var name: String { get } - var type: ViewControllerType { get } /// Presents the tool view controller from provided view controller. /// /// - Parameter viewController: The view controller used for presenting tool view controller. @objc(presentPreviewFromViewController:) func presentPreview(from viewController: UIViewController) - func createViewController(on viewController: UIViewController?) -> UIViewController } diff --git a/Sentinel/Classes/Core/ToolTable.swift b/Sentinel/Classes/Core/ToolTable.swift index f5df506..f7fe659 100644 --- a/Sentinel/Classes/Core/ToolTable.swift +++ b/Sentinel/Classes/Core/ToolTable.swift @@ -14,8 +14,9 @@ public class ToolTable: NSObject, Tool { // MARK: - Public properties public let name: String - public var type: ViewControllerType = .tools - + + // MARK: - Internal properties + /// Tool sections in the table view. let sections: [ToolTableSection] @@ -35,7 +36,7 @@ public class ToolTable: NSObject, Tool { } @objc(presentPreviewFromViewController:push:) - func presentPreview(from viewController: UIViewController, push: Bool) { + public func presentPreview(from viewController: UIViewController, push: Bool) { let sentinelController = SentinelTableViewController.create(with: self) if let navController = viewController.navigationController, push { navController.pushViewController(sentinelController, animated: true) @@ -44,8 +45,4 @@ public class ToolTable: NSObject, Tool { viewController.present(navContoller, animated: true) } } - - public func createViewController(on viewController: UIViewController? = nil) -> UIViewController { - SentinelTableViewController.create(with: self) - } } diff --git a/Sentinel/Classes/Core/ToolTableItems/DetailToolTableCell.swift b/Sentinel/Classes/Core/ToolTableItems/DetailToolTableCell.swift index 63a2c6f..89be663 100644 --- a/Sentinel/Classes/Core/ToolTableItems/DetailToolTableCell.swift +++ b/Sentinel/Classes/Core/ToolTableItems/DetailToolTableCell.swift @@ -10,7 +10,7 @@ import Foundation @objcMembers public class DetailToolTableItem: NSObject { - // MARK: - Public properties + // MARK: - Internal properties let title: String let detail: String @@ -44,7 +44,7 @@ class DetailToolTableCell: UITableViewCell { @IBOutlet weak var titleLabel: UILabel! @IBOutlet weak var valueLabel: UILabel! - // MARK: - Public methods + // MARK: - Internal methods func configure(with item: DetailToolTableItem) { titleLabel?.text = item.title diff --git a/Sentinel/Classes/Core/ToolTableItems/NavigationToolTableCell.swift b/Sentinel/Classes/Core/ToolTableItems/NavigationToolTableCell.swift index 09e0c8c..13c88a3 100644 --- a/Sentinel/Classes/Core/ToolTableItems/NavigationToolTableCell.swift +++ b/Sentinel/Classes/Core/ToolTableItems/NavigationToolTableCell.swift @@ -10,7 +10,7 @@ import Foundation @objcMembers public class NavigationToolTableItem: NSObject { - // MARK: - Public properties + // MARK: - Internal properties let title: String let navigate: (UIViewController) -> () @@ -44,7 +44,7 @@ extension NavigationToolTableItem: ToolTableItem { class NavigationToolTableCell: UITableViewCell { - // MARK: - Public methods + // MARK: - Internal methods func configure(with item: NavigationToolTableItem) { textLabel?.text = item.title diff --git a/Sentinel/Classes/Core/ToolTableSection.swift b/Sentinel/Classes/Core/ToolTableSection.swift index 0ca020b..f259094 100644 --- a/Sentinel/Classes/Core/ToolTableSection.swift +++ b/Sentinel/Classes/Core/ToolTableSection.swift @@ -11,7 +11,7 @@ import Foundation @objcMembers public class ToolTableSection: NSObject { - // MARK: - Public properties + // MARK: - Internal properties /// The title of the section. let title: String? diff --git a/Sentinel/Classes/Core/Trigger.swift b/Sentinel/Classes/Core/Trigger.swift index fd749ac..71349f9 100644 --- a/Sentinel/Classes/Core/Trigger.swift +++ b/Sentinel/Classes/Core/Trigger.swift @@ -96,7 +96,7 @@ public class NotificationTrigger: NSObject, Trigger { @objcMembers public class ScreenshotTrigger: NSObject, Trigger { - // MARK: - Public properties + // MARK: - Internal properties let notificationTrigger: NotificationTrigger @@ -119,7 +119,7 @@ public class ScreenshotTrigger: NSObject, Trigger { @objcMembers public class ShakeTrigger: NSObject, Trigger { - // MARK: - Public properties + // MARK: - Internal properties let notificationTrigger: NotificationTrigger diff --git a/Sentinel/Classes/Core/UIImage+Bundle.swift b/Sentinel/Classes/Core/UIImage+Bundle.swift new file mode 100644 index 0000000..75de66e --- /dev/null +++ b/Sentinel/Classes/Core/UIImage+Bundle.swift @@ -0,0 +1,19 @@ +// +// UIImage+Bundle.swift +// Sentinel +// +// Created by Zvonimir Medak on 30.09.2021.. +// + +import Foundation +extension UIImage { + + static func load(fromBundleNamed name: String) -> UIImage? { + let frameworkBundle = Bundle(for: Sentinel.self) + guard let frameworkURL = frameworkBundle.resourceURL else { return nil } + let bundleURL = frameworkURL.appendingPathComponent("Sentinel.bundle") + let resourceBundle = Bundle(url: bundleURL) + return UIImage(named: name, in: resourceBundle, compatibleWith: nil) + } +} + diff --git a/Sentinel/Classes/Core/UIImage+Resize.swift b/Sentinel/Classes/Core/UIImage+Resize.swift deleted file mode 100644 index dd35ab4..0000000 --- a/Sentinel/Classes/Core/UIImage+Resize.swift +++ /dev/null @@ -1,19 +0,0 @@ -// -// UIImage+Resize.swift -// Sentinel -// -// Created by Zvonimir Medak on 30.09.2021.. -// - -import Foundation -extension UIImage { - func resize(for size: CGSize = CGSize(width: 24, height: 24)) -> UIImage? { - let rect = CGRect(origin: .zero, size: size) - UIGraphicsBeginImageContextWithOptions(size, false, 1.0) - self.draw(in: rect) - let newImage = UIGraphicsGetImageFromCurrentImageContext() - UIGraphicsEndImageContext() - return newImage - } -} - diff --git a/Sentinel/Classes/Core/UIImageExtension.swift b/Sentinel/Classes/Core/UIImageExtension.swift deleted file mode 100644 index 7d48c3c..0000000 --- a/Sentinel/Classes/Core/UIImageExtension.swift +++ /dev/null @@ -1,16 +0,0 @@ -import UIKit - -// THIS FILE IS AUTOGENERATED, DO NOT EDIT BY HAND -// swiftlint:disable file_length type_body_length line_length superfluous_disable_command -extension UIImage { - enum Sentinel {} -} - -extension UIImage.Sentinel { - - static var performance: UIImage { return UIImage(named: "performance", in: .sentinel, compatibleWith: nil)! } - static var tools: UIImage { return UIImage(named: "tools", in: .sentinel, compatibleWith: nil)! } - static var permissions: UIImage { return UIImage(named: "permissions", in: .sentinel, compatibleWith: nil)! } - static var device: UIImage { return UIImage(named: "device", in: .sentinel, compatibleWith: nil)! } - static var application: UIImage { return UIImage(named: "application", in: .sentinel, compatibleWith: nil)! } -} diff --git a/Sentinel/Classes/Core/ViewControllerType.swift b/Sentinel/Classes/Core/ViewControllerType.swift deleted file mode 100644 index 9951f9e..0000000 --- a/Sentinel/Classes/Core/ViewControllerType.swift +++ /dev/null @@ -1,21 +0,0 @@ -// -// TabViewControllerType.swift -// Sentinel -// -// Created by Zvonimir Medak on 01.10.2021.. -// - -import Foundation - -@objc -public enum ViewControllerType: Int { - case device - case application - case tools - case permissions - case performance - case userDefaults - case textEditing - case customInfo - case location -} diff --git a/Sentinel/Classes/CustomLocation/CustomLocationTool.swift b/Sentinel/Classes/CustomLocation/CustomLocationTool.swift index a8c42e3..2e9c638 100644 --- a/Sentinel/Classes/CustomLocation/CustomLocationTool.swift +++ b/Sentinel/Classes/CustomLocation/CustomLocationTool.swift @@ -13,16 +13,15 @@ import Foundation /// every location change will be applied after /// the application is restarted. @objcMembers -public class CustomLocationTool: Tool { +public class CustomLocationTool: NSObject, Tool { // MARK: - Public properties public let name: String - public var type: ViewControllerType = .location - // MARK: - Private properties + // MARK: - Internal properties - internal let locationProvider: CustomLocationProvider + let locationProvider: CustomLocationProvider // MARK: - Lifecycle @@ -39,8 +38,4 @@ public class CustomLocationTool: Tool { ) viewController.navigationController?.pushViewController(customLocationViewController, animated: true) } - - public func createViewController(on viewController: UIViewController? = nil) -> UIViewController { - return CustomLocationViewController.create(locationProvider: locationProvider) - } } diff --git a/Sentinel/Classes/CustomLocation/CustomLocationViewController.swift b/Sentinel/Classes/CustomLocation/CustomLocationViewController.swift index 3ca3835..e350c02 100644 --- a/Sentinel/Classes/CustomLocation/CustomLocationViewController.swift +++ b/Sentinel/Classes/CustomLocation/CustomLocationViewController.swift @@ -46,7 +46,7 @@ class CustomLocationViewController: UIViewController { NotificationCenter.default.removeObserver(self) } - // MARK: - Public methods + // MARK: - Internal methods static func create(locationProvider: CustomLocationProvider) -> CustomLocationViewController { let viewController = UIStoryboard.customLocation.instantiateViewController(ofType: CustomLocationViewController.self) diff --git a/Sentinel/Classes/CustomLocation/Internal/CLLocationManager+CustomLocation.swift b/Sentinel/Classes/CustomLocation/Internal/CLLocationManager+CustomLocation.swift index a947771..344b3ad 100644 --- a/Sentinel/Classes/CustomLocation/Internal/CLLocationManager+CustomLocation.swift +++ b/Sentinel/Classes/CustomLocation/Internal/CLLocationManager+CustomLocation.swift @@ -10,7 +10,7 @@ import CoreLocation extension CLLocationManager { @objc - internal func startUpdatingCustomLocation() { + func startUpdatingCustomLocation() { guard let tools = Sentinel.shared.configuration?.tools.compactMap({ $0 as? CustomLocationTool }) else { return } let locations = tools.compactMap({ $0.locationProvider.customLocation }) delegate?.locationManager?(self, didUpdateLocations: locations) diff --git a/Sentinel/Classes/TextEditing/TextEditingTool.swift b/Sentinel/Classes/TextEditing/TextEditingTool.swift index d1024e4..c3efb9d 100644 --- a/Sentinel/Classes/TextEditing/TextEditingTool.swift +++ b/Sentinel/Classes/TextEditing/TextEditingTool.swift @@ -8,12 +8,11 @@ import Foundation @objcMembers -public class TextEditingTool: Tool { +public class TextEditingTool: NSObject, Tool { // MARK: - Public properties public let name: String - public var type: ViewControllerType = .textEditing // MARK: - Private properties @@ -36,6 +35,7 @@ public class TextEditingTool: Tool { self.getter = getter self.userDefaults = userDefaults self.userDefaultsKey = userDefaultsKey + super.init() loadStoredValue() } @@ -49,16 +49,10 @@ public class TextEditingTool: Tool { ) viewController.navigationController?.pushViewController(textEditing, animated: true) } - - public func createViewController(on viewController: UIViewController?) -> UIViewController { - return TextEditingViewController.create( - withTitle: name, - setter: store(newValue:), - getter: getter - ) - } } +// MARK: - Internal methods + extension TextEditingTool { func store(newValue: String) { diff --git a/Sentinel/Classes/TextEditing/TextEditingViewController.swift b/Sentinel/Classes/TextEditing/TextEditingViewController.swift index 4bec0af..9a37a5e 100644 --- a/Sentinel/Classes/TextEditing/TextEditingViewController.swift +++ b/Sentinel/Classes/TextEditing/TextEditingViewController.swift @@ -24,7 +24,7 @@ class TextEditingViewController: UIViewController { @IBOutlet private var titleLabel: UILabel! @IBOutlet private var valueTextView: UITextView! - // MARK: - Public methods + // MARK: - Internal methods static func create( withTitle name: String, diff --git a/Sentinel/Classes/UserDefaults/UserDefaultsTool.swift b/Sentinel/Classes/UserDefaults/UserDefaultsTool.swift index e25d6f5..f086b1d 100644 --- a/Sentinel/Classes/UserDefaults/UserDefaultsTool.swift +++ b/Sentinel/Classes/UserDefaults/UserDefaultsTool.swift @@ -8,12 +8,11 @@ import Foundation @objcMembers -public class UserDefaultsTool: Tool { +public class UserDefaultsTool: NSObject, Tool { // MARK: - Public properties public let name: String - public var type: ViewControllerType = .userDefaults // MARK: - Private properties @@ -32,17 +31,10 @@ public class UserDefaultsTool: Tool { let toolTable = createToolTable(with: userDefaults, viewController: viewController) toolTable.presentPreview(from: viewController) } - - public func createViewController(on viewController: UIViewController?) -> UIViewController { - guard let viewController = viewController else { - return UIViewController() - } - - let toolTable = createToolTable(with: userDefaults, viewController: viewController) - return toolTable.createViewController() - } } +// MARK: - Internal methods + private extension UserDefaultsTool { func createToolTable(with userDefaults: UserDefaults, viewController: UIViewController) -> ToolTable { let items = userDefaults.dictionaryRepresentation().map { (key, value) in diff --git a/Sentinel/Classes/UserDefaults/UserDefaultsViewController.swift b/Sentinel/Classes/UserDefaults/UserDefaultsViewController.swift index f0614a2..fe73b1e 100644 --- a/Sentinel/Classes/UserDefaults/UserDefaultsViewController.swift +++ b/Sentinel/Classes/UserDefaults/UserDefaultsViewController.swift @@ -23,7 +23,7 @@ class UserDefaultsViewController: UIViewController { @IBOutlet private var titleLabel: UILabel! @IBOutlet private var detailsTextView: UITextView! - // MARK: - Public methods + // MARK: - Internal methods static func create(withTitle title: String, details: String) -> UserDefaultsViewController { let viewController = UIStoryboard.userDefaults.instantiateViewController(ofType: UserDefaultsViewController.self) diff --git a/assets.xcassets/application.imageset/Contents.json b/assets.xcassets/application.imageset/Contents.json deleted file mode 100644 index 7d7c869..0000000 --- a/assets.xcassets/application.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "sentinel_ic_application-1.pdf", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "application.pdf", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "sentinel_ic_application-2.pdf", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/assets.xcassets/application.imageset/application.pdf b/assets.xcassets/application.imageset/application.pdf deleted file mode 100644 index b3a4568..0000000 Binary files a/assets.xcassets/application.imageset/application.pdf and /dev/null differ diff --git a/assets.xcassets/application.imageset/sentinel_ic_application-1.pdf b/assets.xcassets/application.imageset/sentinel_ic_application-1.pdf deleted file mode 100644 index b3a4568..0000000 Binary files a/assets.xcassets/application.imageset/sentinel_ic_application-1.pdf and /dev/null differ diff --git a/assets.xcassets/application.imageset/sentinel_ic_application-2.pdf b/assets.xcassets/application.imageset/sentinel_ic_application-2.pdf deleted file mode 100644 index b3a4568..0000000 Binary files a/assets.xcassets/application.imageset/sentinel_ic_application-2.pdf and /dev/null differ diff --git a/assets.xcassets/device.imageset/Contents.json b/assets.xcassets/device.imageset/Contents.json deleted file mode 100644 index fd80da1..0000000 --- a/assets.xcassets/device.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "device-1.pdf", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "device.pdf", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "device-2.pdf", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/assets.xcassets/device.imageset/device-1.pdf b/assets.xcassets/device.imageset/device-1.pdf deleted file mode 100644 index 65a09e0..0000000 Binary files a/assets.xcassets/device.imageset/device-1.pdf and /dev/null differ diff --git a/assets.xcassets/device.imageset/device-2.pdf b/assets.xcassets/device.imageset/device-2.pdf deleted file mode 100644 index 65a09e0..0000000 Binary files a/assets.xcassets/device.imageset/device-2.pdf and /dev/null differ diff --git a/assets.xcassets/device.imageset/device.pdf b/assets.xcassets/device.imageset/device.pdf deleted file mode 100644 index 65a09e0..0000000 Binary files a/assets.xcassets/device.imageset/device.pdf and /dev/null differ diff --git a/assets.xcassets/performance.imageset/Contents.json b/assets.xcassets/performance.imageset/Contents.json deleted file mode 100644 index 98cc85f..0000000 --- a/assets.xcassets/performance.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "performance.pdf", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "performance-1.pdf", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "performance-2.pdf", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/assets.xcassets/performance.imageset/performance-1.pdf b/assets.xcassets/performance.imageset/performance-1.pdf deleted file mode 100644 index aeda422..0000000 Binary files a/assets.xcassets/performance.imageset/performance-1.pdf and /dev/null differ diff --git a/assets.xcassets/performance.imageset/performance-2.pdf b/assets.xcassets/performance.imageset/performance-2.pdf deleted file mode 100644 index aeda422..0000000 Binary files a/assets.xcassets/performance.imageset/performance-2.pdf and /dev/null differ diff --git a/assets.xcassets/performance.imageset/performance.pdf b/assets.xcassets/performance.imageset/performance.pdf deleted file mode 100644 index aeda422..0000000 Binary files a/assets.xcassets/performance.imageset/performance.pdf and /dev/null differ diff --git a/assets.xcassets/permissions.imageset/Contents.json b/assets.xcassets/permissions.imageset/Contents.json deleted file mode 100644 index 7a282a8..0000000 --- a/assets.xcassets/permissions.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "permissions-1.pdf", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "permissions.pdf", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "permissions-2.pdf", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/assets.xcassets/permissions.imageset/permissions-1.pdf b/assets.xcassets/permissions.imageset/permissions-1.pdf deleted file mode 100644 index e849a4d..0000000 Binary files a/assets.xcassets/permissions.imageset/permissions-1.pdf and /dev/null differ diff --git a/assets.xcassets/permissions.imageset/permissions-2.pdf b/assets.xcassets/permissions.imageset/permissions-2.pdf deleted file mode 100644 index e849a4d..0000000 Binary files a/assets.xcassets/permissions.imageset/permissions-2.pdf and /dev/null differ diff --git a/assets.xcassets/permissions.imageset/permissions.pdf b/assets.xcassets/permissions.imageset/permissions.pdf deleted file mode 100644 index e849a4d..0000000 Binary files a/assets.xcassets/permissions.imageset/permissions.pdf and /dev/null differ diff --git a/assets.xcassets/tools.imageset/Contents.json b/assets.xcassets/tools.imageset/Contents.json deleted file mode 100644 index 7609bac..0000000 --- a/assets.xcassets/tools.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "tools-1.pdf", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "tools.pdf", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "tools-2.pdf", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/assets.xcassets/tools.imageset/tools-1.pdf b/assets.xcassets/tools.imageset/tools-1.pdf deleted file mode 100644 index 2ea657c..0000000 Binary files a/assets.xcassets/tools.imageset/tools-1.pdf and /dev/null differ diff --git a/assets.xcassets/tools.imageset/tools-2.pdf b/assets.xcassets/tools.imageset/tools-2.pdf deleted file mode 100644 index 2ea657c..0000000 Binary files a/assets.xcassets/tools.imageset/tools-2.pdf and /dev/null differ diff --git a/assets.xcassets/tools.imageset/tools.pdf b/assets.xcassets/tools.imageset/tools.pdf deleted file mode 100644 index 2ea657c..0000000 Binary files a/assets.xcassets/tools.imageset/tools.pdf and /dev/null differ