neetodeploy 1.1.4 → 1.1.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 19af255afa80f69e3d6e3587f8917788e866cef5b296525c641415e9285d8720
4
- data.tar.gz: d851f2610614e2f0f7d3054e72d70b770bb8deb3896fe3c70eafd9ebe70efe22
3
+ metadata.gz: 7758b6320f1b7a4e6ca6245794c802800ade04945bfa1396ea027a67629a02ec
4
+ data.tar.gz: 95f3f1b502eaf798d0dfc00d79db4f4b5e2badc5c015043c2e65b0525f56486b
5
5
  SHA512:
6
- metadata.gz: 40566c170d6f756b33446a237a670532188b5f32eac9cd8ee738b531793e9218e187efe091ec677b8730c68cc2e1ee27511e453cd5503dee7ee2f76f172fb554
7
- data.tar.gz: efe2823e4c1aa55006f7284f69547e6292e378886bce2fd0ef214fbca559d185240dfd36ff498267c98698bd78fa055965359d05d26553187620c0c7d38c61b9
6
+ metadata.gz: 4654d5e1e23becddf4b9726aaed9619100933d81a06a495f119ef51c63a4466bd4cf371d77706cd58fd15e07cc9930c7ae3b1e05e0c5110a11e3f8969ea61f19
7
+ data.tar.gz: 06bff1ef5ad906b62f0d26dcb59170f8d1569476cb3e9a09321813c94cf02d319eb722327049163f64e654fa295637f33798550627d7b518d2a17b3eada1495a
data/Gemfile.lock CHANGED
@@ -1,13 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- neetodeploy (1.1.4)
4
+ neetodeploy (1.1.6)
5
5
  colorize
6
6
  dotenv (~> 2.8.1)
7
7
  httparty (~> 0.21.0)
8
8
  launchy (~> 2.5.0)
9
9
  terminal-table (~> 3.0.2)
10
10
  thor (~> 1.3.0)
11
+ tty-spinner
11
12
  websocket-client-simple
12
13
 
13
14
  GEM
@@ -30,6 +31,9 @@ GEM
30
31
  terminal-table (3.0.2)
31
32
  unicode-display_width (>= 1.1.1, < 3)
32
33
  thor (1.3.0)
34
+ tty-cursor (0.7.1)
35
+ tty-spinner (0.9.3)
36
+ tty-cursor (~> 0.7)
33
37
  unicode-display_width (2.4.2)
34
38
  websocket (1.2.9)
35
39
  websocket-client-simple (0.6.1)
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "thor"
4
+ require_relative "./info"
5
+ require_relative "./scheduled_exports_settings"
6
+
7
+ module NeetoDeploy
8
+ class CLI
9
+ module Addon
10
+ class Commands < Thor
11
+ desc "info", "Get addon informations"
12
+ option :addon_name, type: :string, aliases: "-n", required: true, desc: "Addon name"
13
+ def info
14
+ Info.new(options).run
15
+ end
16
+
17
+ desc "scheduled_exports_enabled", "Check whether scheduled exports is enabled for an app"
18
+ option :app_name, type: :string, aliases: "-a", required: true, desc: "App name"
19
+ def scheduled_exports_enabled
20
+ ScheduledExportsSettings.new(options).run
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NeetoDeploy
4
+ class CLI
5
+ module Addon
6
+ module Constants
7
+ NEETO_DEPLOY_CLI_API_ADDON_URL = "#{NEETO_DEPLOY_CLI_API_BASE_URL}/addons".freeze
8
+
9
+ def addon_url(addon_name)
10
+ "#{NEETO_DEPLOY_CLI_API_BASE_URL}/addons/#{addon_name}"
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "thor"
4
+
5
+ require_relative "../session"
6
+ require_relative "./constants"
7
+
8
+ module NeetoDeploy
9
+ class CLI
10
+ module Addon
11
+ class Info < CLI::Base
12
+ include Constants
13
+ include Session
14
+
15
+ attr_reader :addon_name
16
+
17
+ def initialize(options)
18
+ super()
19
+ @addon_name = options[:addon_name]
20
+ end
21
+
22
+ def run
23
+ ui.execute_with_loading("Fetching info...") do
24
+ send_request
25
+ end
26
+ print_output
27
+ end
28
+
29
+ private
30
+
31
+ def flatten_hash_from(hash)
32
+ hash.each_with_object({}) do |(key, value), memo|
33
+ next flatten_hash_from(value).each do |k, v|
34
+ memo["#{k}".intern] = v
35
+ end if value.is_a? Hash
36
+ memo[key] = value
37
+ end
38
+ end
39
+
40
+ def send_request
41
+ @response = send_get_request(addon_url(addon_name), {})
42
+ end
43
+
44
+ def print_output
45
+ ui.error(@response["error"]) and return unless @response.success?
46
+
47
+ flatten_hash_from(JSON[@response.body]).each do |k, v|
48
+ ui.info("#{k}: #{v}")
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "thor"
4
+
5
+ require_relative "../session"
6
+ require_relative "./constants"
7
+
8
+ module NeetoDeploy
9
+ class CLI
10
+ module Addon
11
+ class ScheduledExportsSettings < CLI::Base
12
+ include Constants
13
+ include Session
14
+
15
+ attr_reader :app_name
16
+
17
+ def initialize(options)
18
+ super()
19
+ @app_name = options[:app_name]
20
+ end
21
+
22
+ def run
23
+ ui.execute_with_loading("Fetching info...") do
24
+ send_request
25
+ end
26
+ print_output
27
+ end
28
+
29
+ private
30
+
31
+ def send_request
32
+ @response = send_get_request("#{NEETO_DEPLOY_CLI_API_BASE_URL}/scheduled_exports/#{app_name}", {app_slug: app_name})
33
+ end
34
+
35
+ def print_output
36
+ ui.error(@response["error"]) and return unless @response.success?
37
+
38
+ scheduled_exports = JSON.parse(@response.body)["scheduled_exports_enabled"]
39
+ if scheduled_exports.nil?
40
+ ui.error("App doesn't seem to have a primary database addon")
41
+ else
42
+ ui.info("Scheduled exports is turned #{scheduled_exports ? "\u001b[32mon\u001b[0m" : "\u001b[31moff\u001b[0m"} for #{app_name}'s primary database")
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "thor"
4
+
5
+ require_relative "./list"
6
+
7
+ module NeetoDeploy
8
+ class CLI
9
+ module AutoscalingConfig
10
+ class Commands < Thor
11
+ desc "list", "List autoscaling configs of an app"
12
+ option :app, type: :string, aliases: "-a", required: true, desc: "App slug"
13
+ def list
14
+ List.new(options:).run
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "thor"
4
+
5
+ module NeetoDeploy
6
+ class CLI
7
+ module AutoscalingConfig
8
+ class List < CLI::Base
9
+ include Session
10
+
11
+ attr_reader :app_slug
12
+
13
+ def initialize(options:)
14
+ super()
15
+ @app_slug = options[:app]
16
+ end
17
+
18
+ def run
19
+ response = send_get_request(
20
+ "#{NEETO_DEPLOY_CLI_API_BASE_URL}/autoscaling_configs/#{app_slug}", {
21
+ app_slug:
22
+ }
23
+ )
24
+
25
+ ui.error(response) and return unless response.success?
26
+
27
+ ui.success(JSON.parse(response.body)["autoscaling_status"])
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -4,7 +4,7 @@ require_relative "ui"
4
4
  require_relative "../version"
5
5
 
6
6
  module NeetoDeploy
7
- class CLI
7
+ class CLI
8
8
  NEETO_DEPLOY_HOST = ENV["NEETO_DEPLOY_HOST"] || "https://app.neetodeploy.com"
9
9
  NEETO_DEPLOY_CLI_API_BASE_URL = "#{NEETO_DEPLOY_HOST}/api/cli/#{CLI_API_VERSION}"
10
10
 
@@ -0,0 +1,85 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "thor"
4
+
5
+ module NeetoDeploy
6
+ class CLI
7
+ class DynoConsoleManager < Base
8
+ DYNO_CONSOLE_MANAGER_URL = "wss://neeto-deploy-lc.neetodeployapp.com"
9
+
10
+ def initialize
11
+ super()
12
+ @prompt = ""
13
+ end
14
+
15
+ def run_console
16
+ start_spinner
17
+ send_console_session_request
18
+ ui.error(response) and return unless @response.success?
19
+
20
+ send_websocket_request
21
+ define_websocket_blocks
22
+ end
23
+
24
+ private
25
+
26
+ def start_spinner
27
+ @spinner = TTY::Spinner.new("[:spinner] Connecting to #{@instance_name}", format: :classic)
28
+ @spinner.auto_spin
29
+ end
30
+
31
+ def define_websocket_blocks
32
+ stop_spinner = lambda do
33
+ @spinner.stop unless @connection_established
34
+ end
35
+
36
+ cleanup = lambda do
37
+ connection_cleanup
38
+ end
39
+
40
+ @ws.on :message do |msg|
41
+ message = msg.data
42
+ if message.to_s.eql?("{\"exitCode\":0,\"signal\":0}")
43
+ cleanup.call
44
+ exit 0
45
+ end
46
+ cmd = message[0]
47
+ if cmd == "1"
48
+ extracted_message = message.delete_prefix("1")
49
+ stop_spinner.call && @connection_established = true unless extracted_message == ""
50
+ @prompt = "\u001b[2K\u001b[0G#{extracted_message.split("\r\n").last}"
51
+ print extracted_message
52
+ end
53
+ end
54
+
55
+ @ws.on :open do
56
+ end
57
+
58
+ @ws.on :close do |e|
59
+ puts e
60
+ exit 1
61
+ end
62
+
63
+ @ws.on :error do |e|
64
+ puts e
65
+ puts "MyserverBackend>> Close entered. Last error:#{$!.class}:#{$!.to_s};Module:#{$0};"
66
+ $@.each { |backtrace| puts backtrace }
67
+ exit 1
68
+ end
69
+
70
+ trap("SIGINT") do
71
+ Thread.new { @ws.send "4" }
72
+ end
73
+
74
+ loop do
75
+ sleep 0.1
76
+ input = Readline.readline(@prompt, true)
77
+ @ws.send "1" + input
78
+ end
79
+ end
80
+
81
+ def connection_cleanup
82
+ end
83
+ end
84
+ end
85
+ end
@@ -1,15 +1,17 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "websocket-client-simple"
3
4
  require "thor"
4
5
  require "readline"
5
6
 
6
7
  require_relative "../session"
7
8
  require_relative "./constants"
9
+ require_relative "../dyno_console_manager"
8
10
 
9
11
  module NeetoDeploy
10
12
  class CLI
11
13
  module Exec
12
- class Base < CLI::Base
14
+ class Base < CLI::DynoConsoleManager
13
15
  include Constants
14
16
  include Session
15
17
 
@@ -18,75 +20,32 @@ module NeetoDeploy
18
20
  def initialize(app_name)
19
21
  super()
20
22
  @app_name = app_name
23
+ @instance_name = app_name
24
+ @connection_established = false
21
25
  end
22
26
 
23
27
  def process!
24
- puts "Opening console for #{app_name}"
25
-
26
- response = send_post_request(
27
- console_session_base_url, {
28
- # TODO refactor app_slug to app_name in dashboard app
29
- app_slug: app_name,
30
- }
31
- )
32
-
33
- ui.error(response) and return unless response.success?
34
-
35
- console_token = response.parsed_response["console_token"]
36
-
37
- ws = WebSocket::Client::Simple.connect "wss://neeto-deploy-lc.neetodeployapp.com/cli_console?deployment_name=#{app_name}&console_token=#{console_token}"
38
-
39
- prompt = ''
40
-
41
- delete_url = "#{console_session_base_url}/#{console_token}"
42
- app_slug = app_name
43
-
44
- send_delete_request = lambda do |url, body|
45
- send_delete_request(url, body)
46
- end
28
+ run_console
29
+ end
47
30
 
48
- ws.on :message do |msg|
49
- message = msg.data
50
- if message.to_s.eql?("{\"exitCode\":0,\"signal\":0}")
51
- send_delete_request.call(
52
- delete_url, {
53
- app_slug:
54
- }
55
- )
56
- exit 0
57
- end
58
- cmd = message[0]
59
- if cmd == "1"
60
- prompt = "\u001b[2K\u001b[0G#{message.delete_prefix("1").split("\r\n").last}"
61
- print message.delete_prefix("1")
62
- end
63
- end
31
+ private
64
32
 
65
- ws.on :open do
33
+ def send_console_session_request
34
+ @response = send_post_request(console_session_base_url, { app_slug: @app_name })
66
35
  end
67
36
 
68
- ws.on :close do |e|
69
- puts e
70
- exit 1
71
- end
37
+ def send_websocket_request
38
+ @console_token = @response.parsed_response["console_token"]
39
+ pubsub_token = @response.parsed_response["console_pubsub_token"]
40
+ deployment_name = "#{app_name}-#{pubsub_token}-console-deployment"
72
41
 
73
- ws.on :error do |e|
74
- puts e
75
- puts "MyserverBackend>> Close entered. Last error:#{$!.class}:#{$!.to_s};Module:#{$0};"
76
- $@.each { |backtrace| puts backtrace }
77
- exit 1
42
+ @ws = WebSocket::Client::Simple.connect "#{DYNO_CONSOLE_MANAGER_URL}/cli_console?app_name=#{app_name}&deployment_name=#{deployment_name}&console_token=#{@console_token}&kind=web"
78
43
  end
79
44
 
80
- trap("SIGINT") do
81
- Thread.new { ws.send "4" }
45
+ def connection_cleanup
46
+ url = "#{console_session_base_url}/#{@console_token}"
47
+ send_delete_request(url, { app_slug: app_name })
82
48
  end
83
-
84
- loop do
85
- sleep 0.1
86
- input = Readline.readline(prompt, true)
87
- ws.send "1" + input
88
- end
89
- end
90
49
  end
91
50
  end
92
51
  end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "./console"
4
+
5
+ module NeetoDeploy
6
+ class CLI
7
+ module Pg
8
+ class Commands < Thor
9
+ desc "cli", "Connect to postgresql console"
10
+ option :addon_name, type: :string, aliases: "-n", required: true, desc: "Addon name"
11
+
12
+ def cli
13
+ Console.new(options).run
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "thor"
4
+ require_relative "../session"
5
+ require_relative "./constants"
6
+ require_relative "../dyno_console_manager"
7
+
8
+ module NeetoDeploy
9
+ class CLI
10
+ module Pg
11
+ class Console < CLI::DynoConsoleManager
12
+ include Constants
13
+ include Session
14
+
15
+ attr_reader :addon_name
16
+
17
+ def initialize(options)
18
+ super()
19
+ @addon_name = options[:addon_name]
20
+ @instance_name = options[:addon_name]
21
+ @connection_established = false
22
+ end
23
+
24
+ def run
25
+ run_console
26
+ end
27
+
28
+ private
29
+
30
+ def send_console_session_request
31
+ @response = send_post_request(console_session_base_url(addon_name), {})
32
+ end
33
+
34
+ def send_websocket_request
35
+ console_token = @response.parsed_response["console_token"]
36
+ database_url = @response.parsed_response["url"]
37
+ deployment_name = @response.parsed_response["internal_name"]
38
+ app_name = @response.parsed_response["app_name"]
39
+
40
+ @ws = WebSocket::Client::Simple.connect "#{DYNO_CONSOLE_MANAGER_URL}/cli_console?app_name=#{app_name}&deployment_name=#{deployment_name}&console_token=#{console_token}&database_url=#{database_url}&kind=postgres"
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NeetoDeploy
4
+ class CLI
5
+ module Pg
6
+ module Constants
7
+ def console_session_base_url(addon_name)
8
+ "#{NEETO_DEPLOY_CLI_API_BASE_URL}/addons/#{addon_name}/console_session"
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -3,6 +3,7 @@
3
3
  require "thor"
4
4
  require_relative "./set"
5
5
  require_relative "./get"
6
+ require_relative "./reset_stats"
6
7
 
7
8
  module NeetoDeploy
8
9
  class CLI
@@ -23,6 +24,13 @@ module NeetoDeploy
23
24
  def get
24
25
  Get.new(options).run
25
26
  end
27
+
28
+ desc "reset-stats", "Resets the statistics of the Redis instance"
29
+ option :addon_name, type: :string, aliases: "-n", required: true, desc: "Addon name"
30
+ def reset_stats
31
+ ResetStats.new(options).run
32
+ end
33
+
26
34
  end
27
35
  end
28
36
  end
@@ -5,7 +5,7 @@ module NeetoDeploy
5
5
  module Redis
6
6
  module Constants
7
7
  NEETO_DEPLOY_CLI_API_ADDONS_REDIS_URL = "#{NEETO_DEPLOY_CLI_API_BASE_URL}/addons/redis".freeze
8
- AVAILABLE_REDIS_CONFIGS_TO_EDIT = ["maxmemory-policy"]
8
+ AVAILABLE_REDIS_CONFIGS_TO_EDIT = ["maxmemory-policy", "notify-keyspace-events"]
9
9
 
10
10
  def redis_addon_url
11
11
  NEETO_DEPLOY_CLI_API_ADDONS_REDIS_URL
@@ -20,17 +20,28 @@ module NeetoDeploy
20
20
  end
21
21
 
22
22
  def run
23
- response = send_patch_request(
24
- redis_addon_url, {
25
- addon_name:,
26
- command: "CONFIG get #{key}"
27
- }
28
- )
23
+ ui.execute_with_loading("Fetching info...") do
24
+ send_request
25
+ end
26
+ print_output
27
+ end
29
28
 
30
- ui.error(response) and return unless response.success?
29
+ private
31
30
 
32
- ui.success(response["message"])
33
- end
31
+ def send_request
32
+ @response = send_patch_request(
33
+ redis_addon_url, {
34
+ addon_name:,
35
+ command: "CONFIG get #{key}"
36
+ }
37
+ )
38
+ end
39
+
40
+ def print_output
41
+ ui.error(@response["error"]) and return unless @response.success?
42
+
43
+ ui.success(@response["message"])
44
+ end
34
45
  end
35
46
  end
36
47
  end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "thor"
4
+ require_relative "../session"
5
+ require_relative "./constants"
6
+
7
+ module NeetoDeploy
8
+ class CLI
9
+ module Redis
10
+ class ResetStats < CLI::Base
11
+ include Constants
12
+ include Session
13
+
14
+ attr_reader :addon_name
15
+
16
+ def initialize(options)
17
+ super()
18
+ @addon_name = options[:addon_name]
19
+ end
20
+
21
+ def run
22
+ if ui.yes?("Are you sure you want to reset the statistics (y/n)")
23
+ response = send_patch_request(
24
+ redis_addon_url, {
25
+ addon_name:,
26
+ command: "CONFIG RESETSTAT"
27
+ }
28
+ )
29
+ ui.error(response["error"]) and return unless response.success?
30
+
31
+ ui.success("Stats reset successful.")
32
+ else
33
+ puts "Reset cancelled."
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "thor"
4
- require "byebug"
5
4
 
6
5
  require_relative "../session"
7
6
  require_relative "./constants"
@@ -28,16 +27,10 @@ module NeetoDeploy
28
27
  return
29
28
  end
30
29
 
31
- response = send_patch_request(
32
- redis_addon_url, {
33
- addon_name:,
34
- command: "CONFIG set #{key} #{value}"
35
- }
36
- )
37
-
38
- ui.error(response) and return unless response.success?
39
-
40
- ui.success("Done")
30
+ ui.execute_with_loading("Setting config...") do
31
+ send_request
32
+ end
33
+ print_output
41
34
  end
42
35
 
43
36
  private
@@ -45,6 +38,21 @@ module NeetoDeploy
45
38
  def valid_config?
46
39
  AVAILABLE_REDIS_CONFIGS_TO_EDIT.include?(key)
47
40
  end
41
+
42
+ def send_request
43
+ @response = send_patch_request(
44
+ redis_addon_url, {
45
+ addon_name:,
46
+ command: "CONFIG set #{key} #{value}"
47
+ }
48
+ )
49
+ end
50
+
51
+ def print_output
52
+ ui.error(@response["error"]) and return unless @response.success?
53
+
54
+ ui.success("#{key} config for #{addon_name} set to #{value}")
55
+ end
48
56
  end
49
57
  end
50
58
  end
@@ -34,6 +34,13 @@ module NeetoDeploy
34
34
  def info(statement)
35
35
  shell.say(statement)
36
36
  end
37
+
38
+ def execute_with_loading(msg)
39
+ @spinner = TTY::Spinner.new("[:spinner] #{msg}", format: :classic)
40
+ @spinner.auto_spin
41
+ yield
42
+ @spinner.stop
43
+ end
37
44
  end
38
45
  end
39
46
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "thor"
4
+ require 'tty-spinner'
4
5
 
5
6
  # TODO: make this like neetob
6
7
 
@@ -12,6 +13,9 @@ module NeetoDeploy
12
13
  require_relative "cli/logs/base"
13
14
  require_relative "cli/env/commands"
14
15
  require_relative "cli/redis/commands"
16
+ require_relative "cli/pg/commands"
17
+ require_relative "cli/addon/commands"
18
+ require_relative "cli/autoscaling_config/commands"
15
19
 
16
20
  def self.start(*)
17
21
  super
@@ -40,5 +44,14 @@ module NeetoDeploy
40
44
 
41
45
  desc "redis", "Manage redis addons"
42
46
  subcommand "redis", Redis::Commands
47
+
48
+ desc "pg", "Manage postgresql addons"
49
+ subcommand "pg", Pg::Commands
50
+
51
+ desc "addon", "Manage addons"
52
+ subcommand "addon", Addon::Commands
53
+
54
+ desc "autoscaling_config", "Manage autoscaling"
55
+ subcommand "autoscaling_config", AutoscalingConfig::Commands
43
56
  end
44
57
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module NeetoDeploy
4
- VERSION = "1.1.4"
4
+ VERSION = "1.1.6"
5
5
  CLI_API_VERSION = "v1"
6
6
  end
data/neetodeploy.gemspec CHANGED
@@ -37,6 +37,7 @@ Gem::Specification.new do |spec|
37
37
  spec.add_dependency "thor", "~> 1.3.0" # for cli
38
38
  spec.add_dependency "websocket-client-simple"
39
39
  spec.add_dependency "colorize"
40
+ spec.add_dependency "tty-spinner"
40
41
 
41
42
  # To add the files from submodules
42
43
  `git submodule --quiet foreach pwd`.split($\).each do |submodule_path|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: neetodeploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.4
4
+ version: 1.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Subin Siby
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-04-16 00:00:00.000000000 Z
11
+ date: 2024-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dotenv
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: tty-spinner
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
111
125
  description: Manage neetoDeploy apps with CLI
112
126
  email:
113
127
  - subin.siby@bigbinary.com
@@ -122,7 +136,14 @@ files:
122
136
  - exe/neetodeploy
123
137
  - lib/neeto_deploy.rb
124
138
  - lib/neeto_deploy/cli.rb
139
+ - lib/neeto_deploy/cli/addon/commands.rb
140
+ - lib/neeto_deploy/cli/addon/constants.rb
141
+ - lib/neeto_deploy/cli/addon/info.rb
142
+ - lib/neeto_deploy/cli/addon/scheduled_exports_settings.rb
143
+ - lib/neeto_deploy/cli/autoscaling_config/commands.rb
144
+ - lib/neeto_deploy/cli/autoscaling_config/list.rb
125
145
  - lib/neeto_deploy/cli/base.rb
146
+ - lib/neeto_deploy/cli/dyno_console_manager.rb
126
147
  - lib/neeto_deploy/cli/env/commands.rb
127
148
  - lib/neeto_deploy/cli/env/constants.rb
128
149
  - lib/neeto_deploy/cli/env/list.rb
@@ -134,9 +155,13 @@ files:
134
155
  - lib/neeto_deploy/cli/login/constants.rb
135
156
  - lib/neeto_deploy/cli/logs/base.rb
136
157
  - lib/neeto_deploy/cli/logs/constants.rb
158
+ - lib/neeto_deploy/cli/pg/commands.rb
159
+ - lib/neeto_deploy/cli/pg/console.rb
160
+ - lib/neeto_deploy/cli/pg/constants.rb
137
161
  - lib/neeto_deploy/cli/redis/commands.rb
138
162
  - lib/neeto_deploy/cli/redis/constants.rb
139
163
  - lib/neeto_deploy/cli/redis/get.rb
164
+ - lib/neeto_deploy/cli/redis/reset_stats.rb
140
165
  - lib/neeto_deploy/cli/redis/set.rb
141
166
  - lib/neeto_deploy/cli/session.rb
142
167
  - lib/neeto_deploy/cli/ui.rb