Sha256: dbedb902bbbe08a39c3a83f0252acc7da42c747e36479de1e9a2aaf4af833c5e

Contents?: true

Size: 1.89 KB

Versions: 2

Compression:

Stored size: 1.89 KB

Contents

# frozen_string_literal: true

require "thor"
require "readline"

require_relative "../session"
require_relative "./constants"
require_relative "../dyno_console_manager"

module NeetoDeploy
  class CLI
    module Exec
      class Base < CLI::Base
        include Constants
        include Session

        attr_reader :app_name

        def initialize(app_name)
          super()
          @app_name = app_name
        end

        def process!
          start_spinner
          send_console_session_request
          ui.error("\n#{@response.body}") and return unless @response.success?
          start_console
          connection_cleanup_callback
        end

        private

          def console_executable_path
            gem_spec = Gem::Specification.find_by_name("neetodeploy")
            gem_dir = gem_spec.gem_dir
            executable_path = File.join(gem_dir, "exe", "console")
          end

          def start_console
            @pubsub_token = @response.parsed_response["console_pubsub_token"]
            console_access_token = @response.parsed_response["console_access_token"]
            pod_name = "#{app_name}-#{@pubsub_token}-console-deployment"
            container_name = "#{app_name}-#{@pubsub_token}-console"
            system("#{console_executable_path} -podname #{pod_name} -token #{console_access_token} -container #{container_name}")
          end

          def send_console_session_request
            @response = send_post_request(console_session_base_url, { app_slug: @app_name })
            @spinner.stop
          end

          def connection_cleanup_callback
            url = "#{console_session_base_url}/#{app_name}"
            send_delete_request(url, { pubsub_token: @pubsub_token })
          end

          def start_spinner
            @spinner = TTY::Spinner.new("Setting up dyno [:spinner]", format: :classic)
            @spinner.auto_spin
          end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
neetodeploy-1.1.12 lib/neeto_deploy/cli/exec/base.rb
neetodeploy-1.1.11 lib/neeto_deploy/cli/exec/base.rb