canoe 0.3.3.4 → 0.3.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 28de761c23336af9df9ed1117d47f85c22f77abd3030195462d0e43ccba5091c
4
- data.tar.gz: f0734ecf77c58d6d86a72835fff2e56e1ff49504be3f2ad7cc3e182e550b5623
3
+ metadata.gz: 31786230f3242408570eab8fa5c5c7a51fa1e3ca7fe5b0edabe6789a4a1b311a
4
+ data.tar.gz: 68ef217e2f6ac77d17ebe14ef3658c2002b8a6f5d0fed5090292cdb21b16b21c
5
5
  SHA512:
6
- metadata.gz: ff0167eca4be655a4cc33258b5dddfa07e7cbad53d6745b38d75eb301c032403d5338e6249f7704dee460dbaa87a3a4141b8f1ca023abcff5af4a660691b4f2c
7
- data.tar.gz: f5c494d7cefeefca5e2fd14353f9645479c29f4bb338330ebb9075d103fce73ea678bbb62823053bafdbe3bad497d7b5ecc8a3ca369ff078b937d1e7296e5fbd
6
+ metadata.gz: c089ec6a65599754ef177bbe8f14e71195d0d019ee9df3aa4a8414c1204055058f5b7a7e542a9dc43917b85c84e55907da60c8a2aeccb1d3271f02bead5d6c68
7
+ data.tar.gz: ca6a203ad8bed8382cb8b3ee5d5ba567de8462bcc611d4a603c43159c98352cec40a9eec1f35d67369f5d33da696a2a46ca15627ffe34a50b1cc8cc07fa91340
data/lib/coloring.rb CHANGED
@@ -10,7 +10,7 @@ class String
10
10
  34 => :blue,
11
11
  35 => :magenta,
12
12
  36 => :cyan,
13
- 37 => :white,
13
+ 37 => :white
14
14
  }
15
15
  colors.each do |k, v|
16
16
  define_method v do
@@ -242,7 +242,6 @@ module Canoe
242
242
  objs = ["$(OBJ_#{n})"] + extract_one_file_obj(filename, deps).map do |o|
243
243
  "$(OBJ_#{File.basename(o, '.*').upcase})"
244
244
  end
245
-
246
245
  makefile.puts("$(#{n}): #{objs.join ' '}\n\t$(#{cmplr}) $(#{cmplr}FLAGS) -o $@ $^ $(LDFLAGS) $(LDLIBS)")
247
246
  makefile.puts ''
248
247
  end
@@ -264,6 +263,7 @@ module Canoe
264
263
  make_out_rules makefile, deps
265
264
  makefile.puts ''
266
265
  make_obj_rules makefile, deps
266
+ makefile.puts ''
267
267
  make_tests_rules makefile, deps
268
268
  makefile.puts ''
269
269
  make_clean makefile
@@ -9,12 +9,45 @@ module Canoe
9
9
  test_single(args[0], args[1..].join(" "))
10
10
  end
11
11
 
12
- # extract one test file's dependency
12
+ # extract all files the file depends on, including headers
13
13
  def extract_one_file(file, deps)
14
- ret = deps[file].map { |f| f.gsub(".#{@header_suffix}", ".#{@source_suffix}") }
14
+ ret = []
15
+ holder = deps[file] + deps[file].map { |f| f.gsub(".#{@header_suffix}", ".#{@source_suffix}") }
16
+ extract_one_file_helper(file, deps, holder, ret)
17
+
18
+ ret = ret + ret.map{ |f| f.gsub(".#{@header_suffix}", ".#{@source_suffix}") }
19
+ ret.uniq
20
+ end
21
+
22
+ def extract_one_file_obj(file, deps)
23
+ ret = extract_one_file(file, deps).map do |f|
24
+ file_to_obj(f)
25
+ end
26
+ ret.uniq
27
+ end
28
+
29
+ def extract_one_file_header(file, deps)
30
+ ret = extract_one_file(file, deps).map do |f|
31
+ f.gsub(".#{@source_suffix}", ".#{@header_suffix}")
32
+ end
33
+ ret.uniq
34
+ end
35
+
36
+ def extract_one_file_source(file, deps)
37
+ ret = extract_one_file(file, deps).map do |f|
38
+ f.gsub(".#{@header_suffix}", ".#{@source_suffix}")
39
+ end
40
+ ret.uniq
41
+ end
42
+
43
+ private
44
+
45
+ # extract one test file's dependency
46
+ def extract_one_file_helper(file, deps, ref, ret)
15
47
  begin
16
- deps[file].each do |f|
17
- dep = extract_one_file(f, deps)
48
+ ref.each do |f|
49
+ ret << f unless ret.include?(f)
50
+ dep = extract_one_file_helper(f, deps, deps[f], ret)
18
51
  dep.each do |d|
19
52
  ret << d unless ret.include?(d)
20
53
  end
@@ -22,18 +55,9 @@ module Canoe
22
55
  rescue SystemStackError
23
56
  puts "#{"Fatal: ".red}file #{file} is circularly included"
24
57
  exit false
25
- end
26
- ret.map { |f| f.gsub(".#{@header_suffix}", ".#{@source_suffix}") }
27
- end
28
-
29
- def extract_one_file_obj(file, deps)
30
- extract_one_file(file, deps).map do |f|
31
- file_to_obj(f)
32
58
  end
33
59
  end
34
60
 
35
- private
36
-
37
61
  def test_all
38
62
  build_test
39
63
  fetch_all_test_files.each do |f|
@@ -52,6 +76,7 @@ module Canoe
52
76
  rebuild ||= File.mtime(bin) < File.mtime(file)
53
77
 
54
78
  deps = fetch_all_deps
79
+
55
80
  extract_one_file(file, deps).each do |f|
56
81
  rebuild ||= File.mtime(bin) < File.mtime(f) || File.mtime(bin) < File.mtime(hdr_of_src(f))
57
82
  end
@@ -84,13 +109,13 @@ module Canoe
84
109
 
85
110
  def link_one_test(test_file, deps)
86
111
  target = "#{@target_short}/#{File.basename(test_file, '.*')}"
87
- @compiler.link_executable target, extract_one_file_obj(test_file, deps) + [file_to_obj(test_file)]
112
+ @compiler.link_executable target, [file_to_obj(test_file)] + extract_one_file_obj(test_file, deps)
88
113
  end
89
114
 
90
115
  def build_one_test(test_file, deps, indent = "")
91
116
  files = DepAnalyzer.compiling_filter(target_deps, Time.new(0), @source_suffix, @header_suffix)
117
+ .intersection(extract_one_file_source(test_file, deps)) << test_file
92
118
  flag = true
93
- files << test_file
94
119
 
95
120
  stepper = Stepper.new(files.size, files.size)
96
121
 
@@ -101,7 +126,7 @@ module Canoe
101
126
  stepper.step
102
127
  end
103
128
  abort_on_err("Compiling errors encountered") unless flag;
104
-
129
+
105
130
  printf "#{indent}#{stepper.progress_as_str.green} compiling finished\n"
106
131
  puts "#{indent}[100%]".green + " linking"
107
132
  link_one_test(test_file, deps)
@@ -2,7 +2,7 @@ module Canoe
2
2
  class WorkSpace
3
3
  def self.version
4
4
  puts <<~VER
5
- canoe v0.3.3.4
5
+ canoe v0.3.3.7
6
6
  For features in this version, please visit https://github.com/Dicridon/canoe
7
7
  Currently, canoe can do below:
8
8
  - project creation
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: canoe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3.4
4
+ version: 0.3.3.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - XIONG Ziwei
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-19 00:00:00.000000000 Z
11
+ date: 2022-08-18 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |+
14
14
  Canoe offers project management and building facilities to C/C++ projects.