Sha256: 13147e6799a92bda5e240aca8a4806b2230c7b92f0727a59f4d0ea38218072e7

Contents?: true

Size: 1.48 KB

Versions: 1

Compression:

Stored size: 1.48 KB

Contents

module CocoaPodsGitlabLicenseReport
  require 'cocoapods-gitlab_license_report/report_generator'
  require 'cocoapods'
  require 'set'

  class PostInstallHookHandler
    def initialize(context, options, generator = nil)
      @context = context
      @options = options
      @generator = generator || ReportGenerator.new(@context)
    end

    def handle!
      Pod::UI.section 'Generating Gitlab licenses report' do

        report_path = @options["report_path"] || 'reports/licenses.json'
        excluded_pods = Set.new(@options["exclude"])

        sandbox = @context.sandbox if defined? @context.sandbox
        sandbox ||= Pod::Sandbox.new(@context.sandbox_root)

        installed_specs = @context.umbrella_targets.flat_map(&:specs).map(&:root).uniq
        licenses_report = @generator.generate(installed_specs, excluded_pods, context.sandbox)

        Dir.mkdir File.dirname(report_path) unless File.exist? File.dirname(report_path)
        File.write(report_path, licenses_report.to_json)

      end
    end
  end

  Pod::HooksManager.register('cocoapods-gitlab_license_report', :post_install) do |context, user_options|

    # Until CocoaPods provides a HashWithIndifferentAccess, normalize the hash keys here.
    # See https://github.com/CocoaPods/CocoaPods/issues/3354

    user_options.inject({}) do |normalized_hash, (key, value)|
      normalized_hash[key.to_s] = value
      normalized_hash
    end

    handler = PostInstallHookHandler.new(context, user_options)
    handler.handle!
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cocoapods-gitlab_license_report-1.0.0 lib/cocoapods-gitlab_license_report.rb