Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 4 additions & 18 deletions Sources/AtCoderLibrary/API/OjApiCommand.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,10 @@ enum OjApiCommand {
static func getAllTasks(url: String, ojApiPath: String) throws -> (contest: Contest, problems: [Problem]) {
let contest = try OjApiCommand.getContest(url: url, ojApiPath: ojApiPath)
var problems = [Problem]()
let operation = BlockOperation()
var error: Error?
contest.problems.forEach { problem in
operation.addExecutionBlock {
do {
let problem = try OjApiCommand.getProblem(url: problem.url, ojApiPath: ojApiPath)
.apply(context: problem.context)
problems.append(problem)
} catch(let e) {
error = e
operation.cancel()
}
}
}
operation.start()

if operation.isCancelled, let error = error {
throw error
for problem in contest.problems {
let problem = try OjApiCommand.getProblem(url: problem.url, ojApiPath: ojApiPath)
.apply(context: problem.context)
problems.append(problem)
}
return (contest, problems)
}
Expand Down
2 changes: 1 addition & 1 deletion Sources/AtCoderLibrary/Command/New.swift
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public struct New: ParsableCommand {
try FileManager.default.createDirectory(atPath: contestName, withIntermediateDirectories: true)
FileManager.default.changeCurrentDirectoryPath(contestName)

let alphabets = problems.map(\.context.alphabet).map(Character.init)
let alphabets = problems.map(\.context.alphabet)
try PackageSwift(contestName: contestName, alphabets: alphabets).codeGenerate()
try Readme(contest: contest, problems: problems).codeGenerate()
try problems.forEach {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
struct PackageSwift: CodeTemplate {
let contestName: String
let alphabets: [Character]
let alphabets: [String]
let fileName = "Package.swift"
let directory: String? = nil
var source: String {
Expand All @@ -12,8 +12,7 @@ struct PackageSwift: CodeTemplate {
name: "\(contestName.uppercased())",
dependencies: [],
targets: [
\(alphabets.sorted()
.map {
\(alphabets.map {
"""
.target(name: "\($0)"),
.testTarget(name: "\($0)Tests", dependencies: ["\($0)", "TestLibrary"]),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import Foundation
final class PackageTests: XCTestCase {
func test() throws {
let contestName = "abc001"
let alphabets: [Character] = ["A", "B", "C"]
let alphabets = ["A", "B", "C"]
let package = PackageSwift(contestName: contestName, alphabets: alphabets)
let expected = """
// swift-tools-version:5.3
Expand Down