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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 47cf37130795f8925c365ee1e43cd8bf46b07687408528c9b442fe17be44e4c8
4
- data.tar.gz: 6f5ef13b185c9f9a03fb3251a3a75f5a855794e166ad2f27022987512c3e76f9
3
+ metadata.gz: cf9eda6c7aeb7daf8526aac0767993dc35471f65256855aa85b5d4c6c56a686c
4
+ data.tar.gz: 3ae5a06f601fd8322d62e598d2ea635ca94e81fa3376872a955807a2dfc819d1
5
5
  SHA512:
6
- metadata.gz: bbb43e73d5d19ebe9eb8a656c5c9900a35b725b0addf9e5571b17f2c168b2e4ad7b008a7b3d17cdcb38f45abd487d9a922b86c874f8f59e56d8509bcb676ce00
7
- data.tar.gz: 687c197af7a07504717faf13488bf546edeb1fcd08dc5af79ae3531a91f9b2929404eefae9a4dcb02298977aef7a80bffe9cb756f23f1c719abc3e7a0d374fda
6
+ metadata.gz: 0a825922fc2856960261470b9c026354c8d0e22a673e0cf67e3ad4d86315f26946f869f5b46acb3b0e21860a3ac0a86d218561fe7934affe9fe98417f5cc7bea
7
+ data.tar.gz: '0348230bb3c640c875af29374d06f0ed15c90daa36851679d773df46911b9034a84c9278035a0c96cea85bcb8bcc8b713ef98de4c1a7239b4056f24cf8771b21'
data/.gitignore CHANGED
@@ -6,6 +6,7 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ .DS_Store
9
10
 
10
11
  # rspec failure tracking
11
12
  .rspec_status
data/Gemfile.lock CHANGED
@@ -7,7 +7,7 @@ GIT
7
7
  PATH
8
8
  remote: .
9
9
  specs:
10
- modulator (0.2.0)
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.155.0)
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.48.6)
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, :app_path, :app_dir, :bucket, :stack_opts
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('.modulator').mkpath
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('.modulator/gemfile_checksum')
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('.modulator/gems')
56
- gems_zip_path = gems_path.parent.join(zip_file_name)
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=./.modulator/gems --clean`
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 = wd.join(zip_file_name)
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('.modulator/app_checksum')
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(app_path, app_zip_path).write
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}",
@@ -1,3 +1,3 @@
1
1
  module Modulator
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
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.0
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-04-29 00:00:00.000000000 Z
11
+ date: 2019-05-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler