class VersionMap
Use case #1: Generate and returns a unique list of all packages and their versions for a given repository Example: 10.0.0(obtained from semver) version map will look like: { "RelayHealth.DataPlatform.Framework" => { "Version" => "10.0.0" "RelayHealth.DataPlatform.Contracts" => "10.0.0", "Windows.Azure.Storage" => "4.3.0" ... } } When solution uses using individual package versioning, version map still like above because framework forms the root of all dependencies. This can be maintained static by parsing once and saving to a github repo or can be done realtime. Processing time is minimal, DP repo checkout time may actually be longer. 1. Checkout repo 2. Scan packages.config files for packages and versions and store in array 3. Uniquefy list to a hash map and return
end¶ ↑
Constants
- VERSIONMAPFILE
Public Instance Methods
get_semver(semver)
click to toggle source
# File lib/version_map.rb, line 106 def get_semver semver ver = load_semver File.join('versioning', semver) # remove 'v' at start of string which isn't expected for version spec in .package and .csproj files v = ver.to_s.sub 'v', '' v end
load_semver(path)
click to toggle source
# File lib/version_map.rb, line 100 def load_semver path v = SemVer.new v.load path v end
update_platform_multiple_semver_package_versions(versions)
click to toggle source
# File lib/version_map.rb, line 83 def update_platform_multiple_semver_package_versions versions versions['RelayHealth.DataPlatform.Contracts'] = get_semver 'Contracts.semver' versions['RelayHealth.DataPlatform.Framework'] = get_semver 'Framework.semver' versions['RelayHealth.DataPlatform.Framework.Messaging'] = get_semver 'Framework.Messaging.semver' versions['RelayHealth.DataPlatform.Framework.Web'] = get_semver 'Framework.Web.semver' versions['RelayHealth.DataPlatform.Identity'] = get_semver 'Identity.semver' versions['RelayHealth.DataPlatform.Management'] = get_semver 'Management.semver' versions['RelayHealth.DataPlatform.Management.Tools'] = get_semver 'Management.semver' versions['RelayHealth.DataPlatform.Test'] = get_semver 'Test.semver' versions['RelayHealth.DataPlatform.Test.Messaging'] = get_semver 'Test.Messaging.semver' versions['RelayHealth.DataPlatform.Test.Bvt'] = get_semver 'Test.Bvt.semver' versions['RelayHealth.DataPlatform.Runtime'] = get_semver 'Runtime.semver' versions['RelayHealth.DataPlatform.Runtime.Host'] = get_semver 'Runtime.semver' versions end
update_platform_single_semver_package_versions(versions)
click to toggle source
# File lib/version_map.rb, line 66 def update_platform_single_semver_package_versions versions ver = load_semver '.semver' v = ver.to_s.sub 'v', '' # removes 'v' at start of string which isn't expected for version spec in .package and .csproj files version = v versions['RelayHealth.DataPlatform.Contracts'] = version versions['RelayHealth.DataPlatform.Framework'] = version versions['RelayHealth.DataPlatform.Framework.Messaging'] = version versions['RelayHealth.DataPlatform.Framework.Web'] = version versions['RelayHealth.DataPlatform.Identity'] = version versions['RelayHealth.DataPlatform.Management'] = version versions['RelayHealth.DataPlatform.Management.Tools'] = version versions['RelayHealth.DataPlatform.Test'] = version versions['RelayHealth.DataPlatform.Test.Messaging'] = version versions end
version_map(repo_url, branch)
click to toggle source
# File lib/version_map.rb, line 28 def version_map repo_url, branch return if repo_url.to_s.strip.length == 0 return if branch.to_s.strip.length == 0 return if !GithubApi.CheckoutRepoAfresh repo_url, branch # load old versions old_versions = {} if File.exists? VERSIONMAPFILE old_versions = JSON.parse File.read(VERSIONMAPFILE) end # grab all packages.config files versions = {} pkg_files = Dir.glob '**/packages.config' pkg_files.each{ |file| #puts "Finding packages in: #{file}" doc = Nokogiri::XML File.read(file) nodes = doc.xpath "//*[@id]" nodes.each { |node| puts "======Error: Package #{node['id']} with version #{node['version']} has a different pre-exisiting version: #{versions[node['id']]}" if (!versions[node['id']].nil? && node['version'] != versions[node['id']]) versions[node['id']] = node['version'] } } if Dir.exist? 'versioning' update_platform_multiple_semver_package_versions versions else update_platform_single_semver_package_versions versions end Dir.chdir GlobalConstants::PARENTDIR File.write VERSIONMAPFILE, versions.to_json versions end