gitbay/Repos/RepoSettings.swift

v1.0.7
gitbay-ios/gitbay/Repos/RepoSettings.swift history · blame · raw

35 lines · 1215 bytes

 1import Foundation
 2
 3/// `repo settings show` — admin-only view of the repo's control knobs.
 4/// Every field is omitted at its zero value, so absent means default.
 5nonisolated struct RepoSettings: Decodable, Sendable, Hashable {
 6    let protectedBranches: [String]?
 7    let requireSignedCommits: Bool?
 8    let requireChecks: Bool?
 9    let requireApprovals: Int?
10    let requireResolved: Bool?
11    let requireCodeowners: Bool?
12    let gitDaemon: Bool?
13    let archived: Bool?
14    let website: String?
15
16    enum CodingKeys: String, CodingKey {
17        case protectedBranches = "protected_branches"
18        case requireSignedCommits = "require_signed_commits"
19        case requireChecks = "require_checks"
20        case requireApprovals = "require_approvals"
21        case requireResolved = "require_resolved"
22        case requireCodeowners = "require_codeowners"
23        case gitDaemon = "git_daemon"
24        case archived, website
25    }
26
27    var branches: [String] { protectedBranches ?? [] }
28}
29
30/// One row of `repo access list`: a user granted read, write or admin.
31nonisolated struct AccessGrant: Decodable, Sendable, Hashable, Identifiable {
32    let user: String
33    let role: String
34    var id: String { user }
35}