yaml-vfs 0.0.1
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 +7 -0
- data/LICENSE +21 -0
- data/README.md +74 -0
- data/bin/vfs +12 -0
- data/lib/yaml-vfs/command/yaml_vfs_writer.rb +58 -0
- data/lib/yaml-vfs/command.rb +25 -0
- data/lib/yaml-vfs/file_collector.rb +56 -0
- data/lib/yaml-vfs/utils.rb +23 -0
- data/lib/yaml-vfs/version.rb +5 -0
- data/lib/yaml-vfs/yaml_vfs.rb +200 -0
- data/lib/yaml_vfs.rb +25 -0
- metadata +145 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 7520f51e2e72b65619517d88bfcca217e8b7a22b8cff8f1aa54fb78fc44be93e
|
4
|
+
data.tar.gz: 7175cd3d9718aa7d38a67785cf056d9f61bd205b1ddbf08089479b1ba07a0e3d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5b17d619dbbe74947b0040ac4afacbf27b207e785a9cacbcda365cf83ff0b243080955d2a51ac45dc295b296820389d4a8dd78ef195bb6b93d93c70a9c0a8341
|
7
|
+
data.tar.gz: 1ec49fd3ee822039e2fb3ad489cd9afd7cf9a0986f1ef161c3ec0c7f522c25a66626f057522728f65e60103f0adde0aa83844aac9021609c0b80daad03e61b48
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2021 Cat1237
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
# yaml-vfs
|
2
|
+
|
3
|
+
[](https://raw.githubusercontent.com/wangson1237/SYCSSColor/master/LICENSE)
|
4
|
+
|
5
|
+
A gem which can gen VFS YAML file.
|
6
|
+
|
7
|
+
`vfs yamlwriter` lets you create clang opt "-ivfsoverlay" ymal file, map virtual path to real path.
|
8
|
+
|
9
|
+
- ✅ It can gen VFS YAML.
|
10
|
+
|
11
|
+
## Installation
|
12
|
+
|
13
|
+
Add this line to your application's Gemfile:
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
gem 'yaml-vfs'
|
17
|
+
```
|
18
|
+
|
19
|
+
And then execute:
|
20
|
+
|
21
|
+
```shell
|
22
|
+
# bundle install
|
23
|
+
$ bundle install
|
24
|
+
```
|
25
|
+
|
26
|
+
Or install it yourself as:
|
27
|
+
|
28
|
+
```shell
|
29
|
+
# gem install
|
30
|
+
$ gem install yaml-vfs
|
31
|
+
```
|
32
|
+
|
33
|
+
## Usage
|
34
|
+
|
35
|
+
The command should be executed when your want VFS YAML file.
|
36
|
+
|
37
|
+
```shell
|
38
|
+
# write the VFS YAML file to --output-path=<path>
|
39
|
+
$ vfs yamlwriter --framework-path=<path> --real-headers-dir=<path> --real-modules-dir=<path> --output-path=<path>
|
40
|
+
|
41
|
+
# write the VFS YAML file to .
|
42
|
+
$ vfs yamlwriter --framework-path=<path> --real-headers-dir=<path> --real-modules-dir=<path>
|
43
|
+
```
|
44
|
+
|
45
|
+
### Option && Flags
|
46
|
+
|
47
|
+
`Usage:`
|
48
|
+
|
49
|
+
- `vfs yamlwriter --framework-path --real-headers-dir --real-modules-dir [--output-path]`
|
50
|
+
|
51
|
+
`Options:`
|
52
|
+
|
53
|
+
- `--framework-path=<path>`: framework path
|
54
|
+
- `--real-headers-dir=<path>`: real header path
|
55
|
+
- `--real-modules-dir=<path>`: real modules path
|
56
|
+
- `--output-path=<path>`: vfs yaml file output path
|
57
|
+
|
58
|
+
## Command Line Tool
|
59
|
+
|
60
|
+
Installing the 'yaml-vfs' gem will also install two command-line tool `vfs` which you can use to generate VFS YAML file.
|
61
|
+
|
62
|
+
For more information consult `vfs --help` or `vfs yamlwriter --help`.
|
63
|
+
|
64
|
+
## Contributing
|
65
|
+
|
66
|
+
Bug reports and pull requests are welcome on GitHub at [yaml-vfs](https://github.com/Cat1237/yaml-vfs). This project is intended to be a safe, welcoming space for collaboration.
|
67
|
+
|
68
|
+
## License
|
69
|
+
|
70
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
71
|
+
|
72
|
+
## Code of Conduct
|
73
|
+
|
74
|
+
Everyone interacting in the yaml-vfs project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/cocoapods-hmap/blob/master/CODE_OF_CONDUCT.md).
|
data/bin/vfs
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module VFS
|
4
|
+
class Command
|
5
|
+
# vfs yaml file gen cmd
|
6
|
+
class YAMLWriter < Command
|
7
|
+
# summary
|
8
|
+
self.summary = 'Virtual the framework and modules dir, and map to real path'
|
9
|
+
|
10
|
+
self.description = <<-DESC
|
11
|
+
Gen VFS Yaml file. To map framework virtual path to real path.
|
12
|
+
DESC
|
13
|
+
|
14
|
+
self.arguments = [
|
15
|
+
# framework_p, r_header, r_m
|
16
|
+
CLAide::Argument.new('--framework-path', true),
|
17
|
+
CLAide::Argument.new('--real-headers-dir', true),
|
18
|
+
CLAide::Argument.new('--real-modules-dir', true),
|
19
|
+
CLAide::Argument.new('--output-path', false)
|
20
|
+
]
|
21
|
+
|
22
|
+
def initialize(argv)
|
23
|
+
super
|
24
|
+
framework_path = argv.option('framework-path')
|
25
|
+
@framework_path = Pathname(framework_path) unless framework_path.nil?
|
26
|
+
real_headers_dir = argv.option('real-headers-dir')
|
27
|
+
@real_header_dir = Pathname(real_headers_dir) unless real_headers_dir.nil?
|
28
|
+
real_modules_dir = argv.option('real-modules-dir')
|
29
|
+
@real_modules_dir = Pathname(real_modules_dir) unless real_modules_dir.nil?
|
30
|
+
output_path = argv.option('output-path')
|
31
|
+
@output_path = output_path.nil? ? Pathname('.') : Pathname(output_path)
|
32
|
+
end
|
33
|
+
|
34
|
+
def validate!
|
35
|
+
super
|
36
|
+
help! 'must set framework_path' if @framework_path.nil?
|
37
|
+
help! 'must set real_headers_dir' if @real_header_dir.nil?
|
38
|
+
help! 'must set real_modules_dir' if @real_modules_dir.nil?
|
39
|
+
end
|
40
|
+
|
41
|
+
# help
|
42
|
+
def self.options
|
43
|
+
[
|
44
|
+
['--framework-path=<path>', 'framework path'],
|
45
|
+
['--real-headers-dir=<path>', 'real header path'],
|
46
|
+
['--real-modules-dir=<path>', 'real modules path'],
|
47
|
+
['--output-path=<path>', 'vfs yaml file output path']
|
48
|
+
].concat(super)
|
49
|
+
end
|
50
|
+
|
51
|
+
def run
|
52
|
+
require 'yaml_vfs'
|
53
|
+
|
54
|
+
VFS::FileCollector.new_from_real_headers_dir(@framework_path, @real_header_dir, @real_modules_dir).write_mapping(@output_path)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# The primary namespace for VFS.
|
4
|
+
module VFS
|
5
|
+
require 'colored2'
|
6
|
+
require 'claide'
|
7
|
+
# The primary Command for VFS.
|
8
|
+
class Command < CLAide::Command
|
9
|
+
require 'yaml-vfs/command/yaml_vfs_writer'
|
10
|
+
|
11
|
+
self.abstract_command = false
|
12
|
+
self.command = 'vfs'
|
13
|
+
self.version = VERSION
|
14
|
+
self.description = 'VFS lets you create clang "-ivfsoverlay" ymal file, map virtual path to real path.'
|
15
|
+
self.plugin_prefixes = %w[claide yaml_vfs_writer]
|
16
|
+
|
17
|
+
def initialize(argv)
|
18
|
+
super
|
19
|
+
return if ansi_output?
|
20
|
+
|
21
|
+
Colored2.disable!
|
22
|
+
String.send(:define_method, :colorize) { |string, _| string }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'set'
|
4
|
+
require 'yaml-vfs/yaml_vfs'
|
5
|
+
|
6
|
+
module VFS
|
7
|
+
# vfs gen
|
8
|
+
class FileCollector
|
9
|
+
HEADER_FILES_EXTENSIONS = %w[.h .hh .hpp .ipp .tpp .hxx .def .inl .inc].freeze
|
10
|
+
|
11
|
+
attr_reader :framework_path, :real_modules_dir, :real_headers
|
12
|
+
|
13
|
+
def self.new_from_real_headers_dir(framework_path, real_header_dir, real_modules_dir)
|
14
|
+
raise ArgumentError, 'real_header_dir must set and exist' if real_header_dir.nil? || !real_header_dir.exist?
|
15
|
+
|
16
|
+
files = Pathname.glob(real_header_dir.join('**').join('*')).select do |file|
|
17
|
+
HEADER_FILES_EXTENSIONS.include?(file.extname)
|
18
|
+
end
|
19
|
+
new(framework_path, real_modules_dir, files)
|
20
|
+
end
|
21
|
+
|
22
|
+
def initialize(framework_path, real_modules_dir, real_headers)
|
23
|
+
@seen = Set.new
|
24
|
+
@vfs_writer = YAMLVFSWriter.new
|
25
|
+
@real_headers = real_headers
|
26
|
+
@framework_path = framework_path
|
27
|
+
@real_modules_dir = real_modules_dir
|
28
|
+
end
|
29
|
+
|
30
|
+
def write_mapping(name)
|
31
|
+
raise ArgumentError, 'framework_path must set' if @framework_path.nil?
|
32
|
+
raise ArgumentError, 'real_headers or real_header_dir one of them must set' if @real_headers.empty?
|
33
|
+
|
34
|
+
add_write_file
|
35
|
+
@vfs_writer.case_sensitive = false
|
36
|
+
path = name.expand_path
|
37
|
+
path = path.join('all-product-headers.yaml') if path.directory?
|
38
|
+
stream = @vfs_writer.write
|
39
|
+
File.open(path, 'w') { |f| f.write(stream) }
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def add_write_file
|
45
|
+
wirte_f = lambda { |dir, files|
|
46
|
+
paths = @framework_path.join(dir)
|
47
|
+
files.each do |file|
|
48
|
+
path = paths.join(file.basename)
|
49
|
+
@vfs_writer.add_file_mapping(path, file)
|
50
|
+
end
|
51
|
+
}
|
52
|
+
wirte_f.call('Headers', @real_headers) unless @real_headers.empty?
|
53
|
+
wirte_f.call('Modules', real_modules_dir.glob('*.modulemap')) unless @real_modules_dir.nil?
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: false
|
2
|
+
|
3
|
+
module VFS
|
4
|
+
# A collection of utility functions used throughout vfs.
|
5
|
+
module Utils
|
6
|
+
def self.traversal_component?(component)
|
7
|
+
component.each_filename.include?('.') || component.each_filename.include?('..')
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
String.class_eval do
|
13
|
+
def indent(count, char = ' ')
|
14
|
+
gsub(/([^\n]*)(\n|$)/) do
|
15
|
+
last_iteration = ($1 == '' && $2 == '')
|
16
|
+
line = ''
|
17
|
+
line << (char * count) unless last_iteration
|
18
|
+
line << $1
|
19
|
+
line << $2
|
20
|
+
line
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,200 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'pathname'
|
4
|
+
require 'json'
|
5
|
+
|
6
|
+
module VFS
|
7
|
+
# A general purpose pseudo-structure.
|
8
|
+
# @abstract
|
9
|
+
class YAMLVFSEntry
|
10
|
+
attr_reader :v_path, :r_path
|
11
|
+
|
12
|
+
def directory?
|
13
|
+
@directory
|
14
|
+
end
|
15
|
+
|
16
|
+
def initialize(v_path, r_path, directory: false)
|
17
|
+
@v_path = v_path
|
18
|
+
@r_path = r_path
|
19
|
+
@directory = directory
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# YAMLVFSWriter class.
|
24
|
+
# @see https://llvm.org/doxygen/classllvm_1_1vfs_1_1YAMLVFSWriter.html
|
25
|
+
# @abstract
|
26
|
+
class YAMLVFSWriter
|
27
|
+
attr_reader :mappings, :overlay_relative, :overlay_dir, :dir_stack
|
28
|
+
attr_accessor :case_sensitive, :use_external_names
|
29
|
+
|
30
|
+
def overlay_dir=(overlay_dir)
|
31
|
+
@overlay_relative = true
|
32
|
+
@overlay_dir = overlay_dir
|
33
|
+
end
|
34
|
+
|
35
|
+
def initialize
|
36
|
+
@mappings = []
|
37
|
+
end
|
38
|
+
|
39
|
+
def add_entry(virtual_path, real_path, is_directory)
|
40
|
+
raise ArgumentError, 'virtual path not absolute' unless virtual_path.absolute?
|
41
|
+
raise ArgumentError, 'real path not absolute' unless real_path.absolute?
|
42
|
+
raise ArgumentError, 'path traversal is not supported' if Utils.traversal_component?(virtual_path)
|
43
|
+
|
44
|
+
mappings << YAMLVFSEntry.new(virtual_path, real_path, directory: is_directory)
|
45
|
+
end
|
46
|
+
|
47
|
+
def add_file_mapping(virtual_path, real_path)
|
48
|
+
add_entry(virtual_path, real_path, false)
|
49
|
+
end
|
50
|
+
|
51
|
+
def add_directory_mapping(virtual_path, real_path)
|
52
|
+
add_entry(virtual_path, real_path, true)
|
53
|
+
end
|
54
|
+
|
55
|
+
def write
|
56
|
+
@mappings.sort_by! { |p| p.v_path.to_s }
|
57
|
+
JSONWriter.new.write(@mappings, @use_external_names, @case_sensitive, @overlay_relative, @overlay_dir)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
# JSONWriter class.
|
62
|
+
# @see https://llvm.org/doxygen/VirtualFileSystem_8cpp_source.html
|
63
|
+
# @abstract
|
64
|
+
class JSONWriter
|
65
|
+
attr_reader :dir_stack
|
66
|
+
|
67
|
+
def write(entries, use_external_names, case_sensitive, overlay_relative, overlay_dir)
|
68
|
+
use_overlay_relative = write_yaml_header(use_external_names, case_sensitive, overlay_relative, overlay_dir)
|
69
|
+
unless entries.empty?
|
70
|
+
current_dir_empty = write_root_entry(entries, use_overlay_relative, overlay_dir)
|
71
|
+
entries.drop(1).reduce(current_dir_empty) do |empty, entry|
|
72
|
+
dir = entry.directory? ? entry.v_path : entry.v_path.dirname
|
73
|
+
start_directory_or_return(dir, empty, use_overlay_relative, overlay_dir, entry)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
write_yaml_footer(entries)
|
77
|
+
end
|
78
|
+
|
79
|
+
def initialize
|
80
|
+
@dir_stack = []
|
81
|
+
end
|
82
|
+
|
83
|
+
private
|
84
|
+
|
85
|
+
def dir_indent
|
86
|
+
@dir_stack.length * 4
|
87
|
+
end
|
88
|
+
|
89
|
+
def file_indent
|
90
|
+
(@dir_stack.length + 1) * 4
|
91
|
+
end
|
92
|
+
|
93
|
+
def contained_in?(parent, path)
|
94
|
+
path.ascend { |p| break true if parent == p } || false
|
95
|
+
end
|
96
|
+
|
97
|
+
def contained_part(parent, path)
|
98
|
+
raise ArgumentError if parent.nil?
|
99
|
+
raise ArgumentError unless contained_in?(parent, path)
|
100
|
+
|
101
|
+
path.relative_path_from(parent)
|
102
|
+
end
|
103
|
+
|
104
|
+
def start_directory(path)
|
105
|
+
name = @dir_stack.empty? ? path : contained_part(@dir_stack.last, path)
|
106
|
+
@dir_stack << path
|
107
|
+
indent = dir_indent
|
108
|
+
@stream += "{\n".indent(indent)
|
109
|
+
@stream += "'type': 'directory',\n".indent(indent + 2)
|
110
|
+
@stream += "'name': \"#{name}\",\n".indent(indent + 2)
|
111
|
+
@stream += "'contents': [\n".indent(indent + 2)
|
112
|
+
end
|
113
|
+
|
114
|
+
def end_directory
|
115
|
+
indent = dir_indent
|
116
|
+
@stream += "]\n".indent(indent + 2)
|
117
|
+
@stream += '}'.indent(indent)
|
118
|
+
@dir_stack.pop
|
119
|
+
end
|
120
|
+
|
121
|
+
def write_entry(v_path, r_path)
|
122
|
+
indent = file_indent
|
123
|
+
@stream += "{\n".indent(indent)
|
124
|
+
@stream += "'type': 'file',\n".indent(indent + 2)
|
125
|
+
@stream += "'name': \"#{v_path}\",\n".indent(indent + 2)
|
126
|
+
@stream += "'external-contents': \"#{r_path}\"\n".indent(indent + 2)
|
127
|
+
@stream += '}'.indent(file_indent)
|
128
|
+
end
|
129
|
+
|
130
|
+
def overlay_dir_sub_rpath(use, overlay_dir, rpath)
|
131
|
+
if use
|
132
|
+
raise ArgumentError, 'Overlay dir must be contained in RPath' unless rpath.fnmatch?("#{overlay_dir}*")
|
133
|
+
|
134
|
+
rpath = rpath.relative_path_from(overlay_dir).expand_path
|
135
|
+
end
|
136
|
+
rpath
|
137
|
+
end
|
138
|
+
|
139
|
+
def write_yaml_header(use_external_names, case_sensitive, overlay_relative, _overlay_dir)
|
140
|
+
@stream = "{\n 'version': 0,\n"
|
141
|
+
@stream += " 'case-sensitive': '#{case_sensitive}',\n" unless case_sensitive.nil?
|
142
|
+
@stream += " 'use-external-names': '#{use_external_names}',\n" unless use_external_names.nil?
|
143
|
+
use_overlay_relative = !overlay_relative.nil?
|
144
|
+
@stream += " 'overlay_relative': '#{overlay_relative}',\n" if use_overlay_relative
|
145
|
+
@stream += " 'roots': [\n"
|
146
|
+
use_overlay_relative
|
147
|
+
end
|
148
|
+
|
149
|
+
def write_yaml_footer(entries)
|
150
|
+
unless entries.empty?
|
151
|
+
until @dir_stack.empty?
|
152
|
+
@stream += "\n"
|
153
|
+
end_directory
|
154
|
+
end
|
155
|
+
@stream += "\n"
|
156
|
+
end
|
157
|
+
@stream += " ]\n}\n"
|
158
|
+
@stream
|
159
|
+
end
|
160
|
+
|
161
|
+
def write_root_entry(entries, use_overlay_relative, overlay_dir)
|
162
|
+
return true if entries.empty?
|
163
|
+
|
164
|
+
f_entry = entries.first
|
165
|
+
start_directory(f_entry.directory? ? f_entry.v_path : f_entry.v_path.dirname)
|
166
|
+
current_dir_empty = f_entry.directory?
|
167
|
+
use_overlay_relative_and_write_entry(use_overlay_relative, overlay_dir, current_dir_empty, f_entry)
|
168
|
+
end
|
169
|
+
|
170
|
+
def until_end_directory(dir)
|
171
|
+
dir_popped_from_stack = false
|
172
|
+
until @dir_stack.empty? || contained_in?(@dir_stack.last, dir)
|
173
|
+
@stream += "\n"
|
174
|
+
end_directory
|
175
|
+
dir_popped_from_stack = true
|
176
|
+
end
|
177
|
+
dir_popped_from_stack
|
178
|
+
end
|
179
|
+
|
180
|
+
def use_overlay_relative_and_write_entry(use_overlay_relative, overlay_dir, current_dir_empty, entry)
|
181
|
+
rpath = overlay_dir_sub_rpath(use_overlay_relative, overlay_dir, entry.r_path)
|
182
|
+
unless entry.directory?
|
183
|
+
write_entry(entry.v_path.basename, rpath)
|
184
|
+
current_dir_empty = false
|
185
|
+
end
|
186
|
+
current_dir_empty
|
187
|
+
end
|
188
|
+
|
189
|
+
def start_directory_or_return(dir, current_dir_empty, use_overlay_relative, overlay_dir, entry)
|
190
|
+
if dir == @dir_stack.last
|
191
|
+
@stream += ",\n" unless current_dir_empty
|
192
|
+
else
|
193
|
+
@stream += ",\n" if until_end_directory(dir) || !current_dir_empty
|
194
|
+
start_directory(dir)
|
195
|
+
current_dir_empty = true
|
196
|
+
end
|
197
|
+
use_overlay_relative_and_write_entry(use_overlay_relative, overlay_dir, current_dir_empty, entry)
|
198
|
+
end
|
199
|
+
end
|
200
|
+
end
|
data/lib/yaml_vfs.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# The primary namespace for yaml-vfs.
|
4
|
+
module VFS
|
5
|
+
require 'pathname'
|
6
|
+
require 'claide'
|
7
|
+
|
8
|
+
class PlainInformative < StandardError
|
9
|
+
include CLAide::InformativeError
|
10
|
+
end
|
11
|
+
|
12
|
+
# Informative
|
13
|
+
class Informative < PlainInformative
|
14
|
+
def message
|
15
|
+
super !~ /\[!\]/ ? "[!] #{super}\n".red : super
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
require_relative 'yaml-vfs/version'
|
20
|
+
require_relative 'yaml-vfs/utils'
|
21
|
+
|
22
|
+
|
23
|
+
autoload :FileCollector, 'yaml-vfs/file_collector'
|
24
|
+
autoload :Command, 'yaml-vfs/command'
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,145 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: yaml-vfs
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Cat1237
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2021-09-01 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.1'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: coveralls
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: claide
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 1.0.2
|
76
|
+
- - "<"
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '2.0'
|
79
|
+
type: :runtime
|
80
|
+
prerelease: false
|
81
|
+
version_requirements: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 1.0.2
|
86
|
+
- - "<"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '2.0'
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: colored2
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '3.1'
|
96
|
+
type: :runtime
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '3.1'
|
103
|
+
description: header_reader lets your read Xcode header map file. header-writer lets
|
104
|
+
your analyze the project pod dependencies and gen header map file for all pods.
|
105
|
+
email:
|
106
|
+
- wangson1237@outlook.com
|
107
|
+
executables:
|
108
|
+
- vfs
|
109
|
+
extensions: []
|
110
|
+
extra_rdoc_files: []
|
111
|
+
files:
|
112
|
+
- LICENSE
|
113
|
+
- README.md
|
114
|
+
- bin/vfs
|
115
|
+
- lib/yaml-vfs/command.rb
|
116
|
+
- lib/yaml-vfs/command/yaml_vfs_writer.rb
|
117
|
+
- lib/yaml-vfs/file_collector.rb
|
118
|
+
- lib/yaml-vfs/utils.rb
|
119
|
+
- lib/yaml-vfs/version.rb
|
120
|
+
- lib/yaml-vfs/yaml_vfs.rb
|
121
|
+
- lib/yaml_vfs.rb
|
122
|
+
homepage: https://github.com/Cat1237/yaml-vfs
|
123
|
+
licenses:
|
124
|
+
- MIT
|
125
|
+
metadata: {}
|
126
|
+
post_install_message:
|
127
|
+
rdoc_options: []
|
128
|
+
require_paths:
|
129
|
+
- lib
|
130
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
131
|
+
requirements:
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: '2.5'
|
135
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - ">="
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0'
|
140
|
+
requirements: []
|
141
|
+
rubygems_version: 3.1.6
|
142
|
+
signing_key:
|
143
|
+
specification_version: 4
|
144
|
+
summary: Read or write header map file.
|
145
|
+
test_files: []
|