self.merge_unit

in cookbooks/fb_systemd/libraries/systemd_helpers.rb [94:130]


    def self.merge_unit(default_systemd_settings, systemd_overrides)
      merged = {
        'Service' => {},
        'Unit' => {},
        'Install' => {},
      }
      default_systemd_settings.each do |k, v|
        merged[k] = v.clone
      end
      if systemd_overrides
        ['Service', 'Unit', 'Install'].each do |stanza|
          systemd_overrides[stanza]&.each do |k, override|
            default = merged[stanza][k]
            
            list = override.is_a?(Array) || default.is_a?(Array)
            if list
              merged[stanza][k] = Array(default) + Array(override)
            else
              
              merged[stanza][k] = override
            end
          end
        end
      end

      
      merged.reject! { |_k, v| v.empty? }

      
      
      ['Service', 'Unit', 'Install'].each do |stanza|
        merged[stanza] = merged[stanza].sort.to_h if merged[stanza]
      end

      merged
    end