harbr 0.0.14 → 0.0.16

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: bcfa6296481b2612e64935053040910f4f397b886900ddc4b636342cd0366f52
4
- data.tar.gz: 5c2f7fef9604ea35cf376802c105d07d7043d320b8a4ad807cf7839180e55af9
3
+ metadata.gz: 88c0dd3adce1ad345040506cca126a2e14e2d65a9453f82f15fe2e9d79ca2384
4
+ data.tar.gz: 181a68eb372c41f6d8f307534c2f69697e6d5be169833a3c81470b6fc40938e0
5
5
  SHA512:
6
- metadata.gz: a56eb60cb2fc3e4c488438effa5f39b0d6d09959a1692ffc3e1fdabb690c8a04b089aef86413ef7bcefea7b59aaf3ba5c54746eea912318ec568ad4d1fbb21e4
7
- data.tar.gz: 6cc63f70e2b345fe01db0860cfcc60bfd724090ca2d479a46f2cc69b3d6a7a0ac5e42fc18024ce90650a2de94988c4d82dd29c5ce1a6ef0f94f7a363bcbc3429
6
+ metadata.gz: ca6f1cb377f3d1169de9cb007b053e90e54f9278ee2e7bc71d7b106864081af78963cf57178b3d8401eadbe448368c9b6e19e2af5b83288ebfe0712a6610f62a
7
+ data.tar.gz: d68708150403d9eefb2f3178dbad09b2f66b6ff6d197826486f1def1853baf4162bc842b44a6947dcc51ab1d0417c755fd59309fff8ee70b4338907cd8d737bf
Binary file
Binary file
data/exe/harbr CHANGED
@@ -4,8 +4,8 @@ require "dddr"
4
4
  require "harbr"
5
5
  require "sucker_punch"
6
6
  require "terminal-table"
7
- require 'yaml'
8
- require 'ostruct'
7
+ require "yaml"
8
+ require "ostruct"
9
9
 
10
10
  class HarbrCLI < Thor
11
11
  DEFAULT_DIRECTORY = "/var/harbr"
@@ -75,7 +75,7 @@ class HarbrCLI < Thor
75
75
  end
76
76
  end
77
77
 
78
- PLACED_FILE = '/var/harbr/.placed'
78
+ PLACED_FILE = "/var/harbr/.placed"
79
79
 
80
80
  def place(container, version)
81
81
  placed_containers = File.exist?(PLACED_FILE) ? File.read(PLACED_FILE).split("\n") : []
@@ -85,16 +85,15 @@ class HarbrCLI < Thor
85
85
  else
86
86
  puts "Placing container: '#{container}', Version: '#{version}'"
87
87
  run_tasks(container, version)
88
- File.open(PLACED_FILE, 'a') { |file| file.puts("#{container}/#{version}") }
88
+ File.open(PLACED_FILE, "a") { |file| file.puts("#{container}/#{version}") }
89
89
  end
90
90
  end
91
91
 
92
92
  def run_tasks(container, version)
93
- manifest = load_manifest(container,version)
93
+ manifest = load_manifest(container, version)
94
94
  Harbr::Container::Job.perform_async(manifest)
95
95
  puts "Running tasks for container: '#{container}', Version: '#{version}'"
96
96
  end
97
-
98
97
  end
99
98
 
100
99
  desc "setup", "Set up Harbr environment"
@@ -134,7 +133,6 @@ class HarbrCLI < Thor
134
133
  sleep 10 # Poll every 10 seconds
135
134
  end
136
135
  end
137
-
138
136
  end
139
137
 
140
138
  HarbrCLI.start(ARGV)
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.14"
4
+ VERSION = "0.0.16"
5
5
  end
data/lib/harbr.rb CHANGED
@@ -5,6 +5,16 @@ require "dddr"
5
5
  require "sucker_punch"
6
6
 
7
7
  module Harbr
8
+
9
+ DEFAULT_DIRECTORY = "/var/harbr"
10
+ DEFAULT_DIRECTORY_DATA_DIR = "#{DEFAULT_DIRECTORY}/.data"
11
+
12
+ Dddr.configure do |config|
13
+ config.data_dir = DEFAULT_DIRECTORY_DATA_DIR
14
+ end
15
+
16
+
17
+
8
18
  class Error < StandardError; end
9
19
 
10
20
  class Container
@@ -12,15 +22,66 @@ module Harbr
12
22
  include SuckerPunch::Job
13
23
 
14
24
  def perform(manifest)
15
- puts "Harbr Job!"
25
+
26
+ puts "Starting container: #{manifest.name}"
27
+
28
+ Dddr.configure do |config|
29
+ config.data_dir = Harbr::DEFAULT_DIRECTORY_DATA_DIR
30
+ end
16
31
 
17
32
  pool = Harbr::Port::Pool.new
18
33
  port = pool.get_port(manifest.host)
19
- p port
34
+
35
+ create_run_script(manifest.name, port.number)
36
+ create_log_script(manifest.name)
20
37
 
38
+ system("sv restart #{manifest.name}")
39
+ system("sv status #{manifest.name}")
40
+
41
+ end
21
42
 
22
- puts manifest
43
+ def create_run_script(container_name, port)
44
+ service_dir = "/etc/sv/harbr/#{container_name}"
45
+ if File.directory?(log_dir)
46
+ puts "Directory already exists: #{log_dir}"
47
+ return
48
+ end
49
+
50
+ script_template = <<~SCRIPT
51
+ #!/bin/sh
52
+ exec 2>&1
53
+ cd /var/harbr/#{container_name}/current
54
+ exec bundle exec puma -p #{port}
55
+ SCRIPT
56
+
57
+ service_dir = "/etc/sv/harbr/#{container_name}"
58
+ FileUtils.mkdir_p(service_dir)
59
+
60
+ File.write("#{service_dir}/run", script_template)
61
+ FileUtils.chmod("+x", "#{service_dir}/run")
62
+ puts "Run script created and made executable for container: #{container_name}"
23
63
  end
64
+
65
+ def create_log_script(container_name)
66
+ log_dir = "/var/log/harbr/#{container_name}"
67
+ if File.directory?(log_dir)
68
+ puts "Directory already exists: #{log_dir}"
69
+ return
70
+ end
71
+
72
+ script_template = <<~SCRIPT
73
+ #!/bin/sh
74
+ exec svlogd -tt #{log_dir}/
75
+ SCRIPT
76
+
77
+ dir_path = "/etc/sv/harbr/#{container_name}"
78
+ FileUtils.mkdir_p(dir_path)
79
+
80
+ File.write("#{dir_path}/run", script_template)
81
+ FileUtils.chmod("+x", "#{dir_path}/run")
82
+ puts "Log script created and made executable for container: #{container_name}"
83
+ end
84
+
24
85
  end
25
86
 
26
87
  include Dddr::Entity
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: harbr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.14
4
+ version: 0.0.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Delaney Kuldvee Burke
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-12-04 00:00:00.000000000 Z
11
+ date: 2023-12-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: listen
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.0.3
47
+ version: 1.0.4
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 1.0.3
54
+ version: 1.0.4
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: sucker_punch
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -90,8 +90,6 @@ executables:
90
90
  extensions: []
91
91
  extra_rdoc_files: []
92
92
  files:
93
- - ".data/development/Harbr::Container.dir"
94
- - ".data/development/Harbr::Container.pag"
95
93
  - ".data/development/Harbr::Port.dir"
96
94
  - ".data/development/Harbr::Port.pag"
97
95
  - ".rspec"
File without changes
File without changes