azdeploy 1.0.4 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/azdeploy.gemspec +1 -1
  3. data/lib/build.rb +30 -0
  4. data/lib/update.rb +101 -0
  5. metadata +2 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 568d52c0cf58f450921d0c2a230008cf3e9c07ae
4
- data.tar.gz: 46f4a975b55a31ee59505564c20cee1d2e2806a7
3
+ metadata.gz: d5e3771e82e654723dfdc840a58e873ade5c2bda
4
+ data.tar.gz: fe53c029d6632d4406a22045fc53a648e663ed23
5
5
  SHA512:
6
- metadata.gz: e0233f3afcd694be9d466e0576dc8582570fae1c262134dfc4df3e7f84aa2587fa24d127a8dca1ff014489c42bbd7f54d3c83f48b226d5a912bdaa4d5b51ff50
7
- data.tar.gz: 7aaad78029ced4b08490dcfa539cde948a24614443559039331336cfef6abd30cefeae4a81b8622c9eaa19ac91b1f9a451cd1196459c0043aca9581d1e34701b
6
+ metadata.gz: 017ff1c4cea06f4a8d2f95fa6e0d7c865c06bae16641f97b1511725b4a8cb5b7881557e09dadb181a7a662a004bcab7c4ce16502401241f2d22e21e3201b079a
7
+ data.tar.gz: 4219906d1a9d11224dc33a901fd0448705f16ce112b407e344de2c6c295166d5d6fbd511e865b26244a1103b4f50480543511c617a3ae516c98a5839a7bc0ad7
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'azdeploy'
3
- s.version = '1.0.4'
3
+ s.version = '1.0.5'
4
4
  s.date = '2015-02-04'
5
5
  s.summary = 'Setup and scripting support for .Net project builds'
6
6
  s.description = 'Azure Deployment Gem. Provides easy setup and deployment scripting support for .Net project builds'
@@ -129,4 +129,34 @@ def set_version(asm, version, file_version, assembly_version, output_file)
129
129
  asm.copyright = COPYRIGHT
130
130
  asm.output_file = "src/#{output_file}Version.cs"
131
131
  asm.namespaces 'System', 'System.Reflection', 'System.Runtime.InteropServices'
132
+ end
133
+
134
+ # checks nuget dependency
135
+ def check_package_version_dependency(package_uri, package)
136
+ # retrieve package version info
137
+ version = ''
138
+ response = Net::HTTP.get_response(URI.parse(package_uri.sub('pkg', package))) # get_response takes a URI object
139
+ package_info = response.body
140
+ xml = Nokogiri::XML(package_info)
141
+ xml.xpath('//m:properties/d:IsLatestVersion').each { |e|
142
+ if e.text.to_s == 'true'
143
+ version = e.parent.xpath('d:Version').text
144
+ end
145
+ }
146
+
147
+ # grab all packages.config files
148
+ config_files = Dir.glob('**/packages.config')
149
+
150
+ # for each file match version. Return false is check fails
151
+ config_files.each{ |file|
152
+ doc = Nokogiri::XML(File.read(file))
153
+ node = doc.xpath("//*[@id=\"#{package}\"]")
154
+ if (!node.nil?)
155
+ config_version = node.attr('version').value
156
+ puts "Package: #{package} Latest Version: #{version} File: #{file} File package version: #{config_version}"
157
+ return false unless config_version.to_s == version
158
+ end
159
+ }
160
+
161
+ return true
132
162
  end
@@ -0,0 +1,101 @@
1
+ class Update
2
+
3
+ attr_accessor :dry_run
4
+ attr_accessor :env
5
+ attr_accessor :settings
6
+ attr_accessor :svc
7
+ attr_accessor :table
8
+
9
+ def initialize(env, settings, dry_run = nil)
10
+ @env = env || 'noenv'
11
+ @settings = settings
12
+ @dry_run = dry_run
13
+ end
14
+
15
+ def update
16
+ if @env == 'noenv'
17
+ puts 'Environment name required to update settings.'
18
+ return false
19
+ end
20
+
21
+ # error thrown by azure gem if these are bad
22
+ Azure.config.storage_account_name = ENV['StorageAccount']
23
+ Azure.config.storage_access_key = ENV['StorageAccountKey']
24
+ @table = ENV['ConfigSettingsTable']
25
+
26
+ puts
27
+ puts 'Updating config table...'
28
+ puts
29
+
30
+ @svc = create_table_if_not_exists
31
+
32
+ upsert_all(@settings)
33
+ end
34
+
35
+ def create_table_if_not_exists
36
+ azure_table_service = Azure::TableService.new
37
+ begin
38
+ azure_table_service.create_table(@table)
39
+ rescue
40
+ puts $!
41
+ puts "table : #{@table}"
42
+ puts
43
+ end
44
+ azure_table_service
45
+ end
46
+
47
+ def upsert_all(settings)
48
+ settings.map {|k,v|
49
+ upsert(k, v)
50
+ #echo(k)
51
+ }
52
+ end
53
+
54
+ def upsert(key, value)
55
+
56
+ # check if setting exists
57
+ result = get(key)
58
+
59
+ entity = {
60
+ "setting" => value,
61
+ :PartitionKey => @env,
62
+ :RowKey => key
63
+ }
64
+
65
+ if (result.nil?)
66
+ @svc.insert_entity(@table, entity) if @dry_run.nil?
67
+ puts ">>>>> inserted entity key: #{key} value: #{value}"
68
+ else
69
+ # don't reinsert same value
70
+ if (result.properties['setting'] != value)
71
+ @svc.delete_entity(@table, @env, key) if @dry_run.nil?
72
+ @svc.insert_entity(@table, entity) if @dry_run.nil?
73
+ puts ">>>>> Updated entity - key: #{key} value: #{value}"
74
+ else
75
+ puts "Same value: #{value} found for key: #{key}" if @dry_run.nil?
76
+ end
77
+ end
78
+
79
+ end
80
+
81
+ def get(key)
82
+
83
+ begin
84
+ result = @svc.get_entity(@table, @env, key)
85
+ rescue
86
+ puts $!
87
+ puts "key : #{key}"
88
+ puts
89
+ end
90
+
91
+ result
92
+ end
93
+
94
+ def echo(key)
95
+ entity = get(key)
96
+ if !entity.nil?
97
+ puts "echo: "
98
+ p entity.properties
99
+ end
100
+ end
101
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: azdeploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Suresh Batta
@@ -22,6 +22,7 @@ files:
22
22
  - lib/build.rb
23
23
  - lib/install.rb
24
24
  - lib/transform.rb
25
+ - lib/update.rb
25
26
  - azdeploy.gemspec
26
27
  homepage: http://rubygems.org/gems/azdeploy
27
28
  licenses: