class Nib::Integrate::Integrator

performs docker-compose integration

Attributes

args[R]
config_path[R]
current_arg[R]
current_port[R]

Public Class Methods

down(args, config_path = Nib::Integrate::ConfigFile::PATH) click to toggle source
# File lib/nib/integrate/integrator.rb, line 10
def down(args, config_path = Nib::Integrate::ConfigFile::PATH)
  new(args, config_path).down
end
new(args, config_path) click to toggle source
# File lib/nib/integrate/integrator.rb, line 17
def initialize(args, config_path)
  @args = args
  @config_path = config_path
  @current_port = initial_port
end
up(args, config_path = Nib::Integrate::ConfigFile::PATH) click to toggle source
# File lib/nib/integrate/integrator.rb, line 6
def up(args, config_path = Nib::Integrate::ConfigFile::PATH)
  new(args, config_path).up
end

Public Instance Methods

down() click to toggle source
# File lib/nib/integrate/integrator.rb, line 31
def down
  args.map do |arg|
    @current_arg = arg
    down_command
  end
end
up() click to toggle source
# File lib/nib/integrate/integrator.rb, line 23
def up
  args.map do |arg|
    @current_arg = arg
    @current_port = current_integration_object.port + 1
    command
  end
end

Private Instance Methods

app() click to toggle source
# File lib/nib/integrate/integrator.rb, line 40
def app
  apps.find { |a| a['name'] == current_arg }
end
apps() click to toggle source
# File lib/nib/integrate/integrator.rb, line 44
def apps
  @apps ||= config['apps']
end
cd_command() click to toggle source
# File lib/nib/integrate/integrator.rb, line 68
def cd_command
  "cd #{app['path']}"
end
clean_files_command() click to toggle source
# File lib/nib/integrate/integrator.rb, line 76
def clean_files_command
  'rm .nib-integrate*'
end
command() click to toggle source
# File lib/nib/integrate/integrator.rb, line 52
def command
  integration_file.write_empty_config(app['name'])
  [
    cd_command,
    docker_compose_command,
    clean_files_command
  ].join(' && ')
end
config() click to toggle source
# File lib/nib/integrate/integrator.rb, line 96
def config
  @config ||= config_file.read(config_path)
end
config_file() click to toggle source
# File lib/nib/integrate/integrator.rb, line 100
def config_file
  ConfigFile
end
current_integration_object() click to toggle source
# File lib/nib/integrate/integrator.rb, line 92
def current_integration_object
  integration_file.write(app['name'], current_port)
end
docker_compose_command() click to toggle source
# File lib/nib/integrate/integrator.rb, line 72
def docker_compose_command
  [run_command, integration_file_flag, up_command].compact.join(' ')
end
down_command() click to toggle source
# File lib/nib/integrate/integrator.rb, line 61
def down_command
  [
    cd_command,
    "docker-compose -f #{app['compose_file']} stop"
  ].join(' && ')
end
initial_port() click to toggle source
# File lib/nib/integrate/integrator.rb, line 48
def initial_port
  @initial_port ||= config['initial_port']
end
integration_file() click to toggle source
# File lib/nib/integrate/integrator.rb, line 104
def integration_file
  IntegrationFile
end
integration_file_flag() click to toggle source
# File lib/nib/integrate/integrator.rb, line 88
def integration_file_flag
  "-f #{current_integration_object.path}"
end
run_command() click to toggle source
# File lib/nib/integrate/integrator.rb, line 80
def run_command
  'docker-compose -f .nib-integrate-empty-config-file'
end
up_command() click to toggle source
# File lib/nib/integrate/integrator.rb, line 84
def up_command
  "up -d #{app['service']}"
end