lambda-version-manager 0.0.14 → 0.0.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/lambda-version-manager +8 -28
- data/lib/deployer.rb +5 -1
- data/lib/project.rb +3 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 756e8755c8b012593bfc0dc95610d4fc5df98959
|
4
|
+
data.tar.gz: 3a31a6b225ae135b922d680da79e0137fbbb0ee5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f726a836018b87d78158fb12e10db831f7069d358865ba939e9071c1053315f80cabff400d645d306fd1b5721a31dd59642c9e9938851c4ea289326a8396774f
|
7
|
+
data.tar.gz: 8b56d369eb0bce581ec606b519e2ed2339600fda105c653497452ecd45de0c627410909e4aae5d168fa750d5344ad495f916c5dc0bee3654b715160bb70d1d2c
|
data/bin/lambda-version-manager
CHANGED
@@ -13,30 +13,20 @@ class GeneratorCLI < ::Thor
|
|
13
13
|
option 'artifact', banner: 'ARTIFACT', type: :string, desc: 'Deploy lambdas that use this artifact'
|
14
14
|
option 'lambda', banner: 'LAMBDA', type: :string, desc: 'Deploy lambdas with this name'
|
15
15
|
option 'account', banner: 'ACCOUNT', type: :string, desc: 'Account to deploy to', :required => true
|
16
|
-
option 'version_map_file', banner: 'VERSION_MAP_FILE', type: :string, desc: 'A java properties file mapping artifacts to update to version'
|
17
16
|
option 'deploy_all', banner: 'DEPLOY_ALL', type: :boolean, desc: 'Ignore the history therefore deploy everything included in the filter', default: false
|
18
17
|
|
19
18
|
def deploy
|
20
19
|
opts = validate_deploy(options)
|
21
|
-
|
22
|
-
|
23
|
-
File.readlines(options['version_map_file']).each do |line|
|
24
|
-
array = line.split("=")
|
25
|
-
deployer = Deployer.new(opts['deploy_all'], opts['project_path'], opts['account'], array[0].strip)
|
26
|
-
deployer.deploy(opts['environments'])
|
27
|
-
end
|
28
|
-
else
|
29
|
-
deployer = Deployer.new(opts['deploy_all'], opts['project_path'], opts['account'], opts['artifact'], opts['lambda'])
|
30
|
-
deployer.deploy(opts['environments'])
|
31
|
-
end
|
20
|
+
deployer = Deployer.new(opts['deploy_all'], opts['project_path'], opts['account'], opts['artifact'], opts['lambda'])
|
21
|
+
deployer.deploy(opts['environments'])
|
32
22
|
end
|
33
23
|
|
34
24
|
desc 'update_project', 'Update the versions'
|
35
25
|
option 'project_path', banner: 'PROJECT_PATH', type: :string, desc: 'Path to the lambda version mappings project'
|
36
26
|
option 'artifact', banner: 'ARTIFACT', type: :string, desc: 'Deploy lambdas that use this artifact'
|
37
27
|
option 'version', banner: 'VERSION', type: :string, desc: 'Version of the new artifact'
|
38
|
-
option 'version_map_file', banner: 'VERSION_MAP_FILE', type: :string, desc: 'A java properties file mapping artifacts to update to version'
|
39
28
|
option 'accounts', banner: 'ACCOUNT', type: :array, desc: 'Account to deploy to', :required => true
|
29
|
+
option 'sha1', banner: 'SHA1', type: :string, desc: 'SHA1 of the artifact'
|
40
30
|
|
41
31
|
def update_project
|
42
32
|
opts = validate_project_update(options)
|
@@ -55,31 +45,21 @@ class GeneratorCLI < ::Thor
|
|
55
45
|
end
|
56
46
|
end
|
57
47
|
|
58
|
-
|
59
|
-
if opts['version_map_file']
|
60
|
-
#for each artifact=version pair we need to call
|
61
|
-
File.readlines(opts['version_map_file']).each do |line|
|
62
|
-
array = line.split("=")
|
63
|
-
updated_files = project.update_by_artifact(lambda_env_map, array[0].strip, array[1].strip)
|
64
|
-
lambda_env_map = updated_files
|
65
|
-
end
|
66
|
-
else
|
67
|
-
lambda_env_map = project.update_by_artifact(lambda_env_map, opts['artifact'], opts['version'])
|
68
|
-
end
|
48
|
+
lambda_env_map = project.update_by_artifact(lambda_env_map, opts['artifact'], opts['version'], opts['sha1'])
|
69
49
|
project.write_new_files(lambda_env_map)
|
70
50
|
end
|
71
51
|
|
72
52
|
no_commands do
|
73
53
|
def validate_project_update(options)
|
74
|
-
unless options['
|
75
|
-
raise 'Either a
|
54
|
+
unless options['version'] && (options['lambda'] || options['artifact'])
|
55
|
+
raise 'Either a version and lambda or artifact must be specified.'
|
76
56
|
end
|
77
57
|
options.dup
|
78
58
|
end
|
79
59
|
|
80
60
|
def validate_deploy(options)
|
81
|
-
unless options['
|
82
|
-
raise 'Either a
|
61
|
+
unless options['environments'] || options['lambda'] || options['artifact']
|
62
|
+
raise 'Either a environment or lambda or artifact must be specified.'
|
83
63
|
end
|
84
64
|
options.dup
|
85
65
|
end
|
data/lib/deployer.rb
CHANGED
@@ -111,7 +111,11 @@ class Deployer
|
|
111
111
|
historic = parse_archive
|
112
112
|
historic.each do |environment, lambdas|
|
113
113
|
lambdas.each do |lambda, configs|
|
114
|
-
if new_project[environment][lambda].
|
114
|
+
if new_project[environment][lambda].has_key?('sha1')
|
115
|
+
unless configs.has_key?('sha1') && (configs['sha1'] == new_project[environment][lambda]['sha1'])
|
116
|
+
new_project[environment].delete(lambda)
|
117
|
+
end
|
118
|
+
elsif new_project[environment][lambda].eql?(configs)
|
115
119
|
new_project[environment].delete(lambda)
|
116
120
|
end
|
117
121
|
end
|
data/lib/project.rb
CHANGED
@@ -45,13 +45,14 @@ class Project
|
|
45
45
|
end
|
46
46
|
|
47
47
|
|
48
|
+
|
48
49
|
def write_new_files(lambda_env_map)
|
49
50
|
lambda_env_map.each do |env, contents|
|
50
51
|
File.write("#{project_path}/environments/#{env}.yaml", contents.to_yaml)
|
51
52
|
end
|
52
53
|
end
|
53
54
|
|
54
|
-
def update_by_artifact(lambda_env_map, artifact, version)
|
55
|
+
def update_by_artifact(lambda_env_map, artifact, version, sha1=nil)
|
55
56
|
#iterate through all lambdas and update the ones with version changes
|
56
57
|
lambda_env_map.each do |env, lambda|
|
57
58
|
pp env
|
@@ -59,6 +60,7 @@ class Project
|
|
59
60
|
lambda.each do |lambda_name, properties|
|
60
61
|
if properties['artifact_name'] == artifact
|
61
62
|
properties['version'] = version
|
63
|
+
properties['sha1'] = sha1 unless sha1.nil?
|
62
64
|
end
|
63
65
|
end
|
64
66
|
end
|