experiment.py
4.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
import argparse
import os
from utils import SubCommandRunner
#from decouple import Config, RepositoryEnv
import decouple
import json
# TODO:
# Load automatically if exists the persistency file
# Create a class that is a sigleton with configuration variables
VOLIA_ENV_VAR="VOLIA_EXPERIMENT"
def init():
"""
Initialize volia
"""
directory = VOLIA_HOME
if not os.path.isdir(directory):
os.mkdir(directory)
#config = decouple.AutoConfig(search_path=directory)
#config = Config(RepositoryEnv(directory))
persistency_file = os.path.join(directory, "persistency.json")
env_file = os.path.join(directory, ".env")
with open(env_file, "w") as f:
f.write(f"VOLIA_PERSISTENCY=\"{persistency_file}\"")
#exit(1)
basic_persistency = {
"current_experiment": None
}
with open(persistency_file, "w") as f:
json.dump(basic_persistency, f, indent=4)
def create():
pass
def show():
print("Volia env var : " + VOLIA_ENV_VAR)
print("Value : " + str(os.getenv(VOLIA_ENV_VAR)))
config = decouple.AutoConfig(search_path="")
pass
def activate():
pass
def deactivate():
#pycrosskit.envariables.SysEnv.set_var(VOLIA_ENV_VAR, "UNE VARIABLE")
print("VARIABLE: " + pycrosskit.envariables.SysEnv.get_var(VOLIA_ENV_VAR, delete=True))
print("Desactivation")
print("New var : " + os.getenv(VOLIA_ENV_VAR))
pass
def remove():
pass
if __name__ == '__main__':
# Load VOLIA_HOME env var
VOLIA_HOME = os.getenv("VOLIA_HOME")
if VOLIA_HOME is None:
raise Exception("VOLIA_HOME is not defined. Please, define where you want to initialize VOLIA_HOME.\nWe suggest to set this variable to following value: /home/[your name]/.volia.")
# Load environment file if exists
# TODO: Pas besoin de INIT finalement.
CONFIG = None
PERSISTENCY_DATA = None
env_file = os.path.join(VOLIA_HOME, ".env")
if os.path.isfile(env_file):
# Load le fichier
CONFIG = decouple.AutoConfig(search_path=VOLIA_HOME)
# Then loading the persistency file
persistency_file = os.path.join(VOLIA_HOME, "persistency.json")
with open(persistency_file, "r") as f:
PERSISTENCY_DATA = json.load(f)
else:
# Volia not initialized.
print("VOLIA is not initialized. Initializing.")
init()
pass
print("Config: ", CONFIG)
print("PERSISTENCY_DATA: ", PERSISTENCY_DATA)
parser = argparse.ArgumentParser(description="...")
subparsers = parser.add_subparsers(title="actions")
# init : initialize the volia environment tool
parser_init = subparsers.add_parser("init", help="init volia environment")
parser_init.set_defaults(which="init")
# create a new env
parser_create = subparsers.add_parser("create", help="create an experimental environment")
parser_create.set_defaults(which="create")
# activate env
parser_activate = subparsers.add_parser("activate", help="activate an experimental environment")
parser_activate.set_defaults(which="activate")
'''
Pour activater, il suffit d'ajouter la variable d'environnement.
'''
# deactivate env
parser_deactivate = subparsers.add_parser("deactivate", help="deactivate an experimental environment")
parser_deactivate.set_defaults(which="deactivate")
'''
Pour désactiver il suffit d'enlever la variable d'environnement.
'''
# remove env
parser_remove = subparsers.add_parser("remove", help="remove an experimental environment")
parser_remove.set_defaults(which="remove")
# show env
parser_show = subparsers.add_parser("show", help="show the list of experimental environment")
parser_show.set_defaults(which="show")
# Parse
args = parser.parse_args()
# Run commands
runner = SubCommandRunner({
"create": create,
"activate": activate,
"deactivate": deactivate,
"remove": remove,
"show" : show,
"init" : init
})
runner.run(args.which, args.__dict__, remove="which")