@@ -2,7 +2,13 @@ import Foundation
2
2
import TaggedTime
3
3
4
4
final actor ProgressLineController {
5
+ enum TextMode {
6
+ case staticText( String )
7
+ case stdin
8
+ }
9
+
5
10
// Dependencies
11
+ private let textMode : TextMode
6
12
private let printers : PrintersHolder
7
13
private let logger : AboveProgressLineLogger
8
14
private let progressLineFormatter : ProgressLineFormatter
@@ -13,11 +19,13 @@ final actor ProgressLineController {
13
19
private var progress : Progress ?
14
20
15
21
private init (
22
+ textMode: TextMode ,
16
23
printers: PrintersHolder ,
17
24
logger: AboveProgressLineLogger ,
18
25
progressLineFormatter: ProgressLineFormatter ,
19
26
progressTracker: ProgressTracker
20
27
) {
28
+ self . textMode = textMode
21
29
self . printers = printers
22
30
self . logger = logger
23
31
self . progressLineFormatter = progressLineFormatter
@@ -27,6 +35,7 @@ final actor ProgressLineController {
27
35
// MARK: - Public
28
36
29
37
static func buildAndStart(
38
+ textMode: TextMode ,
30
39
printers: PrintersHolder ,
31
40
logger: AboveProgressLineLogger ,
32
41
activityIndicator: ActivityIndicator ,
@@ -41,6 +50,7 @@ final actor ProgressLineController {
41
50
)
42
51
43
52
let controller = Self (
53
+ textMode: textMode,
44
54
printers: printers,
45
55
logger: logger,
46
56
progressLineFormatter: progressLineFormatter,
@@ -54,6 +64,10 @@ final actor ProgressLineController {
54
64
// MARK: - Input
55
65
56
66
func didGetStdinDataChunk( _ data: Data ) async {
67
+ guard case . stdin = textMode else {
68
+ return
69
+ }
70
+
57
71
let stdinText = String ( data: data, encoding: . utf8)
58
72
guard let stdinText else {
59
73
await logger. logError ( ErrorMessage . canNotDecodeData)
@@ -100,7 +114,13 @@ final actor ProgressLineController {
100
114
}
101
115
102
116
private func redrawProgressLine( ) async {
103
- let progress = progressTracker. moveForward ( lastStdinLine)
117
+ let lineText : String ? = switch textMode {
118
+ case . staticText( let text) :
119
+ text
120
+ case . stdin:
121
+ lastStdinLine
122
+ }
123
+ let progress = progressTracker. moveForward ( lineText)
104
124
let progressLine = progressLineFormatter. inProgress ( progress: progress)
105
125
self . progress = progress
106
126
await printers. withPrinter { printer in
0 commit comments