neptuno 1.0.10 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +6 -5
- data/Rakefile +6 -6
- data/exe/neptuno +1 -1
- data/lib/neptuno/cli/activate.rb +19 -19
- data/lib/neptuno/cli/base.rb +4 -4
- data/lib/neptuno/cli/clone.rb +8 -2
- data/lib/neptuno/cli/configure.rb +3 -3
- data/lib/neptuno/cli/execute.rb +4 -4
- data/lib/neptuno/cli/init.rb +5 -5
- data/lib/neptuno/cli/install.rb +15 -17
- data/lib/neptuno/cli/list.rb +21 -31
- data/lib/neptuno/cli/version.rb +1 -1
- data/lib/neptuno/cli.rb +28 -28
- data/lib/neptuno/docker/attach.rb +2 -2
- data/lib/neptuno/docker/build.rb +5 -5
- data/lib/neptuno/docker/down.rb +18 -9
- data/lib/neptuno/docker/log.rb +1 -1
- data/lib/neptuno/docker/restart.rb +8 -8
- data/lib/neptuno/docker/services.rb +2 -2
- data/lib/neptuno/docker/up.rb +6 -11
- data/lib/neptuno/environment/config.rb +3 -3
- data/lib/neptuno/environment/update.rb +1 -1
- data/lib/neptuno/git/pull.rb +2 -2
- data/lib/neptuno/git/stash.rb +2 -2
- data/lib/neptuno/k8s/attach.rb +6 -6
- data/lib/neptuno/overmind/connect.rb +20 -71
- data/lib/neptuno/overmind/start.rb +22 -56
- data/lib/neptuno/overmind/stop.rb +12 -6
- data/lib/neptuno/services/add.rb +9 -15
- data/lib/neptuno/services/destroy.rb +1 -1
- data/lib/neptuno/services/list.rb +3 -2
- data/lib/neptuno/services/update.rb +8 -8
- data/lib/neptuno/templates/{tmuxinator.yml → .tmuxinator.yml} +2 -4
- data/lib/neptuno/templates/docker-compose.yml +18 -7
- data/lib/neptuno/templates/neptuno.yml +6 -0
- data/lib/neptuno/tty/config.rb +44 -10
- data/lib/neptuno/tty/file.rb +6 -6
- data/lib/neptuno/version.rb +1 -1
- data/lib/neptuno.rb +11 -11
- data/neptuno.gemspec +26 -26
- metadata +16 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ef3b2c4cec926bee8940257c245948e7b52a7e69
|
4
|
+
data.tar.gz: f6c1a91eb8f8a95ba782a6827c692a4de125ba2e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 386cb5eec9ce1b87aebc94186833740c3ca44d676c62d736f576bf4dc6644a6178a83555cb9161d865ce2f3aed2e131a11c1035e6f6f3fd11899223d28e24251
|
7
|
+
data.tar.gz: 1158f4fc99af42bd9497887ef2511f2630c6ea639d3009f6562358148768e410bcc93a60b521f914c5cc219b02dc58f5eeffd5f85c7df0374ece27452569d254
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
neptuno (1.0
|
4
|
+
neptuno (1.2.0)
|
5
5
|
dotiw
|
6
6
|
dry-cli
|
7
7
|
hirb
|
@@ -17,7 +17,7 @@ PATH
|
|
17
17
|
GEM
|
18
18
|
remote: https://rubygems.org/
|
19
19
|
specs:
|
20
|
-
activesupport (7.0.4)
|
20
|
+
activesupport (7.0.4.2)
|
21
21
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
22
22
|
i18n (>= 1.6, < 2)
|
23
23
|
minitest (>= 5.1)
|
@@ -25,7 +25,7 @@ GEM
|
|
25
25
|
ansi (1.5.0)
|
26
26
|
ast (2.4.2)
|
27
27
|
builder (3.2.4)
|
28
|
-
concurrent-ruby (1.
|
28
|
+
concurrent-ruby (1.2.0)
|
29
29
|
diff-lcs (1.5.0)
|
30
30
|
dotiw (5.3.3)
|
31
31
|
activesupport
|
@@ -90,14 +90,15 @@ GEM
|
|
90
90
|
tty-spinner (0.9.3)
|
91
91
|
tty-cursor (~> 0.7)
|
92
92
|
tty-which (0.5.0)
|
93
|
-
tzinfo (2.0.
|
93
|
+
tzinfo (2.0.6)
|
94
94
|
concurrent-ruby (~> 1.0)
|
95
95
|
unicode-display_width (2.3.0)
|
96
96
|
wisper (2.0.1)
|
97
|
-
zeitwerk (2.6.
|
97
|
+
zeitwerk (2.6.7)
|
98
98
|
|
99
99
|
PLATFORMS
|
100
100
|
x86_64-darwin-21
|
101
|
+
x86_64-darwin-22
|
101
102
|
x86_64-linux
|
102
103
|
|
103
104
|
DEPENDENCIES
|
data/Rakefile
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
3
|
+
require "bundler/gem_tasks"
|
4
|
+
require "rake/testtask"
|
5
|
+
require "standard/rake"
|
6
6
|
|
7
7
|
Rake::TestTask.new(:test) do |t|
|
8
|
-
t.libs <<
|
9
|
-
t.libs <<
|
10
|
-
t.test_files = FileList[
|
8
|
+
t.libs << "test"
|
9
|
+
t.libs << "lib"
|
10
|
+
t.test_files = FileList["test/**/*_test.rb"]
|
11
11
|
end
|
12
12
|
|
13
13
|
task default: %i[test standard:fix]
|
data/exe/neptuno
CHANGED
data/lib/neptuno/cli/activate.rb
CHANGED
@@ -5,34 +5,34 @@ module Neptuno
|
|
5
5
|
# Init Neptuno files
|
6
6
|
class Activate < Neptuno::CLI::Base
|
7
7
|
include ::Neptuno::TTY::Config
|
8
|
-
desc
|
8
|
+
desc "Bring services containers up and start their processes"
|
9
9
|
|
10
|
-
option :force, type: :boolean, default: false, desc:
|
11
|
-
option :all, type: :boolean, default: false, desc:
|
12
|
-
argument :services, type: :array, required: false, desc:
|
10
|
+
option :force, type: :boolean, default: false, desc: "Try to start disrigarding container status"
|
11
|
+
option :all, type: :boolean, default: false, desc: "Run on all services"
|
12
|
+
argument :services, type: :array, required: false, desc: "Optional list of services"
|
13
13
|
|
14
14
|
def call(services: [], **options)
|
15
|
-
multi_spinner = ::TTY::Spinner::Multi.new(
|
15
|
+
multi_spinner = ::TTY::Spinner::Multi.new("[:spinner] Services")
|
16
16
|
spinners = {}
|
17
17
|
count = 0
|
18
|
-
command_services_to(
|
19
|
-
system("cd #{neptuno_path} && docker compose up -d #{services.join(
|
18
|
+
command_services_to("activate to services", all: options.fetch(:all), services_as_args: services) do |services|
|
19
|
+
system("cd #{neptuno_path} && docker compose up -d #{services.join(" ")}")
|
20
20
|
running_services = ::Neptuno::CLI::List.new.running_services.first.keys
|
21
21
|
running_services.sort.each do |service|
|
22
22
|
spinners[service] ||= multi_spinner.register("[:spinner] :state #{service}")
|
23
|
-
spinners[service].update(state:
|
23
|
+
spinners[service].update(state: "- ")
|
24
24
|
spinners[service].auto_spin
|
25
25
|
end
|
26
26
|
loop do
|
27
27
|
ps = `cd #{neptuno_path} && docker compose ps`.split("\n").compact.select { |x| x.match(/^\s*#{project}/) }
|
28
28
|
|
29
29
|
running_services.sort.each do |service|
|
30
|
-
service_ps = ps.find {|s| s =~ /#{project}[-_]#{service}[-_]\d\s/ }
|
30
|
+
service_ps = ps.find { |s| s =~ /#{project}[-_]#{service}[-_]\d\s/ }
|
31
31
|
|
32
|
-
status = :dead if service_ps.to_s.include?(
|
33
|
-
status = :starting if service_ps.to_s.include?(
|
34
|
-
status = :unhealthy if service_ps.to_s.include?(
|
35
|
-
status = :healthy if service_ps.to_s.include?(
|
32
|
+
status = :dead if service_ps.to_s.include?("exited")
|
33
|
+
status = :starting if service_ps.to_s.include?("starting")
|
34
|
+
status = :unhealthy if service_ps.to_s.include?("(unhealthy")
|
35
|
+
status = :healthy if service_ps.to_s.include?("(healthy")
|
36
36
|
status = :force if options.fetch(:force)
|
37
37
|
|
38
38
|
case status
|
@@ -40,19 +40,19 @@ module Neptuno
|
|
40
40
|
spinners[service].success
|
41
41
|
`cd #{neptuno_path}/procfiles/#{service} && overmind start -D -N > /dev/null 2>&1`
|
42
42
|
when :dead
|
43
|
-
spinners[service].update(state:
|
43
|
+
spinners[service].update(state: "dead ")
|
44
44
|
spinners[service].error
|
45
45
|
when :starting
|
46
|
-
spinners[service].update(state:
|
46
|
+
spinners[service].update(state: "starting ")
|
47
47
|
when :unhealthy
|
48
|
-
spinners[service].update(state:
|
48
|
+
spinners[service].update(state: "unhealthy ")
|
49
49
|
spinners[service].error if spinners[service].instance_variable_get(:@state) == :spinning && count > 50
|
50
50
|
when :healthy
|
51
|
-
spinners[service].update(state:
|
51
|
+
spinners[service].update(state: "ready ")
|
52
52
|
spinners[service].success
|
53
53
|
`cd #{neptuno_path}/procfiles/#{service} && overmind start -D -N > /dev/null 2>&1`
|
54
54
|
else
|
55
|
-
spinners[service].update(state:
|
55
|
+
spinners[service].update(state: "down ")
|
56
56
|
spinners[service].error
|
57
57
|
end
|
58
58
|
end
|
@@ -61,7 +61,7 @@ module Neptuno
|
|
61
61
|
count += 1
|
62
62
|
sleep(5)
|
63
63
|
end
|
64
|
-
spinner = ::TTY::Spinner.new(
|
64
|
+
spinner = ::TTY::Spinner.new("Neptuno: Starting[:spinner]", format: :dots)
|
65
65
|
spinner.auto_spin
|
66
66
|
|
67
67
|
spinner.stop
|
data/lib/neptuno/cli/base.rb
CHANGED
@@ -12,13 +12,13 @@ module Neptuno
|
|
12
12
|
ABORT_MESSAGE = "fatal: not a Neptuno repository (or any of the parent directories)"
|
13
13
|
|
14
14
|
def initialize
|
15
|
-
abort ABORT_MESSAGE if neptuno_path == ""
|
15
|
+
abort ABORT_MESSAGE if neptuno_path == ""
|
16
16
|
config.append_path(neptuno_path)
|
17
17
|
config.read
|
18
18
|
end
|
19
19
|
|
20
20
|
def command_service_to(request, service_as_args: "")
|
21
|
-
chosen_service ||= service_as_args
|
21
|
+
chosen_service ||= service_as_args.to_a.empty? ? nil : service_as_args
|
22
22
|
chosen_service ||= service if in_service?
|
23
23
|
chosen_service ||= prompt.select("Command service to #{request}:", services)
|
24
24
|
yield chosen_service, project
|
@@ -26,9 +26,9 @@ module Neptuno
|
|
26
26
|
|
27
27
|
def command_services_to(request, all: nil, services_as_args: [])
|
28
28
|
chosen_services = services if all
|
29
|
-
chosen_services ||= services_as_args
|
29
|
+
chosen_services ||= services_as_args.to_a.empty? ? nil : services_as_args
|
30
30
|
chosen_services ||= [service] if in_service?
|
31
|
-
chosen_services ||= configured_services.empty? ? nil : configured_services
|
31
|
+
chosen_services ||= configured_services.to_a.empty? ? nil : configured_services
|
32
32
|
chosen_services ||= prompt.multi_select("Command services to #{request}:", services)
|
33
33
|
yield chosen_services, project
|
34
34
|
end
|
data/lib/neptuno/cli/clone.rb
CHANGED
@@ -5,13 +5,19 @@ module Neptuno
|
|
5
5
|
# Init Neptuno files
|
6
6
|
|
7
7
|
class Clone < Dry::CLI::Command
|
8
|
-
desc
|
8
|
+
desc "Clone a neptuno compliant project"
|
9
|
+
option :provision, type: :boolean, default: false, desc: "Build docker images, start containers and run procs"
|
10
|
+
|
9
11
|
def call(**options)
|
10
12
|
git_url = options[:args].first
|
11
13
|
args_path = options[:args].second
|
12
|
-
path = args_path || git_url.split(
|
14
|
+
path = args_path || git_url.split("/").last.split(".").first
|
13
15
|
`git clone --recurse-submodules #{git_url} #{path}`
|
16
|
+
|
14
17
|
sleep(1)
|
18
|
+
|
19
|
+
return unless options.fetch(:provision)
|
20
|
+
|
15
21
|
`cd #{path} && neptuno services update -am`
|
16
22
|
puts "Building Docker images"
|
17
23
|
`cd #{path} && neptuno build -a`
|
@@ -4,11 +4,11 @@ module Neptuno
|
|
4
4
|
module CLI
|
5
5
|
# Configure Neptuno defaults
|
6
6
|
class Configure < Neptuno::CLI::Base
|
7
|
-
desc
|
7
|
+
desc "Configure which services to start by default"
|
8
8
|
|
9
9
|
def call(**)
|
10
|
-
configured_services = config.fetch(
|
11
|
-
configured_services = prompt.multi_select(
|
10
|
+
configured_services = config.fetch("configured_services")
|
11
|
+
configured_services = prompt.multi_select("Active services: ", config.fetch("services")) do |menu|
|
12
12
|
menu.default(*configured_services)
|
13
13
|
end
|
14
14
|
config.set(:configured_services, value: configured_services)
|
data/lib/neptuno/cli/execute.rb
CHANGED
@@ -7,17 +7,17 @@ module Neptuno
|
|
7
7
|
include TTY::File
|
8
8
|
include TTY::Config
|
9
9
|
|
10
|
-
desc
|
10
|
+
desc "Execute service script"
|
11
11
|
|
12
12
|
def call(**options)
|
13
|
-
command_service_to(
|
14
|
-
commands = Dir.glob("#{neptuno_path}/scripts/#{service}/*").map { |x| x.split(
|
13
|
+
command_service_to("execute", service_as_args: options[:args]&.first) do |service, _project|
|
14
|
+
commands = Dir.glob("#{neptuno_path}/scripts/#{service}/*").map { |x| x.split("/") }.map(&:last)
|
15
15
|
command = options[:args].last if commands.include?(options[:args]&.last)
|
16
16
|
puts "#{neptuno_path}/scripts/#{service}/*"
|
17
17
|
puts service
|
18
18
|
puts commands.to_s
|
19
19
|
puts Dir.glob("#{neptuno_path}/scripts/#{service}/*").to_s
|
20
|
-
command ||= prompt.select(
|
20
|
+
command ||= prompt.select("execute", commands || [])
|
21
21
|
`cd #{neptuno_path}/scripts/#{service} && ./#{command}`
|
22
22
|
end
|
23
23
|
end
|
data/lib/neptuno/cli/init.rb
CHANGED
@@ -8,19 +8,19 @@ module Neptuno
|
|
8
8
|
include TTY::Config
|
9
9
|
include TTY::Which
|
10
10
|
|
11
|
-
desc
|
11
|
+
desc "Initializes a Neptuno project folder structure"
|
12
12
|
|
13
|
-
WORK_TREE = {
|
13
|
+
WORK_TREE = {"." => [{"services" => [], "dockerfiles" => [], "procfiles" => [], "environments" => []}]}.freeze
|
14
14
|
|
15
15
|
CONFIG = nil
|
16
16
|
|
17
17
|
def call(**)
|
18
|
-
abort
|
18
|
+
abort "Neptuno projects can not be nested." if neptuno_path != ""
|
19
19
|
::TTY::File.create_dir(WORK_TREE, Dir.pwd)
|
20
|
-
config.set(:configured_services, value:
|
20
|
+
config.set(:configured_services, value: "")
|
21
21
|
config.set(:services, value: [])
|
22
22
|
config.write(create: true, force: true)
|
23
|
-
`cp #{File.expand_path("../../templates",
|
23
|
+
`cp -r #{File.expand_path("../../templates", __dir__)}/* ./`
|
24
24
|
end
|
25
25
|
end
|
26
26
|
end
|
data/lib/neptuno/cli/install.rb
CHANGED
@@ -10,20 +10,20 @@ module Neptuno
|
|
10
10
|
include TTY::Config
|
11
11
|
include TTY::Which
|
12
12
|
|
13
|
-
desc
|
13
|
+
desc "Installs git, docker, tmux, tmuxinator and overmind"
|
14
14
|
|
15
15
|
CONFIG = nil
|
16
16
|
|
17
17
|
def call(**)
|
18
|
-
install
|
19
|
-
install
|
20
|
-
install
|
21
|
-
install
|
22
|
-
install
|
18
|
+
install "git"
|
19
|
+
install "docker"
|
20
|
+
install "tmux"
|
21
|
+
install "overmind"
|
22
|
+
install "tmuxinator"
|
23
23
|
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
return unless system("apt-get -v")
|
25
|
+
|
26
|
+
system("sudo apt-get update")
|
27
27
|
end
|
28
28
|
|
29
29
|
def install(package)
|
@@ -31,16 +31,14 @@ module Neptuno
|
|
31
31
|
puts "#{package} is already installed"
|
32
32
|
else
|
33
33
|
puts "Installing #{package}"
|
34
|
-
if
|
34
|
+
if system("brew -v")
|
35
35
|
system("brew install #{package}")
|
36
|
+
elsif package == "overmind"
|
37
|
+
system("go install github.com/DarthSim/overmind/v2@latest")
|
38
|
+
elsif package == "tmuxinator"
|
39
|
+
system("gem install tmuxinator")
|
36
40
|
else
|
37
|
-
|
38
|
-
system("go install github.com/DarthSim/overmind/v2@latest")
|
39
|
-
elsif(package == 'tmuxinator')
|
40
|
-
system("gem install tmuxinator")
|
41
|
-
else
|
42
|
-
system("sudo apt-get install #{package} -y")
|
43
|
-
end
|
41
|
+
system("sudo apt-get install #{package} -y")
|
44
42
|
end
|
45
43
|
end
|
46
44
|
end
|
data/lib/neptuno/cli/list.rb
CHANGED
@@ -9,29 +9,24 @@ module Neptuno
|
|
9
9
|
include TTY::Config
|
10
10
|
include DOTIW::Methods
|
11
11
|
|
12
|
-
desc
|
13
|
-
option :relative, aliases: [
|
14
|
-
|
12
|
+
desc "List containers and their processes"
|
13
|
+
option :relative, aliases: ["r"], type: :boolean, default: true,
|
14
|
+
desc: "Use relative time in 'last commit date' field"
|
15
15
|
|
16
16
|
STATE_ORDER = %w[on dead off].freeze
|
17
17
|
|
18
|
-
def
|
19
|
-
proc_files = Dir.glob(
|
20
|
-
|
21
|
-
[f.split("
|
22
|
-
|
23
|
-
end]
|
24
|
-
end.to_h
|
18
|
+
def services_and_procs
|
19
|
+
proc_files = Dir.glob("procfiles/**/Procfile", base: neptuno_path)
|
20
|
+
sap = proc_files.map do |f|
|
21
|
+
[f.split("/")[1], File.read("#{neptuno_path}/#{f}").split("\n").map do |s|
|
22
|
+
next if /^\w*#/.match?(s)
|
25
23
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
rescue RuntimeError
|
30
|
-
exit
|
31
|
-
end
|
32
|
-
docker_procs = docker_containers.map { |service| service.split(/\s\s+/).slice(2, 2) }.to_h
|
24
|
+
s.split(":").first
|
25
|
+
end.compact]
|
26
|
+
end.to_h
|
33
27
|
|
34
|
-
[
|
28
|
+
services.each { |s| sap[s] ||= [] }
|
29
|
+
sap
|
35
30
|
end
|
36
31
|
|
37
32
|
def service_current_branches
|
@@ -49,30 +44,25 @@ module Neptuno
|
|
49
44
|
end
|
50
45
|
|
51
46
|
def get_display_date(date, relative)
|
52
|
-
|
53
|
-
|
47
|
+
return unless date
|
48
|
+
return date unless relative
|
54
49
|
|
55
|
-
|
56
|
-
end
|
50
|
+
distance_of_time_in_words(Time.now, Time.parse(date), false, highest_measures: 1).concat(" ago")
|
57
51
|
end
|
58
52
|
|
59
53
|
def call(**options)
|
60
|
-
|
54
|
+
jss = json_services_status.to_h
|
61
55
|
branches = service_current_branches
|
62
56
|
dates = last_commit_date
|
63
57
|
|
64
|
-
|
65
|
-
x.each{|y| neptuno_procs[y] = ""}
|
66
|
-
|
67
|
-
procs = neptuno_procs.map do |name, *processes|
|
58
|
+
procs = services_and_procs.map do |name, *processes|
|
68
59
|
display_date = get_display_date(dates[name], options.fetch(:relative))
|
69
|
-
state =
|
70
|
-
state
|
71
|
-
{ state: state, name: name, branch: branches[name], last_commit: display_date, processes: processes }
|
60
|
+
state = jss.to_h[name] || "Off"
|
61
|
+
{state: state, name: name, branch: branches[name], last_commit: display_date, processes: processes}
|
72
62
|
end
|
73
63
|
|
74
64
|
puts Hirb::Helpers::AutoTable.render(procs.sort do |a, b|
|
75
|
-
[
|
65
|
+
a[:state].split(" ").first <=> b[:state].split(" ").first
|
76
66
|
end.reverse, fields: %i[state name branch last_commit processes])
|
77
67
|
end
|
78
68
|
end
|
data/lib/neptuno/cli/version.rb
CHANGED
data/lib/neptuno/cli.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "dry/cli"
|
4
4
|
|
5
5
|
# Public: Command line interface that allows to install the library, and run
|
6
6
|
# simple commands.
|
@@ -8,32 +8,32 @@ module Neptuno
|
|
8
8
|
module CLI
|
9
9
|
extend Dry::CLI::Registry
|
10
10
|
|
11
|
-
register
|
12
|
-
register
|
13
|
-
register
|
14
|
-
register
|
15
|
-
register
|
16
|
-
register
|
17
|
-
register
|
18
|
-
register
|
19
|
-
register
|
20
|
-
register
|
21
|
-
register
|
22
|
-
register
|
23
|
-
register
|
24
|
-
register
|
25
|
-
register
|
26
|
-
register
|
27
|
-
register
|
28
|
-
register
|
29
|
-
register
|
30
|
-
register
|
31
|
-
register
|
32
|
-
register
|
33
|
-
register
|
34
|
-
register
|
35
|
-
register
|
36
|
-
register
|
37
|
-
register
|
11
|
+
register "version", Version, aliases: ["v", "-v", "--version", "info"]
|
12
|
+
register "init", Init
|
13
|
+
register "clone", Clone
|
14
|
+
register "ls", List, aliases: ["ps"]
|
15
|
+
register "activate", Activate, aliases: ["a"]
|
16
|
+
register "config", Configure, aliases: %w[configure conf cc]
|
17
|
+
register "execute", Execute, aliases: ["e"]
|
18
|
+
register "build", ::Neptuno::Docker::Build, aliases: ["b"]
|
19
|
+
register "up", Docker::Up, aliases: ["u"]
|
20
|
+
register "down", Docker::Down, aliases: ["d"]
|
21
|
+
register "restart", Docker::Restart, aliases: ["r"]
|
22
|
+
register "attach", Docker::Attach, aliases: ["at"]
|
23
|
+
register "k8s", K8s::Attach, aliases: ["k"]
|
24
|
+
register "log", Docker::Log, aliases: ["l"]
|
25
|
+
register "start", Overmind::Start, aliases: ["s"]
|
26
|
+
register "stop", Overmind::Stop, aliases: ["x"]
|
27
|
+
register "update", Services::Update, aliases: ["su"]
|
28
|
+
register "connect", Overmind::Connect, aliases: ["c"]
|
29
|
+
register "services list", Services::List, aliases: ["ls"]
|
30
|
+
register "services add", Services::Add
|
31
|
+
register "services destroy", Services::Destroy, aliases: ["rm"]
|
32
|
+
register "services update", Services::Update, aliases: ["su"]
|
33
|
+
register "git stash", ::Neptuno::Git::Stash
|
34
|
+
register "git pull", ::Neptuno::Git::Pull
|
35
|
+
register "install", ::Neptuno::CLI::Install
|
36
|
+
register "environment update", Environment::Update
|
37
|
+
register "environment config", Environment::Config
|
38
38
|
end
|
39
39
|
end
|
@@ -6,10 +6,10 @@ module Neptuno
|
|
6
6
|
include ::Neptuno::TTY::Config
|
7
7
|
desc "Docker: Attach to a container's command"
|
8
8
|
|
9
|
-
option :up, type: :boolean, default: false, desc:
|
9
|
+
option :up, type: :boolean, default: false, desc: "Try to start containers before connecting"
|
10
10
|
|
11
11
|
def call(**options)
|
12
|
-
command_service_to(
|
12
|
+
command_service_to("attach", service_as_args: options[:args].first) do |service, project|
|
13
13
|
system("cd #{neptuno_path} && docker compose up -d #{service}") if options.fetch(:up)
|
14
14
|
success = system("cd #{neptuno_path} && docker attach #{project}_#{service}_1")
|
15
15
|
unless success
|
data/lib/neptuno/docker/build.rb
CHANGED
@@ -4,15 +4,15 @@ module Neptuno
|
|
4
4
|
module Docker
|
5
5
|
# Build docker container for Neptuno project
|
6
6
|
class Build < Neptuno::CLI::Base
|
7
|
-
desc
|
7
|
+
desc "Docker: Build docker containers for project"
|
8
8
|
|
9
|
-
option :all, type: :boolean, default: false, desc:
|
10
|
-
argument :services, type: :array, required: false, desc:
|
9
|
+
option :all, type: :boolean, default: false, desc: "Run on all services"
|
10
|
+
argument :services, type: :array, required: false, desc: "Optional list of services"
|
11
11
|
|
12
12
|
def call(services: [], **options)
|
13
|
-
command_services_to(
|
13
|
+
command_services_to("build", all: options.fetch(:all), services_as_args: services) do |services|
|
14
14
|
make_service_files(services)
|
15
|
-
system("cd #{neptuno_path} && docker compose build #{services.join(
|
15
|
+
system("cd #{neptuno_path} && docker compose build #{services.join(" ")}")
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
data/lib/neptuno/docker/down.rb
CHANGED
@@ -4,19 +4,28 @@ module Neptuno
|
|
4
4
|
module Docker
|
5
5
|
# Stop docker containers for Neptuno project
|
6
6
|
class Down < Neptuno::CLI::Base
|
7
|
-
desc
|
7
|
+
desc "Docker: Stop docker containers for current project"
|
8
8
|
|
9
|
-
option :
|
10
|
-
|
11
|
-
argument :services, type: :array, required: false, desc: 'Optional list of services'
|
9
|
+
option :all, type: :boolean, default: false, desc: "Run on all services"
|
10
|
+
argument :services, type: :array, required: false, desc: "Optional list of services"
|
12
11
|
|
13
12
|
def call(services: [], **options)
|
14
|
-
command_services_to(
|
13
|
+
command_services_to("go down", all: options.fetch(:all), services_as_args: services) do |services|
|
15
14
|
make_service_files(services)
|
16
|
-
|
17
|
-
system("cd #{neptuno_path} && docker compose
|
18
|
-
system("cd #{neptuno_path} &&
|
19
|
-
|
15
|
+
services_to_stop = services.intersection(services_with_procs).intersection(running_services)
|
16
|
+
system("cd #{neptuno_path} && docker compose stop -t 0 #{services.join(" ")}")
|
17
|
+
system("cd #{neptuno_path} && docker compose rm -f #{services.join(" ")}")
|
18
|
+
if config.fetch("procfile_manager") == "tmux"
|
19
|
+
services_to_stop.each do |service|
|
20
|
+
system("tmux kill-session -t #{service} 2>/dev/null ")
|
21
|
+
puts "Neptuno killed Tmux session for: #{service}" if `echo $TMUX`.strip.empty?
|
22
|
+
end
|
23
|
+
else
|
24
|
+
system("cd #{neptuno_path} && tmux kill-session -t neptuno")
|
25
|
+
services_to_stop.each do
|
26
|
+
system("cd #{neptuno_path}/procfiles/#{service} && rm .overmind.sock > /dev/null 2>&1")
|
27
|
+
end
|
28
|
+
end
|
20
29
|
end
|
21
30
|
end
|
22
31
|
end
|
data/lib/neptuno/docker/log.rb
CHANGED
@@ -7,7 +7,7 @@ module Neptuno
|
|
7
7
|
desc "Docker: Show a container's log"
|
8
8
|
|
9
9
|
def call(**options)
|
10
|
-
command_service_to(
|
10
|
+
command_service_to("log", service_as_args: options[:args].first) do |service, project|
|
11
11
|
success = system("cd #{neptuno_path} && docker logs -f #{project}_#{service}_1")
|
12
12
|
unless success
|
13
13
|
puts "Trying #{project}-#{services.first}-1"
|
@@ -4,18 +4,18 @@ module Neptuno
|
|
4
4
|
module Docker
|
5
5
|
# Restart docker containers for Neptuno project
|
6
6
|
class Restart < Neptuno::CLI::Base
|
7
|
-
desc
|
7
|
+
desc "Docker: Rebuild and restart docker containers for current project"
|
8
8
|
|
9
|
-
option :all, type: :boolean, default: false, desc:
|
10
|
-
argument :services, type: :array, required: false, desc:
|
9
|
+
option :all, type: :boolean, default: false, desc: "Run on all services"
|
10
|
+
argument :services, type: :array, required: false, desc: "Optional list of services"
|
11
11
|
|
12
12
|
def call(services: [], **options)
|
13
|
-
command_services_to(
|
13
|
+
command_services_to("restart", all: options.fetch(:all), services_as_args: services) do |services|
|
14
14
|
make_service_files(services)
|
15
|
-
system("cd #{neptuno_path} && docker compose stop -t 0 #{services.join(
|
16
|
-
system("cd #{neptuno_path} && docker compose rm -f #{services.join(
|
17
|
-
system("cd #{neptuno_path} && docker compose build #{services.join(
|
18
|
-
system("cd #{neptuno_path} && docker compose up -d #{services.join(
|
15
|
+
system("cd #{neptuno_path} && docker compose stop -t 0 #{services.join(" ")}")
|
16
|
+
system("cd #{neptuno_path} && docker compose rm -f #{services.join(" ")}")
|
17
|
+
system("cd #{neptuno_path} && docker compose build #{services.join(" ")}")
|
18
|
+
system("cd #{neptuno_path} && docker compose up -d #{services.join(" ")}")
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|