initialize.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. from flask import Flask, g
  4. import logging
  5. from logging.handlers import TimedRotatingFileHandler
  6. import json
  7. import os
  8. import sys
  9. import re
  10. import getopt
  11. import jimit as ji
  12. from jimvc_exception import PathNotExist
  13. from state_code import own_state_branch
  14. reload(sys)
  15. sys.setdefaultencoding('utf8')
  16. __author__ = 'James Iter'
  17. __date__ = '2017/3/21'
  18. __contact__ = 'james.iter.cn@gmail.com'
  19. __copyright__ = '(c) 2017 by James Iter.'
  20. app = Flask(__name__, template_folder='../templates', static_folder='../static')
  21. class Init(object):
  22. config = {
  23. 'config_file': '/etc/jimvc.conf'
  24. }
  25. @classmethod
  26. def load_config(cls):
  27. def usage():
  28. print "Usage:%s [-c] [--config]" % sys.argv[0]
  29. opts = None
  30. try:
  31. opts, args = getopt.getopt(sys.argv[1:], 'hc:',
  32. ['help', 'config='])
  33. except getopt.GetoptError as e:
  34. print str(e)
  35. usage()
  36. exit(e.message.__len__())
  37. for k, v in opts:
  38. if k in ("-h", "--help"):
  39. usage()
  40. exit()
  41. elif k in ("-c", "--config"):
  42. cls.config['config_file'] = v
  43. else:
  44. print "unhandled option"
  45. if not os.path.isfile(cls.config['config_file']):
  46. raise PathNotExist(u'配置文件不存在, 请配置 --> ', cls.config['config_file'])
  47. with open(cls.config['config_file'], 'r') as f:
  48. cls.config.update(json.load(f))
  49. return cls.config
  50. @classmethod
  51. def init_logger(cls):
  52. cls.config['log_file_base'] = '/'.join([sys.path[0], cls.config['log_file_dir'], 'log'])
  53. log_dir = os.path.dirname(cls.config['log_file_base'])
  54. if not os.path.isdir(log_dir):
  55. os.makedirs(log_dir, 0755)
  56. process_title = 'JimV-C'
  57. log_file_path = '.'.join([cls.config['log_file_base'], process_title])
  58. _logger = logging.getLogger(log_file_path)
  59. if cls.config['debug']:
  60. cls.config['DEBUG'] = True
  61. _logger.setLevel(logging.DEBUG)
  62. else:
  63. cls.config['DEBUG'] = False
  64. _logger.setLevel(logging.INFO)
  65. fh = TimedRotatingFileHandler(log_file_path, when=cls.config['log_cycle'], interval=1, backupCount=7)
  66. formatter = logging.Formatter(
  67. '%(asctime)s - %(name)s - %(levelname)s - %(funcName)s - %(lineno)s - %(message)s')
  68. fh.setFormatter(formatter)
  69. _logger.addHandler(fh)
  70. return _logger
  71. # 预编译效率更高
  72. regex_sql_str = re.compile('\\\+"')
  73. regex_dsl_str = re.compile('^\w+:\w+:\S+$')
  74. config = Init.load_config()
  75. logger = Init.init_logger()
  76. app.config = dict(app.config, **config)
  77. ji.index_state['branch'] = dict(ji.index_state['branch'], **own_state_branch)
  78. # sequence_device_node_mapping = ['vda', 'vdb', 'vdc', 'vdd']
  79. dev_table = ['vda', 'vdb', 'vdc', 'vdd']