5e9e1146e1
GitOrigin-RevId: 18036c0be90f4e308ae3ebcab0e14aae0336fe42
57 lines
1.7 KiB
Diff
57 lines
1.7 KiB
Diff
--- a/src/generator/main.cr 2023-07-14 18:30:47.687581729 +0300
|
|
+++ b/src/generator/main.cr 2023-07-17 07:55:24.177630085 +0300
|
|
@@ -1,6 +1,8 @@
|
|
require "colorize"
|
|
require "log"
|
|
require "option_parser"
|
|
+require "file"
|
|
+require "file_utils"
|
|
|
|
require "./binding_config"
|
|
require "./error"
|
|
@@ -43,7 +45,7 @@
|
|
end
|
|
end
|
|
|
|
- output_dir = Path.new(project_dir, "lib/gi-crystal/src/auto").normalize if output_dir.nil?
|
|
+ output_dir = Path.new(Dir.current, "lib/gi-crystal/src/auto").normalize if output_dir.nil?
|
|
extra_bindings = argv.map { |path| Path.new(path).expand.to_s }
|
|
|
|
{output_dir: output_dir,
|
|
@@ -74,11 +76,23 @@
|
|
end
|
|
end
|
|
|
|
-private def find_bindings : Array(String)
|
|
- find_pattern = Path.new(project_dir, "**/binding.yml").normalize
|
|
+private def find_bindings_yml(path) : Array(String)
|
|
+ find_pattern = File.join(path, "**/binding.yml")
|
|
Dir[find_pattern]
|
|
end
|
|
|
|
+private def find_bindings : Array(String)
|
|
+ current_directory = Dir.current
|
|
+
|
|
+ bindings = find_bindings_yml(current_directory)
|
|
+ Dir.glob(File.join(current_directory, "**/*")).each do |path|
|
|
+ if File.symlink?(path)
|
|
+ bindings += find_bindings_yml(path)
|
|
+ end
|
|
+ end
|
|
+ bindings
|
|
+end
|
|
+
|
|
private def format_files(dir)
|
|
# We need to chdir into output dir since the formatter ignores everything under `lib` dir.
|
|
Dir.cd(dir) { `crystal tool format` }
|
|
@@ -102,7 +116,9 @@
|
|
Log.info { "Generating bindings at #{options[:output_dir]}" }
|
|
|
|
Generator::DocRepo.disable! unless options[:doc_gen]
|
|
-
|
|
+
|
|
+ FileUtils.cp_r(project_dir, File.join(Dir.current, "lib/gi-crystal"))
|
|
+
|
|
binding_yamls = find_bindings.concat(options[:extra_bindings])
|
|
binding_yamls.each do |file|
|
|
Log.info { "Using binding config at #{file}" }
|