Commit 491678f

Anton Golub <antongolub@antongolub.com>
2024-05-24 11:13:21
feat: add ProcessPromise `.verbose()` for symmetry with`.quiet()` (#820)
See #710
1 parent 8be10e0
Changed files (2)
src/core.ts
@@ -220,6 +220,7 @@ export class ProcessPromise extends Promise<ProcessOutput> {
   private _stdio?: StdioOptions
   private _nothrow?: boolean
   private _quiet?: boolean
+  private _verbose?: boolean
   private _timeout?: number
   private _timeoutSignal = 'SIGTERM'
   private _resolved = false
@@ -487,8 +488,13 @@ export class ProcessPromise extends Promise<ProcessOutput> {
     return this
   }
 
-  quiet(): ProcessPromise {
-    this._quiet = true
+  quiet(v = true): ProcessPromise {
+    this._quiet = v
+    return this
+  }
+
+  verbose(v = true): ProcessPromise {
+    this._verbose = v
     return this
   }
 
@@ -497,7 +503,7 @@ export class ProcessPromise extends Promise<ProcessOutput> {
   }
 
   isVerbose(): boolean {
-    return this._snapshot.verbose && !this.isQuiet()
+    return (this._verbose ?? this._snapshot.verbose) && !this.isQuiet()
   }
 
   timeout(d: Duration, signal = 'SIGTERM'): ProcessPromise {
test/core.test.js
@@ -458,6 +458,17 @@ describe('core', () => {
       }
     })
 
+    test('verbose() mode is working', async () => {
+      const p = $`echo 'test'`
+      assert.equal(p.isVerbose(), false)
+
+      p.verbose()
+      assert.equal(p.isVerbose(), true)
+
+      p.verbose(false)
+      assert.equal(p.isVerbose(), false)
+    })
+
     test('nothrow() do not throw', async () => {
       let { exitCode } = await $`exit 42`.nothrow()
       assert.equal(exitCode, 42)