neptuno 1.0.10 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|