diff --git a/kas/libcmds.py b/kas/libcmds.py index c65287d..75d5bd0 100644 --- a/kas/libcmds.py +++ b/kas/libcmds.py @@ -41,7 +41,37 @@ class Macro: """ Contains commands and provides method to run them. """ - def __init__(self): + def __init__(self, use_common_setup=True, use_common_cleanup=True): + if use_common_setup: + repo_loop = Loop('repo_setup_loop') + repo_loop.add(SetupReposStep()) + + self.setup_commands = [ + SetupDir(), + ] + + if 'SSH_PRIVATE_KEY' in os.environ: + self.setup_commands.append(SetupSSHAgent()) + + self.setup_commands += [ + InitSetupRepos(), + repo_loop, + FinishSetupRepos(), + SetupEnviron(), + SetupHome(), + ReposApplyPatches(), + WriteBBConfig(), + ] + else: + self.setup_commands = [] + + if use_common_cleanup and 'SSH_PRIVATE_KEY' in os.environ: + self.cleanup_commands = [ + CleanupSSHAgent(), + ] + else: + self.cleanup_commands = [] + self.commands = [] def add(self, command): @@ -56,7 +86,9 @@ class Macro: configuration. """ skip = skip or [] - for command in self.commands: + joined_commands = self.setup_commands + \ + self.commands + self.cleanup_commands + for command in joined_commands: command_name = str(command) if command_name in skip: continue diff --git a/kas/plugins/build.py b/kas/plugins/build.py index 8d288cb..b775643 100644 --- a/kas/plugins/build.py +++ b/kas/plugins/build.py @@ -33,17 +33,12 @@ """ import logging -import os import subprocess import sys from kas.context import create_global_context from kas.config import Config from kas.libkas import find_program, run_cmd -from kas.libcmds import (Macro, Command, SetupDir, CleanupSSHAgent, - SetupSSHAgent, SetupEnviron, - WriteBBConfig, SetupHome, ReposApplyPatches, - Loop, InitSetupRepos, FinishSetupRepos, - SetupReposStep) +from kas.libcmds import Macro, Command __license__ = 'MIT' __copyright__ = 'Copyright (c) Siemens AG, 2017-2018' @@ -84,33 +79,7 @@ class Build: ctx.config = Config(args.config, args.target, args.task) macro = Macro() - - # Prepare - macro.add(SetupDir()) - - if 'SSH_PRIVATE_KEY' in os.environ: - macro.add(SetupSSHAgent()) - - macro.add(InitSetupRepos()) - - repo_loop = Loop('repo_setup_loop') - repo_loop.add(SetupReposStep()) - - macro.add(repo_loop) - macro.add(FinishSetupRepos()) - - macro.add(SetupEnviron()) - macro.add(SetupHome()) - macro.add(ReposApplyPatches()) - - macro.add(WriteBBConfig()) - - # Build macro.add(BuildCommand(args.extra_bitbake_args)) - - if 'SSH_PRIVATE_KEY' in os.environ: - macro.add(CleanupSSHAgent()) - macro.run(ctx, args.skip) diff --git a/kas/plugins/shell.py b/kas/plugins/shell.py index c11dcff..50e8ed0 100644 --- a/kas/plugins/shell.py +++ b/kas/plugins/shell.py @@ -38,16 +38,11 @@ """ import logging -import os import subprocess import sys from kas.context import create_global_context from kas.config import Config -from kas.libcmds import (Macro, Command, SetupDir, SetupEnviron, - WriteBBConfig, SetupHome, ReposApplyPatches, - CleanupSSHAgent, SetupSSHAgent, - Loop, InitSetupRepos, FinishSetupRepos, - SetupReposStep) +from kas.libcmds import Macro, Command __license__ = 'MIT' __copyright__ = 'Copyright (c) Siemens AG, 2017-2018' @@ -93,33 +88,7 @@ class Shell: ] macro = Macro() - - # Prepare - macro.add(SetupDir()) - - if 'SSH_PRIVATE_KEY' in os.environ: - macro.add(SetupSSHAgent()) - - macro.add(InitSetupRepos()) - - repo_loop = Loop('repo_setup_loop') - repo_loop.add(SetupReposStep()) - - macro.add(repo_loop) - macro.add(FinishSetupRepos()) - - macro.add(SetupEnviron()) - macro.add(SetupHome()) - macro.add(ReposApplyPatches()) - - macro.add(WriteBBConfig()) - - # Shell macro.add(ShellCommand(args.command)) - - if 'SSH_PRIVATE_KEY' in os.environ: - macro.add(CleanupSSHAgent()) - macro.run(ctx, args.skip)