Skip to content

Commit ba2d7ff

Browse files
committed
Create BetaTesterProcessor for rendering CSV
1 parent ca6d9f5 commit ba2d7ff

3 files changed

Lines changed: 48 additions & 3 deletions

File tree

Package.resolved

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

Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ let package = Package(
2424
from: "0.0.2"
2525
),
2626
.package(
27-
url: "https://github.com/AvdLee/appstoreconnect-swift-sdk.git",
27+
url: "https://github.com/ittybittyapps/appstoreconnect-swift-sdk.git",
2828
.branch("master")
2929
),
3030
.package(
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
// Copyright 2020 Itty Bitty Apps Pty Ltd
2+
3+
import CodableCSV
4+
import Files
5+
import Foundation
6+
import Model
7+
8+
struct BetaTesterProcessor {
9+
10+
let folder: Folder
11+
12+
typealias FilePath = String
13+
14+
func write(group: BetaGroup, testers: [BetaTester]) throws -> FilePath {
15+
let file = try folder.createFile(named: "\(group.app.bundleId ?? "")_\(group.groupName)_beta-testers.csv")
16+
17+
try file.write(testers.renderAsCSV())
18+
19+
return file.name
20+
}
21+
}
22+
23+
// TODO: merge this with ResultRenderable in main module
24+
protocol CSVRenderable: Codable {
25+
var headers: [String] { get }
26+
var rows: [[String]] { get }
27+
}
28+
29+
extension CSVRenderable {
30+
func renderAsCSV() -> String {
31+
let wholeTable = [headers] + rows
32+
33+
return try! CSVWriter.encode(rows: wholeTable, into: String.self) // swiftlint:disable:this force_try
34+
}
35+
}
36+
37+
extension Array: CSVRenderable where Element == BetaTester {
38+
var headers: [String] {
39+
["Email", "First Name", "Last Name", "Invite Type"]
40+
}
41+
42+
var rows: [[String]] {
43+
self.map { [$0.email, $0.firstName, $0.lastName, $0.inviteType].compactMap { $0 } }
44+
}
45+
}

0 commit comments

Comments
 (0)