Source code for freckles.freckles

# -*- coding: utf-8 -*-

from .context.config import ContextConfigs
from .context.freckles_context import FrecklesContext


[docs]class Freckles(object): def __init__( self, use_community=False, default_context_config=None, extra_repos=None ): # self._root_config = Cnf(init_dict) # profile_load_config = self._root_config.add_interpreter( # "profile_load", PROFILE_LOAD_CONFIG_SCHEMA # ) # self._root_config.add_interpreter("root_config", FRECKLES_DEFAULT_CONFIG_SCHEMA) self._context_configs = ContextConfigs.load_configs() # self._cnf_profiles = CnfProfiles.from_folders( # "cnf_profiles", # FRECKLES_CONFIG_DIR, # load_config=profile_load_config, # cnf=self._root_config, # ) self._contexts = {} self._current_context = None self.create_context( context_name="default", context_config=default_context_config, extra_repos=extra_repos, use_community=use_community, )
[docs] def create_context( self, context_name, context_config, set_current=False, extra_repos=None, use_community=False, ): if not context_name: raise Exception("Context name can't be empty") if context_name in self._contexts.keys(): raise Exception("Context '{}' already exists.".format((context_name))) context_config = self._context_configs.create_context_config( context_name=context_name, config_chain=context_config, extra_repos=extra_repos, use_community=use_community, ) context = FrecklesContext(context_name=context_name, config=context_config) self._contexts[context_name] = context if set_current or self._current_context is None: self._current_context = context_name return context
@property def current_context(self): return self._contexts[self._current_context] @current_context.setter def current_context(self, context_name): if context_name not in self._contexts.keys(): raise Exception("No context with name '{}' available.".format(context_name)) self._current_context = context_name
[docs] def get_context(self, context_name=None): if context_name is None: context_name = self._current_context if context_name not in self._contexts.keys(): raise Exception("No context with name '{}' available.".format(context_name)) return self._contexts[context_name]
@property def frecklets(self): ctx = self.get_context() return ctx.frecklet_index
[docs] def get_frecklet_index(self, context_name=None): if context_name is None: context_name = self._current_context ctx = self.get_context(context_name) return ctx.frecklet_index
[docs] def get_frecklet(self, frecklet_name, context_name=None): ctx = self.get_context(context_name) return ctx.get_frecklet(frecklet_name)
[docs] def create_frecklecutable(self, frecklet_name, context_name=None): ctx = self.get_context(context_name) return ctx.create_frecklecutable(frecklet_name)