lambchop 0.1.3 → 0.1.4

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
  SHA1:
3
- metadata.gz: d607485929bdedcc55e072af39a00736661e1041
4
- data.tar.gz: e72fe6ee2862fc20f743d90a4d0510e16fcc2214
3
+ metadata.gz: af92c0434b1eaee3913c61dabd3c37ef13331bb9
4
+ data.tar.gz: fd47747f8ce5b91ac328f6657068ac66ada0623c
5
5
  SHA512:
6
- metadata.gz: 9bac84c065741bc0fcb796bef23547260b55aed61f9d270a9231a67ab456bd5369006b3d4d2335cb01f6655193e7a547cb1d33b8488147540364b6ee09095f4a
7
- data.tar.gz: 0d6761c396b2098a9f8c233b0f1943139ce67d015b56b17c6b9ec3ee1627418be06a622f8954f5de5ad7026c96bfd668a7767964f96ae6b24d1589e5a217d8fc
6
+ metadata.gz: d5cb59aadc02c8d4d3e4920bbf8b7019ba04be442620311ffb7cffd61ad5bb8f51826dfc105d75be7274da981199bd0f4065b6caf7dacaa91d416fcd5cd0940f
7
+ data.tar.gz: 5ea2cc893308c21336f04243d1e241742734769eeb48aa8970a19575f847e1c9f0b9387dacae01fcdcb91761a8e86ccafe5b7ae47f51d310205665b69fe39026
data/README.md CHANGED
@@ -38,6 +38,7 @@ timeout: 3 # default: 3
38
38
  memory_size: 128 # default: 128
39
39
  role: arn:aws:iam::NNNNNNNNNNNN:role/lambda_exec_role
40
40
  handler: test.handler
41
+ include_files: */* # default: nil
41
42
  # Handler module name is filename.
42
43
  # `handler:` is `index.handler` when filename is `index.js`
43
44
  */
@@ -179,6 +180,17 @@ START RequestId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
179
180
  └── node_modules/
180
181
  ```
181
182
 
183
+ ## Include extra files
184
+
185
+ ```javascript
186
+ #!/usr/bin/env lambchop
187
+ /*
188
+ ...
189
+ include_files: *.txt
190
+ */
191
+ ...
192
+ ```
193
+
182
194
  ## Diff
183
195
  ```sh
184
196
  $ lambchop-diff
@@ -27,6 +27,7 @@ timeout: 3 # default: 3
27
27
  memory_size: 128 # default: 128
28
28
  handler: test.handler # Module name is filename, e.g. index.js -> index.handler
29
29
  role: arn:aws:iam::NNNNNNNNNNNN:role/any_lambda_exec_role
30
+ include_files: */* # default: nil
30
31
  */
31
32
  EOS
32
33
  exit 1
@@ -21,11 +21,11 @@ class Lambchop::Client
21
21
  config, src = Lambchop::Utils.parse_magic_comment(src)
22
22
 
23
23
  config['function_name'] ||= File.basename(@path, '.js')
24
- function_name = config['function_name']
25
-
26
24
  config['runtime'] ||= 'nodejs'
25
+ function_name = config['function_name']
26
+ include_files = config.delete('include_files')
27
27
 
28
- create_or_update_function(config, src)
28
+ create_or_update_function(config, src, include_files)
29
29
 
30
30
  exit if @options[:detach]
31
31
 
@@ -37,10 +37,10 @@ class Lambchop::Client
37
37
 
38
38
  private
39
39
 
40
- def create_or_update_function(config, src)
40
+ def create_or_update_function(config, src, include_files)
41
41
  params = {}
42
42
  config.each {|k, v| params[k.to_sym] = v }
43
- buf, node_modules = zip_source(src)
43
+ buf, node_modules, extra_files = zip_source(src, include_files)
44
44
 
45
45
  begin
46
46
  params[:code] = {:zip_file => buf.string}
@@ -61,6 +61,7 @@ class Lambchop::Client
61
61
  raise e
62
62
  end
63
63
  end
64
+
64
65
  resp_h = {}
65
66
 
66
67
  [
@@ -80,13 +81,15 @@ class Lambchop::Client
80
81
 
81
82
  $stderr.puts('Function was uploaded:')
82
83
  $stderr.puts(JSON.pretty_generate(resp_h))
83
- $stderr.puts('Node modules:')
84
- $stderr.puts(JSON.pretty_generate(node_modules))
84
+ $stderr.puts('Node modules: ' + JSON.dump(node_modules))
85
+ $stderr.puts('Extra files: ' + JSON.dump(extra_files))
85
86
  end
86
87
 
87
- def zip_source(src)
88
+ def zip_source(src, include_files)
88
89
  src_dir = File.dirname(@path)
90
+ script_file = File.basename(@path)
89
91
  node_modules = []
92
+ extra_files = []
90
93
 
91
94
  Dir.glob("#{src_dir}/node_modules/**/*") do |file|
92
95
  if File.file?(file)
@@ -94,20 +97,34 @@ class Lambchop::Client
94
97
  end
95
98
  end
96
99
 
100
+ if include_files
101
+ Dir.glob(include_files) do |file|
102
+ next unless File.file?(file)
103
+ next if node_modules.include?(file)
104
+ next if file.sub(%r|\A#{src_dir}/|, '') == script_file
105
+ extra_files << file
106
+ end
107
+ end
108
+
97
109
  buf = Zip::OutputStream.write_buffer do |out|
98
- out.put_next_entry(File.basename(@path))
110
+ out.put_next_entry(script_file)
99
111
  out.write(src)
100
112
 
101
113
  node_modules.each do |file|
102
114
  out.put_next_entry(file.sub(%r|\A#{src_dir}/|, ''))
103
115
  out.write(open(file, &:read))
104
116
  end
117
+
118
+ extra_files.each do |file|
119
+ out.put_next_entry(file.sub(%r|\A#{src_dir}/|, ''))
120
+ out.write(open(file, &:read))
121
+ end
105
122
  end
106
123
 
107
124
  node_modules = node_modules.map {|file|
108
125
  file.sub(%r|\A#{src_dir}/|, '').split('/', 3)[1]
109
126
  }.uniq.sort
110
127
 
111
- [buf, node_modules]
128
+ [buf, node_modules, extra_files]
112
129
  end
113
130
  end
@@ -1,3 +1,3 @@
1
1
  module Lambchop
2
- VERSION = '0.1.3'
2
+ VERSION = '0.1.4'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lambchop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara