harbr 0.0.29 → 0.0.32

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 05f9f6f2cfa6a6e47b98bf065594b68346c8348b8ec770265cd0f4e4c0f143c4
4
- data.tar.gz: 9c0196f50e7c60f93dc0666511dc80243949408a5f8247f09daf162f9941edd2
3
+ metadata.gz: aa8e693bce29b6b9d7d8140321e675ff673db168804972ed2e0e81d9b6840254
4
+ data.tar.gz: 3392caeb344b34ffc0c068918a406c93feb7e8f2a7abf48cce9368d07ce73386
5
5
  SHA512:
6
- metadata.gz: b0f056c312eee44919da4409680f25c28933892d09a44f83c563c7566480a54917d43f330246196112f9c50f884d823a7bcf80281c3e1b87c00b32e6a1604b5a
7
- data.tar.gz: 7f50616e3a8134dbacef6ecbdbc8d5376961bf088a18fc00cd7497d7f6ffe6ed9bfcb294e7b26966e71cf03b237170fc293f606fe31e959c40204b891870c7f0
6
+ metadata.gz: f44d0dd7e4941374ad502a3bd46ff2926540df7eee8e5e60f388d626c71fc498097177c5978b4cea1cccf4db607796b146e51006a9498f90e3c2d40347bec6ce
7
+ data.tar.gz: 97745289088960ae6ff286ab2bb7b77d0d2ad3bb1e624f67568d3c4dfc8d4f8a3cdfa65305b4c577879efc1cf47c6dce9a2dc1407b73787a2f3a078681276ab2
data/exe/harbr CHANGED
@@ -1,13 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
- require "thor"
3
- require "dddr"
4
- require "harbr"
5
- require "sucker_punch"
6
- require "terminal-table"
7
- require "yaml"
8
- require "toml-rb"
9
- require "fileutils"
10
- require "ostruct"
2
+ require_relative "../lib/harbr"
11
3
 
12
4
  class HarbrCLI < Thor
13
5
  DEFAULT_DIRECTORY = "/var/harbr"
@@ -7,5 +7,10 @@ module Harbr
7
7
  all.find { |container| container.host_header.downcase == host_header.downcase }
8
8
  end
9
9
  end
10
+
11
+ def number
12
+ port
13
+ end
14
+
10
15
  end
11
16
  end
data/lib/harbr/job.rb CHANGED
@@ -1,123 +1,121 @@
1
1
  module Harbr
2
- module Harbr
3
- class Container
4
- class Job
5
- include SuckerPunch::Job
6
- def create_traefik_config(containers)
7
- config = {
8
- "http" => {
9
- "routers" => {
10
- "traefik-dashboard" => {
11
- "rule" => "Host(`traefik.harbr.zero2one.ee`)",
12
- "service" => "api@internal"
13
- }
14
- },
15
- "services" => {}
16
- }
2
+ class Container
3
+ class Job
4
+ include SuckerPunch::Job
5
+ def create_traefik_config(containers)
6
+ config = {
7
+ "http" => {
8
+ "routers" => {
9
+ "traefik-dashboard" => {
10
+ "rule" => "Host(`traefik.harbr.zero2one.ee`)",
11
+ "service" => "api@internal"
12
+ }
13
+ },
14
+ "services" => {}
17
15
  }
16
+ }
18
17
 
19
- containers.each do |container|
20
- container.ip = "127.0.0.1"
18
+ containers.each do |container|
19
+ container.ip = "127.0.0.1"
21
20
 
22
- config["http"]["routers"]["#{container.name}-router"] = {
23
- "rule" => "Host(`#{container.host_header}`)",
24
- "service" => "#{container.name}-service"
25
- }
26
- config["http"]["services"]["#{container.name}-service"] = {
27
- "loadBalancer" => {
28
- "servers" => [{"url" => "http://#{container.ip}:#{container.port}"}]
29
- }
21
+ config["http"]["routers"]["#{container.name}-router"] = {
22
+ "rule" => "Host(`#{container.host_header}`)",
23
+ "service" => "#{container.name}-service"
24
+ }
25
+ config["http"]["services"]["#{container.name}-service"] = {
26
+ "loadBalancer" => {
27
+ "servers" => [{"url" => "http://#{container.ip}:#{container.port}"}]
30
28
  }
31
- end
32
-
33
- File.write("/etc/traefik/harbr.toml", TomlRB.dump(config))
34
- puts "Traefik configuration written to /etc/traefik/harbr.toml"
29
+ }
35
30
  end
36
31
 
37
- def create_run_script(container_name, port)
38
- service_dir = "/etc/sv/harbr/#{container_name}"
39
- if File.directory?(service_dir)
40
- puts "Directory already exists: #{service_dir}"
41
- return
42
- end
43
-
44
- script_template = <<~SCRIPT
45
- #!/bin/sh
46
- exec 2>&1
47
- cd /var/harbr/#{container_name}/current
48
- exec bundle install && bundle exec puma -p #{port}
49
- SCRIPT
50
-
51
- service_dir = "/etc/sv/harbr/#{container_name}"
52
- FileUtils.mkdir_p(service_dir)
53
-
54
- File.write("#{service_dir}/run", script_template)
55
- FileUtils.chmod("+x", "#{service_dir}/run")
56
- puts "Run script created and made executable for container: #{container_name}"
57
- end
32
+ File.write("/etc/traefik/harbr.toml", TomlRB.dump(config))
33
+ puts "Traefik configuration written to /etc/traefik/harbr.toml"
34
+ end
58
35
 
59
- def create_log_script(container_name)
60
- log_dir = "/var/log/harbr/#{container_name}"
36
+ def create_run_script(container_name, port)
37
+ service_dir = "/etc/sv/harbr/#{container_name}"
38
+ if File.directory?(service_dir)
39
+ puts "Directory already exists: #{service_dir}"
40
+ return
41
+ end
61
42
 
62
- if File.directory?(log_dir)
63
- puts "Directory already exists: #{log_dir}"
64
- return
65
- end
43
+ script_template = <<~SCRIPT
44
+ #!/bin/sh
45
+ exec 2>&1
46
+ cd /var/harbr/#{container_name}/current
47
+ exec bundle install && bundle exec puma -p #{port}
48
+ SCRIPT
66
49
 
67
- FileUtils.mkdir_p(log_dir)
50
+ service_dir = "/etc/sv/harbr/#{container_name}"
51
+ FileUtils.mkdir_p(service_dir)
68
52
 
69
- script_template = <<~SCRIPT
70
- #!/bin/sh
71
- exec svlogd -tt #{log_dir}/
72
- SCRIPT
53
+ File.write("#{service_dir}/run", script_template)
54
+ FileUtils.chmod("+x", "#{service_dir}/run")
55
+ puts "Run script created and made executable for container: #{container_name}"
56
+ end
73
57
 
74
- dir_path = "/etc/sv/harbr/#{container_name}/log"
75
- FileUtils.mkdir_p(dir_path)
58
+ def create_log_script(container_name)
59
+ log_dir = "/var/log/harbr/#{container_name}"
76
60
 
77
- File.write("#{dir_path}/run", script_template)
78
- FileUtils.chmod("+x", "#{dir_path}/run")
79
- puts "Log script created and made executable for container: #{container_name}"
61
+ if File.directory?(log_dir)
62
+ puts "Directory already exists: #{log_dir}"
63
+ return
80
64
  end
81
65
 
82
- def create_a_service(container_name, port)
83
- create_run_script(container_name, port)
84
- create_log_script(container_name)
85
- system("ln -s /etc/sv/harbr/#{container_name} /etc/service/#{container_name}") unless File.exist?("/etc/service/#{container_name}")
86
- end
66
+ FileUtils.mkdir_p(log_dir)
87
67
 
88
- def run_container(manifest)
89
- puts "Starting container: #{manifest.name}"
68
+ script_template = <<~SCRIPT
69
+ #!/bin/sh
70
+ exec svlogd -tt #{log_dir}/
71
+ SCRIPT
90
72
 
91
- Dddr.configure do |config|
92
- config.data_dir = Harbr::DEFAULT_DIRECTORY_DATA_DIR
93
- end
73
+ dir_path = "/etc/sv/harbr/#{container_name}/log"
74
+ FileUtils.mkdir_p(dir_path)
94
75
 
95
- pool = Harbr::Port::Pool.new
96
- port = pool.get_port(manifest.host)
76
+ File.write("#{dir_path}/run", script_template)
77
+ FileUtils.chmod("+x", "#{dir_path}/run")
78
+ puts "Log script created and made executable for container: #{container_name}"
79
+ end
97
80
 
98
- create_a_service(manifest.name, port.number)
81
+ def create_a_service(container_name, port)
82
+ create_run_script(container_name, port)
83
+ create_log_script(container_name)
84
+ system("ln -s /etc/sv/harbr/#{container_name} /etc/service/#{container_name}") unless File.exist?("/etc/service/#{container_name}")
85
+ end
99
86
 
100
- sleep 5
101
- system("sv restart #{manifest.name}")
102
- sleep 5
103
- system("sv status #{manifest.name}")
104
- puts "Started container: #{manifest.name}"
87
+ def run_container(manifest)
88
+ puts "Starting container: #{manifest.name}"
105
89
 
106
- container = Container.new
107
- containers = Container::Repository.new
90
+ Dddr.configure do |config|
91
+ config.data_dir = Harbr::DEFAULT_DIRECTORY_DATA_DIR
92
+ end
108
93
 
109
- container.name = manifest.name
110
- container.host_header = manifest.host
111
- container.ip = manifest.ip.nil?
112
- container.port = port.number
113
- containers.add(container) unless containers.find_by_header(manifest.host)
94
+ pool = Harbr::Port::Pool.new
95
+ port = pool.get_port(manifest.host)
114
96
 
115
- create_traefik_config(containers.all)
116
- end
97
+ create_a_service(manifest.name, port.number)
117
98
 
118
- def perform(manifest)
119
- run_container(manifest)
120
- end
99
+ sleep 5
100
+ system("sv restart #{manifest.name}")
101
+ sleep 5
102
+ system("sv status #{manifest.name}")
103
+ puts "Started container: #{manifest.name}"
104
+
105
+ container = Container.new
106
+ containers = Container::Repository.new
107
+
108
+ container.name = manifest.name
109
+ container.host_header = manifest.host
110
+ container.ip = manifest.ip.nil?
111
+ container.port = port.number
112
+ containers.add(container) unless containers.find_by_header(manifest.host)
113
+
114
+ create_traefik_config(containers.all)
115
+ end
116
+
117
+ def perform(manifest)
118
+ run_container(manifest)
121
119
  end
122
120
  end
123
121
  end
data/lib/harbr/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Harbr
4
- VERSION = "0.0.29"
4
+ VERSION = "0.0.32"
5
5
  end
data/lib/harbr.rb CHANGED
@@ -1,5 +1,12 @@
1
- require "sucker_punch"
1
+ require "thor"
2
+ require "dddr"
3
+ require "harbr"
4
+ require "terminal-table"
5
+ require "yaml"
2
6
  require "toml-rb"
7
+ require "fileutils"
8
+ require "ostruct"
9
+ require "sucker_punch"
3
10
 
4
11
  require_relative "harbr/version"
5
12
  require_relative "harbr/container"
@@ -17,4 +24,4 @@ module Harbr
17
24
  end
18
25
 
19
26
  class Error < StandardError; end
20
- end
27
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: harbr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.29
4
+ version: 0.0.32
5
5
  platform: ruby
6
6
  authors:
7
7
  - Delaney Kuldvee Burke