Пример #1
0
    def current(cls):
        if not cls.instance:
            cls.instance = cls()
            config = ConfigParser()
            config.read(join(root_path, "config.ini"))

            cls.instance.current_command = None
            cls.instance.current_log = None
            cls.instance.current_project = None

            cls.instance.current_template = config.get("General", "current_template")
            cls.instance.build_path = config.get("General", "build_path")
            cls.instance.host = config.get("General", "host")
            cls.instance.port = int(config.get("General", "port"))
            cls.instance.root = config.get("General", "root")
            cls.instance.username = config.get("General", "username")
            cls.instance.password = config.get("General", "password")
            cls.instance.worker_processes = int(config.get("General", "worker_processes"))
            cls.instance.keep_polling = True
            cls.instance.build_queue = Queue.deque()
            cls.instance.projects_being_built = Queue.deque()
            cls.instance.polling_interval = int(config.get("SCM", "polling_interval"))
            cls.instance.scm_verbose = config.get("SCM", "scm_verbose") == "True"
            cls.instance.build_verbose = config.get("General", "build_verbose") == "True"
            cls.instance.build_polling_interval = int(config.get("General", "build_polling_interval"))
            cls.instance.build_timeout = int(config.get("General", "build_timeout"))
            cls.instance.webserver_verbose = config.get("General", "webserver_verbose") == "True"
            cls.instance.db_verbose = config.get("Database", "db_verbose") == "True"
            cls.instance.db_connection = config.get("Database", "db_connection")
            cls.instance.db_host = config.get("Database", "db_host")
            cls.instance.db_name = config.get("Database", "db_name")
            cls.instance.db_user = config.get("Database", "db_user")
            cls.instance.db_pass = config.get("Database", "db_pass")

            cls.instance.plugin_path = config.get("General", "plugin_path")
            
            IoC.reset()
            config = InPlaceConfig()
            
            config.register("configuration", None)
            config.register_files("plugins", join(root_path, "skink", cls.instance.plugin_path), "*_plugin.py")
            
            IoC.configure(config)
            
            cls.instance.plugins = [plugin for plugin in IoC.resolve_all("plugins") if plugin.enabled]
            print "%d enabled plugins found: %s" % (len(cls.instance.plugins), ", ".join([klass.__class__.__name__ for klass in cls.instance.plugins]))
            
        return cls.instance