Add a whole lot of comments
This commit is contained in:
parent
929ddb73f3
commit
d87b1ff110
32
main.py
32
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...")
|
||||
|
|
Loading…
Reference in New Issue
Block a user