1 # frozen_string_literal: true
3 # system.rb -- InSpec resources for system values
4 # Author: Daniel Dehennin <daniel.dehennin@ac-dijon.fr>
5 # Copyright (C) 2020 Daniel Dehennin <daniel.dehennin@ac-dijon.fr>
7 class SystemResource < Inspec.resource(1)
14 @platform = build_platform
21 family: build_platform_family,
22 name: build_platform_name,
23 release: build_platform_release,
24 finger: build_platform_finger
28 def build_platform_family
29 case inspec.platform[:name]
31 inspec.platform[:name]
33 inspec.platform[:family]
37 def build_platform_name
38 case inspec.platform[:name]
39 when 'amazon', 'oracle'
40 "#{inspec.platform[:name]}linux"
42 inspec.platform[:family]
44 inspec.platform[:name]
48 # rubocop:disable Metrics/MethodLength,Metrics/AbcSize,Metrics/CyclomaticComplexity
49 def build_platform_release
50 case inspec.platform[:name]
52 # `2018` relase is named `1` in kitchen.yaml
53 inspec.platform[:release].gsub(/2018.*/, '1')
57 "#{inspec.platform[:release].split('.')[0]}-#{derive_gentoo_init_system}"
59 # rubocop:disable Style/NumericLiterals,Layout/LineLength
60 inspec.platform[:release].to_i > 20210101 ? 'tumbleweed' : inspec.platform[:release]
61 # rubocop:enable Style/NumericLiterals,Layout/LineLength
62 when 'windows_8.1_pro'
64 when 'windows_server_2019_datacenter'
66 when 'windows_server_2016_datacenter'
69 inspec.platform[:release]
72 # rubocop:enable Metrics/MethodLength,Metrics/AbcSize,Metrics/CyclomaticComplexity
74 def derive_gentoo_init_system
75 inspec.command('systemctl').exist? ? 'sysd' : 'sysv'
78 def build_platform_finger
79 "#{build_platform_name}-#{build_finger_release}"
82 def build_finger_release
83 case inspec.platform[:name]
85 build_platform_release.split('.').slice(0, 2).join('.')
87 build_platform_release.split('.')[0]