Sha256: 8abca2899d5ec532a622a719d61176b2ffc82f79c0387a3f90b467bccbabbb75

Contents?: true

Size: 1.84 KB

Versions: 20

Compression:

Stored size: 1.84 KB

Contents

# encoding: utf-8

require 'pathname'
require_relative 'renderer'

module InspecPlugins
  module Init
    class CLI < Inspec.plugin(2, :cli_command)
      #-------------------------------------------------------------------#
      #                     inspec init profile
      #-------------------------------------------------------------------#
      def self.valid_profile_platforms
        # Look in the 'template/profiles' directory and detect which platforms are available.
        profile_templates_dir = File.join(TEMPLATES_PATH, 'profiles')
        Dir.glob(File.join(profile_templates_dir, '*')).select { |p| File.directory?(p) }.map { |d| File.basename(d) }
      end

      no_commands do
        def valid_profile_platforms
          self.class.valid_profile_platforms
        end
      end

      desc 'profile [OPTIONS] NAME', 'Generate a new profile'
      option :platform, default: 'os', type: :string, aliases: [:p],
             desc: "Which platform to generate a profile for: choose from #{valid_profile_platforms.join(', ')}"
      option :overwrite, type: :boolean, default: false,
             desc: 'Overwrites existing directory'
      def profile(new_profile_name)
        unless valid_profile_platforms.include?(options[:platform])
          ui.error "Unable to generate profile: No template available for platform '#{options[:platform]}' (expected one of: #{valid_profile_platforms.join(', ')})"
          ui.exit(:usage_error)
        end
        template_path = File.join('profiles', options[:platform])

        render_opts = {
          templates_path: TEMPLATES_PATH,
          overwrite: options[:overwrite],
        }
        renderer = InspecPlugins::Init::Renderer.new(ui, render_opts)

        vars = {
          name: new_profile_name,
        }
        renderer.render_with_values(template_path, 'profile', vars)
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 2 rubygems

Version Path
inspec-core-4.3.2 lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb
inspec-4.3.2 lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb
inspec-core-4.2.0.preview lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb
inspec-4.2.0.preview lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb
inspec-core-4.1.4.preview lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb
inspec-4.1.4.preview lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb
inspec-core-3.9.3 lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb
inspec-3.9.3 lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb
inspec-core-3.9.0 lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb
inspec-3.9.0 lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb
inspec-core-3.7.11 lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb
inspec-3.7.11 lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb
inspec-core-3.7.1 lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb
inspec-3.7.1 lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb
inspec-core-3.6.6 lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb
inspec-3.6.6 lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb
inspec-core-3.6.4 lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb
inspec-3.6.4 lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb
inspec-core-3.6.2 lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb
inspec-3.6.2 lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb