@@ -9,30 +9,75 @@
99import Foundation
1010
1111let args = Array(CommandLine.arguments.dropFirst())
12−let temp = FileManager.default.temporaryDirectory.appendingPathComponent("SourceDocsSwift/build\(Date().timeIntervalSince1970)")
12+//let temp = FileManager.default.temporaryDirectory.appendingPathComponent("SourceDocsSwift/build\(Date().timeIntervalSince1970)", isDirectory: true)
1313
1414var output = "docs.tex"
1515var directory: String?
16+var style: TeXer.TexType = .laTeX(2)
1617
1718var i = 0
1819while i < args.count {
1920 switch args[i] {
20− case "-o":
21+ case "-o", "--output":
2122 if i + 1 < args.count {
2223 i += 1
2324 output = args[i]
2425 }
25− case "-i":
26+ case "-i", "--input":
2627 if i + 1 < args.count {
2728 i += 1
2829 directory = args[i]
2930 }
31+ case "-s", "--style":
32+ if i + 1 < args.count {
33+ i += 1
34+ switch args[i].lowercased() {
35+ case "latex", "xetex", "tex":
36+ style = .laTeX(style.levelOffset)
37+ case "tech", "techdoc", "techdocs":
38+ style = .techDoc(style.levelOffset)
39+ default:
40+ print("""
41+ That is not a valid style.
42+
43+ Valid styles are:
44+ latex
45+ techdoc
46+ """)
47+ exit(1)
48+ }
49+ }
50+ case "-l", "--level":
51+ if i + 1 < args.count {
52+ i += 1
53+ guard let l = Int(args[i]) else {
54+ print("""
55+ That is not a valid int.
56+ """)
57+ exit(1)
58+ }
59+ if l < 1 {
60+ print("""
61+ Level must be greater or equal to 1.
62+ """)
63+ exit(1)
64+ }
65+ style.levelOffset = l
66+ }
3067 default:
3168 break
3269 }
3370 i += 1
3471}
3572
73+var outputIsDirectory: ObjCBool = false
74+
75+FileManager.default.fileExists(atPath: output, isDirectory: &outputIsDirectory)
76+
77+if outputIsDirectory.boolValue {
78+ output.append("/docs.tex")
79+}
80+
3681let decoder = JSONDecoder()
3782
3883guard let xcbTagetData = Shell.launch(executable: "/usr/bin/xcodebuild", arguments: ["-list", "-json"], launchDirectory: directory) else {
@@ -54,8 +99,8 @@ let targets = xcbResponse.targets
5499var files: [String: [Object]] = [:]
55100
56101for target in targets {
57− try? FileManager.default.removeItem(at: temp)
58− guard let skResponseData = Shell.launch(executable: "/usr/local/bin/sourcekitten", arguments: ["doc", "--", "-target", target, "CONFIGURATION_BUILD_DIR=\(temp)"], launchDirectory: directory) else {
102+// try? FileManager.default.removeItem(at: temp)
103+ guard let skResponseData = Shell.launch(executable: "/usr/local/bin/sourcekitten", arguments: ["doc", "--", "-target", target], launchDirectory: directory) else {
59104 print("""
60105 Make sure sourcekitten is installed
61106
@@ -75,9 +120,15 @@ for target in targets {
75120
76121
77122
78−let tex = TeXer.convert(objects: files.flatMap {$0.value})
79−
80−try? tex.write(toFile: output, atomically: true, encoding: .utf8)
123+let tex = TeXer.convert(objects: files.flatMap {$0.value}, with: style)
124+do {
125+ try tex.write(toFile: output, atomically: true, encoding: .utf8)
126+} catch {
127+ print("""
128+ There was an error writing the outuput file.
129+ """)
130+ exit(1)
131+}
81132
82133print("""
83134+-------+