Add a whole lot of comments

This commit is contained in:
Maxwell 2024-07-05 09:42:14 +10:00
parent 929ddb73f3
commit d87b1ff110

32
main.py
View File

@ -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...")