コード例 #1
0
    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()
コード例 #2
0
ファイル: app.py プロジェクト: TechnicalBro/CraftBuildTools
    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()
コード例 #3
0
ファイル: app.py プロジェクト: TechnicalBro/CraftBuildTools
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)
コード例 #4
0
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)
コード例 #5
0
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])