harbr 0.0.4 → 0.0.7
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/exe/harbr +12 -5
- data/lib/harbr/version.rb +1 -1
- data/lib/harbr.rb +70 -0
- metadata +16 -4
- data/.data/development/Harbr::Container.dir +0 -0
- data/.data/development/Harbr::Container.pag +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7f443b2cf3d0a2248b626944763782d7dc765f2bd83502d2920df8b8f736c648
|
4
|
+
data.tar.gz: fe4ba28730e10fce57824b766e5ca095104144d190df1cbb794ba94195012bdb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 229b3eb7da67df05de20323697246bf0a0375818a0ff5fcadee0fc1566477bff58fe633334277ac7668805862b22e862cfe80de3c4eacf39dada6c499ebc8069
|
7
|
+
data.tar.gz: 78958f5ef51f6f0efa87e8be314bdc45ca72dd1381ea4ba447e347fa41b8237c1ec3ef854add085dc69e52c6295c0efb3dcdd9ea27a684138c42688ba724aafb
|
data/exe/harbr
CHANGED
@@ -3,6 +3,7 @@ require 'thor'
|
|
3
3
|
require 'listen'
|
4
4
|
require 'dddr'
|
5
5
|
require 'harbr'
|
6
|
+
require 'sucker_punch'
|
6
7
|
require 'terminal-table'
|
7
8
|
|
8
9
|
class HarbrCLI < Thor
|
@@ -76,13 +77,19 @@ class HarbrCLI < Thor
|
|
76
77
|
return if @@listener
|
77
78
|
|
78
79
|
puts "Starting Harbr, listening to #{directory}"
|
80
|
+
|
79
81
|
@@listener = Listen.to(directory) do |modified, added, removed|
|
80
|
-
|
81
|
-
|
82
|
-
|
82
|
+
unless added.empty?
|
83
|
+
added.each do |path|
|
84
|
+
/\/var\/harbr\/(?<container>.*)\/versions\/(?<version>\d*)\/config\/manifest.yml/.match(path)
|
85
|
+
if $1
|
86
|
+
Harbr::Container::Job.perform_async($1)
|
87
|
+
break
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
91
|
+
end
|
83
92
|
|
84
|
-
puts directory
|
85
|
-
# Add your logic here for handling these changes
|
86
93
|
end
|
87
94
|
@@listener.start # not blocking
|
88
95
|
sleep
|
data/lib/harbr/version.rb
CHANGED
data/lib/harbr.rb
CHANGED
@@ -1,13 +1,83 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
require_relative "harbr/version"
|
3
3
|
require 'dddr'
|
4
|
+
require 'sucker_punch'
|
4
5
|
|
5
6
|
module Harbr
|
6
7
|
class Error < StandardError; end
|
7
8
|
class Container
|
9
|
+
class Job
|
10
|
+
include SuckerPunch::Job
|
11
|
+
|
12
|
+
def perform(config)
|
13
|
+
|
14
|
+
puts "Harbr Job!"
|
15
|
+
puts config
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
8
20
|
include Dddr::Entity
|
9
21
|
attr_accessor :name, :host_header, :ip, :port
|
10
22
|
end
|
11
23
|
|
24
|
+
class Port
|
25
|
+
|
26
|
+
include Dddr::Entity
|
27
|
+
attr_accessor :host_header, :number
|
28
|
+
|
29
|
+
queries do
|
30
|
+
def has_port_number?(number)
|
31
|
+
all.find {|port| port.number == number.to_i}
|
32
|
+
end
|
33
|
+
def assigned_a_port?(host_header)
|
34
|
+
all.find {|port| port.host_header == host_header}
|
35
|
+
end
|
36
|
+
end
|
37
|
+
class Pool
|
38
|
+
def initialize(port_range=50000..51000)
|
39
|
+
|
40
|
+
@repository = Port::Repository.new
|
41
|
+
|
42
|
+
port_range.each do |number|
|
43
|
+
|
44
|
+
port = Port.new
|
45
|
+
port.number = number
|
46
|
+
|
47
|
+
unless @repository.has_port_number? number
|
48
|
+
@repository.add(port)
|
49
|
+
puts port.number.to_s + " added!"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
def get_port(host_header)
|
56
|
+
|
57
|
+
port = @repository.assigned_a_port?(host_header)
|
58
|
+
return port unless port.nil?
|
59
|
+
|
60
|
+
port = ports.shuffle.sample
|
61
|
+
port.host_header = host_header
|
62
|
+
@repository.update(port)
|
63
|
+
port
|
64
|
+
end
|
65
|
+
|
66
|
+
def return_port(port)
|
67
|
+
port.host_header = nil
|
68
|
+
@repository.update(port)
|
69
|
+
port.host_header.nil?
|
70
|
+
end
|
71
|
+
|
72
|
+
def ports
|
73
|
+
@repository.all
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
|
78
|
+
|
79
|
+
end
|
80
|
+
|
81
|
+
|
12
82
|
# Your code goes here...
|
13
83
|
end
|
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.
|
4
|
+
version: 0.0.7
|
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-
|
11
|
+
date: 2023-12-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: listen
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 1.0.3
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: sucker_punch
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 3.1.0
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 3.1.0
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: terminal-table
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -76,8 +90,6 @@ executables:
|
|
76
90
|
extensions: []
|
77
91
|
extra_rdoc_files: []
|
78
92
|
files:
|
79
|
-
- ".data/development/Harbr::Container.dir"
|
80
|
-
- ".data/development/Harbr::Container.pag"
|
81
93
|
- ".rspec"
|
82
94
|
- ".standard.yml"
|
83
95
|
- CHANGELOG.md
|
File without changes
|
Binary file
|