modulator 0.2.0 → 0.2.1
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/.gitignore +1 -0
- data/Gemfile.lock +3 -3
- data/lib/modulator/lambda/aws_stack_builder.rb +4 -2
- data/lib/modulator/lambda/aws_stack_uploader.rb +17 -10
- data/lib/modulator/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf9eda6c7aeb7daf8526aac0767993dc35471f65256855aa85b5d4c6c56a686c
|
4
|
+
data.tar.gz: 3ae5a06f601fd8322d62e598d2ea635ca94e81fa3376872a955807a2dfc819d1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0a825922fc2856960261470b9c026354c8d0e22a673e0cf67e3ad4d86315f26946f869f5b46acb3b0e21860a3ac0a86d218561fe7934affe9fe98417f5cc7bea
|
7
|
+
data.tar.gz: '0348230bb3c640c875af29374d06f0ed15c90daa36851679d773df46911b9034a84c9278035a0c96cea85bcb8bcc8b713ef98de4c1a7239b4056f24cf8771b21'
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
@@ -7,7 +7,7 @@ GIT
|
|
7
7
|
PATH
|
8
8
|
remote: .
|
9
9
|
specs:
|
10
|
-
modulator (0.2.
|
10
|
+
modulator (0.2.1)
|
11
11
|
aws-sdk-cloudformation
|
12
12
|
aws-sdk-s3
|
13
13
|
puma
|
@@ -19,11 +19,11 @@ GEM
|
|
19
19
|
remote: https://rubygems.org/
|
20
20
|
specs:
|
21
21
|
aws-eventstream (1.0.3)
|
22
|
-
aws-partitions (1.
|
22
|
+
aws-partitions (1.156.0)
|
23
23
|
aws-sdk-cloudformation (1.19.0)
|
24
24
|
aws-sdk-core (~> 3, >= 3.48.2)
|
25
25
|
aws-sigv4 (~> 1.1)
|
26
|
-
aws-sdk-core (3.
|
26
|
+
aws-sdk-core (3.49.0)
|
27
27
|
aws-eventstream (~> 1.0, >= 1.0.2)
|
28
28
|
aws-partitions (~> 1.0)
|
29
29
|
aws-sigv4 (~> 1.1)
|
@@ -9,7 +9,8 @@ module AwsStackBuilder
|
|
9
9
|
LAMBDA_HANDLER_FILE_NAME = 'lambda-handler'
|
10
10
|
|
11
11
|
class << self
|
12
|
-
attr_accessor :app_name, :stack, :api_gateway_deployment, :gateway_id
|
12
|
+
attr_accessor :app_name, :stack, :api_gateway_deployment, :gateway_id
|
13
|
+
attr_accessor :app_path, :app_dir, :hidden_dir, :bucket, :stack_opts
|
13
14
|
end
|
14
15
|
|
15
16
|
def init(app_name:, bucket:, **stack_opts)
|
@@ -18,6 +19,7 @@ module AwsStackBuilder
|
|
18
19
|
@bucket = bucket
|
19
20
|
@app_path = Pathname.getwd
|
20
21
|
@app_dir = app_path.basename.to_s
|
22
|
+
@hidden_dir = '.modulator'
|
21
23
|
@stack_opts = stack_opts
|
22
24
|
@stack = Humidifier::Stack.new(name: @app_name, aws_template_format_version: '2010-09-09')
|
23
25
|
|
@@ -35,7 +37,7 @@ module AwsStackBuilder
|
|
35
37
|
def upload_files
|
36
38
|
upload_lambda_handler
|
37
39
|
puts 'Generating layers'
|
38
|
-
app_path.join(
|
40
|
+
app_path.join(hidden_dir).mkpath
|
39
41
|
upload_gems_layer
|
40
42
|
upload_app_layer
|
41
43
|
end
|
@@ -11,9 +11,7 @@ module AwsStackBuilder
|
|
11
11
|
bucket_name = Humidifier.ref("S3Bucket").reference
|
12
12
|
lambda_handler_key = LAMBDA_HANDLER_FILE_NAME + '.rb.zip'
|
13
13
|
source = <<~SOURCE
|
14
|
-
# see handler AwsApiGatewayEventHandler.call(event: event, context: context) in required file
|
15
14
|
require 'modulator/lambda/aws_lambda_handler'
|
16
|
-
Dir.chdir('/opt/ruby/lib/' + ENV['app_dir'])
|
17
15
|
SOURCE
|
18
16
|
|
19
17
|
existing_handler = S3Client.get_object(
|
@@ -47,13 +45,13 @@ module AwsStackBuilder
|
|
47
45
|
end
|
48
46
|
|
49
47
|
# calculate Gemfile checksum
|
50
|
-
checksum_path = app_path.join('
|
48
|
+
checksum_path = app_path.join(hidden_dir, 'gemfile_checksum')
|
51
49
|
old_checksum = (checksum_path.read rescue nil)
|
52
50
|
new_checksum = Digest::MD5.hexdigest(File.read(app_path.join('Gemfile.lock')))
|
53
51
|
|
54
52
|
zip_file_name = app_dir + '_gems.zip'
|
55
|
-
gems_path = app_path.join('
|
56
|
-
gems_zip_path =
|
53
|
+
gems_path = app_path.join(hidden_dir, 'gems')
|
54
|
+
gems_zip_path = app_path.join(hidden_dir, zip_file_name)
|
57
55
|
|
58
56
|
if old_checksum != new_checksum
|
59
57
|
puts '- uploading gems layer'
|
@@ -62,7 +60,7 @@ module AwsStackBuilder
|
|
62
60
|
# bundle gems
|
63
61
|
Bundler.with_clean_env do
|
64
62
|
Dir.chdir(app_path) do
|
65
|
-
`bundle install --path
|
63
|
+
`bundle install --path=./#{hidden_dir}/gems --clean`
|
66
64
|
end
|
67
65
|
end
|
68
66
|
ZipFileGenerator.new(gems_path, gems_zip_path).write
|
@@ -90,19 +88,25 @@ module AwsStackBuilder
|
|
90
88
|
end
|
91
89
|
|
92
90
|
def upload_app_layer
|
93
|
-
wd = Pathname.getwd
|
94
91
|
zip_file_name = app_dir + '.zip'
|
95
|
-
app_zip_path =
|
92
|
+
app_zip_path = app_path.join(hidden_dir, zip_file_name)
|
93
|
+
|
94
|
+
# copy app code to ruby/lib in use outside temp dir
|
95
|
+
temp_dir_name = '.modulator_temp'
|
96
|
+
ruby_lib_dirs = 'ruby/lib'
|
97
|
+
temp_path = app_path.parent.join(temp_dir_name)
|
98
|
+
temp_path.join(ruby_lib_dirs).mkpath
|
99
|
+
FileUtils.copy_entry app_path, temp_path.join(ruby_lib_dirs)
|
96
100
|
|
97
101
|
# calculate checksum for app folder
|
98
|
-
checksum_path = app_path.join('
|
102
|
+
checksum_path = app_path.join(hidden_dir, 'app_checksum')
|
99
103
|
old_checksum = (checksum_path.read rescue nil)
|
100
104
|
new_checksum = checksum(app_path)
|
101
105
|
|
102
106
|
if old_checksum != new_checksum
|
103
107
|
puts '- uploading app layer'
|
104
108
|
checksum_path.write(new_checksum)
|
105
|
-
ZipFileGenerator.new(
|
109
|
+
ZipFileGenerator.new(temp_path, app_zip_path).write
|
106
110
|
# upload zipped file
|
107
111
|
app_layer = S3Client.put_object(
|
108
112
|
bucket: bucket,
|
@@ -116,6 +120,9 @@ module AwsStackBuilder
|
|
116
120
|
app_layer = S3Client.get_object(bucket: bucket, key: zip_file_name)
|
117
121
|
end
|
118
122
|
|
123
|
+
# delete temp dir
|
124
|
+
FileUtils.remove_dir(temp_path)
|
125
|
+
|
119
126
|
add_layer(
|
120
127
|
name: app_name,
|
121
128
|
description: "App source. MD5: #{new_checksum}",
|
data/lib/modulator/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: modulator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Damir Roso
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-05-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|