def __init__(self): self.plugin_manager = PluginManager() self.config = None self.projects = {} self.build_projects = [] self.built_projects = [] self.copied_files = [] self.app_config_folder = os.path.expanduser("~/.craftbuildtools/") self.files_folder = os.path.join(self.app_config_folder, "files") self.projects_folder = os.path.join(self.app_config_folder, "projects") if not os.path.exists(self.app_config_folder): os.makedirs(self.app_config_folder) click.echo("Created app config folder at %s" % self.app_config_folder) if not os.path.exists(self.files_folder): os.makedirs(self.files_folder) if not os.path.exists(self.projects_folder): os.makedirs(self.projects_folder) click.echo("Created projects folder at %s" % self.projects_folder) self.config_location = os.path.join(self.app_config_folder, "config.yml") self.__init_config() self.__init_files_folder() self.__load_plugins() self.__load_projects()
class CraftBuildToolsApplication(object): def __init__(self): self.plugin_manager = PluginManager() self.config = None self.projects = {} self.build_projects = [] self.built_projects = [] self.copied_files = [] self.app_config_folder = os.path.expanduser("~/.craftbuildtools/") self.files_folder = os.path.join(self.app_config_folder, "files") self.projects_folder = os.path.join(self.app_config_folder, "projects") if not os.path.exists(self.app_config_folder): os.makedirs(self.app_config_folder) click.echo("Created app config folder at %s" % self.app_config_folder) if not os.path.exists(self.files_folder): os.makedirs(self.files_folder) if not os.path.exists(self.projects_folder): os.makedirs(self.projects_folder) click.echo("Created projects folder at %s" % self.projects_folder) self.config_location = os.path.join(self.app_config_folder, "config.yml") self.__init_config() self.__init_files_folder() self.__load_plugins() self.__load_projects() def __load_plugins(self): self.plugin_manager.register(directory=os.path.abspath(os.path.join(os.path.dirname(__file__), 'operations')), skip_types=[OperationPlugin]) logger.debug("Registered %s plugins for the Plugin Manager" % len(self.plugin_manager.plugins)) def __init_config(self): if not os.path.isfile(self.config_location): self.__create_config() self.__load_config() def __init_files_folder(self): if not os.path.exists(self.files_folder): os.mkdir(self.files_folder) logger.debug("Created the Files folder at %s" % self.files_folder) def get_jar_files(self): return get_files_recursive(self.files_folder, "*.jar") def __load_projects(self): # For some reason matching against .yml files doesn't work, so let's look for all files. project_config_files = get_files_recursive(self.projects_folder, match='*') # There's no projects files to load, so let's make a dummy file and save it. if len(project_config_files) == 0: # Call the add projects plugin to perform the operation for a project = self.plugin_manager.get_plugin("addproject_operation").perform( config_location=self.app_config_folder) self.projects[project.name] = project for project in self.projects: with open(os.path.join(self.projects_folder, '%s.yml' % project.name), 'w') as project_new_config_file: yaml.dump(project.yaml(), project_new_config_file, default_flow_style=False) logger.debug("Created Project File %s.yml" % project.name) # Now we loop through all the files in the projects directory and load them! for project_config_file in project_config_files: project = None with open(project_config_file, 'r') as project_file: project = Project.load(project_file) if project.name in self.projects: logger.warning("Duplicate Project found [%s]" % project.name) continue self.projects[project.name] = project logger.debug("Loaded Projects [%s] from config folder." % ",".join(name for name in self.projects.keys())) def __create_config(self): if not self.config: self.config = DEFAULT_CONFIGURATION self.config['ftp-server']['ftp-host'] = click.prompt("FTP Hostname", default="HOST") self.config['ftp-server']['ftp-username'] = click.prompt("FTP Username", default="USERNAME") self.config['ftp-server']['ftp-password'] = click.prompt("FTP Password", default="PASSWORD") self.config['ftp-server']['remote-upload-directory'] = click.prompt("Remote Upload Directory", default="/Dev/plugins/") with open(self.config_location, 'w') as yaml_file: yaml.dump(self.config, yaml_file, default_flow_style=False) click.echo("Configuration for CraftBuildTools has been saved at %s" % self.config_location) # logger.debug("Configuration for CraftBuildTools has been saved at %s" % self.config_location) def __load_config(self): with open(self.config_location, 'r') as yaml_file: self.config = yaml.load(yaml_file) def save_project(self, project): with open(os.path.join(self.app_config_folder, '%s.yml' % project.name), 'w') as project_new_config_file: yaml.dump(project.yaml(), project_new_config_file, default_flow_style=False)
class CraftBuildToolsApplication(object): def __init__(self): self.plugin_manager = PluginManager() self.config = None self.projects = {} self.build_projects = [] self.built_projects = [] self.copied_files = [] self.app_config_folder = os.path.expanduser("~/.craftbuildtools/") self.files_folder = os.path.join(self.app_config_folder, "files") self.projects_folder = os.path.join(self.app_config_folder, "projects") if not os.path.exists(self.app_config_folder): os.makedirs(self.app_config_folder) click.echo("Created app config folder at %s" % self.app_config_folder) if not os.path.exists(self.files_folder): os.makedirs(self.files_folder) if not os.path.exists(self.projects_folder): os.makedirs(self.projects_folder) click.echo("Created projects folder at %s" % self.projects_folder) self.config_location = os.path.join(self.app_config_folder, "config.yml") self.__init_config() self.__init_files_folder() self.__load_plugins() self.__load_projects() def __load_plugins(self): self.plugin_manager.register(directory=os.path.abspath( os.path.join(os.path.dirname(__file__), 'operations')), skip_types=[OperationPlugin]) logger.debug("Registered %s plugins for the Plugin Manager" % len(self.plugin_manager.plugins)) def __init_config(self): if not os.path.isfile(self.config_location): self.__create_config() self.__load_config() def __init_files_folder(self): if not os.path.exists(self.files_folder): os.mkdir(self.files_folder) logger.debug("Created the Files folder at %s" % self.files_folder) def get_jar_files(self): return get_files_recursive(self.files_folder, "*.jar") def __load_projects(self): # For some reason matching against .yml files doesn't work, so let's look for all files. project_config_files = get_files_recursive(self.projects_folder, match='*') # There's no projects files to load, so let's make a dummy file and save it. if len(project_config_files) == 0: # Call the add projects plugin to perform the operation for a project = self.plugin_manager.get_plugin( "addproject_operation").perform( config_location=self.app_config_folder) self.projects[project.name] = project for project in self.projects: with open( os.path.join(self.projects_folder, '%s.yml' % project.name), 'w') as project_new_config_file: yaml.dump(project.yaml(), project_new_config_file, default_flow_style=False) logger.debug("Created Project File %s.yml" % project.name) # Now we loop through all the files in the projects directory and load them! for project_config_file in project_config_files: project = None with open(project_config_file, 'r') as project_file: project = Project.load(project_file) if project.name in self.projects: logger.warning("Duplicate Project found [%s]" % project.name) continue self.projects[project.name] = project logger.debug("Loaded Projects [%s] from config folder." % ",".join(name for name in list(self.projects.keys()))) def __create_config(self): if not self.config: self.config = DEFAULT_CONFIGURATION self.config['ftp-server']['ftp-host'] = click.prompt( "FTP Hostname", default="HOST") self.config['ftp-server']['ftp-username'] = click.prompt( "FTP Username", default="USERNAME") self.config['ftp-server']['ftp-password'] = click.prompt( "FTP Password", default="PASSWORD") self.config['ftp-server'][ 'remote-upload-directory'] = click.prompt( "Remote Upload Directory", default="/Dev/plugins/") with open(self.config_location, 'w') as yaml_file: yaml.dump(self.config, yaml_file, default_flow_style=False) click.echo("Configuration for CraftBuildTools has been saved at %s" % self.config_location) # logger.debug("Configuration for CraftBuildTools has been saved at %s" % self.config_location) def __load_config(self): with open(self.config_location, 'r') as yaml_file: self.config = yaml.load(yaml_file) def save_project(self, project): with open( os.path.join(self.app_config_folder, '%s.yml' % project.name), 'w') as project_new_config_file: yaml.dump(project.yaml(), project_new_config_file, default_flow_style=False)
import os from simpleplugins import PluginManager plugin_manager = PluginManager() # Register all the plugins found in the "plugins" folder, that exists along side the location of this file (manager.py) plugin_manager.register(directory=os.path.abspath(os.path.join(os.path.dirname(__file__), "plugins"))) plugin_manager.register(plugin_file="myplugin.py") from .plugins import MyOtherPlugin plugin_manager.register(directory=os.path.abspath(os.path.join(os.path.dirname(__file__), "plugins")), skip_types=[MyOtherPlugin])