#!/usr/bin/env ruby require 'pathname' files = `git status`.split("\n") .map(&:strip) .select{ |line| line.start_with? 'modified: '} .map{ |line| line.delete_prefix 'modified:' } .map(&:strip) .select{ |line| line.start_with? 'vendor/' } .map{ |file| Pathname.new(file) } files.each do |file| content = file.read file.write(content.encode(content.encoding, universal_newline: true)) end packages = Pathname.new('package.json').readlines .map{ |line| line.split(':').first } .map(&:strip) .reject{ |line| line.empty? || line.match?(/([{}]|"name"|"private"|"dependencies")/) } .map{ |line| line.delete_prefix('"').delete_suffix('"') } Pathname.new('vendor').children.each do |package| name = package.basename.to_s next if name == '.yarn-integrity' next if packages.include? name package.rmtree end