# frozen_string_literal: true module RubyEasyRSA module Commands module Mixins module SSLConfig private # rubocop:disable Style/RedundantAssignment # rubocop:disable Metrics/MethodLength # rubocop:disable Metrics/AbcSize def configure_command(initial_builder, parameters) builder = super builder = with_digest( builder, parameters[:digest] ) builder = with_expires_in_days( builder, parameters[:expires_in_days] ) builder = with_key_size_in_bits( builder, parameters[:key_size_in_bits] ) builder = with_distinguished_name_mode( builder, parameters[:distinguished_name_mode] ) builder = with_common_name( builder, parameters[:common_name] ) builder = with_country( builder, parameters[:country] ) builder = with_province( builder, parameters[:province] ) builder = with_city( builder, parameters[:city] ) builder = with_organisation( builder, parameters[:organisation] ) builder = with_organisational_unit( builder, parameters[:organisational_unit] ) builder = with_email( builder, parameters[:email] ) builder end # rubocop:enable Metrics/AbcSize # rubocop:enable Metrics/MethodLength # rubocop:enable Style/RedundantAssignment def with_digest(builder, digest) return builder unless digest builder.with_option('--digest', digest) end def with_expires_in_days(builder, expires_in_days) return builder unless expires_in_days builder.with_option('--days', expires_in_days) end def with_key_size_in_bits(builder, key_size_in_bits) return builder unless key_size_in_bits builder.with_option('--keysize', key_size_in_bits) end def with_distinguished_name_mode(builder, distinguished_name_mode) return builder unless distinguished_name_mode builder.with_option('--dn-mode', distinguished_name_mode) end def with_common_name(builder, common_name) return builder unless common_name builder.with_option('--req-cn', common_name, quoting: '"') end def with_country(builder, country) return builder unless country builder.with_option('--req-c', country, quoting: '"') end def with_province(builder, province) return builder unless province builder.with_option('--req-st', province, quoting: '"') end def with_city(builder, city) return builder unless city builder.with_option('--req-city', city, quoting: '"') end def with_organisation(builder, organisation) return builder unless organisation builder.with_option('--req-org', organisation, quoting: '"') end def with_organisational_unit(builder, organisational_unit) return builder unless organisational_unit builder.with_option('--req-ou', organisational_unit, quoting: '"') end def with_email(builder, email) return builder unless email builder.with_option('--req-email', email) end end end end end