akcache 1.0.2 → 1.1.0
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 +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +2 -1
- data/lib/kcache/README.md +29 -0
- data/lib/kcache/version.rb +1 -1
- data/lib/kcache.rb +108 -47
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e111a87e7b115115b7fe107f4973a6860e4932a9fd60bf39a618b1ecef70a71a
|
4
|
+
data.tar.gz: e64335df77ccde462d563a4824d56e8ddb8e121f25b63154fd04447d3d435953
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9ae37bcf39f37c9189f204fde4a90bb38dc0902058cd0c82c83d43dc32ba867e5d250fdc39ccfa9ef177e75fab597e4ad707016ed6b1dab0b54d85ccc26499f2
|
7
|
+
data.tar.gz: 73c4cace947c1c93670f139d568edcb7d8091ddd7a406da832c7c8fa5363c1647843a20a09293ac064cd9b935cb7f205489b5853ee8c960316a990232f7986ca
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
#
|
1
|
+
# AKCache
|
2
|
+
|
2
3
|
|
3
4
|
Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/kcache`. To experiment with that code, run `bin/console` for an interactive prompt.
|
4
5
|
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# AKMall
|
2
|
+
|
3
|
+
[](https://travis-ci.org/pangyulei/AKMall)
|
4
|
+
[](https://cocoapods.org/pods/AKMall)
|
5
|
+
[](https://cocoapods.org/pods/AKMall)
|
6
|
+
[](https://cocoapods.org/pods/AKMall)
|
7
|
+
|
8
|
+
## Example
|
9
|
+
|
10
|
+
To run the example project, clone the repo, and run `pod install` from the Example directory first.
|
11
|
+
|
12
|
+
## Requirements
|
13
|
+
|
14
|
+
## Installation
|
15
|
+
|
16
|
+
AKMall is available through [CocoaPods](https://cocoapods.org). To install
|
17
|
+
it, simply add the following line to your Podfile:
|
18
|
+
|
19
|
+
```ruby
|
20
|
+
pod 'AKMall'
|
21
|
+
```
|
22
|
+
|
23
|
+
## Author
|
24
|
+
|
25
|
+
pangyulei, pangyulei@gmail.com
|
26
|
+
|
27
|
+
## License
|
28
|
+
|
29
|
+
AKMall is available under the MIT license. See the LICENSE file for more info.
|
data/lib/kcache/version.rb
CHANGED
data/lib/kcache.rb
CHANGED
@@ -38,7 +38,7 @@ OBJROOT = "OBJROOT"
|
|
38
38
|
#变量
|
39
39
|
$podfile_spec_checksums = nil
|
40
40
|
$file_md5_hash = {}
|
41
|
-
|
41
|
+
$exclude_target = []
|
42
42
|
|
43
43
|
class CacheManager
|
44
44
|
|
@@ -492,6 +492,33 @@ $file_md5_hash = {}
|
|
492
492
|
return true
|
493
493
|
|
494
494
|
end
|
495
|
+
|
496
|
+
def get_custom_config_information
|
497
|
+
if File.exist? "project_cache_config.yml"
|
498
|
+
custom_config = YAML.load (File.read("project_cache_config.yml"))
|
499
|
+
$exclude_target = custom_config[:exclude_targets]
|
500
|
+
else
|
501
|
+
source = {
|
502
|
+
:description => nil,
|
503
|
+
:dependency_check => true,
|
504
|
+
:exclude_targets => ["target1", "target2"],
|
505
|
+
}.to_yaml
|
506
|
+
|
507
|
+
substitution_list = {
|
508
|
+
/:description:/ => "# You can assign values to these parameters to achieve some custom functions\n",
|
509
|
+
/:dependency_check:/ => "\n\n# Whether to check the dependencies of the target. For exzample: target A depends on target B. Under normal circumstances, target B is recompiled, then target A will be recompiled, but if the dependencies are not checked, target A will not be recompiled at this time\n:dependency_check:",
|
510
|
+
/:exclude_targets:/ => "\n\n# the targets that will not participate in cache dependency detection\n:exclude_targets:",
|
511
|
+
}
|
512
|
+
|
513
|
+
substitution_list.each do |pattern, replacement|
|
514
|
+
source.gsub!(pattern, replacement)
|
515
|
+
end
|
516
|
+
puts source
|
517
|
+
File.write("project_cache_config.yml", source)
|
518
|
+
end
|
519
|
+
|
520
|
+
end
|
521
|
+
|
495
522
|
|
496
523
|
def project_task_begin
|
497
524
|
|
@@ -502,6 +529,9 @@ $file_md5_hash = {}
|
|
502
529
|
miss_count = 0
|
503
530
|
error_count = 0
|
504
531
|
hit_target_md5_cache_set = Set.new
|
532
|
+
miss_target_cache_set = Set.new
|
533
|
+
|
534
|
+
get_custom_config_information
|
505
535
|
|
506
536
|
pre_targets_info = {}
|
507
537
|
projects.each do |project|
|
@@ -538,58 +568,89 @@ $file_md5_hash = {}
|
|
538
568
|
end
|
539
569
|
end
|
540
570
|
end
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
571
|
+
|
572
|
+
while 1
|
573
|
+
projects.each do |project|
|
574
|
+
project.native_targets.each do |target|
|
575
|
+
target_info = pre_targets_info[target]
|
576
|
+
next unless target_info and target_info[:target_status] != CACHE_STATUS_MISS
|
577
|
+
next unless target_info and target_info[:target_status] != CACHE_STATUS_HIT
|
578
|
+
hit_target_cache_dirs = target_info[:hit_target_cache_dir]
|
579
|
+
next unless hit_target_cache_dirs and hit_target_cache_dirs.count > 0
|
580
|
+
target_md5 = target_info[:target_md5]
|
581
|
+
|
582
|
+
target_really_hit_dir = ""
|
583
|
+
target_really_miss = false
|
584
|
+
hit_target_cache_dirs.each do |hit_target_cache_dir|
|
585
|
+
all_dependency_target_exist = true
|
586
|
+
target_really_miss = false
|
587
|
+
hit_targets_info = YAML.load(File.read(hit_target_cache_dir + "/" + FILE_NAME_CONTEXT))
|
588
|
+
if hit_targets_info[:dependency_targets_md5]
|
589
|
+
hit_targets_info[:dependency_targets_md5].each do | item |
|
590
|
+
dependency_target = item[0]
|
591
|
+
dependency_target_md5 = item[1]
|
592
|
+
if $exclude_target.include? dependency_target
|
593
|
+
puts "<INFO> #{target.name} #{target_md5} hit cache, dependency target #{dependency_target}-#{dependency_target_md5} skip check"
|
594
|
+
next
|
595
|
+
end
|
596
|
+
|
597
|
+
if miss_target_cache_set.include? "#{dependency_target}"
|
598
|
+
puts "<INFO> #{target.name} #{target_md5} hit cache, but dependency target #{dependency_target}-#{dependency_target_md5} dose not hit"
|
599
|
+
target_really_miss = true
|
600
|
+
all_dependency_target_exist = false
|
601
|
+
break
|
602
|
+
end
|
603
|
+
|
604
|
+
unless hit_target_md5_cache_set.include? "#{dependency_target}-#{dependency_target_md5}"
|
605
|
+
puts "<INFO> #{target.name} #{target_md5} hit cache, but dependency target #{dependency_target}-#{dependency_target_md5} dose not hit"
|
606
|
+
all_dependency_target_exist = false
|
607
|
+
target_really_miss = true
|
608
|
+
break
|
609
|
+
end
|
610
|
+
end
|
611
|
+
|
612
|
+
if all_dependency_target_exist
|
613
|
+
target_really_hit_dir = hit_target_cache_dir
|
614
|
+
break
|
615
|
+
end
|
616
|
+
|
617
|
+
if target_really_miss
|
561
618
|
break
|
562
619
|
end
|
563
|
-
end
|
564
|
-
|
565
|
-
if all_dependency_target_exist
|
566
|
-
really_hit_dir = hit_target_cache_dir
|
567
|
-
break
|
568
620
|
end
|
569
621
|
end
|
622
|
+
|
623
|
+
if target_really_hit_dir.length > 0
|
624
|
+
puts "<INFO> #{target.name} #{target_md5} hit cache"
|
625
|
+
hit_count = hit_count + 1
|
626
|
+
hit_target_info = YAML.load(File.read(target_really_hit_dir + "/" + FILE_NAME_CONTEXT))
|
627
|
+
target_info = target_info.merge!(hit_target_info)
|
628
|
+
target_info[:target_status] = CACHE_STATUS_HIT
|
629
|
+
target_info[:hit_target_cache_dir] = target_really_hit_dir
|
630
|
+
inject_copy_action(project, target, target_info)
|
631
|
+
end
|
632
|
+
|
633
|
+
if target_really_miss
|
634
|
+
miss_count = miss_count + 1
|
635
|
+
miss_target_cache_set.add "#{target.name}"
|
636
|
+
hit_target_md5_cache_set.delete "#{target.name}-#{target_info[:target_md5]}"
|
637
|
+
target_info[:target_status] = CACHE_STATUS_MISS
|
638
|
+
target_info.delete(:hit_target_cache_dir)
|
639
|
+
inject_flag_action(project, target)
|
640
|
+
end
|
641
|
+
|
642
|
+
File.write("#{project.path}/#{target.name}.#{FILE_NAME_TARGET_CONTEXT}", target_info.to_yaml)
|
643
|
+
|
570
644
|
end
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
inject_copy_action(project, target, target_info)
|
580
|
-
else
|
581
|
-
puts "<INFO> #{target.name} #{target_md5} miss cache for reason dependency miss"
|
582
|
-
target_info[:target_status] = CACHE_STATUS_MISS
|
583
|
-
target_info.delete(:hit_target_cache_dir)
|
584
|
-
inject_flag_action(project, target)
|
585
|
-
miss_count = miss_count + 1
|
586
|
-
end
|
587
|
-
File.write("#{project.path}/#{target.name}.#{FILE_NAME_TARGET_CONTEXT}", target_info.to_yaml)
|
588
|
-
|
645
|
+
|
646
|
+
backup_project(project)
|
647
|
+
project.save
|
648
|
+
end
|
649
|
+
if total_count == hit_count + miss_count + error_count
|
650
|
+
break
|
651
|
+
else
|
652
|
+
puts "<INFO> continue to find hit cache"
|
589
653
|
end
|
590
|
-
|
591
|
-
backup_project(project)
|
592
|
-
project.save
|
593
654
|
end
|
594
655
|
puts "<INFO> total count: #{total_count}, hit count: #{hit_count}, miss_count: #{miss_count}, error_count: #{error_count}"
|
595
656
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: akcache
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- yusheng
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-11-
|
11
|
+
date: 2021-11-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: xcodeproj
|
@@ -47,6 +47,7 @@ files:
|
|
47
47
|
- bin/setup
|
48
48
|
- kcache.gemspec
|
49
49
|
- lib/kcache.rb
|
50
|
+
- lib/kcache/README.md
|
50
51
|
- lib/kcache/version.rb
|
51
52
|
homepage: https://github.com/yusheng00
|
52
53
|
licenses:
|