Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 27903a7

Browse filesBrowse files
committed
updated levels and added keys arguments functionality
1 parent 485e62a commit 27903a7
Copy full SHA for 27903a7

File tree

2 files changed

+65
-41
lines changed
Filter options

2 files changed

+65
-41
lines changed

‎Sources/prefs/Preferences.swift

Copy file name to clipboardExpand all lines: Sources/prefs/Preferences.swift
+28-28Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -16,55 +16,55 @@ struct Preferences {
1616

1717
let suiteName: String
1818
let userDefaults: UserDefaults
19-
20-
19+
20+
2121
var allKeys: [String] {
2222
userDefaults.dictionaryRepresentation().map { $0.key }
2323
}
2424

25-
var systemGlobalKeys: [String] {
25+
var networkGlobalKeys: [String] {
2626
keylist(kCFPreferencesAnyApplication, kCFPreferencesAnyUser, kCFPreferencesAnyHost)
2727
}
28-
29-
var systemHostGlobalKeys: [String] {
28+
29+
var systemGlobalKeys: [String] {
3030
keylist(kCFPreferencesAnyApplication, kCFPreferencesAnyUser, kCFPreferencesCurrentHost)
3131
}
32-
32+
3333
var hostGlobalKeys: [String] {
34-
keylist(kCFPreferencesAnyApplication, kCFPreferencesCurrentUser, kCFPreferencesCurrentHost)
34+
keylist(kCFPreferencesAnyApplication, kCFPreferencesCurrentUser, kCFPreferencesCurrentHost)
3535
}
36-
36+
3737
var userGlobalKeys: [String] {
3838
keylist(kCFPreferencesAnyApplication, kCFPreferencesCurrentUser, kCFPreferencesAnyHost)
3939
}
40-
40+
4141
var globalKeys: [String] {
4242
var globalKeys = Set(userGlobalKeys)
43-
globalKeys.formUnion(systemGlobalKeys)
43+
globalKeys.formUnion(networkGlobalKeys)
4444
globalKeys.formUnion(hostGlobalKeys)
4545
return Array(globalKeys)
4646
}
47-
47+
4848
var managedKeys: [String] {
4949
allKeys.filter { userDefaults.objectIsForced(forKey: $0) }
5050
}
51-
51+
5252
var userKeys: [String] {
5353
keylist(suiteName as CFString, kCFPreferencesCurrentUser, kCFPreferencesAnyHost)
5454
}
55-
56-
var systemKeys: [String] {
55+
56+
var networkKeys: [String] {
5757
keylist(suiteName as CFString, kCFPreferencesAnyUser, kCFPreferencesAnyHost)
5858
}
59-
60-
var systemHostKeys: [String] {
61-
keylist(suiteName as CFString, kCFPreferencesAnyUser, kCFPreferencesCurrentHost)
59+
60+
var systemKeys: [String] {
61+
keylist(suiteName as CFString, kCFPreferencesAnyUser, kCFPreferencesCurrentHost)
6262
}
63-
63+
6464
var hostKeys: [String] {
6565
keylist(suiteName as CFString, kCFPreferencesCurrentUser, kCFPreferencesCurrentHost)
6666
}
67-
67+
6868
var volatileKeys: [String] {
6969
let vDomains = userDefaults.volatileDomainNames
7070
var volatileKeys = Set<String>()
@@ -75,17 +75,17 @@ struct Preferences {
7575
}
7676
return Array(volatileKeys)
7777
}
78-
78+
7979
// MARK: functions
80-
80+
8181
func keylist(_ applicationID: CFString, _ userName: CFString, _ hostName: CFString) -> [String] {
8282
CFPreferencesCopyKeyList(applicationID, userName, hostName) as? [String] ?? []
8383
}
84-
84+
8585
func isManaged(_ key: String) -> Bool {
8686
userDefaults.objectIsForced(forKey: key)
8787
}
88-
88+
8989
func level(for key: String) -> String? {
9090
if !allKeys.contains(where: {$0 == key}) {
9191
return nil
@@ -111,16 +111,16 @@ struct Preferences {
111111
if systemGlobalKeys.contains(where: {$0 == key}) {
112112
return "global/system"
113113
}
114-
if systemHostGlobalKeys.contains(where: {$0 == key}) {
115-
return "global/system/host"
114+
if networkKeys.contains(where: {$0 == key}) {
115+
return "network"
116116
}
117-
if systemHostKeys.contains(where: {$0 == key}) {
118-
return "system/host/app"
117+
if networkGlobalKeys.contains(where: {$0 == key}) {
118+
return "global/network"
119119
}
120120
if volatileKeys.contains(where: {$0 == key}) {
121121
return "volatile"
122122
}
123-
123+
124124
return nil
125125
}
126126
}

‎Sources/prefs/Prefs.swift

Copy file name to clipboardExpand all lines: Sources/prefs/Prefs.swift
+37-13Lines changed: 37 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,27 +13,25 @@ struct Prefs: ParsableCommand {
1313
static var configuration = CommandConfiguration(
1414
commandName: "prefs",
1515
abstract: "Shows preference/defaults settings from all levels together with their level",
16+
usage: """
17+
prefs <domain>
18+
prefs <domain> [<keys> ...]
19+
""",
1620
version: "0.1"
1721
)
1822

1923

2024
// MARK: arguments and flags
2125

22-
@Argument(help: "the app identifier or preference domain")
23-
var applicationID: String
24-
25-
@Argument(help: "preference keys to show. When no key is given all values will be shown")
26-
var keys: [String] = []
27-
2826
@Flag(
2927
name: [.customShort("g"), .customLong("globals")],
30-
help: "show values from GlobalPreferences files as well"
28+
help: "show values from GlobalPreferences files"
3129
)
3230
var showGlobals = false
3331

3432
@Flag(
3533
name: [.customLong("volatiles")],
36-
help: "show values from GlobalPreferences files as well"
34+
help: "show values from volatile domains"
3735
)
3836
var showVolatiles = false
3937

@@ -43,20 +41,49 @@ struct Prefs: ParsableCommand {
4341
)
4442
var showOnlyValue = false
4543

44+
@Argument(
45+
help: ArgumentHelp(
46+
"the app identifier or preference domain",
47+
valueName: "domain"
48+
)
49+
)
50+
var applicationID: String
51+
52+
@Argument(help: "preference keys to show. When no key is given all values will be shown")
53+
var keys: [String] = []
54+
55+
4656
// MARK: functions
4757
func exit(_ message: Any, code: Int32) throws -> Never {
4858
print(message)
4959
throw ExitCode(code)
5060
}
5161

62+
func printDetail(_ key: String, preferences: Preferences) {
63+
guard let value = preferences.userDefaults.object(forKey: key) else { return }
64+
let level = preferences.level(for: key) ?? "unknown"
65+
if showOnlyValue {
66+
print(value)
67+
} else {
68+
print("\(key) [\(level)]: \(value)")
69+
}
70+
}
71+
5272

5373
// MARK: run
5474
func run() throws {
5575
guard let preferences = Preferences(suiteName: applicationID)
5676
else {
5777
try exit("cannot get defaults for '\(applicationID)'", code: 11)
5878
}
59-
79+
80+
if keys.count > 0 {
81+
for key in keys {
82+
printDetail(key, preferences: preferences)
83+
}
84+
return
85+
}
86+
6087
// cache these for performance
6188
let globalKeys = preferences.globalKeys
6289
//let volatileKeys = preferences.volatileKeys
@@ -70,10 +97,7 @@ struct Prefs: ParsableCommand {
7097
continue
7198
}
7299

73-
guard let value = preferences.userDefaults.object(forKey: key) else { continue }
74-
75-
let level = preferences.level(for: key) ?? "unknown"
76-
print("\(key) [\(level)]: \(value)")
100+
printDetail(key, preferences: preferences)
77101
}
78102
}
79103
}

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.