#!/usr/bin/python
import random
import subprocess
import os
import string
import shelve
from os.path import expanduser
import argparse
import shutil

home = expanduser("~")
configPath = home+"/.config/"+"MakeItGreen/"
s = random.randrange(1,10)
working_dir = ""


def rand_string():
	tempr = random.randrange(1,125)
	rand = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(tempr))
	return rand

def folder():
	d = shelve.open(configPath+"Configuration")
	if "path" in d:
		path = d["path"]
		working_dir = path+"/"+d["link"].split("/")[4]+"/"
	mkd = working_dir+''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(8))
	os.mkdir(mkd)
	ls = os.listdir(working_dir)
	for x in ls:
		if x not in ['.DS_Store', 'README.md', '.git']:
			shutil.move(working_dir+x,mkd+"/")


def make_changes():
	d = shelve.open(configPath+"Configuration")


	if "path" in d:
		path = d["path"]
		working_dir = path+"/"+d["link"].split("/")[4]+"/"
	fname = rand_string()
	writing = open(working_dir+fname,'w+')
	temp = random.randrange(1,125)
	for x in range(temp):
		writing.write(rand_string()+"\n")
	writing.close()
	os.system("cd "+working_dir+" && git add .")
	os.system("cd "+working_dir+" && git commit -m "+rand_string())

	d.close()


def setup_():
	configPath = home+"/.config/"+"MakeItGreen/"
	if not os.path.exists(configPath):
		os.mkdir(configPath)
	d = shelve.open(configPath+"Configuration")
	if results.SetupFlag:
		if "path" in d and "link" in d:
			path = d["path"]
			working_dir = path+"/"+d["link"].split("/")[4]+"/"
			if os.path.exists(working_dir):
				shutil.rmtree(working_dir)
			del d["path"]
			del d["link"]

	if "path" not in d:
		d["path"] = input("Enter path where you want to clone and make Misc Changes every time you run MakeItGreen:\n")
	if "link" not in d:
		d["link"] = input("Enter link to private repo for writing to remote:\n")
	if "path" in d and "link" in d:
		path = d["path"]
		working_dir = path+d["link"].split("/")[4]+"/"
		if not os.path.exists(working_dir):
			os.system("cd "+path+" && git clone "+d["link"])
	d.close()


parser = argparse.ArgumentParser()
parser.add_argument('--setup', action='store',
					dest='SetupFlag',
					help='Run --setup Y to re-setup',
			type=bool, default=False)
results = parser.parse_args()
if results.SetupFlag:
	setup_()

folder()
for x in range(s):
	make_changes()


d = shelve.open(configPath+"Configuration")
if "path" in d:
	path = d["path"]
	working_dir = path+"/"+d["link"].split("/")[4]+"/"
d.close()

dusage = subprocess.check_output(['du','-sh', working_dir]).split()[0].decode('utf-8')
print(working_dir)
print(float(dusage[:-1]))
if float(dusage[:-1])>10:
	ls = os.listdir(working_dir)
	for x in ls:
		if x not in ['.DS_Store', 'README.md', '.git']:
			try:
				os.remove(working_dir+x)
			except Exception as e:
				shutil.rmtree(working_dir+x)



d = shelve.open(configPath+"Configuration")
if "path" in d and "link" in d:
	path = d["path"]
	working_dir = path+"/"+d["link"].split("/")[4]+"/"
	if not os.path.exists(working_dir):
		os.system("cd "+path+" && git clone "+d["link"])
d.close()
os.system("cd "+working_dir+" && git push")
