Skip to content

Commit 34295d3

Browse files
authored
Merge pull request #9 from jamf/master
Master
2 parents 1a79bd1 + 89d08cc commit 34295d3

27 files changed

Lines changed: 2183 additions & 852 deletions

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@
33
**/.DS_Store
44
localOnly/
55
*.xcuserstate
6-
*.xcbkptlist
6+
*.xcbkptlist
7+
**/TelemetryDeckConfig.swift

README.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# jamfStatus
22
Download: [jamfStatus](https://github.com/jamf/jamfStatus/releases/latest/download/jamfStatus.zip)
33

4+
The application submits basic hardware, OS, and jamfStatus application usage to [TelemetryDeck](https://telemetrydeck.com) by default. The data is sent anonymously and can be disabled by clicking 'Opt out of analytics' from the About window.
5+
46
Keep an eye on the status of Jamf Cloud with jamfStatus. The app will place an icon in the menu bar to reflect the current cloud status.
57

68
<img src="./jamfStatus/images/menubar.png" alt="menu bar" width="200" />
@@ -20,7 +22,7 @@ Access Preferences from the menu bar icon. Here you'll be able to set the follo
2022
- Whether the alert window is displayed at every polling interval or only when the status changes.<br>
2123
- How the menubar icon is displayed. Minimizing will place a thin transparent icon in the menubar.<br>
2224
- Use of a LaunchAgent, to automatically start the app when logging in.<br>
23-
- Information for your specific Jamf Cloud instance. Use either a local user account or API client.
25+
- Information for your specific Jamf Cloud instance. Use either a local user account or API client. Keyboard shortcuts for copy/paste do not function, however you can right-click a field to paste URL, username, API client...<br>
2426
- Most notification can be viewed using an account with no permissions set in Jamf Pro. Using an account with ready-only on all objects ensure you'll see all notifications. If your cloud server does not utilize the standard HTTPS port (443) be sure to include the port you use in the URL.
2527

2628
<img src="./jamfStatus/images/prefs.png" alt="notifications" width="600" /><br>
@@ -48,6 +50,11 @@ Notifications, if any, will appear after the next polling cycle once the informa
4850

4951
<img src="./jamfStatus/images/notifications.png" alt="Preferences" width="600" />
5052

53+
The health status can also be viewed for Jamf Cloud hosted instances. The status displays the percent of incoming requests that are successful.
54+
55+
<img src="./jamfStatus/images/healthStatusMenu.png" alt="Health Status" width="150" />
56+
<img src="./jamfStatus/images/healthStatus.png" alt="Health Status" width="600" />
57+
5158
Status changes are logged to ~/Library/Logs/jamfStatus/jamfStatus.log. Once the log exceeds 5MB it will be zipped and a new log will be created. A maximum of 10 zipped log files are retained. Sample log data:
5259

5360
```
@@ -120,6 +127,10 @@ Thu Sep 17 20:27:30 Jamf Cloud: All systems go.
120127

121128
## Change log
122129

130+
2025-12-21: v2.5.0 - Add basic hardware, OS, and jamfStatus app useage collection. Data is sent anonymously to [TelemetryDeck](https:telemetrydeck.com) to aid in the development of the app. View 'About...' to opt out of sending the data. Add ability to view health-status for Jamf Cloud hosted instances. Fix an issue with token renewal.
131+
132+
2023-12-06: v2.4.1 - Minor updates to the alerts display.
133+
123134
2023-11-11: v2.4.0 - Fix issue with notifications not being displayed. Add ability to use API client.
124135

125136
2023-04-07: v2.3.6 - Update logging to prevent potential looping.

jamfStatus.xcodeproj/project.pbxproj

Lines changed: 80 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
archiveVersion = 1;
44
classes = {
55
};
6-
objectVersion = 46;
6+
objectVersion = 54;
77
objects = {
88

99
/* Begin PBXBuildFile section */
@@ -16,14 +16,20 @@
1616
B542A1F324BA90AA00EE33C8 /* WriteToLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = B542A1F224BA90A900EE33C8 /* WriteToLog.swift */; };
1717
B5A470B02271CE7200C2A88D /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B5A470AF2271CE7200C2A88D /* WebKit.framework */; };
1818
B5AC20321F36479A00C16EAA /* com.jamf.cloudmonitor.plist in Resources */ = {isa = PBXBuildFile; fileRef = B5AC20311F36479A00C16EAA /* com.jamf.cloudmonitor.plist */; };
19-
B5AC20351F37858800C16EAA /* index.html in Resources */ = {isa = PBXBuildFile; fileRef = B5AC20341F37858800C16EAA /* index.html */; };
2019
B5AC20371F37859F00C16EAA /* images in Resources */ = {isa = PBXBuildFile; fileRef = B5AC20361F37859F00C16EAA /* images */; };
2120
B5BD6AD723297762001D244A /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5BD6AD623297762001D244A /* Credentials.swift */; };
2221
B5BD6AD9232F108A001D244A /* VersionCheck.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5BD6AD8232F108A001D244A /* VersionCheck.swift */; };
23-
B5BE0F9E2AFEF434000CBEBE /* TokenDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5BE0F9D2AFEF434000CBEBE /* TokenDelegate.swift */; };
2422
B5E62F32231CAB640012FF5A /* UapiCall.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E62F31231CAB640012FF5A /* UapiCall.swift */; };
2523
B5E62F34231DA09F0012FF5A /* NotificationAlert.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5E62F33231DA09F0012FF5A /* NotificationAlert.swift */; };
26-
B5FD9DAC2742AAC60044C321 /* Misc in Resources */ = {isa = PBXBuildFile; fileRef = B5FD9DAB2742AAC60044C321 /* Misc */; };
24+
CEB996952EF663F800EDDD1C /* TokenManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEB996942EF663F800EDDD1C /* TokenManager.swift */; };
25+
CEB996972EF6651C00EDDD1C /* TokenInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEB996962EF6651C00EDDD1C /* TokenInfo.swift */; };
26+
CEB996992EF6D96A00EDDD1C /* LoggerExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEB996982EF6D96A00EDDD1C /* LoggerExtension.swift */; };
27+
CEB9969B2EF7DB4500EDDD1C /* HealthStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEB9969A2EF7DB4500EDDD1C /* HealthStatus.swift */; };
28+
CEB9969D2EF8170B00EDDD1C /* CurrentHealthStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEB9969C2EF8170400EDDD1C /* CurrentHealthStatus.swift */; };
29+
CEB9969F2EF8DB6B00EDDD1C /* About.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEB9969E2EF8DB6600EDDD1C /* About.swift */; };
30+
CEB996A12EF9309A00EDDD1C /* MyObserverClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEB996A02EF9309100EDDD1C /* MyObserverClass.swift */; };
31+
CEDE63472EEC96B4004A58C9 /* TelemetryDeck in Frameworks */ = {isa = PBXBuildFile; productRef = CEDE63462EEC96B4004A58C9 /* TelemetryDeck */; };
32+
CEDE63492EEC96CB004A58C9 /* TelemetryDeckConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEDE63482EEC96CB004A58C9 /* TelemetryDeckConfig.swift */; };
2733
/* End PBXBuildFile section */
2834

2935
/* Begin PBXFileReference section */
@@ -39,14 +45,20 @@
3945
B5A46CCE226FB1E300C2A88D /* jamfStatus.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = jamfStatus.entitlements; sourceTree = "<group>"; };
4046
B5A470AF2271CE7200C2A88D /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
4147
B5AC20311F36479A00C16EAA /* com.jamf.cloudmonitor.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = com.jamf.cloudmonitor.plist; sourceTree = "<group>"; };
42-
B5AC20341F37858800C16EAA /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = index.html; sourceTree = "<group>"; };
4348
B5AC20361F37859F00C16EAA /* images */ = {isa = PBXFileReference; lastKnownFileType = folder; path = images; sourceTree = "<group>"; };
4449
B5BD6AD623297762001D244A /* Credentials.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Credentials.swift; sourceTree = "<group>"; };
4550
B5BD6AD8232F108A001D244A /* VersionCheck.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VersionCheck.swift; sourceTree = "<group>"; };
46-
B5BE0F9D2AFEF434000CBEBE /* TokenDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TokenDelegate.swift; sourceTree = "<group>"; };
4751
B5E62F31231CAB640012FF5A /* UapiCall.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UapiCall.swift; sourceTree = "<group>"; };
4852
B5E62F33231DA09F0012FF5A /* NotificationAlert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationAlert.swift; sourceTree = "<group>"; };
4953
B5FD9DAB2742AAC60044C321 /* Misc */ = {isa = PBXFileReference; lastKnownFileType = text; path = Misc; sourceTree = "<group>"; };
54+
CEB996942EF663F800EDDD1C /* TokenManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TokenManager.swift; sourceTree = "<group>"; };
55+
CEB996962EF6651C00EDDD1C /* TokenInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TokenInfo.swift; sourceTree = "<group>"; };
56+
CEB996982EF6D96A00EDDD1C /* LoggerExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoggerExtension.swift; sourceTree = "<group>"; };
57+
CEB9969A2EF7DB4500EDDD1C /* HealthStatus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HealthStatus.swift; sourceTree = "<group>"; };
58+
CEB9969C2EF8170400EDDD1C /* CurrentHealthStatus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrentHealthStatus.swift; sourceTree = "<group>"; };
59+
CEB9969E2EF8DB6600EDDD1C /* About.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = About.swift; sourceTree = "<group>"; };
60+
CEB996A02EF9309100EDDD1C /* MyObserverClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyObserverClass.swift; sourceTree = "<group>"; };
61+
CEDE63482EEC96CB004A58C9 /* TelemetryDeckConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TelemetryDeckConfig.swift; sourceTree = "<group>"; };
5062
/* End PBXFileReference section */
5163

5264
/* Begin PBXFrameworksBuildPhase section */
@@ -55,6 +67,7 @@
5567
buildActionMask = 2147483647;
5668
files = (
5769
B5A470B02271CE7200C2A88D /* WebKit.framework in Frameworks */,
70+
CEDE63472EEC96B4004A58C9 /* TelemetryDeck in Frameworks */,
5871
);
5972
runOnlyForDeploymentPostprocessing = 0;
6073
};
@@ -82,17 +95,24 @@
8295
B5013BC51E95817C0099300A /* jamfStatus */ = {
8396
isa = PBXGroup;
8497
children = (
98+
CEB9969E2EF8DB6600EDDD1C /* About.swift */,
8599
B5A46CCE226FB1E300C2A88D /* jamfStatus.entitlements */,
86-
B5AC20331F37855800C16EAA /* about */,
87100
B5013BC61E95817C0099300A /* AppDelegate.swift */,
88101
B5BD6AD623297762001D244A /* Credentials.swift */,
102+
CEB9969C2EF8170400EDDD1C /* CurrentHealthStatus.swift */,
89103
B542A1F024BA902C00EE33C8 /* Globals.swift */,
104+
CEB9969A2EF7DB4500EDDD1C /* HealthStatus.swift */,
105+
CEB996982EF6D96A00EDDD1C /* LoggerExtension.swift */,
106+
CEB996A02EF9309100EDDD1C /* MyObserverClass.swift */,
90107
B5E62F33231DA09F0012FF5A /* NotificationAlert.swift */,
91108
B51596A01E963D2D00ED3CA3 /* StatusMenuController.swift */,
92-
B5BE0F9D2AFEF434000CBEBE /* TokenDelegate.swift */,
109+
CEDE63482EEC96CB004A58C9 /* TelemetryDeckConfig.swift */,
110+
CEB996942EF663F800EDDD1C /* TokenManager.swift */,
111+
CEB996962EF6651C00EDDD1C /* TokenInfo.swift */,
93112
B5E62F31231CAB640012FF5A /* UapiCall.swift */,
94113
B5BD6AD8232F108A001D244A /* VersionCheck.swift */,
95114
B542A1F224BA90A900EE33C8 /* WriteToLog.swift */,
115+
B5AC20361F37859F00C16EAA /* images */,
96116
B5013BC81E95817C0099300A /* Assets.xcassets */,
97117
B515969E1E95BB2200ED3CA3 /* Images.xcassets */,
98118
B5013BCA1E95817C0099300A /* MainMenu.xib */,
@@ -119,15 +139,6 @@
119139
name = Frameworks;
120140
sourceTree = "<group>";
121141
};
122-
B5AC20331F37855800C16EAA /* about */ = {
123-
isa = PBXGroup;
124-
children = (
125-
B5AC20341F37858800C16EAA /* index.html */,
126-
B5AC20361F37859F00C16EAA /* images */,
127-
);
128-
name = about;
129-
sourceTree = "<group>";
130-
};
131142
/* End PBXGroup section */
132143

133144
/* Begin PBXNativeTarget section */
@@ -154,8 +165,9 @@
154165
B5013BBB1E95817C0099300A /* Project object */ = {
155166
isa = PBXProject;
156167
attributes = {
168+
BuildIndependentTargetsInParallel = YES;
157169
LastSwiftUpdateCheck = 0820;
158-
LastUpgradeCheck = 1410;
170+
LastUpgradeCheck = 2620;
159171
ORGANIZATIONNAME = "Leslie Helou";
160172
TargetAttributes = {
161173
B5013BC21E95817C0099300A = {
@@ -183,6 +195,9 @@
183195
Base,
184196
);
185197
mainGroup = B5013BBA1E95817C0099300A;
198+
packageReferences = (
199+
CEDE63452EEC96B4004A58C9 /* XCRemoteSwiftPackageReference "SwiftSDK" */,
200+
);
186201
productRefGroup = B5013BC41E95817C0099300A /* Products */;
187202
projectDirPath = "";
188203
projectRoot = "";
@@ -199,10 +214,8 @@
199214
files = (
200215
B515969F1E95BB2200ED3CA3 /* Images.xcassets in Resources */,
201216
B5013BC91E95817C0099300A /* Assets.xcassets in Resources */,
202-
B5AC20351F37858800C16EAA /* index.html in Resources */,
203217
B5AC20321F36479A00C16EAA /* com.jamf.cloudmonitor.plist in Resources */,
204218
B5AC20371F37859F00C16EAA /* images in Resources */,
205-
B5FD9DAC2742AAC60044C321 /* Misc in Resources */,
206219
B5013BCC1E95817C0099300A /* MainMenu.xib in Resources */,
207220
);
208221
runOnlyForDeploymentPostprocessing = 0;
@@ -214,13 +227,20 @@
214227
isa = PBXSourcesBuildPhase;
215228
buildActionMask = 2147483647;
216229
files = (
230+
CEB996952EF663F800EDDD1C /* TokenManager.swift in Sources */,
217231
B5E62F34231DA09F0012FF5A /* NotificationAlert.swift in Sources */,
232+
CEB9969B2EF7DB4500EDDD1C /* HealthStatus.swift in Sources */,
233+
CEB9969D2EF8170B00EDDD1C /* CurrentHealthStatus.swift in Sources */,
234+
CEB996A12EF9309A00EDDD1C /* MyObserverClass.swift in Sources */,
218235
B542A1F324BA90AA00EE33C8 /* WriteToLog.swift in Sources */,
236+
CEB996972EF6651C00EDDD1C /* TokenInfo.swift in Sources */,
219237
B5E62F32231CAB640012FF5A /* UapiCall.swift in Sources */,
238+
CEB996992EF6D96A00EDDD1C /* LoggerExtension.swift in Sources */,
220239
B51596A11E963D2D00ED3CA3 /* StatusMenuController.swift in Sources */,
240+
CEDE63492EEC96CB004A58C9 /* TelemetryDeckConfig.swift in Sources */,
241+
CEB9969F2EF8DB6B00EDDD1C /* About.swift in Sources */,
221242
B5BD6AD723297762001D244A /* Credentials.swift in Sources */,
222243
B542A1F124BA902C00EE33C8 /* Globals.swift in Sources */,
223-
B5BE0F9E2AFEF434000CBEBE /* TokenDelegate.swift in Sources */,
224244
B5013BC71E95817C0099300A /* AppDelegate.swift in Sources */,
225245
B5BD6AD9232F108A001D244A /* VersionCheck.swift in Sources */,
226246
);
@@ -274,8 +294,10 @@
274294
COPY_PHASE_STRIP = NO;
275295
DEAD_CODE_STRIPPING = YES;
276296
DEBUG_INFORMATION_FORMAT = dwarf;
297+
DEVELOPMENT_TEAM = T82LNZG37Z;
277298
ENABLE_STRICT_OBJC_MSGSEND = YES;
278299
ENABLE_TESTABILITY = YES;
300+
ENABLE_USER_SCRIPT_SANDBOXING = YES;
279301
GCC_C_LANGUAGE_STANDARD = gnu99;
280302
GCC_DYNAMIC_NO_PIC = NO;
281303
GCC_NO_COMMON_BLOCKS = YES;
@@ -294,6 +316,7 @@
294316
MTL_ENABLE_DEBUG_INFO = YES;
295317
ONLY_ACTIVE_ARCH = YES;
296318
SDKROOT = macosx;
319+
STRING_CATALOG_GENERATE_SYMBOLS = YES;
297320
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
298321
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
299322
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
@@ -334,8 +357,10 @@
334357
COPY_PHASE_STRIP = NO;
335358
DEAD_CODE_STRIPPING = YES;
336359
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
360+
DEVELOPMENT_TEAM = T82LNZG37Z;
337361
ENABLE_NS_ASSERTIONS = NO;
338362
ENABLE_STRICT_OBJC_MSGSEND = YES;
363+
ENABLE_USER_SCRIPT_SANDBOXING = YES;
339364
GCC_C_LANGUAGE_STANDARD = gnu99;
340365
GCC_NO_COMMON_BLOCKS = YES;
341366
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@@ -347,7 +372,9 @@
347372
MACOSX_DEPLOYMENT_TARGET = 11.0;
348373
MTL_ENABLE_DEBUG_INFO = NO;
349374
SDKROOT = macosx;
350-
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
375+
STRING_CATALOG_GENERATE_SYMBOLS = YES;
376+
SWIFT_COMPILATION_MODE = wholemodule;
377+
SWIFT_OPTIMIZATION_LEVEL = "-O";
351378
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
352379
};
353380
name = Release;
@@ -363,21 +390,23 @@
363390
COMBINE_HIDPI_IMAGES = YES;
364391
CURRENT_PROJECT_VERSION = 1;
365392
DEAD_CODE_STRIPPING = YES;
366-
DEVELOPMENT_TEAM = T82LNZG37Z;
367393
ENABLE_HARDENED_RUNTIME = YES;
368394
EXCLUDED_SOURCE_FILE_NAMES = Notes;
369395
INFOPLIST_FILE = jamfStatus/Info.plist;
370396
INFOPLIST_KEY_CFBundleDisplayName = JamfStatus;
371397
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities";
372-
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
398+
LD_RUNPATH_SEARCH_PATHS = (
399+
"$(inherited)",
400+
"@executable_path/../Frameworks",
401+
);
373402
LIBRARY_SEARCH_PATHS = (
374403
"$(inherited)",
375404
"$(SDKROOT)/usr/lib/system",
376405
"$(SDKROOT)/usr/lib/log",
377406
"$(SDKROOT)/usr/lib/system/introspection",
378407
);
379-
MACOSX_DEPLOYMENT_TARGET = 11.0;
380-
MARKETING_VERSION = 2.4.0;
408+
MACOSX_DEPLOYMENT_TARGET = 12.4;
409+
MARKETING_VERSION = 2.5.0;
381410
PRODUCT_BUNDLE_IDENTIFIER = com.jamf.pse.jamfStatus;
382411
PRODUCT_NAME = "$(TARGET_NAME)";
383412
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -396,21 +425,23 @@
396425
COMBINE_HIDPI_IMAGES = YES;
397426
CURRENT_PROJECT_VERSION = 1;
398427
DEAD_CODE_STRIPPING = YES;
399-
DEVELOPMENT_TEAM = T82LNZG37Z;
400428
ENABLE_HARDENED_RUNTIME = YES;
401429
EXCLUDED_SOURCE_FILE_NAMES = Notes;
402430
INFOPLIST_FILE = jamfStatus/Info.plist;
403431
INFOPLIST_KEY_CFBundleDisplayName = JamfStatus;
404432
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities";
405-
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
433+
LD_RUNPATH_SEARCH_PATHS = (
434+
"$(inherited)",
435+
"@executable_path/../Frameworks",
436+
);
406437
LIBRARY_SEARCH_PATHS = (
407438
"$(inherited)",
408439
"$(SDKROOT)/usr/lib/system",
409440
"$(SDKROOT)/usr/lib/log",
410441
"$(SDKROOT)/usr/lib/system/introspection",
411442
);
412-
MACOSX_DEPLOYMENT_TARGET = 11.0;
413-
MARKETING_VERSION = 2.4.0;
443+
MACOSX_DEPLOYMENT_TARGET = 12.4;
444+
MARKETING_VERSION = 2.5.0;
414445
PRODUCT_BUNDLE_IDENTIFIER = com.jamf.pse.jamfStatus;
415446
PRODUCT_NAME = "$(TARGET_NAME)";
416447
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -440,6 +471,25 @@
440471
defaultConfigurationName = Release;
441472
};
442473
/* End XCConfigurationList section */
474+
475+
/* Begin XCRemoteSwiftPackageReference section */
476+
CEDE63452EEC96B4004A58C9 /* XCRemoteSwiftPackageReference "SwiftSDK" */ = {
477+
isa = XCRemoteSwiftPackageReference;
478+
repositoryURL = "https://github.com/TelemetryDeck/SwiftSDK";
479+
requirement = {
480+
kind = upToNextMajorVersion;
481+
minimumVersion = 2.11.0;
482+
};
483+
};
484+
/* End XCRemoteSwiftPackageReference section */
485+
486+
/* Begin XCSwiftPackageProductDependency section */
487+
CEDE63462EEC96B4004A58C9 /* TelemetryDeck */ = {
488+
isa = XCSwiftPackageProductDependency;
489+
package = CEDE63452EEC96B4004A58C9 /* XCRemoteSwiftPackageReference "SwiftSDK" */;
490+
productName = TelemetryDeck;
491+
};
492+
/* End XCSwiftPackageProductDependency section */
443493
};
444494
rootObject = B5013BBB1E95817C0099300A /* Project object */;
445495
}

jamfStatus.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

Lines changed: 15 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)