From 72c6356540e9e22e2ae6bbc13c4a412c746bc1c1 Mon Sep 17 00:00:00 2001
From: Torstein Stromme <torstein.stromme@uib.no>
Date: Fri, 27 Jan 2023 13:59:38 +0100
Subject: [PATCH] =?UTF-8?q?installere=20ls,=20cd,=20pwd=20i=20konstrukt?=
 =?UTF-8?q?=C3=B8ren,=20ikke=20i=20Main?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 README.md                                             | 6 ++++--
 src/main/java/no/uib/inf101/terminal/SimpleShell.java | 4 ++++
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/README.md b/README.md
index 2d7fd0c..20279de 100644
--- a/README.md
+++ b/README.md
@@ -208,7 +208,9 @@ if (command != null) {
 
 ### `pwd`, `cd`, og `ls`: kommandoer som trenger kontekst
 
-Vi skal opprette egne klasser for hver av metodene `pwd`, `cd` og `ls`. Dette er kommandoer som har behov for å vite konteksten shellet kjører i. Vi gjør dette ved at SimpleShell gir disse kommandoene en kontekst når de blir installert.
+Vi skal opprette egne klasser for hver av metodene `pwd`, `cd` og `ls`. Dette er SimpleShell sine tre kjerne-kommandoer som alltid må være tilgengelig, og som allerede var implementert; men vi ønsker å benytte oss av samme struktur som de andre kommandoene (jo færre ting som håndteres på en spesiell måte, jo bedre).
+
+Det som skiller disse kommandoene fra echo og exit, er at de har behov for å vite *konteksten* shellet kjører i. Vi løser dette ved at SimpleShell skal gi kommandoene som ønsker det tilgang til Context-objektet når de blir installert.
 
  - [ ] I `Command`: legg til en metode-signatur for å sette kontekst.
 ```java
@@ -225,7 +227,7 @@ command.setContext(this.context);
 Vi er nå klare til å opprette klassene `CmdLs`, `CmdPwd` og `CmdCd` som alle implementerer *Command* -grensesnittet.
 - [ ] La disse klassene ha en instansvariabel for kontekst, og la dem overskrive `setContext` -metoden slik at denne instansvariabelen bli initiert med en verdi når metoden kalles.
 - [ ] Kopier funksjonaliteten fra de tilsvarende metodene i SimpleShell inn i run-metodene i de nye klassene.
-- [ ] Fjern metodene fra SimpleShell (inkludert sekvensen med else-if i executeCommand), og installer dem i stedet i `Main::main` på samme måte som vi gjorde for echo -kommandoen
+- [ ] Fjern metodene fra SimpleShell (inkludert sekvensen med else-if i executeCommand), og installer i stedet kommandoene i *konstruktøren til SimpleShell*. Dette gjøres på samme måte som vi gjorde for echo -kommandoen i Main, men objektet vi kaller installCommand på heter *this* i stedet for *shell*: for eksempel `this.installCommand(new CmdLs())`.
 - [ ] Sjekk at testene fremdeles passerer og at de fremdeles virker i terminal-gui'en
 
 
diff --git a/src/main/java/no/uib/inf101/terminal/SimpleShell.java b/src/main/java/no/uib/inf101/terminal/SimpleShell.java
index 5da7e08..a235f58 100644
--- a/src/main/java/no/uib/inf101/terminal/SimpleShell.java
+++ b/src/main/java/no/uib/inf101/terminal/SimpleShell.java
@@ -27,6 +27,10 @@ public class SimpleShell {
   /// (methods expected to be used by someone outside this class) //////
   //////////////////////////////////////////////////////////////////////
 
+  public SimpleShell() {
+    // TODO: Install core commands SimpleShell supports (pwd, ls, cd)
+  }
+
   // TODO: rename method to fit new interface, annotate with @Override
   // Note: methods with @Override generally do not need javadoc comments,
   // since the javadoc comment is inherited. You should hence remove the
-- 
GitLab