Sha256: 325e23346294bb1843cc8dede6e3de593e7f8807391f59412560095c813d086a

Contents?: true

Size: 1.67 KB

Versions: 2

Compression:

Stored size: 1.67 KB

Contents

#!/usr/bin/env ruby
# frozen_string_literal: false

require 'optparse'
require 'pwn'
require 'yaml'

opts = {}
OptionParser.new do |options|
  options.banner = "USAGE:
    #{$PROGRAM_NAME} [opts]
  "

  options.on('-cCONFIG', '--config=CONFG', '<Required - Black Duck Binary Analysis YAML config>') do |c|
    opts[:config] = c
  end

  options.on('-CGROUP', '--create=GROUP', '<Required - Black Duck Binary Analysis Group/Sub-Group to Create>') do |g|
    opts[:group_name] = g
  end

  options.on('-pNAME', '--parent-group=NAME', '<Optional - Black Duck Binary Analysis Parent Group Name to Associate with Group>') do |p|
    opts[:parent_group_name] = p
  end
end.parse!

if opts.empty?
  puts `#{$PROGRAM_NAME} --help`
  exit 1
end

begin
  pwn_provider = 'ruby-gem'
  pwn_provider = ENV.fetch('PWN_PROVIDER') if ENV.keys.any? { |s| s == 'PWN_PROVIDER' }

  config = opts[:config]
  raise "ERROR: BDBA YAML Config File Not Found: #{config}" unless File.exist?(config)

  yaml_config = YAML.load_file(config, symbolize_names: true)

  token = yaml_config[:token]
  raise "ERROR: BDBA Token Not Found: #{token}" if token.nil?

  group_name = opts[:group_name]
  raise "ERROR: BDBA Group Name Not Provided: #{group_name}" if group_name.nil?

  parent_group_name = opts[:parent_group_name]

  if parent_group_name
    groups_resp = PWN::Plugins::BlackDuckBinaryAnalysis.get_groups(
      token: token
    )

    parent_id = groups_resp[:groups].find { |g| g[:name] == parent_group_name }[:id]
  end

  PWN::Plugins::BlackDuckBinaryAnalysis.create_group(
    token: token,
    name: group_name,
    parent_id: parent_id
  )
rescue SystemExit, Interrupt
  puts "\nGoodbye."
rescue StandardError => e
  raise e
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pwn-0.4.750 bin/pwn_bdba_groups
pwn-0.4.749 bin/pwn_bdba_groups