locd 0.1.5 → 0.1.6
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/VERSION +1 -1
- data/exe/locd +2 -2
- data/lib/locd.rb +1 -7
- data/lib/locd/agent.rb +39 -2
- data/lib/locd/agent/job.rb +1 -1
- data/lib/locd/agent/proxy.rb +1 -1
- data/lib/locd/agent/rotate_logs.rb +1 -1
- data/lib/locd/agent/site.rb +13 -4
- data/lib/locd/agent/system.rb +1 -1
- data/lib/locd/cli/command.rb +1 -0
- data/lib/locd/cli/command/agent.rb +4 -1
- data/lib/locd/cli/command/base.rb +1 -1
- data/lib/locd/cli/command/job.rb +1 -1
- data/lib/locd/cli/command/main.rb +10 -4
- data/lib/locd/cli/command/project.rb +90 -0
- data/lib/locd/cli/command/proxy.rb +1 -1
- data/lib/locd/cli/command/rotate_logs.rb +1 -1
- data/lib/locd/cli/command/site.rb +1 -1
- data/lib/locd/cli/table.rb +1 -2
- data/lib/locd/config.rb +4 -1
- data/lib/locd/errors.rb +0 -5
- data/lib/locd/label.rb +0 -5
- data/lib/locd/launchctl.rb +2 -2
- data/lib/locd/newsyslog.rb +2 -2
- data/lib/locd/pattern.rb +0 -5
- data/lib/locd/proxy.rb +1 -6
- data/lib/locd/util.rb +1 -19
- data/locd.gemspec +2 -2
- metadata +9 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 21e58280d1931b02f58ba82b427ad422db7ff696
|
4
|
+
data.tar.gz: 47f847da55d407db080e0b999cb6882898d12940
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cae7b8aaf1e7e03cc802ae6155e04a388bb7269203e5c002ea54e0de7667130e33149493df5b0f631c7dfcd2aaae1667cf2f87bfd2cf3021d4966cd4493f5bf5
|
7
|
+
data.tar.gz: d994ec75280c5e302844f119097f2ced9802ba5d558f57488eb661092548dca4be7a542075b3afe08bae82556c19693612bc6480ec94bc1cfc929cb09cef23c3
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.6
|
data/exe/locd
CHANGED
@@ -6,10 +6,10 @@ require 'locd'
|
|
6
6
|
|
7
7
|
# Setup logging *before* including {Locd::CLI} so that we can get
|
8
8
|
# trace/debug output from that setup if enabled via ENV vars
|
9
|
-
NRSER::
|
9
|
+
NRSER::Log.setup_for_cli! application: 'Locd', dest: $stderr, sync: true
|
10
10
|
|
11
11
|
# Logger for this file
|
12
|
-
logger =
|
12
|
+
logger = NRSER::Log[__FILE__]
|
13
13
|
|
14
14
|
require 'locd/cli'
|
15
15
|
|
data/lib/locd.rb
CHANGED
@@ -29,12 +29,6 @@ require 'locd/agent'
|
|
29
29
|
require 'locd/proxy'
|
30
30
|
|
31
31
|
|
32
|
-
# Refinements
|
33
|
-
# =======================================================================
|
34
|
-
|
35
|
-
using NRSER
|
36
|
-
|
37
|
-
|
38
32
|
# Definitions
|
39
33
|
# =======================================================================
|
40
34
|
|
@@ -57,7 +51,7 @@ module Locd
|
|
57
51
|
# ============================================================================
|
58
52
|
|
59
53
|
# Add {.logger} and {#logger} methods
|
60
|
-
include NRSER::
|
54
|
+
include NRSER::Log::Mixin
|
61
55
|
|
62
56
|
|
63
57
|
# Module Methods
|
data/lib/locd/agent.rb
CHANGED
@@ -18,7 +18,7 @@ require 'fileutils'
|
|
18
18
|
# Refinements
|
19
19
|
# =======================================================================
|
20
20
|
|
21
|
-
|
21
|
+
require 'nrser/refinements/types'
|
22
22
|
using NRSER::Types
|
23
23
|
|
24
24
|
|
@@ -51,7 +51,7 @@ class Locd::Agent
|
|
51
51
|
# ==========================================================================
|
52
52
|
|
53
53
|
# Add {.logger} and {#logger} methods
|
54
|
-
include NRSER::
|
54
|
+
include NRSER::Log::Mixin
|
55
55
|
|
56
56
|
# Make agents sortable by label
|
57
57
|
include Comparable
|
@@ -264,6 +264,20 @@ class Locd::Agent
|
|
264
264
|
end
|
265
265
|
|
266
266
|
|
267
|
+
# Does this agent exist?
|
268
|
+
#
|
269
|
+
# @param [String] label
|
270
|
+
# Agent's label (AKA name AKA domain).
|
271
|
+
#
|
272
|
+
# @return [Boolean]
|
273
|
+
#
|
274
|
+
def self.exists? label
|
275
|
+
File.exists? plist_abs_path( label )
|
276
|
+
end # .exists?
|
277
|
+
|
278
|
+
singleton_class.send :alias_method, :exist?, :exists?
|
279
|
+
|
280
|
+
|
267
281
|
# All {Locd::Agent} that are instances of `self`.
|
268
282
|
#
|
269
283
|
# So, when invoked through {Locd::Agent.all} returns all agents.
|
@@ -633,6 +647,29 @@ class Locd::Agent
|
|
633
647
|
end # .add
|
634
648
|
|
635
649
|
|
650
|
+
# Pretty much what the name says.
|
651
|
+
#
|
652
|
+
# @see .add
|
653
|
+
# @see #update
|
654
|
+
#
|
655
|
+
# @param [String] label
|
656
|
+
# Agent's label (AKA name AKA domain).
|
657
|
+
#
|
658
|
+
# @param **values
|
659
|
+
# Agent properties.
|
660
|
+
#
|
661
|
+
# @return [Array<((:add | :update), Locd::Agent)]
|
662
|
+
# Whether the agent was added or updated, followed by the agent instance.
|
663
|
+
#
|
664
|
+
def self.add_or_update label:, **values
|
665
|
+
if exists? label
|
666
|
+
[:update, get( label ).update( **values )]
|
667
|
+
else
|
668
|
+
[:add, add( label: label, **values )]
|
669
|
+
end
|
670
|
+
end
|
671
|
+
|
672
|
+
|
636
673
|
# Attributes
|
637
674
|
# ============================================================================
|
638
675
|
|
data/lib/locd/agent/job.rb
CHANGED
data/lib/locd/agent/proxy.rb
CHANGED
data/lib/locd/agent/site.rb
CHANGED
@@ -18,7 +18,7 @@ require 'fileutils'
|
|
18
18
|
# Refinements
|
19
19
|
# =======================================================================
|
20
20
|
|
21
|
-
|
21
|
+
require 'nrser/refinements/types'
|
22
22
|
using NRSER::Types
|
23
23
|
|
24
24
|
|
@@ -126,7 +126,8 @@ class Locd::Agent::Site < Locd::Agent
|
|
126
126
|
keep_alive: false,
|
127
127
|
run_at_load: false,
|
128
128
|
port: nil,
|
129
|
-
bind: Locd.config[:site, :bind]
|
129
|
+
bind: Locd.config[:site, :bind],
|
130
|
+
open_path: '/'
|
130
131
|
# Allocate a port if one was not provided
|
131
132
|
port = if port.nil?
|
132
133
|
Locd::Proxy.allocate_port
|
@@ -135,6 +136,8 @@ class Locd::Agent::Site < Locd::Agent
|
|
135
136
|
port.to_i
|
136
137
|
end
|
137
138
|
|
139
|
+
open_path = "/#{ path }" unless open_path.start_with? '/'
|
140
|
+
|
138
141
|
super cmd_template: cmd_template,
|
139
142
|
label: label,
|
140
143
|
workdir: workdir,
|
@@ -143,7 +146,8 @@ class Locd::Agent::Site < Locd::Agent
|
|
143
146
|
run_at_load: run_at_load,
|
144
147
|
# Extras specific to {Locd::Agent::Site}:
|
145
148
|
port: port,
|
146
|
-
bind: bind
|
149
|
+
bind: bind,
|
150
|
+
open_path: open_path
|
147
151
|
end # .create_plist_data
|
148
152
|
|
149
153
|
|
@@ -163,10 +167,15 @@ class Locd::Agent::Site < Locd::Agent
|
|
163
167
|
end
|
164
168
|
|
165
169
|
|
170
|
+
def open_path
|
171
|
+
config['open_path'] || '/'
|
172
|
+
end
|
173
|
+
|
174
|
+
|
166
175
|
# @return [String]
|
167
176
|
# The URL the agent can be reached at through the proxy.
|
168
177
|
def url
|
169
|
-
"http://#{ label }:#{ Locd::Proxy.port }"
|
178
|
+
"http://#{ label }:#{ Locd::Proxy.port }#{ open_path }"
|
170
179
|
end
|
171
180
|
|
172
181
|
# @!endgroup Instance Methods: Attribute Readers
|
data/lib/locd/agent/system.rb
CHANGED
data/lib/locd/cli/command.rb
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
# Refinements
|
17
17
|
# =======================================================================
|
18
18
|
|
19
|
-
|
19
|
+
require 'nrser/refinements/types'
|
20
20
|
using NRSER::Types
|
21
21
|
|
22
22
|
|
@@ -339,6 +339,9 @@ class Locd::CLI::Command::Agent < Locd::CLI::Command::Base
|
|
339
339
|
|
340
340
|
def rm pattern
|
341
341
|
kwds = option_kwds :logs
|
342
|
+
|
343
|
+
logger.debug "kwds", kwds
|
344
|
+
|
342
345
|
find_multi!( pattern ).each { |agent| agent.remove **kwds }
|
343
346
|
end
|
344
347
|
|
data/lib/locd/cli/command/job.rb
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
# Refinements
|
17
17
|
# =======================================================================
|
18
18
|
|
19
|
-
|
19
|
+
require 'nrser/refinements/types'
|
20
20
|
using NRSER::Types
|
21
21
|
|
22
22
|
|
@@ -128,7 +128,7 @@ class Locd::CLI::Command::Main < Locd::CLI::Command::Base
|
|
128
128
|
}.to_sym
|
129
129
|
end
|
130
130
|
|
131
|
-
NRSER::
|
131
|
+
NRSER::Log.level = level unless level.nil?
|
132
132
|
|
133
133
|
if levels = Locd.config[:log, :levels]
|
134
134
|
levels.each do |name, level|
|
@@ -151,8 +151,8 @@ class Locd::CLI::Command::Main < Locd::CLI::Command::Base
|
|
151
151
|
end
|
152
152
|
end
|
153
153
|
|
154
|
-
if [:trace, :debug].include? NRSER::
|
155
|
-
logger.send NRSER::
|
154
|
+
if [:trace, :debug].include? NRSER::Log.level
|
155
|
+
logger.send NRSER::Log.level, "Hello! We about to start the show..."
|
156
156
|
end
|
157
157
|
end
|
158
158
|
|
@@ -211,4 +211,10 @@ class Locd::CLI::Command::Main < Locd::CLI::Command::Base
|
|
211
211
|
subcommand 'rotate_logs',
|
212
212
|
Locd::CLI::Command::RotateLogs
|
213
213
|
|
214
|
+
|
215
|
+
desc 'project SUBCOMMAND...',
|
216
|
+
'Manage Agent definitions for projects'
|
217
|
+
subcommand 'project',
|
218
|
+
Locd::CLI::Command::Project
|
219
|
+
|
214
220
|
end # class Locd::CLI::Command::Main
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
|
5
|
+
# Refinements
|
6
|
+
# =======================================================================
|
7
|
+
|
8
|
+
require 'nrser/refinements/types'
|
9
|
+
using NRSER::Types
|
10
|
+
|
11
|
+
|
12
|
+
# Definitions
|
13
|
+
# =======================================================================
|
14
|
+
|
15
|
+
# Manage Agent definitions attached to projects.
|
16
|
+
#
|
17
|
+
module Locd
|
18
|
+
module CLI
|
19
|
+
module Command
|
20
|
+
class Project < Base
|
21
|
+
|
22
|
+
# Instance Methods
|
23
|
+
# ========================================================================
|
24
|
+
|
25
|
+
# @!group Command Instance Methods
|
26
|
+
# --------------------------------------------------------------------------
|
27
|
+
|
28
|
+
desc 'load',
|
29
|
+
"Load project Agent definitions"
|
30
|
+
|
31
|
+
option :file,
|
32
|
+
aliases: [ 'f' ],
|
33
|
+
type: :string,
|
34
|
+
default: './dev/locd.yaml'
|
35
|
+
def load
|
36
|
+
|
37
|
+
file_path = options[:file].to_pn.expand_path
|
38
|
+
|
39
|
+
unless file_path.file?
|
40
|
+
raise "Definition file not found at `#{ file_path }`"
|
41
|
+
end
|
42
|
+
|
43
|
+
defs = YAML.load( file_path.read ).with_indifferent_access
|
44
|
+
|
45
|
+
t.hash_(
|
46
|
+
keys: t.in(%w{agents sites jobs}),
|
47
|
+
).check! defs
|
48
|
+
|
49
|
+
{
|
50
|
+
agents: Locd::Agent,
|
51
|
+
sites: Locd::Agent::Site,
|
52
|
+
jobs: Locd::Agent::Job,
|
53
|
+
}.each do |key, agent_class|
|
54
|
+
if defs.key? key
|
55
|
+
logger.info "Adding or updating #{ key }..."
|
56
|
+
|
57
|
+
defs[key].each do |label, values|
|
58
|
+
logger.info payload: {
|
59
|
+
values: values,
|
60
|
+
options: values.to_options,
|
61
|
+
}
|
62
|
+
|
63
|
+
method, agent = agent_class.add_or_update \
|
64
|
+
label: label,
|
65
|
+
**values.
|
66
|
+
map { |key, value|
|
67
|
+
key = key.gsub '-', '_'
|
68
|
+
if key == 'cmd_template'
|
69
|
+
value = value.squish
|
70
|
+
end
|
71
|
+
|
72
|
+
[ key, value ]
|
73
|
+
}.
|
74
|
+
to_h.
|
75
|
+
to_options
|
76
|
+
|
77
|
+
action = t.match method,
|
78
|
+
:add, 'added',
|
79
|
+
:update, 'updated'
|
80
|
+
|
81
|
+
logger.info "Agent `#{ label }` #{ action }"
|
82
|
+
end # each label, values
|
83
|
+
end # if defs.key? key
|
84
|
+
end # each key, agent_class
|
85
|
+
|
86
|
+
end
|
87
|
+
|
88
|
+
# @!endgroup Command Instance Methods # ************************************
|
89
|
+
|
90
|
+
end; end; end; end # class Locd::CLI::Command::Site
|
data/lib/locd/cli/table.rb
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
# Refinements
|
17
17
|
# =======================================================================
|
18
18
|
|
19
|
-
|
19
|
+
require 'nrser/refinements/types'
|
20
20
|
using NRSER::Types
|
21
21
|
|
22
22
|
|
@@ -51,7 +51,6 @@ class Locd::CLI::Table
|
|
51
51
|
# ============================================================================
|
52
52
|
|
53
53
|
include Enumerable
|
54
|
-
include NRSER::Ext::Enumerable
|
55
54
|
|
56
55
|
|
57
56
|
# Classes
|
data/lib/locd/config.rb
CHANGED
@@ -10,6 +10,9 @@ require 'pathname'
|
|
10
10
|
|
11
11
|
# Deps
|
12
12
|
# -----------------------------------------------------------------------
|
13
|
+
require 'nrser'
|
14
|
+
require 'nrser/core_ext/object'
|
15
|
+
|
13
16
|
|
14
17
|
# Project / Package
|
15
18
|
# -----------------------------------------------------------------------
|
@@ -18,7 +21,7 @@ require 'pathname'
|
|
18
21
|
# Refinements
|
19
22
|
# =======================================================================
|
20
23
|
|
21
|
-
|
24
|
+
require 'nrser/refinements/types'
|
22
25
|
using NRSER::Types
|
23
26
|
|
24
27
|
|
data/lib/locd/errors.rb
CHANGED
data/lib/locd/label.rb
CHANGED
data/lib/locd/launchctl.rb
CHANGED
@@ -17,7 +17,7 @@ require 'cmds'
|
|
17
17
|
# Refinements
|
18
18
|
# =======================================================================
|
19
19
|
|
20
|
-
|
20
|
+
require 'nrser/refinements/types'
|
21
21
|
using NRSER::Types
|
22
22
|
|
23
23
|
|
@@ -60,7 +60,7 @@ module Locd::Launchctl
|
|
60
60
|
# ============================================================================
|
61
61
|
|
62
62
|
# Add {.logger} method
|
63
|
-
include NRSER::
|
63
|
+
include NRSER::Log::Mixin
|
64
64
|
|
65
65
|
|
66
66
|
# Classes
|
data/lib/locd/newsyslog.rb
CHANGED
@@ -18,7 +18,7 @@ require 'cmds'
|
|
18
18
|
# Refinements
|
19
19
|
# =======================================================================
|
20
20
|
|
21
|
-
|
21
|
+
require 'nrser/refinements/types'
|
22
22
|
using NRSER::Types
|
23
23
|
|
24
24
|
|
@@ -29,7 +29,7 @@ using NRSER::Types
|
|
29
29
|
#
|
30
30
|
module Locd::Newsyslog
|
31
31
|
|
32
|
-
include NRSER::
|
32
|
+
include NRSER::Log::Mixin
|
33
33
|
|
34
34
|
|
35
35
|
# Default place to work out of.
|
data/lib/locd/pattern.rb
CHANGED
data/lib/locd/proxy.rb
CHANGED
@@ -1,11 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
# encoding: UTF-8
|
3
3
|
|
4
|
-
# Refinements
|
5
|
-
# =======================================================================
|
6
|
-
|
7
|
-
using NRSER
|
8
|
-
|
9
4
|
|
10
5
|
# Definitions
|
11
6
|
# =======================================================================
|
@@ -43,7 +38,7 @@ module Locd::Proxy
|
|
43
38
|
# ============================================================================
|
44
39
|
|
45
40
|
# Add {.logger} and {#logger} methods
|
46
|
-
include NRSER::
|
41
|
+
include NRSER::Log::Mixin
|
47
42
|
|
48
43
|
|
49
44
|
# Module Methods
|
data/lib/locd/util.rb
CHANGED
@@ -1,23 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Requirements
|
4
|
-
# =======================================================================
|
5
|
-
|
6
|
-
# Stdlib
|
7
|
-
# -----------------------------------------------------------------------
|
8
|
-
|
9
|
-
# Deps
|
10
|
-
# -----------------------------------------------------------------------
|
11
|
-
|
12
|
-
# Project / Package
|
13
|
-
# -----------------------------------------------------------------------
|
14
|
-
|
15
|
-
|
16
|
-
# Refinements
|
17
|
-
# =======================================================================
|
18
|
-
|
19
|
-
using NRSER
|
20
|
-
|
2
|
+
# encoding: UTF-8
|
21
3
|
|
22
4
|
# Definitions
|
23
5
|
# =======================================================================
|
data/locd.gemspec
CHANGED
@@ -47,7 +47,7 @@ Gem::Specification.new do |spec|
|
|
47
47
|
# ----------------------------------------------------------------------------
|
48
48
|
|
49
49
|
# My guns
|
50
|
-
spec.add_dependency "nrser", '~> 0.
|
50
|
+
spec.add_dependency "nrser", '~> 0.3.1'
|
51
51
|
|
52
52
|
# Used to process command templates from projects' `//dev/locd.yml` files
|
53
53
|
spec.add_dependency "cmds", ">= 0.2.10"
|
@@ -59,7 +59,7 @@ Gem::Specification.new do |spec|
|
|
59
59
|
spec.add_dependency 'plist', '~> 3.4'
|
60
60
|
|
61
61
|
# Atli, my fork of Thor for CLI interface
|
62
|
-
spec.add_dependency 'atli', '
|
62
|
+
spec.add_dependency 'atli', '~> 0.1.6'
|
63
63
|
|
64
64
|
#
|
65
65
|
# spec.add_dependency 'terminal-table', '~> 1.8'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: locd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nrser
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-03
|
11
|
+
date: 2018-05-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -114,14 +114,14 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 0.
|
117
|
+
version: 0.3.1
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 0.
|
124
|
+
version: 0.3.1
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: cmds
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -168,16 +168,16 @@ dependencies:
|
|
168
168
|
name: atli
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
170
170
|
requirements:
|
171
|
-
- - "
|
171
|
+
- - "~>"
|
172
172
|
- !ruby/object:Gem::Version
|
173
|
-
version: 0.1.
|
173
|
+
version: 0.1.6
|
174
174
|
type: :runtime
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
|
-
- - "
|
178
|
+
- - "~>"
|
179
179
|
- !ruby/object:Gem::Version
|
180
|
-
version: 0.1.
|
180
|
+
version: 0.1.6
|
181
181
|
description:
|
182
182
|
email:
|
183
183
|
- neil@ztkae.com
|
@@ -217,6 +217,7 @@ files:
|
|
217
217
|
- lib/locd/cli/command/base.rb
|
218
218
|
- lib/locd/cli/command/job.rb
|
219
219
|
- lib/locd/cli/command/main.rb
|
220
|
+
- lib/locd/cli/command/project.rb
|
220
221
|
- lib/locd/cli/command/proxy.rb
|
221
222
|
- lib/locd/cli/command/rotate_logs.rb
|
222
223
|
- lib/locd/cli/command/site.rb
|