|
require 'json' |
|
require 'pathname' |
|
|
|
TIMESTAMP = '2017-12-12 c31b1308c'.freeze |
|
FILE_PATH1 = './search1.json'.freeze |
|
FILE_PATH2 = './search2.json'.freeze |
|
JS_ASSETS_PATH = 'app/assets/javascripts'.freeze |
|
|
|
# " = javascript_include_tag 'foo/application.js'" => 'foo/application' |
|
def extract_file_path1 str |
|
str |
|
.match(/javascript_include_tag ('.+'|".+"|:.+)/)[1] |
|
.gsub(/"|'|:/, '') |
|
.gsub(/\.js|\.es6/, '') |
|
end |
|
|
|
# "//= require_tree ./creator_audition/templates" => './creator_audition/templates' |
|
def extract_file_path2_by_dir str |
|
str.match(%r%//= require_tree (.+)%)[1] |
|
end |
|
|
|
# "//= require jquery.fs.boxer" => 'jquery.fs.boxer' |
|
def extract_file_path2_by_file str |
|
str |
|
.match(%r%//= require (.+)%)[1] |
|
.gsub(/\.js|\.es6/, '') |
|
end |
|
|
|
# 'foo/hoge.js.es6' => 'hoge' |
|
def extract_file_name str |
|
File.basename(str).gsub(/\.js|\.es6/, '') |
|
end |
|
|
|
project_name = ARGV[0] |
|
|
|
result = { |
|
timestanp: TIMESTAMP, |
|
data: [], |
|
} |
|
|
|
File.open FILE_PATH1 do |f| |
|
result[:data] += JSON.load(f).map do |data| |
|
file_path = data['filePath'].gsub %r|.*/#{project_name}/|, '' |
|
file_name = extract_file_name file_path |
|
matches = data['matches'].map do |match| |
|
m_file_path = File.join(JS_ASSETS_PATH, extract_file_path1(match)) |
|
m_file_name = extract_file_name m_file_path |
|
{ |
|
isDir: false, |
|
filePath: m_file_path, |
|
fileName: m_file_name, |
|
} |
|
end |
|
|
|
{ |
|
filePath: file_path, |
|
fileName: file_name, |
|
matches: matches, |
|
} |
|
end |
|
end |
|
|
|
File.open FILE_PATH2 do |f| |
|
result[:data] += JSON.load(f).map do |data| |
|
file_path = data['filePath'].gsub(%r|.*/#{project_name}/|, '').gsub(/\.js|\.es6/, '') |
|
dir_pathname = Pathname(file_path).dirname |
|
file_name = extract_file_name file_path |
|
matches = data['matches'].map do |match| |
|
if match =~ /require_self/ |
|
next |
|
elsif match =~ /require_tree/ |
|
is_dir = true |
|
m_file_path = extract_file_path2_by_dir match |
|
m_file_path = Pathname("#{dir_pathname}/#{m_file_path}").cleanpath.to_s if m_file_path =~ /^\./ |
|
elsif match =~ /require/ |
|
is_dir = false |
|
m_file_path = extract_file_path2_by_file match |
|
m_file_path = Pathname("#{dir_pathname}/#{m_file_path}").cleanpath.to_s if m_file_path =~ /^\./ |
|
end |
|
m_file_name = extract_file_name m_file_path |
|
{ |
|
isDir: is_dir, |
|
filePath: m_file_path, |
|
fileName: m_file_name, |
|
} |
|
end.compact |
|
|
|
{ |
|
filePath: file_path, |
|
fileName: file_name, |
|
matches: matches, |
|
} |
|
end |
|
end |
|
|
|
puts JSON.pretty_generate(result) |