From d87b1ff110b35b474bebae34aabfc9b75ed64dbe Mon Sep 17 00:00:00 2001 From: max Date: Fri, 5 Jul 2024 09:42:14 +1000 Subject: [PATCH] Add a whole lot of comments --- main.py | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/main.py b/main.py index aef5820..2451ee1 100755 --- a/main.py +++ b/main.py @@ -1,38 +1,52 @@ #!/usr/bin/python + +# Imports, of course. +# You'll need to install colorama from Pip if you want to use colours in the terminal. I'm probably going to replace this when I get around to making a config file properly. import os import socket import subprocess import shutil +import curses from datetime import datetime from colorama import Fore from os.path import expanduser + +# Some initial variables version = "0.1.0" user = os.getlogin() initDirectory = expanduser("~") currentDirectory = initDirectory - argList = ["", ""] +# Start work on checking whether a config file exists if os.path.isfile(expanduser("~") + "/.config/mash/mash.conf") == True: configFile = open(expanduser("~") + "/.config/mash/mash.conf") else: print("Config file does not exist. Copying default file to ~/.config/mash/mash.conf") shutil.copyfile("/etc/mash/mash.conf", (expanduser("~") + "/.config/mash/mash.conf")) +# Write the time to the history file historyFile = open((expanduser("~") + "/.history.mash"), "a") historyFile.write("\n") historyFile.write(("Session on " + str(datetime.now()))) historyFile.write("\n") +# Welcome message. Probably going to be configurable soon enough. print("Welcome to Mash, " + user + "@" + socket.gethostname() + "! Mash is currently on version " + version) +# Main loop. try: while True: + # Set directory and prompt for input. os.chdir(currentDirectory) command = input(Fore.GREEN + user + Fore.WHITE + "@" + socket.gethostname() + Fore.BLUE + " " + currentDirectory + Fore.WHITE + " > ") + + # Clean some things up for the argument parser. argNumber = 0 argList.clear() + + # Argument parser for letter in command: if letter == " ": argNumber = argNumber + 1 @@ -41,15 +55,19 @@ try: argList[argNumber] = argList[argNumber] + letter except Exception: argList.append(letter) + + # Start work on pipes. for word in argList: if word == "&&": print("This hasnt been implemented yet hahahahah") + + # Built in commands section if argList[0] == "help": print("This is Mash, Max's Shell. Mash has a few built in commands, which you can use to run commands, view files and interact with your system.") print("Some commands you can run:") print("") - print("pwd Print directory you are currently in") print("cd Change your directory.") + print("history See previously ran commands.") print("mat View contents of a file. If you're on a Unix-like OS, use 'cat' instead.") print("mls View all files in a directory. If you're on a Unix-like OS, use 'ls' instead.") print("version Print current version of Mash.") @@ -91,17 +109,23 @@ try: print(historyReadFile.read()) elif argList[0] == "mtime": print(datetime.now()) + + # If a built in command isn't what you wanted, run a new subprocess. else: try: subprocess.run(argList) except Exception: print("Command", command, "either doesn't exist, isn't in the path or isn't in this directory.") + # Write to the history file historyFile = open((expanduser("~") + "/.history.mash"), "a") historyFile.write(command) historyFile.write("\n") historyFile.close() -#except Exception: -# print("Looks like there was an error. Exiting...") + +# Handle errors in the main loop +except Exception: + print("Looks like there was an error. Exiting...") +# Handle ^C except KeyboardInterrupt: print(" detected! Exiting...")