summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJarek Prokop <jprokop@redhat.com>2022-11-22 10:59:00 +0100
committerJarek Prokop <jprokop@redhat.com>2022-11-22 10:59:00 +0100
commitc57499eaa02f9b7a4ee5fcb738cab26737c8d96f (patch)
treec59a215b5ba16eb74673b11e6a612a60c6bebba0
parent864c20deb35ca5c40501a28e30d14c44acc879f1 (diff)
downloadspdx_rubygems-c57499eaa02f9b7a4ee5fcb738cab26737c8d96f.tar.gz
spdx_rubygems-c57499eaa02f9b7a4ee5fcb738cab26737c8d96f.tar.xz
spdx_rubygems-c57499eaa02f9b7a4ee5fcb738cab26737c8d96f.zip
New data output.
-rw-r--r--fedora2spdx.rb68
-rw-r--r--rubygems_fedora_gem2rpm_matches.csv294
-rw-r--r--rubygems_fedora_spdx_state.csv489
-rw-r--r--rubygems_fedora_valid_no_action.csv291
-rw-r--r--rubygems_fedora_valid_spdx.csv334
5 files changed, 1453 insertions, 23 deletions
diff --git a/fedora2spdx.rb b/fedora2spdx.rb
index 6fe80de..7e11173 100644
--- a/fedora2spdx.rb
+++ b/fedora2spdx.rb
@@ -45,16 +45,27 @@ class ThreadWorker
@worker_pool.map(&:value).flatten(1)
end
+ class CommandError < StandardError
+ attr_reader :status, :stdout, :stderr
+
+ def initialize(msg, stdout, stderr, status)
+ super msg
+ @stdout = stdout
+ @stderr = stderr
+ @status = status
+ end
+ end
+
class << self
def execute(command, pwd: nil)
options = {}
options[:chdir] = pwd if pwd
- puts "Executing: #{command}"
+ $stderr.puts "Executing: #{command}"
stdout, stderr, status = Open3.capture3(command, options)
- raise "Failed command, stderr: #{stderr}, stdout: #{stdout}, cmd: #{command}" unless status.success?
+ raise CommandError.new("Command failed: #{command}", stdout, stderr, status.exitstatus) unless status.success?
- stdout
+ status.exitstatus
end
end
end
@@ -206,38 +217,49 @@ end
ret = res.map do |arr|
gem2rpm_name = arr[0]
gem2rpm_ver = arr[1]
- gem2rpm_license = arr[2]
+ gem2rpm_license = arr[2]&.strip
gem2rpm_license_file = arr[3]
fedora_gem = csv.find { |row| row["gem_name"] == gem2rpm_name }
fedora_name = fedora_gem["gem_name"]
- fedora_license = fedora_gem["fedora_license"]
+ fedora_license = fedora_gem["fedora_license"]&.strip
fedora_gem_license = fedora_gem["gem_license"]
raise "The names of gems differ. Leading me to this is gem2rpm: #{gem2rpm_name} fedora: #{fedora_name}" if gem2rpm_name != fedora_name
str = ''
if fedora_license == fedora_gem_license && fedora_license == gem2rpm_license
- str = "fedora matches gem2rpm"
- # validate_mit_text(gem_path, license_file_name)
- if fedora_license =~ /MIT/ && gem2rpm_license_file && !gem2rpm_license_file.empty?
- str += ";" + licensee_mit(Dir["rubygem-#{fedora_name}/#{fedora_name}*.gem"].sort.first, gem2rpm_license_file)
- elsif fedora_license =~ /MIT/
- str += ";" + "inspection required, MIT without licensefile detected"
- elsif fedora_license == "BSD-2-Clause" || fedora_license == "BSD-3-Clause" || fedora_license == "Apache-2.0"
- str += ";" + "Valid SPDX ID, no intervention required."
- else
- begin
- # ThreadWorker.execute("license-validate #{fedora_license}")
- str += ';' + licensee_general(Dir["rubygem-#{fedora_name}/#{fedora_name}*.gem"].sort.first, gem2rpm_license_file)
- rescue RuntimeError => e
- puts e.message
- end
- end
+ # Matches
+ str = true.to_s
+
+ res = begin
+ status = ThreadWorker.execute("license-validate \"#{fedora_license}\"").to_s
+ "#{status}"
+ rescue ThreadWorker::CommandError => e
+ "#{e.status}"
+ end
+
+ str += ";" + res
+
str
else
- str = "Fedora does not match gem2rpm" + ";" + "Inspection needed"
+ # Doesn't match
+ str = false.to_s + ";" + begin
+ status = ThreadWorker.execute("license-validate \"#{fedora_license}\"").to_s
+ "#{status}"
+ rescue ThreadWorker::CommandError => e
+ if e.status == 1 then "#{e.status}" else "#{e.stderr}######{e.stdout}" end
+ end
end
str + ";" + fedora_name + ";" + fedora_license.to_s + ";" + gem2rpm_license.to_s
end
-puts ret.sort.unshift("matches;action;gem_name;fedora_license;gem2rpm_license")
+final = ret.sort { |a, b| c = a.split(";"); d = b.split(";"); c[1] <=> d[1] }.unshift("gem2rpm_and_fedora_matches?;license_validate_exit_code;gem_name;fedora_license;gem2rpm_license")
+puts final
+# The state of Fedora Rubygems (excl a few that dont have gem as their source in Fedora lookaside cache)
+File.write("rubygems_fedora_spdx_state.csv", final.join("\n"))
+# Where Fedora license == gem2rpm
+File.write("rubygems_fedora_gem2rpm_matches.csv", final.find_all { |a| a.split(";")[0] == "true" }.join("\n"))
+# Where license-check returns 0
+File.write("rubygems_fedora_valid_spdx.csv", final.find_all { |a| a.split(";")[1] == "0" }.join("\n"))
+# Licenses where we know there is valid SPDX and the licenses match
+File.write("rubygems_fedora_valid_no_action.csv", final.find_all { |a| b = a.split(";"); b[0] == "true" && b[1] == "0" }.join("\n"))
diff --git a/rubygems_fedora_gem2rpm_matches.csv b/rubygems_fedora_gem2rpm_matches.csv
new file mode 100644
index 0000000..e23a760
--- /dev/null
+++ b/rubygems_fedora_gem2rpm_matches.csv
@@ -0,0 +1,294 @@
+true;0;Ascii85;MIT;MIT
+true;0;Platform;MIT;MIT
+true;0;RedCloth;MIT;MIT
+true;0;ZenTest;MIT;MIT
+true;0;abrt;MIT;MIT
+true;0;actioncable;MIT;MIT
+true;0;actionmailbox;MIT;MIT
+true;0;actionmailer;MIT;MIT
+true;0;actionpack;MIT;MIT
+true;0;actiontext;MIT;MIT
+true;0;actionview;MIT;MIT
+true;0;activejob;MIT;MIT
+true;0;activemodel;MIT;MIT
+true;0;activemodel-serializers-xml;MIT;MIT
+true;0;activerecord;MIT;MIT
+true;0;activeresource;MIT;MIT
+true;0;activestorage;MIT;MIT
+true;0;activesupport;MIT;MIT
+true;0;acts_as_list;MIT;MIT
+true;0;afm;MIT;MIT
+true;0;algorithms;MIT;MIT
+true;0;arel;MIT;MIT
+true;0;asciidoctor-pdf;MIT;MIT
+true;0;async_sinatra;MIT;MIT
+true;0;backports;MIT;MIT
+true;0;base32;MIT;MIT
+true;0;benchmark-ips;MIT;MIT
+true;0;bindex;MIT;MIT
+true;0;bootsnap;MIT;MIT
+true;0;bson;Apache-2.0;Apache-2.0
+true;0;builder;MIT;MIT
+true;0;bundler;MIT;MIT
+true;0;bundler_ext;MIT;MIT
+true;0;capybara;MIT;MIT
+true;0;chake;MIT;MIT
+true;0;childprocess;MIT;MIT
+true;0;chronic;MIT;MIT
+true;0;chunky_png;MIT;MIT
+true;0;cinch;MIT;MIT
+true;0;clockwork;MIT;MIT
+true;0;codeclimate-test-reporter;MIT;MIT
+true;0;coderay;MIT;MIT
+true;0;coffee-script;MIT;MIT
+true;0;coffee-script-source;MIT;MIT
+true;0;color;MIT;MIT
+true;0;colorator;MIT;MIT
+true;0;concurrent-ruby;MIT;MIT
+true;0;connection_pool;MIT;MIT
+true;0;coveralls;MIT;MIT
+true;0;crack;MIT;MIT
+true;0;crass;MIT;MIT
+true;0;css_parser;MIT;MIT
+true;0;cucumber;MIT;MIT
+true;0;cucumber-core;MIT;MIT
+true;0;cucumber-create-meta;MIT;MIT
+true;0;cucumber-cucumber-expressions;MIT;MIT
+true;0;cucumber-gherkin;MIT;MIT
+true;0;cucumber-messages;MIT;MIT
+true;0;cucumber-tag-expressions;MIT;MIT
+true;0;cucumber-wire;MIT;MIT
+true;0;daemon_controller;MIT;MIT
+true;0;dalli;MIT;MIT
+true;0;deep_merge;MIT;MIT
+true;0;diffy;MIT;MIT
+true;0;docile;MIT;MIT
+true;0;ed25519;MIT;MIT
+true;0;em-http-request;MIT;MIT
+true;0;em-websocket;MIT;MIT
+true;0;em-websocket-client;MIT;MIT
+true;0;erubi;MIT;MIT
+true;0;ethon;MIT;MIT
+true;0;excon;MIT;MIT
+true;0;execjs;MIT;MIT
+true;0;factory_bot;MIT;MIT
+true;0;fake_ftp;MIT;MIT
+true;0;fakefs;MIT;MIT
+true;0;faraday;MIT;MIT
+true;0;flexmock;MIT;MIT
+true;0;fog-core;MIT;MIT
+true;0;fog-json;MIT;MIT
+true;0;fog-libvirt;MIT;MIT
+true;0;fog-xml;MIT;MIT
+true;0;foreigner;MIT;MIT
+true;0;forwardable-extended;MIT;MIT
+true;0;gem-nice-install;MIT;MIT
+true;0;generator_spec;MIT;MIT
+true;0;gist;MIT;MIT
+true;0;git;MIT;MIT
+true;0;globalid;MIT;MIT
+true;0;glu;MIT;MIT
+true;0;glut;MIT;MIT
+true;0;gssapi;MIT;MIT
+true;0;guard;MIT;MIT
+true;0;guard-compat;MIT;MIT
+true;0;guard-livereload;MIT;MIT
+true;0;guard-shell;MIT;MIT
+true;0;hashdiff;MIT;MIT
+true;0;hashie;MIT;MIT
+true;0;hikidoc;MIT;MIT
+true;0;hitimes;ISC;ISC
+true;0;hoe;MIT;MIT
+true;0;htmlentities;MIT;MIT
+true;0;http-accept;MIT;MIT
+true;0;http-cookie;MIT;MIT
+true;0;http_parser.rb;MIT;MIT
+true;0;httparty;MIT;MIT
+true;0;i18n_data;MIT;MIT
+true;0;image_processing;MIT;MIT
+true;0;importmap-rails;MIT;MIT
+true;0;introspection;MIT;MIT
+true;0;ipaddress;MIT;MIT
+true;0;isolate;MIT;MIT
+true;0;jbuilder;MIT;MIT
+true;0;jekyll;MIT;MIT
+true;0;jekyll-asciidoc;MIT;MIT
+true;0;jekyll-email-protect;MIT;MIT
+true;0;jekyll-feed;MIT;MIT
+true;0;jekyll-git-authors;MIT;MIT
+true;0;jekyll-sass-converter;MIT;MIT
+true;0;jekyll-seo-tag;MIT;MIT
+true;0;jekyll-toc;MIT;MIT
+true;0;jekyll-watch;MIT;MIT
+true;0;jquery-rails;MIT;MIT
+true;0;json_spec;MIT;MIT
+true;0;kramdown;MIT;MIT
+true;0;kramdown-parser-gfm;MIT;MIT
+true;0;kramdown-syntax-coderay;MIT;MIT
+true;0;launchy;ISC;ISC
+true;0;linked-list;MIT;MIT
+true;0;liquid;MIT;MIT
+true;0;listen;MIT;MIT
+true;0;loofah;MIT;MIT
+true;0;lumberjack;MIT;MIT
+true;0;mail;MIT;MIT
+true;0;marc;MIT;MIT
+true;0;mechanize;MIT;MIT
+true;0;memfs;MIT;MIT
+true;0;mercenary;MIT;MIT
+true;0;metaclass;MIT;MIT
+true;0;method_source;MIT;MIT
+true;0;mime-types;MIT;MIT
+true;0;mime-types-data;MIT;MIT
+true;0;mimemagic;MIT;MIT
+true;0;mini_magick;MIT;MIT
+true;0;mini_mime;MIT;MIT
+true;0;mini_portile;MIT;MIT
+true;0;mini_portile2;MIT;MIT
+true;0;minima;MIT;MIT
+true;0;minitest;MIT;MIT
+true;0;minitest-around;MIT;MIT
+true;0;minitest-profile;MIT;MIT
+true;0;minitest-stub-const;MIT;MIT
+true;0;mizuho;MIT;MIT
+true;0;mongoid;MIT;MIT
+true;0;more_core_extensions;MIT;MIT
+true;0;multi_json;MIT;MIT
+true;0;multi_test;MIT;MIT
+true;0;multi_xml;MIT;MIT
+true;0;multipart-post;MIT;MIT
+true;0;mustache;MIT;MIT
+true;0;mustermann;MIT;MIT
+true;0;mysql2;MIT;MIT
+true;0;nenv;MIT;MIT
+true;0;nesty;MIT;MIT
+true;0;net-http-digest_auth;MIT;MIT
+true;0;net-http-persistent;MIT;MIT
+true;0;net-ldap;MIT;MIT
+true;0;net-scp;MIT;MIT
+true;0;net-ssh;MIT;MIT
+true;0;netrc;MIT;MIT
+true;0;notiffany;MIT;MIT
+true;0;opengl;MIT;MIT
+true;0;optimist;MIT;MIT
+true;0;ox;MIT;MIT
+true;0;parallel;MIT;MIT
+true;0;parseconfig;MIT;MIT
+true;0;pastel;MIT;MIT
+true;0;pathutil;MIT;MIT
+true;0;pdf-reader;MIT;MIT
+true;0;pdfkit;MIT;MIT
+true;0;plist;MIT;MIT
+true;0;polyglot;MIT;MIT
+true;0;posix-spawn;MIT;MIT
+true;0;powerpack;MIT;MIT
+true;0;prawn-svg;MIT;MIT
+true;0;progressbar;MIT;MIT
+true;0;pry;MIT;MIT
+true;0;pry-byebug;MIT;MIT
+true;0;puma;BSD-3-Clause;BSD-3-Clause
+true;0;pundit;MIT;MIT
+true;0;rack-cache;MIT;MIT
+true;0;rack-cors;MIT;MIT
+true;0;rack-protection;MIT;MIT
+true;0;rack-test;MIT;MIT
+true;0;rails;MIT;MIT
+true;0;rails-controller-testing;MIT;MIT
+true;0;rails-deprecated_sanitizer;MIT;MIT
+true;0;rails-dom-testing;MIT;MIT
+true;0;rails-html-sanitizer;MIT;MIT
+true;0;railties;MIT;MIT
+true;0;rainbow;MIT;MIT
+true;0;rake;MIT;MIT
+true;0;rake-compiler;MIT;MIT
+true;0;rake-contrib;MIT;MIT
+true;0;rb-inotify;MIT;MIT
+true;0;rbvmomi;MIT;MIT
+true;0;red-colors;MIT;MIT
+true;0;redis;MIT;MIT
+true;0;ref;MIT;MIT
+true;0;regexp_parser;MIT;MIT
+true;0;regexp_property_values;MIT;MIT
+true;0;require_all;MIT;MIT
+true;0;resolve-hostname;MIT;MIT
+true;0;rest-client;MIT;MIT
+true;0;rmagick;MIT;MIT
+true;0;ronn-ng;MIT;MIT
+true;0;rr;MIT;MIT
+true;0;rspec;MIT;MIT
+true;0;rspec-collection_matchers;MIT;MIT
+true;0;rspec-core;MIT;MIT
+true;0;rspec-expectations;MIT;MIT
+true;0;rspec-its;MIT;MIT
+true;0;rspec-mocks;MIT;MIT
+true;0;rspec-pending_for;MIT;MIT
+true;0;rspec-rails;MIT;MIT
+true;0;rspec-support;MIT;MIT
+true;0;ruby-progressbar;MIT;MIT
+true;0;ruby-vips;MIT;MIT
+true;0;ruby_dep;MIT;MIT
+true;0;ruby_engine;MIT;MIT
+true;0;ruby_version;MIT;MIT
+true;0;rubygems-mirror;MIT;MIT
+true;0;rugged;MIT;MIT
+true;0;safe_yaml;MIT;MIT
+true;0;sass;MIT;MIT
+true;0;sass-rails;MIT;MIT
+true;0;sassc;MIT;MIT
+true;0;scrub_rb;MIT;MIT
+true;0;sd_notify;MIT;MIT
+true;0;semantic;MIT;MIT
+true;0;sequel;MIT;MIT
+true;0;sexp_processor;MIT;MIT
+true;0;shellany;MIT;MIT
+true;0;shoulda;MIT;MIT
+true;0;shoulda-context;MIT;MIT
+true;0;shoulda-matchers;MIT;MIT
+true;0;simplecov;MIT;MIT
+true;0;simplecov-html;MIT;MIT
+true;0;simpleidn;MIT;MIT
+true;0;sinatra;MIT;MIT
+true;0;slim;MIT;MIT
+true;0;snmp;MIT;MIT
+true;0;spring;MIT;MIT
+true;0;spring-watcher-listen;MIT;MIT
+true;0;sprockets;MIT;MIT
+true;0;sprockets-rails;MIT;MIT
+true;0;sshkey;MIT;MIT
+true;0;stringex;MIT;MIT
+true;0;syck;MIT;MIT
+true;0;sync;BSD-2-Clause;BSD-2-Clause
+true;0;systemu;Ruby;Ruby
+true;0;temple;MIT;MIT
+true;0;term-ansicolor;Apache-2.0;Apache-2.0
+true;0;terminal-table;MIT;MIT
+true;0;test_construct;MIT;MIT
+true;0;test_declarative;MIT;MIT
+true;0;text;MIT;MIT
+true;0;thor;MIT;MIT
+true;0;thread_order;MIT;MIT
+true;0;tilt;MIT;MIT
+true;0;timecop;MIT;MIT
+true;0;timers;MIT;MIT
+true;0;tins;MIT;MIT
+true;0;tomlrb;MIT;MIT
+true;0;treetop;MIT;MIT
+true;0;tty-color;MIT;MIT
+true;0;turbolinks;MIT;MIT
+true;0;turbolinks-source;MIT;MIT
+true;0;typhoeus;MIT;MIT
+true;0;tzinfo;MIT;MIT
+true;0;unf_ext;MIT;MIT
+true;0;unicode;Ruby;Ruby
+true;0;unicode-display_width;MIT;MIT
+true;0;web-console;MIT;MIT
+true;0;webmock;MIT;MIT
+true;0;websocket;MIT;MIT
+true;0;websocket-extensions;Apache-2.0;Apache-2.0
+true;0;xml-simple;MIT;MIT
+true;0;xpath;MIT;MIT
+true;0;yaml-lint;MIT;MIT
+true;0;zeitwerk;MIT;MIT
+true;1;pkg-config;LGPLv2+;LGPLv2+
+true;1;rb-readline;BSD;BSD
+true;1;syntax;BSD;BSD \ No newline at end of file
diff --git a/rubygems_fedora_spdx_state.csv b/rubygems_fedora_spdx_state.csv
new file mode 100644
index 0000000..2face31
--- /dev/null
+++ b/rubygems_fedora_spdx_state.csv
@@ -0,0 +1,489 @@
+gem2rpm_and_fedora_matches?;license_validate_exit_code;gem_name;fedora_license;gem2rpm_license
+true;0;Ascii85;MIT;MIT
+true;0;Platform;MIT;MIT
+true;0;RedCloth;MIT;MIT
+true;0;ZenTest;MIT;MIT
+true;0;abrt;MIT;MIT
+true;0;actioncable;MIT;MIT
+true;0;actionmailbox;MIT;MIT
+true;0;actionmailer;MIT;MIT
+true;0;actionpack;MIT;MIT
+true;0;actiontext;MIT;MIT
+true;0;actionview;MIT;MIT
+true;0;activejob;MIT;MIT
+true;0;activemodel;MIT;MIT
+true;0;activemodel-serializers-xml;MIT;MIT
+true;0;activerecord;MIT;MIT
+true;0;activeresource;MIT;MIT
+true;0;activestorage;MIT;MIT
+true;0;activesupport;MIT;MIT
+true;0;acts_as_list;MIT;MIT
+true;0;afm;MIT;MIT
+true;0;algorithms;MIT;MIT
+false;0;ammeter;MIT;
+false;0;apipie-rails;MIT AND Apache-2.0;
+false;0;appraisal;MIT;
+true;0;arel;MIT;MIT
+true;0;asciidoctor-pdf;MIT;MIT
+true;0;async_sinatra;MIT;MIT
+false;0;awesome_print;MIT;
+true;0;backports;MIT;MIT
+false;0;bacon;MIT;
+false;0;bacon-colored_output;MIT;
+true;0;base32;MIT;MIT
+true;0;benchmark-ips;MIT;MIT
+true;0;bindex;MIT;MIT
+true;0;bootsnap;MIT;MIT
+true;0;bson;Apache-2.0;Apache-2.0
+true;0;builder;MIT;MIT
+true;0;bundler;MIT;MIT
+true;0;bundler_ext;MIT;MIT
+true;0;capybara;MIT;MIT
+true;0;chake;MIT;MIT
+true;0;childprocess;MIT;MIT
+true;0;chronic;MIT;MIT
+true;0;chunky_png;MIT;MIT
+true;0;cinch;MIT;MIT
+true;0;clockwork;MIT;MIT
+true;0;codeclimate-test-reporter;MIT;MIT
+true;0;coderay;MIT;MIT
+true;0;coffee-script;MIT;MIT
+true;0;coffee-script-source;MIT;MIT
+true;0;color;MIT;MIT
+true;0;colorator;MIT;MIT
+false;0;comp_tree;MIT;
+true;0;concurrent-ruby;MIT;MIT
+true;0;connection_pool;MIT;MIT
+true;0;coveralls;MIT;MIT
+true;0;crack;MIT;MIT
+true;0;crass;MIT;MIT
+true;0;css_parser;MIT;MIT
+true;0;cucumber;MIT;MIT
+true;0;cucumber-core;MIT;MIT
+true;0;cucumber-create-meta;MIT;MIT
+true;0;cucumber-cucumber-expressions;MIT;MIT
+true;0;cucumber-gherkin;MIT;MIT
+true;0;cucumber-messages;MIT;MIT
+true;0;cucumber-tag-expressions;MIT;MIT
+true;0;cucumber-wire;MIT;MIT
+false;0;curb;Ruby;MIT
+true;0;daemon_controller;MIT;MIT
+true;0;dalli;MIT;MIT
+false;0;declarative_authorization;MIT;
+true;0;deep_merge;MIT;MIT
+false;0;delorean;MIT;
+false;0;diff-lcs;MIT OR Artistic-2.0 OR GPL-2.0-or-later;MIT and Artistic-2.0 and GPL-2.0+
+true;0;diffy;MIT;MIT
+true;0;docile;MIT;MIT
+false;0;drake;MIT;
+true;0;ed25519;MIT;MIT
+false;0;ejs;MIT;
+true;0;em-http-request;MIT;MIT
+false;0;em-socksify;MIT;
+false;0;em-spec;MIT;
+true;0;em-websocket;MIT;MIT
+true;0;em-websocket-client;MIT;MIT
+false;0;ensure_valid_encoding;MIT;
+true;0;erubi;MIT;MIT
+true;0;ethon;MIT;MIT
+true;0;excon;MIT;MIT
+true;0;execjs;MIT;MIT
+false;0;facon;MIT;
+true;0;factory_bot;MIT;MIT
+true;0;fake_ftp;MIT;MIT
+true;0;fakefs;MIT;MIT
+true;0;faraday;MIT;MIT
+true;0;flexmock;MIT;MIT
+true;0;fog-core;MIT;MIT
+true;0;fog-json;MIT;MIT
+true;0;fog-libvirt;MIT;MIT
+true;0;fog-xml;MIT;MIT
+true;0;foreigner;MIT;MIT
+false;0;formatador;MIT;
+true;0;forwardable-extended;MIT;MIT
+true;0;gem-nice-install;MIT;MIT
+true;0;generator_spec;MIT;MIT
+false;0;gettext;Ruby;Ruby and LGPL-3.0+
+true;0;gist;MIT;MIT
+true;0;git;MIT;MIT
+true;0;globalid;MIT;MIT
+true;0;glu;MIT;MIT
+true;0;glut;MIT;MIT
+true;0;gssapi;MIT;MIT
+true;0;guard;MIT;MIT
+true;0;guard-compat;MIT;MIT
+true;0;guard-livereload;MIT;MIT
+true;0;guard-shell;MIT;MIT
+true;0;hashdiff;MIT;MIT
+true;0;hashie;MIT;MIT
+false;0;hashr;MIT;
+true;0;hikidoc;MIT;MIT
+true;0;hitimes;ISC;ISC
+true;0;hoe;MIT;MIT
+true;0;htmlentities;MIT;MIT
+true;0;http-accept;MIT;MIT
+true;0;http-cookie;MIT;MIT
+false;0;http_connection;MIT;
+true;0;http_parser.rb;MIT;MIT
+true;0;httparty;MIT;MIT
+true;0;i18n_data;MIT;MIT
+true;0;image_processing;MIT;MIT
+true;0;importmap-rails;MIT;MIT
+true;0;introspection;MIT;MIT
+true;0;ipaddress;MIT;MIT
+true;0;isolate;MIT;MIT
+true;0;jbuilder;MIT;MIT
+true;0;jekyll;MIT;MIT
+true;0;jekyll-asciidoc;MIT;MIT
+true;0;jekyll-email-protect;MIT;MIT
+true;0;jekyll-feed;MIT;MIT
+true;0;jekyll-git-authors;MIT;MIT
+true;0;jekyll-sass-converter;MIT;MIT
+true;0;jekyll-seo-tag;MIT;MIT
+true;0;jekyll-toc;MIT;MIT
+true;0;jekyll-watch;MIT;MIT
+true;0;jquery-rails;MIT;MIT
+true;0;json_spec;MIT;MIT
+true;0;kramdown;MIT;MIT
+true;0;kramdown-parser-gfm;MIT;MIT
+true;0;kramdown-syntax-coderay;MIT;MIT
+true;0;launchy;ISC;ISC
+true;0;linked-list;MIT;MIT
+true;0;liquid;MIT;MIT
+true;0;listen;MIT;MIT
+false;0;little-plugger;MIT;
+true;0;loofah;MIT;MIT
+true;0;lumberjack;MIT;MIT
+true;0;mail;MIT;MIT
+true;0;marc;MIT;MIT
+true;0;mechanize;MIT;MIT
+true;0;memfs;MIT;MIT
+true;0;mercenary;MIT;MIT
+true;0;metaclass;MIT;MIT
+true;0;method_source;MIT;MIT
+false;0;middleware;MIT;
+true;0;mime-types;MIT;MIT
+true;0;mime-types-data;MIT;MIT
+true;0;mimemagic;MIT;MIT
+true;0;mini_magick;MIT;MIT
+true;0;mini_mime;MIT;MIT
+true;0;mini_portile;MIT;MIT
+true;0;mini_portile2;MIT;MIT
+true;0;minima;MIT;MIT
+true;0;minitest;MIT;MIT
+true;0;minitest-around;MIT;MIT
+true;0;minitest-profile;MIT;MIT
+true;0;minitest-stub-const;MIT;MIT
+true;0;mizuho;MIT;MIT
+false;0;mkrf;MIT;
+true;0;mongoid;MIT;MIT
+false;0;moped;MIT;
+true;0;more_core_extensions;MIT;MIT
+true;0;multi_json;MIT;MIT
+true;0;multi_test;MIT;MIT
+true;0;multi_xml;MIT;MIT
+true;0;multipart-post;MIT;MIT
+true;0;mustache;MIT;MIT
+true;0;mustermann;MIT;MIT
+true;0;mysql2;MIT;MIT
+true;0;nenv;MIT;MIT
+true;0;nesty;MIT;MIT
+true;0;net-http-digest_auth;MIT;MIT
+true;0;net-http-persistent;MIT;MIT
+true;0;net-ldap;MIT;MIT
+true;0;net-scp;MIT;MIT
+true;0;net-ssh;MIT;MIT
+true;0;netrc;MIT;MIT
+true;0;notiffany;MIT;MIT
+true;0;opengl;MIT;MIT
+true;0;optimist;MIT;MIT
+true;0;ox;MIT;MIT
+true;0;parallel;MIT;MIT
+false;0;parse-cron;MIT;
+true;0;parseconfig;MIT;MIT
+true;0;pastel;MIT;MIT
+true;0;pathutil;MIT;MIT
+true;0;pdf-reader;MIT;MIT
+true;0;pdfkit;MIT;MIT
+true;0;plist;MIT;MIT
+true;0;polyglot;MIT;MIT
+true;0;posix-spawn;MIT;MIT
+true;0;powerpack;MIT;MIT
+false;0;pr_geohash;MIT;
+true;0;prawn-svg;MIT;MIT
+true;0;progressbar;MIT;MIT
+false;0;proxifier;MIT;
+true;0;pry;MIT;MIT
+true;0;pry-byebug;MIT;MIT
+true;0;puma;BSD-3-Clause;BSD-3-Clause
+true;0;pundit;MIT;MIT
+false;0;puppet-lint;MIT;
+false;0;rack-accept;MIT;
+true;0;rack-cache;MIT;MIT
+true;0;rack-cors;MIT;MIT
+true;0;rack-protection;MIT;MIT
+false;0;rack-restful_submit;MIT;
+true;0;rack-test;MIT;MIT
+true;0;rails;MIT;MIT
+true;0;rails-controller-testing;MIT;MIT
+true;0;rails-deprecated_sanitizer;MIT;MIT
+true;0;rails-dom-testing;MIT;MIT
+true;0;rails-html-sanitizer;MIT;MIT
+true;0;railties;MIT;MIT
+true;0;rainbow;MIT;MIT
+true;0;rake;MIT;MIT
+true;0;rake-compiler;MIT;MIT
+true;0;rake-contrib;MIT;MIT
+true;0;rb-inotify;MIT;MIT
+true;0;rbvmomi;MIT;MIT
+true;0;red-colors;MIT;MIT
+true;0;redis;MIT;MIT
+true;0;ref;MIT;MIT
+true;0;regexp_parser;MIT;MIT
+true;0;regexp_property_values;MIT;MIT
+true;0;require_all;MIT;MIT
+true;0;resolve-hostname;MIT;MIT
+true;0;rest-client;MIT;MIT
+true;0;rmagick;MIT;MIT
+true;0;ronn-ng;MIT;MIT
+true;0;rr;MIT;MIT
+true;0;rspec;MIT;MIT
+true;0;rspec-collection_matchers;MIT;MIT
+true;0;rspec-core;MIT;MIT
+true;0;rspec-expectations;MIT;MIT
+true;0;rspec-its;MIT;MIT
+true;0;rspec-mocks;MIT;MIT
+true;0;rspec-pending_for;MIT;MIT
+true;0;rspec-rails;MIT;MIT
+true;0;rspec-support;MIT;MIT
+false;0;rttool;Ruby;
+false;0;ruby-opengl;MIT;
+true;0;ruby-progressbar;MIT;MIT
+false;0;ruby-rc4;MIT;
+true;0;ruby-vips;MIT;MIT
+true;0;ruby_dep;MIT;MIT
+true;0;ruby_engine;MIT;MIT
+true;0;ruby_version;MIT;MIT
+true;0;rubygems-mirror;MIT;MIT
+true;0;rugged;MIT;MIT
+true;0;safe_yaml;MIT;MIT
+true;0;sass;MIT;MIT
+true;0;sass-rails;MIT;MIT
+true;0;sassc;MIT;MIT
+true;0;scrub_rb;MIT;MIT
+false;0;scruffy;MIT;
+true;0;sd_notify;MIT;MIT
+true;0;semantic;MIT;MIT
+true;0;sequel;MIT;MIT
+false;0;session;Ruby;
+false;0;settingslogic;MIT;
+true;0;sexp_processor;MIT;MIT
+true;0;shellany;MIT;MIT
+false;0;shindo;MIT;
+true;0;shoulda;MIT;MIT
+true;0;shoulda-context;MIT;MIT
+true;0;shoulda-matchers;MIT;MIT
+true;0;simplecov;MIT;MIT
+true;0;simplecov-html;MIT;MIT
+true;0;simpleidn;MIT;MIT
+true;0;sinatra;MIT;MIT
+false;0;sinatra-cross_origin;MIT;
+true;0;slim;MIT;MIT
+true;0;snmp;MIT;MIT
+true;0;spring;MIT;MIT
+true;0;spring-watcher-listen;MIT;MIT
+true;0;sprockets;MIT;MIT
+true;0;sprockets-rails;MIT;MIT
+true;0;sshkey;MIT;MIT
+false;0;state_machine;MIT;
+true;0;stringex;MIT;MIT
+true;0;syck;MIT;MIT
+true;0;sync;BSD-2-Clause;BSD-2-Clause
+true;0;systemu;Ruby;Ruby
+true;0;temple;MIT;MIT
+true;0;term-ansicolor;Apache-2.0;Apache-2.0
+true;0;terminal-table;MIT;MIT
+true;0;test_construct;MIT;MIT
+true;0;test_declarative;MIT;MIT
+true;0;text;MIT;MIT
+true;0;thor;MIT;MIT
+true;0;thread_order;MIT;MIT
+true;0;tilt;MIT;MIT
+true;0;timecop;MIT;MIT
+true;0;timers;MIT;MIT
+true;0;tins;MIT;MIT
+true;0;tomlrb;MIT;MIT
+false;0;transaction-simple;MIT;
+true;0;treetop;MIT;MIT
+true;0;tty-color;MIT;MIT
+true;0;turbolinks;MIT;MIT
+true;0;turbolinks-source;MIT;MIT
+true;0;typhoeus;MIT;MIT
+true;0;tzinfo;MIT;MIT
+true;0;unf_ext;MIT;MIT
+true;0;unicode;Ruby;Ruby
+true;0;unicode-display_width;MIT;MIT
+false;0;vcr;MIT;
+true;0;web-console;MIT;MIT
+true;0;webmock;MIT;MIT
+true;0;websocket;MIT;MIT
+true;0;websocket-extensions;Apache-2.0;Apache-2.0
+false;0;whiskey_disk;MIT;
+true;0;xml-simple;MIT;MIT
+true;0;xpath;MIT;MIT
+true;0;yaml-lint;MIT;MIT
+true;0;zeitwerk;MIT;MIT
+false;1;POpen4;GPLv2 or Ruby;
+false;1;abstract;GPLv2 or Ruby;
+false;1;addressable;ASL 2.0;Apache-2.0
+false;1;allison;AFL;
+false;1;ansi;BSD;BSD-2-Clause
+false;1;archive-tar-minitar;GPLv2+ or Ruby;
+false;1;aruba;MIT and CC-BY and (MIT or GPLv2) and (MIT or BSD or GPLv2);MIT
+false;1;atk;LGPLv2;LGPL-2.1+
+false;1;atomic;ASL 2.0;Apache-2.0
+false;1;aws-sigv4;ASL 2.0;Apache-2.0
+false;1;bcrypt;MIT and Public Domain and ISC;MIT
+false;1;bcrypt_pbkdf;MIT and BSD and ISC;MIT
+false;1;between_meals;ASL 2.0;Apache-2.0
+false;1;boxgrinder-build;LGPLv3+;
+false;1;boxgrinder-core;LGPLv3+;
+false;1;byebug;BSD;BSD-2-Clause
+false;1;cairo;GPLv2 or Ruby;Ruby and GPL-2.0-or-later
+false;1;cairo-gobject;LGPLv2+;LGPL-2.1+
+false;1;clutter;LGPLv2+;LGPL-2.1+
+false;1;clutter-gdk;LGPLv2+;LGPL-2.1+
+false;1;clutter-gstreamer;LGPLv2+;LGPL-2.1+
+false;1;clutter-gtk;LGPLv2+;LGPL-2.1+
+false;1;colorize;GPLv2;GPL-2.0
+false;1;contracts;BSD;BSD-2-Clause
+false;1;cookiejar;BSD;
+false;1;creole;GPLv2 or Ruby;
+false;1;daemons;MIT and (GPLv2+ or Ruby);
+false;1;dnsruby;ASL 2.0;Apache License, Version 2.0
+false;1;domain_name;BSD and (MPLv1.1 or GPLv2+ or LGPLv2+);BSD-2-Clause and BSD-3-Clause and MPL-2.0
+false;1;elasticsearch-transport;ASL 2.0;Apache 2
+false;1;escape;BSD;
+false;1;eventmachine;GPLv2 or Ruby;Ruby and GPL-2.0
+false;1;fattr;BSD or Ruby;same as ruby's
+false;1;ffi;BSD;BSD-3-Clause
+false;1;file-tail;ASL 2.0;Apache-2.0
+false;1;gdk3;LGPLv2+;LGPL-2.1+
+false;1;gdk_pixbuf2;LGPLv2;LGPL-2.1+
+false;1;gem2rpm;GPLv2+;GPL-2.0+
+false;1;gio2;LGPLv2;LGPL-2.1+
+false;1;glib2;LGPLv2;LGPL-2.1+
+false;1;gobject-introspection;LGPLv2+;LGPL-2.1+
+false;1;goocanvas;LGPLv2;LGPLv2.1 or later
+false;1;gstreamer;LGPLv2;LGPL-2.1+
+false;1;gtk2;LGPLv2;LGPL-2.1+
+false;1;gtk3;LGPLv2+;LGPL-2.1+
+false;1;gtksourceview2;LGPLv2;LGPL-2.1+
+false;1;gtksourceview3;LGPLv2+;LGPL-2.1+
+false;1;haml;MIT and WTFPL;MIT
+false;1;hashery;BSD;BSD-2-Clause
+false;1;hashicorp-checkpoint;MPLv2.0;MPL2
+false;1;hiera-vault;ASL 2.0;Apache-2.0
+false;1;highline;GPLv2 or Ruby or BSD;Ruby
+false;1;hiredis;BSD;BSD-3-Clause
+false;1;hocon;ASL 2.0;Apache License, v2
+false;1;hpricot;MIT and ASL 2.0;
+false;1;hrx;ASL 2.0;Apache-2.0
+false;1;httpclient;(Ruby or BSD) and Public Domain;ruby
+false;1;i18n;MIT and (BSD or Ruby);MIT
+false;1;icaro;GPLv3;
+false;1;idn;ASL 2.0 and LGPLv2+;
+false;1;image_size;Ruby or GPLv2;Ruby
+false;1;imagesize;GPLv2 or Ruby;
+false;1;jmespath;ASL 2.0;Apache-2.0
+false;1;json;Ruby or BSD;Ruby
+false;1;levenshtein;GPLv2;
+false;1;locale;GPLv2 or Ruby;Ruby and LGPLv3+
+false;1;lockfile;GPLv2 or Ruby;
+false;1;log4r;LGPLv3;
+false;1;logstash-event;ASL 2.0;Apache License (2.0)
+false;1;macaddr;Ruby or BSD;Ruby
+false;1;marcel;MIT and ASL 2.0;MIT and Apache-2.0
+false;1;memcache-client;BSD;
+false;1;mixlib-cli;ASL 2.0;Apache-2.0
+false;1;mixlib-config;ASL 2.0;Apache-2.0
+false;1;mixlib-log;ASL 2.0;Apache-2.0
+false;1;mixlib-shellout;ASL 2.0;
+false;1;mocha;MIT or Ruby or BSD;MIT and BSD-2-Clause
+false;1;mongo;ASL 2.0;Apache-2.0
+false;1;msgpack;ASL 2.0;Apache 2.0
+false;1;narray;BSD and Ruby;Ruby
+false;1;native-package-installer;LGPLv3+;LGPL-3+
+false;1;ncursesw;LGPLv2+;LGPL-2.1
+false;1;net-sftp;MIT or LGPLv2;MIT
+false;1;nifti;LGPLv3+;LGPLv3
+false;1;nio4r;MIT and (BSD or GPLv2+);MIT
+false;1;nokogiri;MIT and ASL 2.0;MIT
+false;1;open4;BSD or Ruby;Ruby
+false;1;opennebula;ASL 2.0;Apache-2.0
+false;1;openscap;GPLv2+;GPL-2.0
+false;1;pango;LGPLv2;LGPL-2.1+
+false;1;pathspec;ASL 2.0;Apache-2.0
+false;1;pdf-core;GPLv2 or GPLv3 or Ruby;PRAWN and GPL-2.0 and GPL-3.0
+false;1;pdf-inspector;GPLv2 or GPLv3 or Ruby;PRAWN and GPL-2.0 and GPL-3.0
+false;1;pg;(BSD or Ruby) and PostgreSQL;BSD-2-Clause
+true;1;pkg-config;LGPLv2+;LGPLv2+
+false;1;poppler;LGPLv2;LGPL-2.1+
+false;1;power_assert;Ruby or BSD;BSD-2-Clause and Ruby
+false;1;prawn;(GPLv2 or GPLv3 or Ruby) and APAFML;PRAWN and GPL-2.0 and GPL-3.0
+false;1;prawn-icon;Ruby or GPLv2 or GPLv3;RUBY and GPL-2 and GPL-3
+false;1;prawn-table;Ruby or GPLv2 or GPLv3;RUBY and GPL-2 and GPL-3
+false;1;prawn-templates;Ruby or GPLv2 or GPLv3;Nonstandard and GPL-2.0 and GPL-3.0
+false;1;protobuf;MIT and BSD;MIT
+false;1;public_suffix;MIT and MPLv2.0;MIT
+false;1;puppet-resource_api;ASL 2.0;Apache-2.0
+false;1;rabbit;GPLv2+ and CC-BY;GPLv2+
+false;1;racc;BSD;Ruby and BSD-2-Clause
+false;1;rack;MIT and BSD;MIT
+true;1;rb-readline;BSD;BSD
+false;1;rchardet;LGPLv2;LGPL
+false;1;rdiscount;ASL 1.1;BSD-3-Clause
+false;1;rdoc;GPL-2.0 AND Ruby AND BSD-3-Clause AND CC-BY-2.5 AND OFL-1.1-RFN;Ruby
+false;1;rdtool;GPLv2+ or Ruby;GPL-2+ and Ruby
+false;1;redcarpet;MIT and ISC;MIT
+false;1;rmail;BSD;
+false;1;rouge;MIT and BSD;MIT and BSD-2-Clause
+false;1;rsvg2;LGPLv2;LGPL-2.1+
+false;1;rubeyond;GPLv3+;
+false;1;ruby-dbus;LGPLv2+ and MIT;LGPL-2.1
+false;1;ruby-libvirt;LGPLv2+;LGPLv2
+false;1;ruby-shadow;Public Domain;Public Domain License
+false;1;rubyzip;Ruby or BSD;BSD 2-Clause
+false;1;sass-twitter-bootstrap;ASL 2.0;
+false;1;sassc-rails;MIT and OFL;MIT
+false;1;scanf;BSD;BSD-2-Clause
+false;1;selenium-webdriver;ASL 2.0;Apache-2.0
+false;1;semantic_puppet;ASL 2.0;Apache-2.0
+false;1;serialport;GPLv2;GPL-2
+false;1;sinatra-rabbit;ASL 2.0;
+false;1;sqlite3;BSD;BSD-3-Clause
+false;1;stomp;ASL 2.0;Apache-2.0
+false;1;sugarjar;ASL 2.0;Apache-2.0
+true;1;syntax;BSD;BSD
+false;1;sys-uname;ASL 2.0;Apache-2.0
+false;1;test-unit;(BSD or Ruby or Python) and (BSD or Ruby);Ruby and BSDL and PSFL
+false;1;test-unit-notify;LGPLv2+ and (LGPLv2+ or GFDL or CC-BY-SA);LGPLv2.1 or later
+false;1;test-unit-rr;LGPLv2+;LGPLv2 or later
+false;1;thread_safe;ASL 2.0 and Public Domain;Apache-2.0
+false;1;tk;BSD or Ruby;BSD-2-Clause
+false;1;ttfunk;GPLv2 or GPLv3 or Ruby;Nonstandard and GPL-2.0 and GPL-3.0
+false;1;uglifier;MIT and BSD;MIT
+false;1;unf;BSD;2-clause BSDL
+false;1;uuid;MIT or CC-BY-SA;
+false;1;uuidtools;ASL 2.0;Apache-2.0
+false;1;vault;MPLv2.0;MPL-2.0
+false;1;vte;LGPLv2;LGPL-2.1+
+false;1;vte3;LGPLv2+;LGPL-2.1+
+false;1;webkit2-gtk;LGPLv2+;LGPL-2.1+
+false;1;webrick;Ruby and BSD-2-Clause;Ruby and BSD-2-Clause
+false;1;webrobots;BSD;2-clause BSDL
+false;1;websocket-driver;ASL 2.0;Apache-2.0
+false;1;xmlparser;GPLv2+ and ( Ruby or GPLv2+ or MIT ) and ( GPLv2+ or Artistic );
+false;1;xmlrpc;Ruby or BSD;Ruby and BSD-2-Clause
+false;1;yard;MIT and (BSD or Ruby);MIT
+false;1;zoom;LGPLv2+; \ No newline at end of file
diff --git a/rubygems_fedora_valid_no_action.csv b/rubygems_fedora_valid_no_action.csv
new file mode 100644
index 0000000..a3de0c4
--- /dev/null
+++ b/rubygems_fedora_valid_no_action.csv
@@ -0,0 +1,291 @@
+true;0;Ascii85;MIT;MIT
+true;0;Platform;MIT;MIT
+true;0;RedCloth;MIT;MIT
+true;0;ZenTest;MIT;MIT
+true;0;abrt;MIT;MIT
+true;0;actioncable;MIT;MIT
+true;0;actionmailbox;MIT;MIT
+true;0;actionmailer;MIT;MIT
+true;0;actionpack;MIT;MIT
+true;0;actiontext;MIT;MIT
+true;0;actionview;MIT;MIT
+true;0;activejob;MIT;MIT
+true;0;activemodel;MIT;MIT
+true;0;activemodel-serializers-xml;MIT;MIT
+true;0;activerecord;MIT;MIT
+true;0;activeresource;MIT;MIT
+true;0;activestorage;MIT;MIT
+true;0;activesupport;MIT;MIT
+true;0;acts_as_list;MIT;MIT
+true;0;afm;MIT;MIT
+true;0;algorithms;MIT;MIT
+true;0;arel;MIT;MIT
+true;0;asciidoctor-pdf;MIT;MIT
+true;0;async_sinatra;MIT;MIT
+true;0;backports;MIT;MIT
+true;0;base32;MIT;MIT
+true;0;benchmark-ips;MIT;MIT
+true;0;bindex;MIT;MIT
+true;0;bootsnap;MIT;MIT
+true;0;bson;Apache-2.0;Apache-2.0
+true;0;builder;MIT;MIT
+true;0;bundler;MIT;MIT
+true;0;bundler_ext;MIT;MIT
+true;0;capybara;MIT;MIT
+true;0;chake;MIT;MIT
+true;0;childprocess;MIT;MIT
+true;0;chronic;MIT;MIT
+true;0;chunky_png;MIT;MIT
+true;0;cinch;MIT;MIT
+true;0;clockwork;MIT;MIT
+true;0;codeclimate-test-reporter;MIT;MIT
+true;0;coderay;MIT;MIT
+true;0;coffee-script;MIT;MIT
+true;0;coffee-script-source;MIT;MIT
+true;0;color;MIT;MIT
+true;0;colorator;MIT;MIT
+true;0;concurrent-ruby;MIT;MIT
+true;0;connection_pool;MIT;MIT
+true;0;coveralls;MIT;MIT
+true;0;crack;MIT;MIT
+true;0;crass;MIT;MIT
+true;0;css_parser;MIT;MIT
+true;0;cucumber;MIT;MIT
+true;0;cucumber-core;MIT;MIT
+true;0;cucumber-create-meta;MIT;MIT
+true;0;cucumber-cucumber-expressions;MIT;MIT
+true;0;cucumber-gherkin;MIT;MIT
+true;0;cucumber-messages;MIT;MIT
+true;0;cucumber-tag-expressions;MIT;MIT
+true;0;cucumber-wire;MIT;MIT
+true;0;daemon_controller;MIT;MIT
+true;0;dalli;MIT;MIT
+true;0;deep_merge;MIT;MIT
+true;0;diffy;MIT;MIT
+true;0;docile;MIT;MIT
+true;0;ed25519;MIT;MIT
+true;0;em-http-request;MIT;MIT
+true;0;em-websocket;MIT;MIT
+true;0;em-websocket-client;MIT;MIT
+true;0;erubi;MIT;MIT
+true;0;ethon;MIT;MIT
+true;0;excon;MIT;MIT
+true;0;execjs;MIT;MIT
+true;0;factory_bot;MIT;MIT
+true;0;fake_ftp;MIT;MIT
+true;0;fakefs;MIT;MIT
+true;0;faraday;MIT;MIT
+true;0;flexmock;MIT;MIT
+true;0;fog-core;MIT;MIT
+true;0;fog-json;MIT;MIT
+true;0;fog-libvirt;MIT;MIT
+true;0;fog-xml;MIT;MIT
+true;0;foreigner;MIT;MIT
+true;0;forwardable-extended;MIT;MIT
+true;0;gem-nice-install;MIT;MIT
+true;0;generator_spec;MIT;MIT
+true;0;gist;MIT;MIT
+true;0;git;MIT;MIT
+true;0;globalid;MIT;MIT
+true;0;glu;MIT;MIT
+true;0;glut;MIT;MIT
+true;0;gssapi;MIT;MIT
+true;0;guard;MIT;MIT
+true;0;guard-compat;MIT;MIT
+true;0;guard-livereload;MIT;MIT
+true;0;guard-shell;MIT;MIT
+true;0;hashdiff;MIT;MIT
+true;0;hashie;MIT;MIT
+true;0;hikidoc;MIT;MIT
+true;0;hitimes;ISC;ISC
+true;0;hoe;MIT;MIT
+true;0;htmlentities;MIT;MIT
+true;0;http-accept;MIT;MIT
+true;0;http-cookie;MIT;MIT
+true;0;http_parser.rb;MIT;MIT
+true;0;httparty;MIT;MIT
+true;0;i18n_data;MIT;MIT
+true;0;image_processing;MIT;MIT
+true;0;importmap-rails;MIT;MIT
+true;0;introspection;MIT;MIT
+true;0;ipaddress;MIT;MIT
+true;0;isolate;MIT;MIT
+true;0;jbuilder;MIT;MIT
+true;0;jekyll;MIT;MIT
+true;0;jekyll-asciidoc;MIT;MIT
+true;0;jekyll-email-protect;MIT;MIT
+true;0;jekyll-feed;MIT;MIT
+true;0;jekyll-git-authors;MIT;MIT
+true;0;jekyll-sass-converter;MIT;MIT
+true;0;jekyll-seo-tag;MIT;MIT
+true;0;jekyll-toc;MIT;MIT
+true;0;jekyll-watch;MIT;MIT
+true;0;jquery-rails;MIT;MIT
+true;0;json_spec;MIT;MIT
+true;0;kramdown;MIT;MIT
+true;0;kramdown-parser-gfm;MIT;MIT
+true;0;kramdown-syntax-coderay;MIT;MIT
+true;0;launchy;ISC;ISC
+true;0;linked-list;MIT;MIT
+true;0;liquid;MIT;MIT
+true;0;listen;MIT;MIT
+true;0;loofah;MIT;MIT
+true;0;lumberjack;MIT;MIT
+true;0;mail;MIT;MIT
+true;0;marc;MIT;MIT
+true;0;mechanize;MIT;MIT
+true;0;memfs;MIT;MIT
+true;0;mercenary;MIT;MIT
+true;0;metaclass;MIT;MIT
+true;0;method_source;MIT;MIT
+true;0;mime-types;MIT;MIT
+true;0;mime-types-data;MIT;MIT
+true;0;mimemagic;MIT;MIT
+true;0;mini_magick;MIT;MIT
+true;0;mini_mime;MIT;MIT
+true;0;mini_portile;MIT;MIT
+true;0;mini_portile2;MIT;MIT
+true;0;minima;MIT;MIT
+true;0;minitest;MIT;MIT
+true;0;minitest-around;MIT;MIT
+true;0;minitest-profile;MIT;MIT
+true;0;minitest-stub-const;MIT;MIT
+true;0;mizuho;MIT;MIT
+true;0;mongoid;MIT;MIT
+true;0;more_core_extensions;MIT;MIT
+true;0;multi_json;MIT;MIT
+true;0;multi_test;MIT;MIT
+true;0;multi_xml;MIT;MIT
+true;0;multipart-post;MIT;MIT
+true;0;mustache;MIT;MIT
+true;0;mustermann;MIT;MIT
+true;0;mysql2;MIT;MIT
+true;0;nenv;MIT;MIT
+true;0;nesty;MIT;MIT
+true;0;net-http-digest_auth;MIT;MIT
+true;0;net-http-persistent;MIT;MIT
+true;0;net-ldap;MIT;MIT
+true;0;net-scp;MIT;MIT
+true;0;net-ssh;MIT;MIT
+true;0;netrc;MIT;MIT
+true;0;notiffany;MIT;MIT
+true;0;opengl;MIT;MIT
+true;0;optimist;MIT;MIT
+true;0;ox;MIT;MIT
+true;0;parallel;MIT;MIT
+true;0;parseconfig;MIT;MIT
+true;0;pastel;MIT;MIT
+true;0;pathutil;MIT;MIT
+true;0;pdf-reader;MIT;MIT
+true;0;pdfkit;MIT;MIT
+true;0;plist;MIT;MIT
+true;0;polyglot;MIT;MIT
+true;0;posix-spawn;MIT;MIT
+true;0;powerpack;MIT;MIT
+true;0;prawn-svg;MIT;MIT
+true;0;progressbar;MIT;MIT
+true;0;pry;MIT;MIT
+true;0;pry-byebug;MIT;MIT
+true;0;puma;BSD-3-Clause;BSD-3-Clause
+true;0;pundit;MIT;MIT
+true;0;rack-cache;MIT;MIT
+true;0;rack-cors;MIT;MIT
+true;0;rack-protection;MIT;MIT
+true;0;rack-test;MIT;MIT
+true;0;rails;MIT;MIT
+true;0;rails-controller-testing;MIT;MIT
+true;0;rails-deprecated_sanitizer;MIT;MIT
+true;0;rails-dom-testing;MIT;MIT
+true;0;rails-html-sanitizer;MIT;MIT
+true;0;railties;MIT;MIT
+true;0;rainbow;MIT;MIT
+true;0;rake;MIT;MIT
+true;0;rake-compiler;MIT;MIT
+true;0;rake-contrib;MIT;MIT
+true;0;rb-inotify;MIT;MIT
+true;0;rbvmomi;MIT;MIT
+true;0;red-colors;MIT;MIT
+true;0;redis;MIT;MIT
+true;0;ref;MIT;MIT
+true;0;regexp_parser;MIT;MIT
+true;0;regexp_property_values;MIT;MIT
+true;0;require_all;MIT;MIT
+true;0;resolve-hostname;MIT;MIT
+true;0;rest-client;MIT;MIT
+true;0;rmagick;MIT;MIT
+true;0;ronn-ng;MIT;MIT
+true;0;rr;MIT;MIT
+true;0;rspec;MIT;MIT
+true;0;rspec-collection_matchers;MIT;MIT
+true;0;rspec-core;MIT;MIT
+true;0;rspec-expectations;MIT;MIT
+true;0;rspec-its;MIT;MIT
+true;0;rspec-mocks;MIT;MIT
+true;0;rspec-pending_for;MIT;MIT
+true;0;rspec-rails;MIT;MIT
+true;0;rspec-support;MIT;MIT
+true;0;ruby-progressbar;MIT;MIT
+true;0;ruby-vips;MIT;MIT
+true;0;ruby_dep;MIT;MIT
+true;0;ruby_engine;MIT;MIT
+true;0;ruby_version;MIT;MIT
+true;0;rubygems-mirror;MIT;MIT
+true;0;rugged;MIT;MIT
+true;0;safe_yaml;MIT;MIT
+true;0;sass;MIT;MIT
+true;0;sass-rails;MIT;MIT
+true;0;sassc;MIT;MIT
+true;0;scrub_rb;MIT;MIT
+true;0;sd_notify;MIT;MIT
+true;0;semantic;MIT;MIT
+true;0;sequel;MIT;MIT
+true;0;sexp_processor;MIT;MIT
+true;0;shellany;MIT;MIT
+true;0;shoulda;MIT;MIT
+true;0;shoulda-context;MIT;MIT
+true;0;shoulda-matchers;MIT;MIT
+true;0;simplecov;MIT;MIT
+true;0;simplecov-html;MIT;MIT
+true;0;simpleidn;MIT;MIT
+true;0;sinatra;MIT;MIT
+true;0;slim;MIT;MIT
+true;0;snmp;MIT;MIT
+true;0;spring;MIT;MIT
+true;0;spring-watcher-listen;MIT;MIT
+true;0;sprockets;MIT;MIT
+true;0;sprockets-rails;MIT;MIT
+true;0;sshkey;MIT;MIT
+true;0;stringex;MIT;MIT
+true;0;syck;MIT;MIT
+true;0;sync;BSD-2-Clause;BSD-2-Clause
+true;0;systemu;Ruby;Ruby
+true;0;temple;MIT;MIT
+true;0;term-ansicolor;Apache-2.0;Apache-2.0
+true;0;terminal-table;MIT;MIT
+true;0;test_construct;MIT;MIT
+true;0;test_declarative;MIT;MIT
+true;0;text;MIT;MIT
+true;0;thor;MIT;MIT
+true;0;thread_order;MIT;MIT
+true;0;tilt;MIT;MIT
+true;0;timecop;MIT;MIT
+true;0;timers;MIT;MIT
+true;0;tins;MIT;MIT
+true;0;tomlrb;MIT;MIT
+true;0;treetop;MIT;MIT
+true;0;tty-color;MIT;MIT
+true;0;turbolinks;MIT;MIT
+true;0;turbolinks-source;MIT;MIT
+true;0;typhoeus;MIT;MIT
+true;0;tzinfo;MIT;MIT
+true;0;unf_ext;MIT;MIT
+true;0;unicode;Ruby;Ruby
+true;0;unicode-display_width;MIT;MIT
+true;0;web-console;MIT;MIT
+true;0;webmock;MIT;MIT
+true;0;websocket;MIT;MIT
+true;0;websocket-extensions;Apache-2.0;Apache-2.0
+true;0;xml-simple;MIT;MIT
+true;0;xpath;MIT;MIT
+true;0;yaml-lint;MIT;MIT
+true;0;zeitwerk;MIT;MIT \ No newline at end of file
diff --git a/rubygems_fedora_valid_spdx.csv b/rubygems_fedora_valid_spdx.csv
new file mode 100644
index 0000000..adec226
--- /dev/null
+++ b/rubygems_fedora_valid_spdx.csv
@@ -0,0 +1,334 @@
+true;0;Ascii85;MIT;MIT
+true;0;Platform;MIT;MIT
+true;0;RedCloth;MIT;MIT
+true;0;ZenTest;MIT;MIT
+true;0;abrt;MIT;MIT
+true;0;actioncable;MIT;MIT
+true;0;actionmailbox;MIT;MIT
+true;0;actionmailer;MIT;MIT
+true;0;actionpack;MIT;MIT
+true;0;actiontext;MIT;MIT
+true;0;actionview;MIT;MIT
+true;0;activejob;MIT;MIT
+true;0;activemodel;MIT;MIT
+true;0;activemodel-serializers-xml;MIT;MIT
+true;0;activerecord;MIT;MIT
+true;0;activeresource;MIT;MIT
+true;0;activestorage;MIT;MIT
+true;0;activesupport;MIT;MIT
+true;0;acts_as_list;MIT;MIT
+true;0;afm;MIT;MIT
+true;0;algorithms;MIT;MIT
+false;0;ammeter;MIT;
+false;0;apipie-rails;MIT AND Apache-2.0;
+false;0;appraisal;MIT;
+true;0;arel;MIT;MIT
+true;0;asciidoctor-pdf;MIT;MIT
+true;0;async_sinatra;MIT;MIT
+false;0;awesome_print;MIT;
+true;0;backports;MIT;MIT
+false;0;bacon;MIT;
+false;0;bacon-colored_output;MIT;
+true;0;base32;MIT;MIT
+true;0;benchmark-ips;MIT;MIT
+true;0;bindex;MIT;MIT
+true;0;bootsnap;MIT;MIT
+true;0;bson;Apache-2.0;Apache-2.0
+true;0;builder;MIT;MIT
+true;0;bundler;MIT;MIT
+true;0;bundler_ext;MIT;MIT
+true;0;capybara;MIT;MIT
+true;0;chake;MIT;MIT
+true;0;childprocess;MIT;MIT
+true;0;chronic;MIT;MIT
+true;0;chunky_png;MIT;MIT
+true;0;cinch;MIT;MIT
+true;0;clockwork;MIT;MIT
+true;0;codeclimate-test-reporter;MIT;MIT
+true;0;coderay;MIT;MIT
+true;0;coffee-script;MIT;MIT
+true;0;coffee-script-source;MIT;MIT
+true;0;color;MIT;MIT
+true;0;colorator;MIT;MIT
+false;0;comp_tree;MIT;
+true;0;concurrent-ruby;MIT;MIT
+true;0;connection_pool;MIT;MIT
+true;0;coveralls;MIT;MIT
+true;0;crack;MIT;MIT
+true;0;crass;MIT;MIT
+true;0;css_parser;MIT;MIT
+true;0;cucumber;MIT;MIT
+true;0;cucumber-core;MIT;MIT
+true;0;cucumber-create-meta;MIT;MIT
+true;0;cucumber-cucumber-expressions;MIT;MIT
+true;0;cucumber-gherkin;MIT;MIT
+true;0;cucumber-messages;MIT;MIT
+true;0;cucumber-tag-expressions;MIT;MIT
+true;0;cucumber-wire;MIT;MIT
+false;0;curb;Ruby;MIT
+true;0;daemon_controller;MIT;MIT
+true;0;dalli;MIT;MIT
+false;0;declarative_authorization;MIT;
+true;0;deep_merge;MIT;MIT
+false;0;delorean;MIT;
+false;0;diff-lcs;MIT OR Artistic-2.0 OR GPL-2.0-or-later;MIT and Artistic-2.0 and GPL-2.0+
+true;0;diffy;MIT;MIT
+true;0;docile;MIT;MIT
+false;0;drake;MIT;
+true;0;ed25519;MIT;MIT
+false;0;ejs;MIT;
+true;0;em-http-request;MIT;MIT
+false;0;em-socksify;MIT;
+false;0;em-spec;MIT;
+true;0;em-websocket;MIT;MIT
+true;0;em-websocket-client;MIT;MIT
+false;0;ensure_valid_encoding;MIT;
+true;0;erubi;MIT;MIT
+true;0;ethon;MIT;MIT
+true;0;excon;MIT;MIT
+true;0;execjs;MIT;MIT
+false;0;facon;MIT;
+true;0;factory_bot;MIT;MIT
+true;0;fake_ftp;MIT;MIT
+true;0;fakefs;MIT;MIT
+true;0;faraday;MIT;MIT
+true;0;flexmock;MIT;MIT
+true;0;fog-core;MIT;MIT
+true;0;fog-json;MIT;MIT
+true;0;fog-libvirt;MIT;MIT
+true;0;fog-xml;MIT;MIT
+true;0;foreigner;MIT;MIT
+false;0;formatador;MIT;
+true;0;forwardable-extended;MIT;MIT
+true;0;gem-nice-install;MIT;MIT
+true;0;generator_spec;MIT;MIT
+false;0;gettext;Ruby;Ruby and LGPL-3.0+
+true;0;gist;MIT;MIT
+true;0;git;MIT;MIT
+true;0;globalid;MIT;MIT
+true;0;glu;MIT;MIT
+true;0;glut;MIT;MIT
+true;0;gssapi;MIT;MIT
+true;0;guard;MIT;MIT
+true;0;guard-compat;MIT;MIT
+true;0;guard-livereload;MIT;MIT
+true;0;guard-shell;MIT;MIT
+true;0;hashdiff;MIT;MIT
+true;0;hashie;MIT;MIT
+false;0;hashr;MIT;
+true;0;hikidoc;MIT;MIT
+true;0;hitimes;ISC;ISC
+true;0;hoe;MIT;MIT
+true;0;htmlentities;MIT;MIT
+true;0;http-accept;MIT;MIT
+true;0;http-cookie;MIT;MIT
+false;0;http_connection;MIT;
+true;0;http_parser.rb;MIT;MIT
+true;0;httparty;MIT;MIT
+true;0;i18n_data;MIT;MIT
+true;0;image_processing;MIT;MIT
+true;0;importmap-rails;MIT;MIT
+true;0;introspection;MIT;MIT
+true;0;ipaddress;MIT;MIT
+true;0;isolate;MIT;MIT
+true;0;jbuilder;MIT;MIT
+true;0;jekyll;MIT;MIT
+true;0;jekyll-asciidoc;MIT;MIT
+true;0;jekyll-email-protect;MIT;MIT
+true;0;jekyll-feed;MIT;MIT
+true;0;jekyll-git-authors;MIT;MIT
+true;0;jekyll-sass-converter;MIT;MIT
+true;0;jekyll-seo-tag;MIT;MIT
+true;0;jekyll-toc;MIT;MIT
+true;0;jekyll-watch;MIT;MIT
+true;0;jquery-rails;MIT;MIT
+true;0;json_spec;MIT;MIT
+true;0;kramdown;MIT;MIT
+true;0;kramdown-parser-gfm;MIT;MIT
+true;0;kramdown-syntax-coderay;MIT;MIT
+true;0;launchy;ISC;ISC
+true;0;linked-list;MIT;MIT
+true;0;liquid;MIT;MIT
+true;0;listen;MIT;MIT
+false;0;little-plugger;MIT;
+true;0;loofah;MIT;MIT
+true;0;lumberjack;MIT;MIT
+true;0;mail;MIT;MIT
+true;0;marc;MIT;MIT
+true;0;mechanize;MIT;MIT
+true;0;memfs;MIT;MIT
+true;0;mercenary;MIT;MIT
+true;0;metaclass;MIT;MIT
+true;0;method_source;MIT;MIT
+false;0;middleware;MIT;
+true;0;mime-types;MIT;MIT
+true;0;mime-types-data;MIT;MIT
+true;0;mimemagic;MIT;MIT
+true;0;mini_magick;MIT;MIT
+true;0;mini_mime;MIT;MIT
+true;0;mini_portile;MIT;MIT
+true;0;mini_portile2;MIT;MIT
+true;0;minima;MIT;MIT
+true;0;minitest;MIT;MIT
+true;0;minitest-around;MIT;MIT
+true;0;minitest-profile;MIT;MIT
+true;0;minitest-stub-const;MIT;MIT
+true;0;mizuho;MIT;MIT
+false;0;mkrf;MIT;
+true;0;mongoid;MIT;MIT
+false;0;moped;MIT;
+true;0;more_core_extensions;MIT;MIT
+true;0;multi_json;MIT;MIT
+true;0;multi_test;MIT;MIT
+true;0;multi_xml;MIT;MIT
+true;0;multipart-post;MIT;MIT
+true;0;mustache;MIT;MIT
+true;0;mustermann;MIT;MIT
+true;0;mysql2;MIT;MIT
+true;0;nenv;MIT;MIT
+true;0;nesty;MIT;MIT
+true;0;net-http-digest_auth;MIT;MIT
+true;0;net-http-persistent;MIT;MIT
+true;0;net-ldap;MIT;MIT
+true;0;net-scp;MIT;MIT
+true;0;net-ssh;MIT;MIT
+true;0;netrc;MIT;MIT
+true;0;notiffany;MIT;MIT
+true;0;opengl;MIT;MIT
+true;0;optimist;MIT;MIT
+true;0;ox;MIT;MIT
+true;0;parallel;MIT;MIT
+false;0;parse-cron;MIT;
+true;0;parseconfig;MIT;MIT
+true;0;pastel;MIT;MIT
+true;0;pathutil;MIT;MIT
+true;0;pdf-reader;MIT;MIT
+true;0;pdfkit;MIT;MIT
+true;0;plist;MIT;MIT
+true;0;polyglot;MIT;MIT
+true;0;posix-spawn;MIT;MIT
+true;0;powerpack;MIT;MIT
+false;0;pr_geohash;MIT;
+true;0;prawn-svg;MIT;MIT
+true;0;progressbar;MIT;MIT
+false;0;proxifier;MIT;
+true;0;pry;MIT;MIT
+true;0;pry-byebug;MIT;MIT
+true;0;puma;BSD-3-Clause;BSD-3-Clause
+true;0;pundit;MIT;MIT
+false;0;puppet-lint;MIT;
+false;0;rack-accept;MIT;
+true;0;rack-cache;MIT;MIT
+true;0;rack-cors;MIT;MIT
+true;0;rack-protection;MIT;MIT
+false;0;rack-restful_submit;MIT;
+true;0;rack-test;MIT;MIT
+true;0;rails;MIT;MIT
+true;0;rails-controller-testing;MIT;MIT
+true;0;rails-deprecated_sanitizer;MIT;MIT
+true;0;rails-dom-testing;MIT;MIT
+true;0;rails-html-sanitizer;MIT;MIT
+true;0;railties;MIT;MIT
+true;0;rainbow;MIT;MIT
+true;0;rake;MIT;MIT
+true;0;rake-compiler;MIT;MIT
+true;0;rake-contrib;MIT;MIT
+true;0;rb-inotify;MIT;MIT
+true;0;rbvmomi;MIT;MIT
+true;0;red-colors;MIT;MIT
+true;0;redis;MIT;MIT
+true;0;ref;MIT;MIT
+true;0;regexp_parser;MIT;MIT
+true;0;regexp_property_values;MIT;MIT
+true;0;require_all;MIT;MIT
+true;0;resolve-hostname;MIT;MIT
+true;0;rest-client;MIT;MIT
+true;0;rmagick;MIT;MIT
+true;0;ronn-ng;MIT;MIT
+true;0;rr;MIT;MIT
+true;0;rspec;MIT;MIT
+true;0;rspec-collection_matchers;MIT;MIT
+true;0;rspec-core;MIT;MIT
+true;0;rspec-expectations;MIT;MIT
+true;0;rspec-its;MIT;MIT
+true;0;rspec-mocks;MIT;MIT
+true;0;rspec-pending_for;MIT;MIT
+true;0;rspec-rails;MIT;MIT
+true;0;rspec-support;MIT;MIT
+false;0;rttool;Ruby;
+false;0;ruby-opengl;MIT;
+true;0;ruby-progressbar;MIT;MIT
+false;0;ruby-rc4;MIT;
+true;0;ruby-vips;MIT;MIT
+true;0;ruby_dep;MIT;MIT
+true;0;ruby_engine;MIT;MIT
+true;0;ruby_version;MIT;MIT
+true;0;rubygems-mirror;MIT;MIT
+true;0;rugged;MIT;MIT
+true;0;safe_yaml;MIT;MIT
+true;0;sass;MIT;MIT
+true;0;sass-rails;MIT;MIT
+true;0;sassc;MIT;MIT
+true;0;scrub_rb;MIT;MIT
+false;0;scruffy;MIT;
+true;0;sd_notify;MIT;MIT
+true;0;semantic;MIT;MIT
+true;0;sequel;MIT;MIT
+false;0;session;Ruby;
+false;0;settingslogic;MIT;
+true;0;sexp_processor;MIT;MIT
+true;0;shellany;MIT;MIT
+false;0;shindo;MIT;
+true;0;shoulda;MIT;MIT
+true;0;shoulda-context;MIT;MIT
+true;0;shoulda-matchers;MIT;MIT
+true;0;simplecov;MIT;MIT
+true;0;simplecov-html;MIT;MIT
+true;0;simpleidn;MIT;MIT
+true;0;sinatra;MIT;MIT
+false;0;sinatra-cross_origin;MIT;
+true;0;slim;MIT;MIT
+true;0;snmp;MIT;MIT
+true;0;spring;MIT;MIT
+true;0;spring-watcher-listen;MIT;MIT
+true;0;sprockets;MIT;MIT
+true;0;sprockets-rails;MIT;MIT
+true;0;sshkey;MIT;MIT
+false;0;state_machine;MIT;
+true;0;stringex;MIT;MIT
+true;0;syck;MIT;MIT
+true;0;sync;BSD-2-Clause;BSD-2-Clause
+true;0;systemu;Ruby;Ruby
+true;0;temple;MIT;MIT
+true;0;term-ansicolor;Apache-2.0;Apache-2.0
+true;0;terminal-table;MIT;MIT
+true;0;test_construct;MIT;MIT
+true;0;test_declarative;MIT;MIT
+true;0;text;MIT;MIT
+true;0;thor;MIT;MIT
+true;0;thread_order;MIT;MIT
+true;0;tilt;MIT;MIT
+true;0;timecop;MIT;MIT
+true;0;timers;MIT;MIT
+true;0;tins;MIT;MIT
+true;0;tomlrb;MIT;MIT
+false;0;transaction-simple;MIT;
+true;0;treetop;MIT;MIT
+true;0;tty-color;MIT;MIT
+true;0;turbolinks;MIT;MIT
+true;0;turbolinks-source;MIT;MIT
+true;0;typhoeus;MIT;MIT
+true;0;tzinfo;MIT;MIT
+true;0;unf_ext;MIT;MIT
+true;0;unicode;Ruby;Ruby
+true;0;unicode-display_width;MIT;MIT
+false;0;vcr;MIT;
+true;0;web-console;MIT;MIT
+true;0;webmock;MIT;MIT
+true;0;websocket;MIT;MIT
+true;0;websocket-extensions;Apache-2.0;Apache-2.0
+false;0;whiskey_disk;MIT;
+true;0;xml-simple;MIT;MIT
+true;0;xpath;MIT;MIT
+true;0;yaml-lint;MIT;MIT
+true;0;zeitwerk;MIT;MIT \ No newline at end of file