Dynamic-Pokemon-Expansion/scripts/clean.py
2019-08-25 03:14:34 -04:00

136 lines
3.2 KiB
Python

#!/usr/bin/env python3
import os
import sys
import shutil
import hashlib
import glob, os.path
ROM_NAME = "test.gba"
SRC = './src'
GRAPHICS = './graphics'
ASSEMBLY = './assembly'
STRINGS = './strings'
BUILD = './build'
GENERATED = ASSEMBLY + '/generated'
def PutFileNameInRightFormat(filename):
filename = filename.split('/')
newFileName = ""
if filename[0].upper() == "SRC":
newFileName = SRC
elif filename[0].upper() == "ASSEMBLY":
newFileName = ASSEMBLY
elif filename[0].upper() == "GRAPHICS":
newFileName = GRAPHICS
elif filename[0].upper() == "STRINGS":
newFileName = STRINGS
for i in range(1, len(filename)):
newFileName += "\\" + filename[i]
return newFileName
def TryRemoveGeneratedRepoints():
try:
os.remove('generatedrepoints')
except:
pass
def TryRemoveGeneratedImageAssembly():
try:
shutil.rmtree(GENERATED)
os.chdir("graphics")
for root, dirs, files in os.walk(".", topdown = False):
for file in files:
if file.endswith('.h') or file.endswith('.s'):
os.remove(os.path.join(root, file))
except:
pass
dir_path = os.path.dirname(os.path.realpath(__file__))
try:
os.remove(ROM_NAME)
except:
pass
if len(sys.argv) > 1:
#Try removing specific file only.
if len(sys.argv) > 2 and sys.argv[1].upper() == 'FILE':
try:
filename = PutFileNameInRightFormat(sys.argv[2])
m = hashlib.md5()
m.update(filename.encode())
newfilename = os.path.join(BUILD, m.hexdigest() + '.o')
try:
os.remove(newfilename)
except FileNotFoundError:
os.remove(BUILD + "\\IMG_" + newfilename.split('\\')[1])
except FileNotFoundError:
os.remove(BUILD + "\\SND_" + newfilename.split('\\')[1])
print('"Build for ' + sys.argv[2] + '" removed successfully!')
sys.exit(1)
except:
print('Error: Could not remove build for file "' + sys.argv[2] + '".')
sys.exit(1)
#Don't remove generated repoints if the user only wants to remove the build.
elif sys.argv[1].upper() != 'BUILD' and sys.argv[1].upper() != 'GRAPHICS' and sys.argv[1].upper() != 'AUDIO':
TryRemoveGeneratedRepoints()
else:
TryRemoveGeneratedRepoints()
try:
os.remove('offsets.ini')
except:
pass
if (len(sys.argv) > 1) and sys.argv[1].upper() == 'ALL':
try:
shutil.rmtree('build/')
except:
pass
TryRemoveGeneratedImageAssembly()
elif (len(sys.argv) > 1) and sys.argv[1].upper() == 'GRAPHICS':
try:
TryRemoveGeneratedImageAssembly()
os.chdir(dir_path.split('\\scripts')[0])
os.chdir("build")
for root, dirs, files in os.walk(".", topdown = False):
for file in files:
if file.startswith('IMG_'): #Remove image file
os.remove(os.path.join(root, file))
except:
pass
elif (len(sys.argv) > 1) and sys.argv[1].upper() == 'AUDIO':
try:
os.chdir("build")
for root, dirs, files in os.walk(".", topdown = False):
for file in files:
if file.startswith('SND_'): #Remove sound file
os.remove(os.path.join(root, file))
except:
pass
else:
try:
os.chdir("build")
for root, dirs, files in os.walk(".", topdown = False):
for file in files:
if not file.startswith('IMG_') and not file.startswith('SND_'): #Don't remove image or cry file
os.remove(os.path.join(root, file))
except:
pass
print("Directory cleaned!")