diff --git a/registerExperiment.py b/registerExperiment.py index 5fbe12f0f60e5171e546c5604bc109aaff0edf11..9e612c9390d06572a83f9a3c3b812000af2243f4 100644 --- a/registerExperiment.py +++ b/registerExperiment.py @@ -13,7 +13,7 @@ inputFiles = [] paramsFolder = None -commandsFile = None +commandsFile = "commands.txt" experimentName = None @@ -78,6 +78,24 @@ def askForCommandsFile() -> None: if not fileExists(commandsFile): raise Exception(f"{commandsFile} file does not exist") +def captureExperiment() -> None : + print("Capturing commands in terminal, when the experiment is done, type \"done\"") + inputs = [] + userInput = input() + while (userInput != "done"): + inputs.append(userInput) + process = subprocess.run(userInput, shell=True) + process.check_returncode() + userInput = input() + print(f"Done recording the experiment, writing commands in a {commandsFile} file") + registeringExperimentInputs(inputs) + +def registeringExperimentInputs(inputs) -> None: + with open(commandsFile, "w") as file: + for input in inputs: + file.write(input+"\n") + + def runExperiment() -> None: print("Trying to run experiment") file = open(commandsFile, "r") @@ -118,12 +136,16 @@ def pushBranch(version=1) -> None: version += 1 else: print(f"creating {experimentName}Experiment{version} branch and pushing changes to it ...") - repository.git.checkout('-b', f"{experimentName}Experiment{version}") - repository.git.add(all=True) - repository.git.commit(m=f"{experimentName}Experiment{version}") - repository.git.push('--set-upstream', repository.remote().name, f"{experimentName}Experiment{version}") + try: + repository.git.checkout('-b', f"{experimentName}Experiment{version}") + repository.git.add(all=True) + repository.git.commit(m=f"{experimentName}Experiment{version}") + repository.git.push('--set-upstream', repository.remote().name, f"{experimentName}Experiment{version}") + print("done") + except Exception as e: + print("error while pushing branch") + print(e) repository.git.checkout(experimentName) - print("done") def genChecksum(file) -> str : hash_md5 = hashlib.md5() @@ -144,8 +166,12 @@ def run(folder) -> None : searchForInputFolder() searchForOutputFolder() searchForParamsFolder() - askForCommandsFile() - runExperiment() + userInput = input("Do you have a pre-recorded commands file? (y/n)") + if userInput == "y": + askForCommandsFile() + runExperiment() + else: + captureExperiment() scanInputFiles() scanOutputsGenerated() writeInYaml()