Skip to content

Commit

Permalink
Create SyncResultRenderable, SyncStrategy, and SyncResultRenderer
Browse files Browse the repository at this point in the history
  • Loading branch information
DechengMa committed May 20, 2020
1 parent fcd190b commit 5173911
Showing 1 changed file with 39 additions and 0 deletions.
39 changes: 39 additions & 0 deletions Sources/AppStoreConnectCLI/Readers and Renderers/Renderers.swift
Original file line number Diff line number Diff line change
Expand Up @@ -113,3 +113,42 @@ extension ResultRenderable where Self: TableInfoProvider {
return table.render()
}
}

protocol SyncResultRenderable {
var syncResultText: String { get }
}

enum SyncStrategy<T: SyncResultRenderable> {
case delete(T)
case create(T)
case update(T)
}

extension Renderers {

struct SyncResultRenderer<T: SyncResultRenderable> {

func render(_ strategy: [SyncStrategy<T>], isDryRun: Bool) {
strategy.forEach { renderResultText($0, isDryRun) }
}

func render(_ strategy: SyncStrategy<T>, isDryRun: Bool) {
renderResultText(strategy, isDryRun)
}

private func renderResultText(_ strategy: SyncStrategy<T>, _ isDryRun: Bool) {
let resultText: String
switch strategy {
case .create(let input):
resultText = "\(input.syncResultText)"
case .delete(let input):
resultText = "\(input.syncResultText)"
case .update(let input):
resultText = "⬆️ \(input.syncResultText)"
}

print("\(isDryRun ? "" : "") \(resultText)")
}
}

}

0 comments on commit 5173911

Please sign in to comment.