# Renata Kopecna


#########################################################
#							                            #
#       	Script for easier pushing to git    	    #
#                                                       #
#########################################################

#Bash would work but this is nicer for the user to read

 
import sys
import subprocess

tmp = subprocess.Popen(["git","branch","--show-current"], cwd = "./", stdout=subprocess.PIPE)
targetBranch = tmp.communicate()[0].decode("utf-8").strip("\n")
#print (targetBranch)

if (len(sys.argv)!= 3): 
    print("Use it only with two arguments! python git.py fileToBePushed commitMessage")
    print("Using " + str(len(sys.argv)) + " arguments")
    exit()

toBePushed = sys.argv[1]
commitMessage = sys.argv[2]

class_dict = {
    "generator":        "sources/Core/bu2kstarmumu_generator",
    "loader":           "sources/Core/bu2kstarmumu_loader",
    "parameters":       "sources/Core/bu2kstarmumu_parameters",
    "pdf":              "sources/Core/bu2kstarmumu_pdf",
    "plotter":          "sources/Core/bu2kstarmumu_plotter",
    "event":            "sources/Core/event",
    "folder":           "sources/Core/folder",
    "fitter":           "sources/Core/fitter",
    "funcs":            "sources/Core/funcs",
    "integrals":        "sources/Core/integrals",
    "options":          "sources/Core/options",
    "toystudy":         "sources/Core/toystudy",
    "design":           "sources/Helpers/design",
    "helpers":          "sources/Helpers/helpers",
    "constants":        "sources/Params/constants",
    "parameters.hh":    "sources/Params/parameters",
    "parameterscan":    "sources/Params/parameterscan",
    "angularcorr":      "sources/Run/angularcorr",
    "backgroundfit":    "sources/Run/backgroundfit",
    "feldman_cousins":  "sources/Run/feldman_cousins",
    "genlvlfit":        "sources/Run/genlvlfit",
    "generatetoys":     "sources/Run/generatetoys",
    "likelihoodscan":   "sources/Run/likelihoodscan",
    "mcfit":            "sources/Run/mcfit",
    "mainfit":          "sources/Run/mainfit",
    "massfit":          "sources/Run/massfit",
    "momfit":           "sources/Run/momfit",
    "multifit":         "sources/Run/multifit",
    "pulls":            "sources/Run/pulls",
    "toysfit":          "sources/Run/toysfit",
    "parse":            "sources/parse",
    "help":             "sources/help",
    "paths":            "sources/paths"
}

scripts_dict = {
    "PlotMCfit":        "sources/Scripts/PlotMCfit",
    "GenLvlvsMC":       "sources/Scripts/GenLvlvsMC",
    "EvaluateToys":     "sources/Scripts/EvaluateToys",
    "ReferencePlots":   "sources/Scripts/ReferencePlots",
    "ScriptHelpers":    "sources/Scripts/ScriptHelpers",
    "RunningScripts":   "sources/Scripts/RunningScripts"
}

others_dict ={ 
    "main":          "bu2kstarmumu.cc",
    "plotter.hh":    "sources/Core/plotter.hh",
    "values":        "sources/Params/values.hh",
}


mainPath =  "/home/lhcb/kopecna/B2KstarMuMu/code/ewp-Bplus2Kstmumu-AngAna/FCNCfitter/"
if (toBePushed in class_dict): 
    add_cc = subprocess.run(["git","add",class_dict.get(toBePushed)+".cc"], cwd = "./", check = False) #Output into console 
    add_hh = subprocess.run(["git","add",class_dict.get(toBePushed)+".hh"], cwd = "./", check = False) #Output into console
elif (toBePushed in others_dict):  
    add = subprocess.run(["git","add",others_dict.get(toBePushed)], cwd = "./", check = False) #Output into console
elif (toBePushed in scripts_dict):  
    add_cc = subprocess.run(["git","add",scripts_dict.get(toBePushed)+".cc"], cwd = "./", check = False) #Output into console 
    add_hh = subprocess.run(["git","add",scripts_dict.get(toBePushed)+".hh"], cwd = "./", check = False) #Output into console
else:
    print("Wrong file name! Use any of the following:")    
    print (class_dict.keys())
    print (others_dict.keys())

add = subprocess.run(["git","commit","-m",commitMessage], cwd = "./", check = True) #Output into console
add = subprocess.run(["git","push","origin",targetBranch], cwd = "./", check = True) #Output into console

print ("\nDone pushing.\n")


