コード例 #1
0
ファイル: scripts.py プロジェクト: factorial-io/fabalicious
    def runScript(self, config, **kwargs):
        script = kwargs["script"]
        callbacks = kwargs["callbacks"] if "callbacks" in kwargs else {}
        variables = kwargs["variables"] if "variables" in kwargs else {}
        environment = kwargs["environment"] if "environment" in kwargs else {}
        root_folder = kwargs["rootFolder"] if "rootFolder" in kwargs else config["siteFolder"]
        if "environment" in config:
            environment = configuration.data_merge(config["environment"], environment)
        variables["host"] = config
        settings = copy.deepcopy(configuration.getSettings())
        map(lambda x: settings.pop(x, None), ["hosts", "dockerHosts"])
        variables["settings"] = settings

        callbacks["execute"] = self.executeCallback
        callbacks["run_task"] = self.runTaskCallback
        callbacks["fail_on_error"] = self.failOnErrorCallback
        callbacks["fail_on_missing_directory"] = self.failOnMissingDirectory

        replacements = self.expandVariables(variables)
        commands = self.expandCommands(script, replacements)
        # Do it again to support replacements which needs to be replaced again.
        commands = self.expandCommands(commands, replacements)
        environment = self.expandEnvironment(environment, replacements)

        for need in config["needs"]:
            environment[need.upper() + "_AVAILABLE"] = "1"

        return_code = self.runScriptImpl(root_folder, commands, config, callbacks, environment, replacements)
        if return_code:
            print red("Due to earlier errors quitting now.")
            exit(return_code)
コード例 #2
0
def script(scriptKey=False, *args, **kwargs):
    configuration.check()
    scripts = configuration.current('scripts')
    scriptData = scripts[scriptKey] if scriptKey in scripts else False

    if not scriptData:
        scripts = configuration.getSettings('scripts')
        scriptData = scripts[scriptKey] if scriptKey in scripts else False

    if not scriptData:
        log.error('Could not find any script named "%s" in fabfile.yaml' %
                  scriptKey)
        if configuration.current('scripts'):
            print 'Available scripts in %s:\n  - ' % configuration.current(
                'config_name') + '\n  - '.join(
                    configuration.current('scripts').keys())

        if configuration.getSettings('scripts'):
            print 'Available scripts: \n  - ' + '\n  - '.join(
                configuration.getSettings('scripts').keys())

        exit(1)

    if isinstance(scriptData, dict):
        if 'defaults' in scriptData:
            kwargs = configuration.data_merge(scriptData['defaults'], kwargs)

        scriptData = scriptData['script']

    # compute arguments:
    arguments = ' '.join(args)
    for key in kwargs.keys():
        arguments += ' ' + key + '="' + kwargs[key] + '"'
    variables = {
        'arguments': kwargs,
    }
    variables['arguments']['combined'] = arguments

    if scriptData:
        methods.call('script',
                     'runScript',
                     configuration.current(),
                     script=scriptData,
                     variables=variables)
コード例 #3
0
    def runScript(self, config, **kwargs):
        self.setRunLocally(config)

        script = kwargs['script']
        callbacks = kwargs['callbacks'] if 'callbacks' in kwargs else {}
        variables = kwargs['variables'] if 'variables' in kwargs else {}
        environment = kwargs['environment'] if 'environment' in kwargs else {}
        root_folder = kwargs[
            'rootFolder'] if 'rootFolder' in kwargs else config['siteFolder']
        runLocally = kwargs[
            'runLocally'] if 'runLocally' in kwargs else self.run_locally

        if 'environment' in config:
            environment = configuration.data_merge(config['environment'],
                                                   environment)
        variables['host'] = config
        settings = copy.deepcopy(configuration.getSettings())
        map(lambda x: settings.pop(x, None), ['hosts', 'dockerHosts'])
        variables['settings'] = settings

        callbacks['execute'] = self.executeCallback
        callbacks['run_task'] = self.runTaskCallback
        callbacks['fail_on_error'] = self.failOnErrorCallback
        callbacks['fail_on_missing_directory'] = self.failOnMissingDirectory

        replacements = self.expandVariables(variables)
        commands = self.expandCommands(script, replacements)
        # Do it again to support replacements which needs to be replaced again.
        commands = self.expandCommands(commands, replacements)
        environment = self.expandEnvironment(environment, replacements)

        for need in config['needs']:
            environment[need.upper() + '_AVAILABLE'] = "1"

        return_code = self.runScriptImpl(root_folder, commands, config,
                                         runLocally, callbacks, environment,
                                         replacements)
        if return_code:
            print red('Due to earlier errors quitting now.')
            exit(return_code)
コード例 #4
0
ファイル: fabfile.py プロジェクト: factorial-io/fabalicious
def script(scriptKey = False, *args, **kwargs):
  configuration.check()
  scripts = configuration.current('scripts')
  scriptData = scripts[scriptKey] if scriptKey in scripts else False

  if not scriptData:
    scripts = configuration.getSettings('scripts')
    scriptData = scripts[scriptKey] if scriptKey in scripts else False

  if not scriptData:
    log.error('Could not find any script named "%s" in fabfile.yaml' % scriptKey)
    if configuration.current('scripts'):
      print 'Available scripts in %s:\n  - ' % configuration.current('config_name') + '\n  - '.join(configuration.current('scripts').keys())

    if configuration.getSettings('scripts'):
      print 'Available scripts: \n  - '  + '\n  - '.join(configuration.getSettings('scripts').keys())

    exit(1)

  if isinstance(scriptData, dict):
    if 'defaults' in scriptData:
      kwargs = configuration.data_merge(scriptData['defaults'], kwargs)

    scriptData = scriptData['script']

  # compute arguments:
  arguments = ' '.join(args)
  for key in kwargs.keys():
    arguments += ' ' + key + '="' + kwargs[key]+'"'
  variables = {
    'arguments': kwargs,
  }
  variables['arguments']['combined'] = arguments


  if scriptData:
    methods.call('script', 'runScript', configuration.current(), script=scriptData, variables=variables)
コード例 #5
0
ファイル: scripts.py プロジェクト: factorial-io/fabalicious
  def runScript(self, config, **kwargs):
    self.setRunLocally(config)

    script = kwargs['script']
    callbacks = kwargs['callbacks'] if 'callbacks' in kwargs else {}
    variables = kwargs['variables'] if 'variables' in kwargs else {}
    environment = kwargs['environment'] if 'environment' in kwargs else {}
    root_folder = kwargs['rootFolder'] if 'rootFolder' in kwargs else config['siteFolder'] if 'siteFolder' in config else '.'
    runLocally = kwargs['runLocally'] if 'runLocally' in kwargs else self.run_locally

    if 'environment' in config:
      environment = configuration.data_merge(config['environment'], environment)
    variables['host'] = config
    settings = copy.deepcopy(configuration.getSettings())
    map(lambda x: settings.pop(x,None), ['hosts', 'dockerHosts'])
    variables['settings'] = settings

    callbacks['execute'] = self.executeCallback
    callbacks['run_task'] = self.runTaskCallback
    callbacks['fail_on_error'] = self.failOnErrorCallback
    callbacks['fail_on_missing_directory'] = self.failOnMissingDirectory

    replacements = self.expandVariables(variables);
    commands = self.expandCommands(script, replacements)
    # Do it again to support replacements which needs to be replaced again.
    commands = self.expandCommands(commands, replacements)
    environment = self.expandEnvironment(environment, replacements)


    for need in config['needs']:
      environment[need.upper() + '_AVAILABLE'] = "1"

    return_code = self.runScriptImpl(root_folder, commands, config, runLocally, callbacks, environment, replacements)
    if return_code:
      log.error('Due to earlier errors quitting now.')
      exit(return_code)
コード例 #6
0
ファイル: fabfile.py プロジェクト: factorial-io/fabalicious
def script(scriptKey=False, *args, **kwargs):
    configuration.check()
    scripts = configuration.current("scripts")
    scriptData = scripts[scriptKey] if scriptKey in scripts else False

    if not scriptData:
        scripts = configuration.getSettings("scripts")
        scriptData = scripts[scriptKey] if scriptKey in scripts else False

    if not scriptData:
        print red('Could not find any script named "%s" in fabfile.yaml' % scriptKey)
        if configuration.current("scripts"):
            print "Available scripts in %s:\n  - " % configuration.current("config_name") + "\n  - ".join(
                configuration.current("scripts").keys()
            )

        if configuration.getSettings("scripts"):
            print "Available scripts: \n  - " + "\n  - ".join(configuration.getSettings("scripts").keys())

        exit(1)

    if isinstance(scriptData, dict):
        if "defaults" in scriptData:
            kwargs = configuration.data_merge(scriptData["defaults"], kwargs)

        scriptData = scriptData["script"]

    # compute arguments:
    arguments = " ".join(args)
    for key in kwargs.keys():
        arguments += " " + key + '="' + kwargs[key] + '"'
    variables = {"arguments": kwargs}
    variables["arguments"]["combined"] = arguments

    if scriptData:
        methods.call("script", "runScript", configuration.current(), script=scriptData, variables=variables)
コード例 #7
0
 def applyConfig(config, settings):
     config['slack'] = data_merge(settings['slack'], config['slack'])
コード例 #8
0
ファイル: slack.py プロジェクト: factorial-io/fabalicious
 def applyConfig(config, settings):
   config['slack'] = data_merge(settings['slack'], config['slack'])
コード例 #9
0
 def applyConfig(config, settings):
     config['gitOptions'] = data_merge(settings['gitOptions'],
                                       config['gitOptions'])
     BaseMethod.addExecutables(config, ['git'])
コード例 #10
0
ファイル: git.py プロジェクト: factorial-io/fabalicious
 def applyConfig(config, settings):
   config['gitOptions'] = data_merge(settings['gitOptions'], config['gitOptions'])
   BaseMethod.addExecutables(config, ['git'])
コード例 #11
0
ファイル: git.py プロジェクト: d34dman/fabalicious
 def applyConfig(config, settings):
   config['gitOptions'] = data_merge(settings['gitOptions'], config['gitOptions'])