about summary refs log tree commit diff
path: root/pkgs/development/tools/gi-crystal/src.patch
blob: eb18035f994165fbb584bed0c776c5309ba7c72f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
--- 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}" }