comfpile-old/bin/console

74 lines
2 KiB
Ruby
Executable file

#!/usr/bin/env ruby
# frozen_string_literal: true
require "bundler/setup"
require "comfpile"
# You can add fixtures and/or initialization code here to make experimenting
# with your gem easier. You can also use a different console, if you like.
$core = Comfpile::Core.new()
$core.add_artefact_engine Comfpile::FilesourceEngine, root_path: File.join(File.dirname(__FILE__), '../test/faux_build_dir')
$core.add_artefact_engine Comfpile::ConfigLoaderEngine
$core.add_artefact_engine Comfpile::ParserEngine,
file_regex: /^(.+)\.(h|c|cpp)$/,
search_regexes: [
{
regex: /^#include\s*[<"](?<value>.+)[>"]/,
key: 'include'
},
{
regex: /\/\/\s*comf\.(?<key>\w+)[=:]\s*(?<value>.+)/
}
]
$core.add_artefact_engine do |engine|
engine.add_recipe(:dependency_list, /^(.+)\.(h|c|cpp)$/) do |match, a|
a.require_artefact :dependency_analysis, a.target
a.require_artefact :dependency_analysis_include, a.target
a.add_step do
deps_artefact = find_artefact(:dependency_analysis, @target)
@parameters[:dependency_list] = deps_artefact.dependencies
end
end
engine.add_recipe(:x86_debug, /^run (.+)/) do |match, a|
a.require_artefact :parsed, "#{match[1]}.cpp"
end
engine.add_recipe(:x86_debug, /(.+)\.o$/) do |match, a|
a.require_artefact :sourcefile, "#{match[1]}.cpp"
a.add_step do
end
true
end
end
t_start = Time.now()
dep_art = $core.craft_and_complete(:dependency_analysis, "main.cpp")
t_end = Time.now()
puts "Full dependency list is: #{dep_art.dependencies.map(&:target)} (took #{t_end - t_start})"
puts "Includes of all source files:"
dep_art.dependencies.each do |art|
next unless ['.cpp', '.c'].include? File.extname(art.target)
include_art = $core.craft_and_complete(:dependency_analysis_include, art.target)
puts "Included dependencies for #{art.target} are #{include_art.dependencies.map(&:target)}"
end
# (If you use this, don't forget to add pry to your Gemfile!)
require "pry"
Pry.start