Skip to content

Commit cd989b5

Browse files
history feature added
1 parent e31dfbd commit cd989b5

File tree

5 files changed

+71
-19
lines changed

5 files changed

+71
-19
lines changed

src/main/java/com/mycmd/App.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ public static void main(String[] args) {
2929
if (command != null) {
3030
try {
3131
command.execute(cmdArgs, context);
32+
// Add to history after successful execution
33+
context.addToHistory(input);
3234
} catch (Exception e) {
3335
System.out.println("Error: " + e.getMessage());
3436
}
@@ -59,5 +61,6 @@ private static void registerCommands(Map<String, Command> commands) {
5961
commands.put("time", new TimeCommand());
6062
commands.put("tree", new TreeCommand());
6163
commands.put("date", new DateCommand());
64+
commands.put("history", new HistoryCommand());
6265
}
6366
}

src/main/java/com/mycmd/ShellContext.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
package com.mycmd;
22

33
import java.io.File;
4+
import java.util.ArrayList;
5+
import java.util.List;
46

57
public class ShellContext {
68
private File currentDir;
9+
private List<String> commandHistory;
10+
private static final int MAX_HISTORY = 10;
711

812
public ShellContext() {
913
this.currentDir = new File(System.getProperty("user.dir"));
14+
this.commandHistory = new ArrayList<>();
1015
}
1116

1217
public File getCurrentDir() {
@@ -16,4 +21,17 @@ public File getCurrentDir() {
1621
public void setCurrentDir(File dir) {
1722
this.currentDir = dir;
1823
}
24+
25+
public List<String> getCommandHistory() {
26+
return commandHistory;
27+
}
28+
29+
public void addToHistory(String command) {
30+
if (command != null && !command.trim().isEmpty()) {
31+
commandHistory.add(command.trim());
32+
if (commandHistory.size() > MAX_HISTORY) {
33+
commandHistory.remove(0);
34+
}
35+
}
36+
}
1937
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.mycmd.commands;
2+
3+
import com.mycmd.Command;
4+
import com.mycmd.ShellContext;
5+
6+
public class HistoryCommand implements Command {
7+
8+
@Override
9+
public void execute(String[] args, ShellContext context) {
10+
// Get the command history from the context
11+
var history = context.getCommandHistory();
12+
13+
if (history.isEmpty()) {
14+
System.out.println("No commands in history.");
15+
return;
16+
}
17+
18+
// Display the history with numbers
19+
for (int i = 0; i < history.size(); i++) {
20+
System.out.println((i + 1) + ". " + history.get(i));
21+
}
22+
}
23+
}

target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

Whitespace-only changes.
Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,27 @@
1-
/workspaces/MyCMD/src/main/java/com/mycmd/App.java
2-
/workspaces/MyCMD/src/main/java/com/mycmd/Command.java
3-
/workspaces/MyCMD/src/main/java/com/mycmd/ShellContext.java
4-
/workspaces/MyCMD/src/main/java/com/mycmd/commands/CdCommand.java
5-
/workspaces/MyCMD/src/main/java/com/mycmd/commands/ClsCommand.java
6-
/workspaces/MyCMD/src/main/java/com/mycmd/commands/CopyCommand.java
7-
/workspaces/MyCMD/src/main/java/com/mycmd/commands/DateCommand.java
8-
/workspaces/MyCMD/src/main/java/com/mycmd/commands/DelCommand.java
9-
/workspaces/MyCMD/src/main/java/com/mycmd/commands/DirCommand.java
10-
/workspaces/MyCMD/src/main/java/com/mycmd/commands/EchoCommand.java
11-
/workspaces/MyCMD/src/main/java/com/mycmd/commands/ExitCommand.java
12-
/workspaces/MyCMD/src/main/java/com/mycmd/commands/HelpCommand.java
13-
/workspaces/MyCMD/src/main/java/com/mycmd/commands/LsCommand.java
14-
/workspaces/MyCMD/src/main/java/com/mycmd/commands/MkdirCommand.java
15-
/workspaces/MyCMD/src/main/java/com/mycmd/commands/MoveCommand.java
16-
/workspaces/MyCMD/src/main/java/com/mycmd/commands/PingCommand.java
17-
/workspaces/MyCMD/src/main/java/com/mycmd/commands/RmdirCommand.java
18-
/workspaces/MyCMD/src/main/java/com/mycmd/commands/TypeCommand.java
19-
/workspaces/MyCMD/src/main/java/com/mycmd/commands/VersionCommand.java
1+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\App.java
2+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\Command.java
3+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\commands\CdCommand.java
4+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\commands\ClsCommand.java
5+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\commands\ColorCommand.java
6+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\commands\CopyCommand.java
7+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\commands\DateCommand.java
8+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\commands\DelCommand.java
9+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\commands\DirCommand.java
10+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\commands\EchoCommand.java
11+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\commands\ExitCommand.java
12+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\commands\HelpCommand.java
13+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\commands\HistoryCommand.java
14+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\commands\HostnameCommand.java
15+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\commands\LsCommand.java
16+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\commands\MkdirCommand.java
17+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\commands\MoveCommand.java
18+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\commands\PingCommand.java
19+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\commands\RmdirCommand.java
20+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\commands\TimeCommand.java
21+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\commands\TitleCommand.java
22+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\commands\TouchCommand.java
23+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\commands\TreeCommand.java
24+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\commands\TypeCommand.java
25+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\commands\VersionCommand.java
26+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\commands\WhoamiCommand.java
27+
c:\Users\kgfga\MyCMD\src\main\java\com\mycmd\ShellContext.java

0 commit comments

Comments
 (0)