harbr 0.0.14 → 0.0.16

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: 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