polyn-cli 0.1.2 → 0.1.3
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/Gemfile.lock +1 -1
- data/bin/apply_changes.sh +8 -0
- data/lib/polyn/cli/schema_loader.rb +40 -2
- data/lib/polyn/cli/version.rb +1 -1
- data/lib/polyn/templates/Dockerfile +1 -5
- data/lib/polyn/templates/README.md +3 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4157c24284768c4e60893c3f3d7aca891e8916752ca85c6c48577ad59b9719bc
|
4
|
+
data.tar.gz: 114bb082e7f42f3db6d0efde45d4f058bb33bab652c42fc316668b6456d0e500
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c349dfca556555beaccbe06d2829378e4fb027a76651d444b3f0b0b8560237ca4f2ab8a8678be12de69eee47ade4837ca8cae405e632fbc2c5e2a5e55cbbae0d
|
7
|
+
data.tar.gz: 1d09e688a62159910697b791de37cebbd0d21f5e7078b84201854b777e0b3d22bcf93b9f034fd4d81f9125ddd32a17d683c0e0d9284a360e0ddb2e23afdd4e99
|
data/Gemfile.lock
CHANGED
@@ -0,0 +1,8 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
# We want to keep these commands out of the Docker image
|
4
|
+
# build and instead defer them till the container is run.
|
5
|
+
# terraform init may require credentials for a remote backend
|
6
|
+
# and we don't want that in the image for security reasons.
|
7
|
+
bundle exec polyn tf_init
|
8
|
+
bundle exec polyn up
|
@@ -19,26 +19,38 @@ module Polyn
|
|
19
19
|
def initialize(thor, **opts)
|
20
20
|
@thor = thor
|
21
21
|
@client = NATS.connect(Polyn::Cli.configuration.nats_servers).jetstream
|
22
|
-
@
|
22
|
+
@store_name = opts.fetch(:store_name, STORE_NAME)
|
23
|
+
@bucket = client.key_value(@store_name)
|
23
24
|
@cloud_event_schema = Polyn::Cli::CloudEvent.to_h.freeze
|
24
25
|
@events_dir = opts.fetch(:events_dir, File.join(Dir.pwd, "events"))
|
25
26
|
@events = {}
|
27
|
+
@existing_events = {}
|
26
28
|
end
|
27
29
|
|
28
30
|
def load_events
|
29
31
|
thor.say "Loading events into the Polyn event registry from '#{events_dir}'"
|
30
32
|
read_events
|
33
|
+
load_existing_events
|
31
34
|
|
32
35
|
events.each do |name, event|
|
33
36
|
bucket.put(name, JSON.generate(event))
|
34
37
|
end
|
35
38
|
|
39
|
+
delete_missing_events
|
40
|
+
|
36
41
|
true
|
37
42
|
end
|
38
43
|
|
39
44
|
private
|
40
45
|
|
41
|
-
attr_reader :thor,
|
46
|
+
attr_reader :thor,
|
47
|
+
:events,
|
48
|
+
:client,
|
49
|
+
:bucket,
|
50
|
+
:cloud_event_schema,
|
51
|
+
:events_dir,
|
52
|
+
:store_name,
|
53
|
+
:existing_events
|
42
54
|
|
43
55
|
def read_events
|
44
56
|
event_files = Dir.glob(File.join(events_dir, "/**/*.json"))
|
@@ -95,6 +107,32 @@ module Polyn
|
|
95
107
|
}),
|
96
108
|
})
|
97
109
|
end
|
110
|
+
|
111
|
+
def load_existing_events
|
112
|
+
sub = client.subscribe("#{key_prefix}.>")
|
113
|
+
|
114
|
+
loop do
|
115
|
+
msg = sub.next_msg
|
116
|
+
existing_events[msg.subject.gsub("#{key_prefix}.", "")] = msg.data
|
117
|
+
# A timeout is the only mechanism given to indicate there are no
|
118
|
+
# more messages
|
119
|
+
rescue NATS::IO::Timeout
|
120
|
+
break
|
121
|
+
end
|
122
|
+
sub.unsubscribe
|
123
|
+
end
|
124
|
+
|
125
|
+
def key_prefix
|
126
|
+
"$KV.#{store_name}"
|
127
|
+
end
|
128
|
+
|
129
|
+
def delete_missing_events
|
130
|
+
missing_events = existing_events.keys - events.keys
|
131
|
+
missing_events.each do |event|
|
132
|
+
thor.say "Deleting event #{event}"
|
133
|
+
bucket.delete(event)
|
134
|
+
end
|
135
|
+
end
|
98
136
|
end
|
99
137
|
end
|
100
138
|
end
|
data/lib/polyn/cli/version.rb
CHANGED
@@ -11,10 +11,6 @@ ADD tf ./tf
|
|
11
11
|
|
12
12
|
FROM app as dev
|
13
13
|
ENV POLYN_ENV='development'
|
14
|
-
RUN bundle exec polyn tf_init
|
15
|
-
CMD bundle exec polyn up
|
16
14
|
|
17
15
|
FROM app as prod
|
18
|
-
ENV POLYN_ENV='production'
|
19
|
-
RUN bundle exec polyn tf_init
|
20
|
-
CMD bundle exec polyn up
|
16
|
+
ENV POLYN_ENV='production'
|
@@ -81,4 +81,6 @@ Polyn expects you to keep a `./remote_state_config/backend.tf` file that configu
|
|
81
81
|
|
82
82
|
## Deployment
|
83
83
|
|
84
|
-
The default `Dockerfile` generated by [Install the Polyn CLI](https://github.com/SpiffInc/polyn-cli) can help you create an image
|
84
|
+
The default `Dockerfile` generated by [Install the Polyn CLI](https://github.com/SpiffInc/polyn-cli) can help you create an image with the latest changes and nessary environment to run polyn commands.
|
85
|
+
|
86
|
+
The `bin/apply_changes.sh` script can be used to execute the polyn commands you need to update your production NATS server. You'll need to pass in `env` variables for `NATS_SERVERS` and `NATS_CREDENTIALS`. Also any `env` variables needed to connect to your remote state storage.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: polyn-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jarod
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2022-08-
|
12
|
+
date: 2022-08-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: dotenv
|
@@ -89,6 +89,7 @@ files:
|
|
89
89
|
- LICENSE.txt
|
90
90
|
- README.md
|
91
91
|
- Rakefile
|
92
|
+
- bin/apply_changes.sh
|
92
93
|
- bin/console
|
93
94
|
- bin/setup
|
94
95
|
- exe/polyn
|