-
Notifications
You must be signed in to change notification settings - Fork 11
/
run.py
104 lines (87 loc) · 2.64 KB
/
run.py
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
import logging
import time
from mng import Mng
import sys
import os
import traceback
def init(args):
mng = Mng(config_file=args[1])
try:
for i in range(2, len(argv)):
arg = argv[i].split('=')
if len(arg) == 2:
if arg[0] == 'use_pull':
mng.use_pull = bool(arg[1]) and mng.export_to_remote_repo
except:
print('Error: Ошибка рабора параметров')
return False
return mng.init_repo(True)
def export(args):
mng = Mng(config_file=args[1])
try:
for i in range(2, len(argv)):
arg = argv[i].split('=')
if len(arg) == 2:
if arg[0] == 'use_pull':
mng.use_pull = bool(arg[1]) and mng.export_to_remote_repo
except:
print('Error: Ошибка рабора параметров')
return False
return mng.export_new()
def show_help():
print('python run.py [%s] <config_file>)' % '|'.join(commands))
for key, info in commands.items():
print('%s - %s' % (key, info['description']))
pass
commands = {
'init': {
'func': init,
'description': 'инициализация локального репозитория, подготовка данных',
'need_config': True
},
'export': {
'func': export,
'description': 'выгрузка версий в git',
'need_config': True
},
'help': {
'func': show_help,
'description': 'выводит эту справку',
'need_config': False
}
}
t1 = time.time()
argv = [arg.lower() for arg in sys.argv[1:]]
if len(argv) == 0:
show_help()
sys.exit(0)
if argv[0] not in commands:
print('Error: Неизвестная команда')
show_help()
sys.exit(1)
command_name = argv[0]
command = commands[command_name]
if command['need_config'] and len(argv) == 1:
print('Error: Не указан файл конфигурации')
show_help()
sys.exit(1)
success = False
if command['need_config']:
config_file = argv[1]
if not os.path.exists(config_file):
print('Error: Не найден файл конфигурации')
show_help()
sys.exit(1)
try:
success = command['func'](argv)
except:
print('Error: выполения команды %s' % command_name)
traceback.print_exc()
else:
try:
success = command['func']()
except:
print('Error: выполения команды %s' % command_name)
traceback.print_exc()
logging.info('export delay: %s sec.' % (time.time() - t1))
sys.exit(0 if success else 1)