class Devup::Environment

Attributes

logger[R]
pwd[R]
shell[R]

Public Class Methods

new(pwd:, compose: nil, logger: Logger.build, shell: Shell.new(pwd: pwd, logger: logger)) click to toggle source
# File lib/devup/environment.rb, line 13
def initialize(pwd:, compose: nil, logger: Logger.build, shell: Shell.new(pwd: pwd, logger: logger))
  @pwd = pwd.to_s.strip
  @compose = compose
  @logger = logger
  @shell = shell
end

Public Instance Methods

down() click to toggle source
# File lib/devup/environment.rb, line 41
def down
  logger.info "shutting down..."
  compose.stop
  compose.rm
  clear_dotenv
  logger.info "down"
rescue => ex
  logger.debug ex
  logger.info "halted"
end
env() click to toggle source
# File lib/devup/environment.rb, line 24
def env
  services.map { |s| service_env(s) }.join("\n\n")
end
project() click to toggle source
# File lib/devup/environment.rb, line 20
def project
  pwd.split("/")[-1].strip
end
root() click to toggle source
# File lib/devup/environment.rb, line 52
def root
  Pathname.new pwd
end
up() click to toggle source
# File lib/devup/environment.rb, line 28
def up
  logger.info "starting up..."
  check
  compose.up
  write_dotenv
  logger.info "up"
rescue => ex
  clear_dotenv
  logger.debug ex
  logger.error "halted"
  raise ex
end

Private Instance Methods

check() click to toggle source
# File lib/devup/environment.rb, line 58
def check
  raise if missing_config
  compose.check
end
clear_dotenv() click to toggle source
# File lib/devup/environment.rb, line 85
def clear_dotenv
  File.open(root.join(".env.services"), "w") { |f| f.write "" }
end
compose() click to toggle source
# File lib/devup/environment.rb, line 104
def compose
  @compose ||= begin
                 Compose.new(
                   root.join("docker-compose.devup.yml"),
                   project: project, logger: logger, shell: shell
                 )
               end
end
dotenv() click to toggle source
# File lib/devup/environment.rb, line 89
    def dotenv
      <<~DOTENV
        ####################################################
        #     This file is generated by devup command.     #
        #     Home: https://github.com/sergio-fry/devup    #
        ####################################################
        # START

        #{env}

        # END

      DOTENV
    end
missing_config() click to toggle source
# File lib/devup/environment.rb, line 63
def missing_config
  if File.exist?(compose.path)
    false
  else
    logger.error "missing #{compose.path}"

    true
  end
end
service_env(service) click to toggle source
# File lib/devup/environment.rb, line 77
def service_env(service)
  ServicePresenter.new(service, project: project).call
end
services() click to toggle source
# File lib/devup/environment.rb, line 73
def services
  @services ||= compose.services.map { |name| Service.new(compose, name) }
end
write_dotenv() click to toggle source
# File lib/devup/environment.rb, line 81
def write_dotenv
  File.open(root.join(".env.services"), "w") { |f| f.write dotenv }
end