@@ -6,35 +6,54 @@ import { Token } from '../io/token.js';
66import { CmdLet } from './cmdlet.js' ;
77import { Macro , Macros } from '../macros/macros.js' ;
88import { MacroCmdLet } from '../cmdlets/misc/macro.js' ;
9+ import { EchoCmdLet } from '../cmdlets/misc/echo.js' ;
910
1011export class Command {
1112 private static readonly MACRO_PREFIX : string = '!' ;
1213 public static async run ( tokens : Token [ ] ) : Promise < Var > {
13- const cmdlet = this . getCmdlet ( tokens ) ;
14- if ( cmdlet !== null ) {
15- return cmdlet . run ( tokens . slice ( 1 ) ) ;
14+ let suppressed = false ;
15+ if ( ! EchoCmdLet . echo && ! Output . isSuppressed ( ) ) {
16+ Output . suppress ( true ) ;
17+ suppressed = true ;
1618 }
19+ try {
20+ const cmdlet = this . getCmdlet ( tokens ) ;
21+ if ( cmdlet !== null ) {
22+ return cmdlet . run ( tokens . slice ( 1 ) ) ;
23+ }
1724
18- const macro = this . getMacro ( tokens ) ;
19- if ( macro !== null ) {
20- return MacroCmdLet . runSync ( macro , tokens . slice ( 1 ) ) ;
21- }
25+ const macro = this . getMacro ( tokens ) ;
26+ if ( macro !== null ) {
27+ return MacroCmdLet . runSync ( macro , tokens . slice ( 1 ) ) ;
28+ }
2229
23- return this . runFunction ( tokens ) ;
30+ return this . runFunction ( tokens ) ;
31+ } finally {
32+ if ( suppressed ) Output . suppress ( false ) ;
33+ }
2434 }
2535
2636 public static runSync ( tokens : Token [ ] ) : Var {
27- const cmdlet = this . getCmdlet ( tokens ) ;
28- if ( cmdlet !== null ) {
29- return cmdlet . runSync ( tokens . slice ( 1 ) ) ;
37+ let suppressed = false ;
38+ if ( ! EchoCmdLet . echo && ! Output . isSuppressed ( ) ) {
39+ Output . suppress ( true ) ;
40+ suppressed = true ;
3041 }
42+ try {
43+ const cmdlet = this . getCmdlet ( tokens ) ;
44+ if ( cmdlet !== null ) {
45+ return cmdlet . runSync ( tokens . slice ( 1 ) ) ;
46+ }
3147
32- const macro = this . getMacro ( tokens ) ;
33- if ( macro !== null ) {
34- return MacroCmdLet . runSync ( macro , tokens . slice ( 1 ) ) ;
35- }
48+ const macro = this . getMacro ( tokens ) ;
49+ if ( macro !== null ) {
50+ return MacroCmdLet . runSync ( macro , tokens . slice ( 1 ) ) ;
51+ }
3652
37- return this . runFunction ( tokens ) ;
53+ return this . runFunction ( tokens ) ;
54+ } finally {
55+ if ( suppressed ) Output . suppress ( false ) ;
56+ }
3857 }
3958
4059 private static getCmdlet ( tokens : Token [ ] ) : CmdLet | null {
0 commit comments