serverlessgems 0.1.4 → 0.2.0
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/CHANGELOG.md +9 -0
- data/lib/jets/gems/api/core.rb +13 -0
- data/lib/jets/gems/check.rb +14 -7
- data/lib/jets/gems/exist.rb +5 -23
- data/lib/jets/gems/extract/base.rb +4 -5
- data/lib/jets/gems/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 17849f420754066145243aefd213033867f4926967d1bfd0e530ac183731ebca
|
4
|
+
data.tar.gz: 358170e435dea0015b7440c8016be0e715dd5f111276334bd3c17ad51c49ef2d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4618ff2e516a104d98f56ce0edd5a93229f48d7d14565a289712f7edf28c484a7052c36eb5e2dae060c43852d4664d7e3d91c290713d1a6a5b67caff2f7c969
|
7
|
+
data.tar.gz: 4ab7918973479151b2200636a30547d67a9cc5eecb6fd6e178fc7000c93c837ec3801e45c796a2d11ce1d747fa65a45467399eed65220b1d76e0e7038a3a255f
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,15 @@
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/).
|
5
5
|
|
6
|
+
## [0.2.0] - 2022-07-02
|
7
|
+
- provide gems available info
|
8
|
+
|
9
|
+
## [0.1.6] - 2021-11-11
|
10
|
+
- [#5](https://github.com/boltops-tools/serverlessgems/pull/5) fix gem regexp detection for 2021 macbook m1 chip
|
11
|
+
|
12
|
+
## [0.1.5] - 2021-08-31
|
13
|
+
- [#4](https://github.com/boltops-tools/serverlessgems/pull/4) Don't create a file if the download fails
|
14
|
+
|
6
15
|
## [0.1.4] - 2021-07-15
|
7
16
|
- [#3](https://github.com/boltops-tools/serverlessgems/pull/3) gems/registered api
|
8
17
|
|
data/lib/jets/gems/api/core.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require "aws-sdk-core"
|
2
|
+
|
1
3
|
class Jets::Gems::Api
|
2
4
|
module Core
|
3
5
|
extend Memoist
|
@@ -23,6 +25,7 @@ class Jets::Gems::Api
|
|
23
25
|
|
24
26
|
def set_headers!(req)
|
25
27
|
req['Authorization'] = token if token
|
28
|
+
req['x-account'] = account if account
|
26
29
|
req['Content-Type'] = "application/vnd.api+json"
|
27
30
|
end
|
28
31
|
|
@@ -77,5 +80,15 @@ class Jets::Gems::Api
|
|
77
80
|
def delete(path, data={})
|
78
81
|
request(Net::HTTP::Delete, path, data)
|
79
82
|
end
|
83
|
+
|
84
|
+
def account
|
85
|
+
sts.get_caller_identity.account rescue nil
|
86
|
+
end
|
87
|
+
memoize :account
|
88
|
+
|
89
|
+
def sts
|
90
|
+
Aws::STS::Client.new
|
91
|
+
end
|
92
|
+
memoize :sts
|
80
93
|
end
|
81
94
|
end
|
data/lib/jets/gems/check.rb
CHANGED
@@ -26,7 +26,8 @@ module Jets::Gems
|
|
26
26
|
compiled_gems.each do |gem_name|
|
27
27
|
puts "Checking #{gem_name}..." if @options[:verbose]
|
28
28
|
exist = Jets::Gems::Exist.new
|
29
|
-
|
29
|
+
data = exist.check(gem_name)
|
30
|
+
@missing_gems << data unless data["exist"]
|
30
31
|
end
|
31
32
|
|
32
33
|
if exit_early && !@missing_gems.empty?
|
@@ -34,7 +35,8 @@ module Jets::Gems
|
|
34
35
|
# Better to error now than deploy a broken package to AWS Lambda.
|
35
36
|
# Provide users with message about using their own serverlessgems source.
|
36
37
|
puts missing_message
|
37
|
-
|
38
|
+
names = @missing_gems.map {|i| i['gem_name']}
|
39
|
+
Report.new(@options).report(names) if agree.yes?
|
38
40
|
exit 1
|
39
41
|
end
|
40
42
|
|
@@ -48,10 +50,11 @@ module Jets::Gems
|
|
48
50
|
def missing_message
|
49
51
|
template = <<-EOL
|
50
52
|
Your project requires compiled gems that are not currently available. Unavailable pre-compiled gems:
|
51
|
-
<% missing_gems.each do |
|
52
|
-
|
53
|
+
<% missing_gems.each do |missing_gem|
|
54
|
+
available = missing_gem['available'].reject { |v| missing_gem['gem_name'].include?(v) }
|
55
|
+
%>
|
56
|
+
* Unavailable: <%= missing_gem['gem_name'] -%> Available versions: <%= available.join(' ') %>
|
53
57
|
<% end %>
|
54
|
-
|
55
58
|
Your current serverlessgems source: #{gems_source}
|
56
59
|
|
57
60
|
Jets is unable to build a deployment package that will work on AWS Lambda without the required pre-compiled gems. To remedy this, you can:
|
@@ -148,9 +151,13 @@ EOL
|
|
148
151
|
# /tmp/jets/demo/stage/opt/ruby/gems/2.7.0/gems/nokogiri-1.11.1-x86_64-darwin
|
149
152
|
# /tmp/jets/demo/stage/opt/ruby/gems/2.7.0/gems/nokogiri-1.11.1-x86_64-linux
|
150
153
|
#
|
154
|
+
# On new 2021 macbook with m1 chip: the gems are being saved in a folder like so:
|
155
|
+
# nokogiri-1.12.5-arm64-darwin
|
156
|
+
# The GEM_REGEXP accounts for this case.
|
157
|
+
GEM_REGEXP = /-(arm|x)\d+.*-(darwin|linux)/
|
151
158
|
def other_compiled_gems
|
152
159
|
paths = Dir.glob("#{Jets.build_root}/stage/opt/ruby/gems/#{Jets::Gems.ruby_folder}/gems/*{-darwin,-linux}")
|
153
|
-
paths.map { |p| File.basename(p).sub(
|
160
|
+
paths.map { |p| File.basename(p).sub(GEM_REGEXP,'') }
|
154
161
|
end
|
155
162
|
|
156
163
|
def registered_compiled_gems
|
@@ -158,7 +165,7 @@ EOL
|
|
158
165
|
registered_gems = registered.all # no version numbers in this list
|
159
166
|
|
160
167
|
paths = Dir.glob("#{Jets.build_root}/stage/opt/ruby/gems/#{Jets::Gems.ruby_folder}/gems/*")
|
161
|
-
project_gems = paths.map { |p| File.basename(p).sub(
|
168
|
+
project_gems = paths.map { |p| File.basename(p).sub(GEM_REGEXP,'') }
|
162
169
|
project_gems.select do |name|
|
163
170
|
name_only = name.sub(/-\d+\.\d+\.\d+.*/,'')
|
164
171
|
registered_gems.include?(name_only)
|
data/lib/jets/gems/exist.rb
CHANGED
@@ -2,29 +2,11 @@ module Jets::Gems
|
|
2
2
|
class Exist
|
3
3
|
include Jets::Gems::Api::Concern
|
4
4
|
|
5
|
-
#
|
6
|
-
|
7
|
-
|
8
|
-
# Examples:
|
9
|
-
#
|
10
|
-
# check(single_gem)
|
11
|
-
# check(list, of, gems)
|
12
|
-
def check(*gem_names)
|
13
|
-
gem_names = gem_names.flatten
|
14
|
-
exists = gem_names.inject({}) do |hash, gem_name|
|
15
|
-
exist = gem_exist?(gem_name)
|
16
|
-
hash[gem_name] = exist
|
17
|
-
hash.merge(hash)
|
18
|
-
end
|
19
|
-
|
20
|
-
exists.values.all? {|v| v } # all_exist
|
21
|
-
end
|
22
|
-
|
23
|
-
def gem_exist?(gem_name)
|
24
|
-
data = api.check_exist(gem_name: gem_name)
|
25
|
-
data["exist"]
|
5
|
+
# gem_name IE: nokogiri-1.1.1
|
6
|
+
def check(gem_name)
|
7
|
+
api.check_exist(gem_name: gem_name) # data = {"exist": ..., "available"}
|
26
8
|
rescue SocketError, OpenURI::HTTPError, OpenSSL::SSL::SSLError
|
27
|
-
false
|
9
|
+
{"exist" => false, gem_name: gem_name, available: [] }
|
28
10
|
end
|
29
11
|
end
|
30
|
-
end
|
12
|
+
end
|
@@ -41,13 +41,12 @@ module Jets::Gems::Extract
|
|
41
41
|
end
|
42
42
|
|
43
43
|
say "Downloading..."
|
44
|
+
downloaded = URI.open(url, 'rb') { |read_file| read_file.read }
|
45
|
+
|
44
46
|
FileUtils.mkdir_p(File.dirname(dest)) # ensure parent folder exists
|
45
47
|
|
46
|
-
File.open(dest, 'wb')
|
47
|
-
|
48
|
-
saved_file.write(read_file.read)
|
49
|
-
end
|
50
|
-
end
|
48
|
+
File.open(dest, 'wb') { |saved_file| saved_file.write(downloaded) }
|
49
|
+
|
51
50
|
dest
|
52
51
|
end
|
53
52
|
|
data/lib/jets/gems/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: serverlessgems
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tung Nguyen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-07-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gems
|
@@ -146,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
146
146
|
- !ruby/object:Gem::Version
|
147
147
|
version: '0'
|
148
148
|
requirements: []
|
149
|
-
rubygems_version: 3.
|
149
|
+
rubygems_version: 3.3.10
|
150
150
|
signing_key:
|
151
151
|
specification_version: 4
|
152
152
|
summary: Client Library works with Serverless Gems API for Jets Ruby Serverless Framework
|