From c571fd7b7bacd858d85455fcd256a62db955437b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C3=ABl=20Minelli?= <michael@minelli.me>
Date: Thu, 18 Jan 2024 01:49:14 +0100
Subject: [PATCH] Add debug mode

---
 NodeApp/src/commander/CommanderApp.ts                      | 7 ++++++-
 .../assignment/subcommands/AssignmentCheckCommand.ts       | 5 +++--
 NodeApp/src/helpers/Dojo/ExerciseRunHelper.ts              | 5 +++--
 NodeApp/src/shared                                         | 2 +-
 4 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/NodeApp/src/commander/CommanderApp.ts b/NodeApp/src/commander/CommanderApp.ts
index 4f422bc..03814c8 100644
--- a/NodeApp/src/commander/CommanderApp.ts
+++ b/NodeApp/src/commander/CommanderApp.ts
@@ -1,4 +1,4 @@
-import { Command }         from 'commander';
+import { Command, Option } from 'commander';
 import SessionCommand      from './session/SessionCommand';
 import ClientsSharedConfig from '../sharedByClients/config/ClientsSharedConfig';
 import AssignmentCommand   from './assignment/AssignmentCommand';
@@ -26,6 +26,7 @@ class CommanderApp {
                            sortSubcommands  : true
                        })
         .option('-H, --host <string>', 'override the Dojo API endpoint', ClientsSharedConfig.apiURL)
+        .addOption(new Option('--debug').hideHelp())
         .hook('preAction', () => {
             this.warnDevelopmentVersion();
         }).hook('postAction', () => {
@@ -36,6 +37,10 @@ class CommanderApp {
             ClientsSharedConfig.apiURL = this.program.opts().host;
         });
 
+        this.program.on('option:debug', () => {
+            SharedConfig.debug = true;
+        });
+
         this.registerCommands();
 
         this.program.parse();
diff --git a/NodeApp/src/commander/assignment/subcommands/AssignmentCheckCommand.ts b/NodeApp/src/commander/assignment/subcommands/AssignmentCheckCommand.ts
index f8ca9db..b818c73 100644
--- a/NodeApp/src/commander/assignment/subcommands/AssignmentCheckCommand.ts
+++ b/NodeApp/src/commander/assignment/subcommands/AssignmentCheckCommand.ts
@@ -5,6 +5,7 @@ import chalk                         from 'chalk';
 import AssignmentValidator           from '../../../sharedByClients/helpers/Dojo/AssignmentValidator';
 import ClientsSharedAssignmentHelper from '../../../sharedByClients/helpers/Dojo/ClientsSharedAssignmentHelper';
 import { Option }                    from 'commander';
+import SharedConfig                  from '../../../shared/config/SharedConfig';
 
 
 class AssignmentCheckCommand extends CommanderCommand {
@@ -21,7 +22,7 @@ class AssignmentCheckCommand extends CommanderCommand {
     }
 
     protected async commandAction(options: { path: string, verbose: boolean, superVerbose: boolean }): Promise<void> {
-        const verbose: boolean = options.verbose || options.superVerbose;
+        const verbose: boolean = options.verbose || options.superVerbose || SharedConfig.debug;
 
         const localExercisePath: string = options.path ?? Config.folders.defaultLocalExercise;
 
@@ -43,7 +44,7 @@ class AssignmentCheckCommand extends CommanderCommand {
                                 buildPhase = false;
                             }
 
-                            if ( displayable && (options.superVerbose || buildPhase === false) ) {
+                            if ( SharedConfig.debug || (displayable && (options.superVerbose || buildPhase === false)) ) {
                                 console.log(line);
                             }
                         }
diff --git a/NodeApp/src/helpers/Dojo/ExerciseRunHelper.ts b/NodeApp/src/helpers/Dojo/ExerciseRunHelper.ts
index 90cbd48..2db4ba2 100644
--- a/NodeApp/src/helpers/Dojo/ExerciseRunHelper.ts
+++ b/NodeApp/src/helpers/Dojo/ExerciseRunHelper.ts
@@ -13,6 +13,7 @@ import ClientsSharedExerciseHelper          from '../../sharedByClients/helpers/
 import os                                   from 'os';
 import util                                 from 'util';
 import { exec }                             from 'child_process';
+import SharedConfig                         from '../../shared/config/SharedConfig';
 
 
 const execAsync = util.promisify(exec);
@@ -37,7 +38,7 @@ class ExerciseRunHelper {
     }
 
     async run(options: { path: string, verbose: boolean, superVerbose: boolean }): Promise<void> {
-        const verbose: boolean = options.verbose || options.superVerbose;
+        const verbose: boolean = options.verbose || options.superVerbose || SharedConfig.debug;
 
         const localExercisePath: string = options.path ?? Config.folders.defaultLocalExercise;
 
@@ -150,7 +151,7 @@ class ExerciseRunHelper {
                                     buildPhase = false;
                                 }
 
-                                if ( displayable && (options.superVerbose || buildPhase === false) ) {
+                                if ( SharedConfig.debug || (displayable && (options.superVerbose || buildPhase === false)) ) {
                                     console.log(line);
                                 }
                             }
diff --git a/NodeApp/src/shared b/NodeApp/src/shared
index 36004df..f370f8b 160000
--- a/NodeApp/src/shared
+++ b/NodeApp/src/shared
@@ -1 +1 @@
-Subproject commit 36004dfe8f24a27e4896620118598f9e74df3677
+Subproject commit f370f8b0a6e7b059d12f1980cdd21e3f2daa2f04
-- 
GitLab