aide 0.1.6 → 1.0.0
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 +5 -5
- data/Deskfile +15 -0
- data/Dockerfile +21 -0
- data/Gemfile +2 -0
- data/README.md +9 -14
- data/aide.gemspec +2 -2
- data/compose.yml +35 -0
- data/docker/chown-dirs.sh +29 -0
- data/docker/entrypoint.sh +33 -0
- data/docker/irbrc +9 -0
- data/docker/tools-entrypoint.sh +33 -0
- data/lib/aide/config.rb +14 -1
- data/lib/aide/service.rb +55 -26
- data/lib/aide/version.rb +1 -1
- data/lib/aide.rb +16 -7
- metadata +14 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 16ee63237abd5377a1cd568f5b2b02fa86a6a8b1e83a3afebc5cf785146b8071
|
4
|
+
data.tar.gz: 56f88a4269a3e36646bcf89a65c219403a506189924e39a3640eb784b445ebe3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b2f53cdf68945d364acbff07f40a75220698bbf2cfdab469b21911588fc3ada2ec894fc9fc828ee1ca583bc7d8bf7a3245f0a0ea6b1eb251016e16e159ec9ba8
|
7
|
+
data.tar.gz: c5841984bd8895c7a6a255008744315ba2eda0d48e0a508014559b0426f33c4ab32b3e0fd7a3700a057f866db609ab16768327eeab211df1afd708abae576ea9
|
data/Deskfile
ADDED
data/Dockerfile
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
FROM 786715713882.dkr.ecr.us-east-1.amazonaws.com/fixuid as fixuid
|
2
|
+
|
3
|
+
FROM 786715713882.dkr.ecr.us-east-1.amazonaws.com/ruby-test:3.1.2
|
4
|
+
LABEL maintainer="Ryan Schlesinger <ryan@outstand.com>"
|
5
|
+
|
6
|
+
COPY --from=fixuid /usr/local/bin/fixuid /usr/local/bin/fixuid
|
7
|
+
COPY --from=fixuid /etc/fixuid/config.yml /etc/fixuid/config.yml
|
8
|
+
RUN chmod 4755 /usr/local/bin/fixuid
|
9
|
+
|
10
|
+
RUN groupadd -g 1000 deploy && \
|
11
|
+
useradd -u 1000 -g deploy -ms /bin/bash deploy
|
12
|
+
|
13
|
+
COPY --chown=deploy:deploy docker/irbrc /home/deploy/.irbrc
|
14
|
+
|
15
|
+
COPY docker/tools-entrypoint.sh /tools-entrypoint.sh
|
16
|
+
COPY docker/entrypoint.sh /docker-entrypoint.sh
|
17
|
+
|
18
|
+
EXPOSE 3000
|
19
|
+
EXPOSE 7787
|
20
|
+
ENTRYPOINT ["/sbin/tini", "-g", "--", "/docker-entrypoint.sh"]
|
21
|
+
CMD ["rails", "server", "-b", "0.0.0.0"]
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
# Aide
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
TODO: Delete this and the text above, and describe your gem
|
3
|
+
Glue between consul and your rails app.
|
6
4
|
|
7
5
|
## Installation
|
8
6
|
|
@@ -20,17 +18,14 @@ Or install it yourself as:
|
|
20
18
|
|
21
19
|
$ gem install aide
|
22
20
|
|
23
|
-
## Usage
|
24
|
-
|
25
|
-
TODO: Write usage instructions here
|
26
|
-
|
27
21
|
## Development
|
28
22
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
## Contributing
|
34
|
-
|
35
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/aide.
|
23
|
+
- `desk go`
|
24
|
+
- `dev build --pull aide`
|
25
|
+
- `rspec specs` to run specs
|
26
|
+
- Set the application path in the volumes section in `compose.yml`.
|
36
27
|
|
28
|
+
To release a new version:
|
29
|
+
- Update the version number in `version.rb` and commit the result.
|
30
|
+
- `dev build --pull aide`
|
31
|
+
- `release_gem`
|
data/aide.gemspec
CHANGED
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_development_dependency "bundler", "~>
|
22
|
-
spec.add_development_dependency "rake", "~>
|
21
|
+
spec.add_development_dependency "bundler", "~> 2.3"
|
22
|
+
spec.add_development_dependency "rake", "~> 13"
|
23
23
|
|
24
24
|
spec.add_runtime_dependency 'diplomat'
|
25
25
|
end
|
data/compose.yml
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
services:
|
2
|
+
aide:
|
3
|
+
build:
|
4
|
+
context: .
|
5
|
+
image: outstand/aide:dev
|
6
|
+
working_dir: ${WORKSPACE_DIR}
|
7
|
+
volumes:
|
8
|
+
- bundler-data:/usr/local/bundle
|
9
|
+
- .:${WORKSPACE_DIR}
|
10
|
+
ports:
|
11
|
+
- "3000"
|
12
|
+
environment:
|
13
|
+
FIXUID:
|
14
|
+
FIXGID:
|
15
|
+
WORKSPACE_DIR:
|
16
|
+
|
17
|
+
release_gem:
|
18
|
+
image: outstand/aide:dev
|
19
|
+
command: rake release
|
20
|
+
working_dir: ${WORKSPACE_DIR}
|
21
|
+
environment:
|
22
|
+
FIXUID:
|
23
|
+
FIXGID:
|
24
|
+
WORKSPACE_DIR:
|
25
|
+
volumes:
|
26
|
+
- bundler-data:/usr/local/bundle
|
27
|
+
- .:${WORKSPACE_DIR}
|
28
|
+
- ~/.dotfiles/config/git/gitconfig:/home/deploy/.gitconfig
|
29
|
+
- ~/.dotfiles/config/git/gitconfig.user:/home/deploy/.gitconfig.user
|
30
|
+
- ~/.config/gh/hosts.yml:/home/deploy/.config/gh/hosts.yml
|
31
|
+
- ~/.local/share/gem/credentials:/home/deploy/.local/share/gem/credentials
|
32
|
+
- ~/.local/share/gem/credentials:/home/deploy/.gem/credentials
|
33
|
+
|
34
|
+
volumes:
|
35
|
+
bundler-data:
|
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
chown_dir() {
|
4
|
+
dir=$1
|
5
|
+
if [[ -d "${dir}" ]] && [[ "$(stat -c %u:%g "${dir}")" != "${FIXUID}:${FIXGID}" ]]; then
|
6
|
+
echo chown "$dir"
|
7
|
+
chown deploy:deploy "$dir"
|
8
|
+
fi
|
9
|
+
}
|
10
|
+
|
11
|
+
chown_r_dir() {
|
12
|
+
dir=$1
|
13
|
+
if [[ -d "${dir}" ]] && [[ "$(stat -c %u:%g "${dir}")" != "${FIXUID}:${FIXGID}" ]]; then
|
14
|
+
echo chown -R "$dir"
|
15
|
+
chown -R deploy:deploy "$dir"
|
16
|
+
fi
|
17
|
+
}
|
18
|
+
|
19
|
+
ensure_dir() {
|
20
|
+
dir=$1
|
21
|
+
mkdir -p "$dir"
|
22
|
+
|
23
|
+
chown_dir "$dir"
|
24
|
+
}
|
25
|
+
|
26
|
+
chown_r_dir "${WORKSPACE_DIR}"
|
27
|
+
|
28
|
+
chown_dir /usr/local/bundle
|
29
|
+
ensure_dir /home/deploy/.config/irb
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
set -euo pipefail
|
4
|
+
|
5
|
+
su-exec "${FIXUID:?Missing FIXUID var}:${FIXGID:?Missing FIXGID var}" fixuid
|
6
|
+
|
7
|
+
"${WORKSPACE_DIR}/docker/chown-dirs.sh"
|
8
|
+
set +e
|
9
|
+
su-exec deploy touch /home/deploy/.config/irb/irb_history
|
10
|
+
su-exec deploy ln -s /home/deploy/.config/irb/irb_history /home/deploy/.irb_history
|
11
|
+
set -e
|
12
|
+
|
13
|
+
install_tls_certs() {
|
14
|
+
if [ -n "$(ls -A /usr/local/share/ca-certificates)" ]; then
|
15
|
+
echo "Updating ca-certificates"
|
16
|
+
update-ca-certificates
|
17
|
+
fi
|
18
|
+
}
|
19
|
+
install_tls_certs
|
20
|
+
|
21
|
+
if [[ "$1" = 'bundle' ]] || [[ "$1" = 'yarn' ]]; then
|
22
|
+
set -- su-exec deploy "$@"
|
23
|
+
exec "$@"
|
24
|
+
elif [ "$1" = 'rake' ] && [ "$2" = 'release' ]; then
|
25
|
+
set -- su-exec deploy "$@"
|
26
|
+
exec "$@"
|
27
|
+
fi
|
28
|
+
|
29
|
+
set -- su-exec deploy bundle exec "$@"
|
30
|
+
|
31
|
+
rm -f "${WORKSPACE_DIR}/tmp/pids/server.pid"
|
32
|
+
|
33
|
+
exec "$@"
|
data/docker/irbrc
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
set -euo pipefail
|
4
|
+
|
5
|
+
su-exec "${FIXUID:?Missing FIXUID var}:${FIXGID:?Missing FIXGID var}" fixuid > /dev/null 2>&1
|
6
|
+
|
7
|
+
"${WORKSPACE_DIR}/docker/chown-dirs.sh" > /dev/null
|
8
|
+
|
9
|
+
chown_r_dir() {
|
10
|
+
dir="$1"
|
11
|
+
if [[ -d "${dir}" ]] && [[ "$(stat -c %u:%g "${dir}")" != "${FIXUID}:${FIXGID}" ]]; then
|
12
|
+
echo chown -R "$dir"
|
13
|
+
chown -R deploy:deploy "$dir"
|
14
|
+
fi
|
15
|
+
}
|
16
|
+
|
17
|
+
ensure_dir() {
|
18
|
+
dir=$1
|
19
|
+
mkdir -p "$dir"
|
20
|
+
|
21
|
+
chown_r_dir "$dir"
|
22
|
+
}
|
23
|
+
|
24
|
+
ensure_dir /home/deploy/.solargraph/cache > /dev/null
|
25
|
+
|
26
|
+
if [ "${1:-}" = "bash" ]; then
|
27
|
+
exec "$@"
|
28
|
+
elif [ "${1:-}" = "exit" ]; then
|
29
|
+
exit 0
|
30
|
+
fi
|
31
|
+
|
32
|
+
set -- su-exec deploy "$@"
|
33
|
+
exec "$@"
|
data/lib/aide/config.rb
CHANGED
@@ -25,10 +25,23 @@ module Aide
|
|
25
25
|
self.service_address_method = SERVICE_ADDRESS_METHOD
|
26
26
|
end
|
27
27
|
|
28
|
-
def add_service(
|
28
|
+
def add_service(
|
29
|
+
name:,
|
30
|
+
url: nil,
|
31
|
+
url_env_key: nil,
|
32
|
+
auth: nil,
|
33
|
+
user_key: nil,
|
34
|
+
password_key: nil,
|
35
|
+
protocol_key: nil,
|
36
|
+
multi_url: nil,
|
37
|
+
node: nil,
|
38
|
+
database_key: nil,
|
39
|
+
allow_missing: false
|
40
|
+
)
|
29
41
|
services[name] = {
|
30
42
|
name: name,
|
31
43
|
url: url,
|
44
|
+
url_env_key: url_env_key,
|
32
45
|
multi_url: multi_url,
|
33
46
|
auth: auth,
|
34
47
|
user_key: user_key,
|
data/lib/aide/service.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'uri'
|
2
|
+
|
1
3
|
module Aide
|
2
4
|
class Service
|
3
5
|
attr_accessor :name
|
@@ -15,7 +17,13 @@ module Aide
|
|
15
17
|
alias port ServicePort
|
16
18
|
|
17
19
|
def url(filtered: false)
|
18
|
-
template =
|
20
|
+
template =
|
21
|
+
if !config[:url_env_key].nil?
|
22
|
+
ENV[config[:url_env_key]]
|
23
|
+
else
|
24
|
+
config[:url]
|
25
|
+
end
|
26
|
+
|
19
27
|
return if template.nil?
|
20
28
|
|
21
29
|
return if empty? && !config[:allow_missing]
|
@@ -55,7 +63,7 @@ module Aide
|
|
55
63
|
end
|
56
64
|
|
57
65
|
def multi_url!
|
58
|
-
|
66
|
+
multi_url.tap do |orig_url|
|
59
67
|
raise MissingService.new(name) if orig_url.nil?
|
60
68
|
end
|
61
69
|
end
|
@@ -68,6 +76,12 @@ module Aide
|
|
68
76
|
end
|
69
77
|
end
|
70
78
|
|
79
|
+
def host
|
80
|
+
return address if url.nil?
|
81
|
+
|
82
|
+
URI.parse(url).host
|
83
|
+
end
|
84
|
+
|
71
85
|
def auth(filtered: false)
|
72
86
|
template = config[:auth]
|
73
87
|
|
@@ -113,7 +127,7 @@ module Aide
|
|
113
127
|
end
|
114
128
|
|
115
129
|
def node!
|
116
|
-
|
130
|
+
node.tap do |orig_node|
|
117
131
|
raise MissingService.new(name) if orig_node.nil?
|
118
132
|
end
|
119
133
|
end
|
@@ -124,12 +138,14 @@ module Aide
|
|
124
138
|
|
125
139
|
def user
|
126
140
|
return if user_key.nil?
|
141
|
+
return @user if defined?(@user)
|
127
142
|
|
128
|
-
@user
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
143
|
+
@user =
|
144
|
+
begin
|
145
|
+
user = Diplomat::Kv.get(user_key, {}, :return)
|
146
|
+
user = nil if user == ""
|
147
|
+
user
|
148
|
+
end
|
133
149
|
end
|
134
150
|
|
135
151
|
def password_key
|
@@ -138,12 +154,14 @@ module Aide
|
|
138
154
|
|
139
155
|
def password
|
140
156
|
return if password_key.nil?
|
157
|
+
return @password if defined?(@password)
|
141
158
|
|
142
|
-
@password
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
159
|
+
@password =
|
160
|
+
begin
|
161
|
+
password = Diplomat::Kv.get(password_key, {}, :return)
|
162
|
+
password = nil if password == ""
|
163
|
+
password
|
164
|
+
end
|
147
165
|
end
|
148
166
|
|
149
167
|
def protocol_key
|
@@ -152,12 +170,14 @@ module Aide
|
|
152
170
|
|
153
171
|
def protocol
|
154
172
|
return if protocol_key.nil?
|
173
|
+
return @protocol if defined?(@protocol)
|
155
174
|
|
156
|
-
@protocol
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
175
|
+
@protocol =
|
176
|
+
begin
|
177
|
+
protocol = Diplomat::Kv.get(protocol_key, {}, :return)
|
178
|
+
protocol = nil if protocol == ""
|
179
|
+
protocol
|
180
|
+
end
|
161
181
|
end
|
162
182
|
|
163
183
|
def database_key
|
@@ -166,12 +186,14 @@ module Aide
|
|
166
186
|
|
167
187
|
def database
|
168
188
|
return if database_key.nil?
|
189
|
+
return @database if defined?(@database)
|
169
190
|
|
170
|
-
@database
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
191
|
+
@database =
|
192
|
+
begin
|
193
|
+
database = Diplomat::Kv.get(database_key, {}, :return)
|
194
|
+
database = nil if database == ""
|
195
|
+
database
|
196
|
+
end
|
175
197
|
end
|
176
198
|
|
177
199
|
def empty?
|
@@ -179,16 +201,23 @@ module Aide
|
|
179
201
|
end
|
180
202
|
|
181
203
|
private
|
204
|
+
|
182
205
|
def service
|
183
|
-
@service
|
206
|
+
return @service if defined?(@service)
|
207
|
+
|
208
|
+
@service = Diplomat::Service.get(name)
|
184
209
|
end
|
185
210
|
|
186
211
|
def services
|
187
|
-
@services
|
212
|
+
return @services if defined?(@services)
|
213
|
+
|
214
|
+
@services = Diplomat::Service.get(name, :all)
|
188
215
|
end
|
189
216
|
|
190
217
|
def config
|
191
|
-
@config
|
218
|
+
return @config if defined?(@config)
|
219
|
+
|
220
|
+
@config = Aide.config.get_service(name: name)
|
192
221
|
end
|
193
222
|
end
|
194
223
|
end
|
data/lib/aide/version.rb
CHANGED
data/lib/aide.rb
CHANGED
@@ -11,7 +11,7 @@ module Aide
|
|
11
11
|
attr_writer :services
|
12
12
|
|
13
13
|
def service(name)
|
14
|
-
|
14
|
+
services[name] ||= Aide::Service.new(name: name)
|
15
15
|
end
|
16
16
|
|
17
17
|
def config
|
@@ -19,23 +19,32 @@ module Aide
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def configure(&block)
|
22
|
-
|
22
|
+
config.instance_eval(&block)
|
23
|
+
load_services
|
23
24
|
end
|
24
25
|
|
25
26
|
def display_services
|
26
|
-
load_services
|
27
|
-
|
28
27
|
puts "Aide Services (Using #{config.service_address_key}):"
|
29
|
-
|
30
|
-
|
28
|
+
|
29
|
+
services.each do |name, service|
|
30
|
+
puts "==> #{name}: #{formatted_service(service: service)}"
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
34
|
private
|
35
|
+
|
35
36
|
def load_services
|
36
|
-
|
37
|
+
config.services.each_key do |name|
|
37
38
|
service(name)
|
38
39
|
end
|
39
40
|
end
|
41
|
+
|
42
|
+
def service_port(service:)
|
43
|
+
service.port.nil? ? '' : ":#{service.port}"
|
44
|
+
end
|
45
|
+
|
46
|
+
def formatted_service(service:)
|
47
|
+
"#{service.address}#{service_port(service: service)} #{service.display_url(filtered: true)}".strip
|
48
|
+
end
|
40
49
|
end
|
41
50
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aide
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Schlesinger
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-12-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.3'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '2.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '13'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '13'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: diplomat
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -60,12 +60,19 @@ extensions: []
|
|
60
60
|
extra_rdoc_files: []
|
61
61
|
files:
|
62
62
|
- ".gitignore"
|
63
|
+
- Deskfile
|
64
|
+
- Dockerfile
|
63
65
|
- Gemfile
|
64
66
|
- README.md
|
65
67
|
- Rakefile
|
66
68
|
- aide.gemspec
|
67
69
|
- bin/console
|
68
70
|
- bin/setup
|
71
|
+
- compose.yml
|
72
|
+
- docker/chown-dirs.sh
|
73
|
+
- docker/entrypoint.sh
|
74
|
+
- docker/irbrc
|
75
|
+
- docker/tools-entrypoint.sh
|
69
76
|
- lib/aide.rb
|
70
77
|
- lib/aide/config.rb
|
71
78
|
- lib/aide/error.rb
|
@@ -89,8 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
89
96
|
- !ruby/object:Gem::Version
|
90
97
|
version: '0'
|
91
98
|
requirements: []
|
92
|
-
|
93
|
-
rubygems_version: 2.5.1
|
99
|
+
rubygems_version: 3.3.7
|
94
100
|
signing_key:
|
95
101
|
specification_version: 4
|
96
102
|
summary: A configuration helper for Diplomat
|