#!/usr/bin/env ruby # TODO: push these changes to licensor gem require "bundler/setup" require "licensed/cli" require "optparse" module Licensed module Source class Filesystem attr_reader :type def initialize(glob, type: "directory") @glob = glob @type = type end def enabled? !Dir.glob(@glob).empty? end def dependencies Dir.glob(@glob).map do |directory| puts "caching #{directory}" Licensed::Dependency.new(directory, { "type" => type, "name" => File.basename(directory) }) end end end end end module_path = nil OptionParser.new do |opts| opts.on("-mPATH", "--module=PATH", "Cache license file for specific grammar") do |p| module_path = p end end.parse! source = Licensed::Source::Filesystem.new(module_path || "#{File.expand_path("../", File.dirname(__FILE__))}/vendor/grammars/*/", type: "grammar") config = Licensed::Configuration.load_from(File.expand_path("../vendor/licenses/config.yml", File.dirname(__FILE__))) config.sources << source command = if ARGV[0] == "status" Licensed::Command::Status.new(config) else Licensed::Command::Cache.new(config) end command.run `git checkout -- vendor/licenses/grammar/` if module_path exit command.success?