modulator 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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