Class: Lynx::Extension::Autolink
- Inherits:
-
Object
- Object
- Lynx::Extension::Autolink
- Defined in:
- lib/lynx/extension/autolink.rb
Constant Summary collapse
- REGISTRY_CLASS_NAME =
'LynxGeneratedExtensionRegistry'
Class Method Summary collapse
- .generate_registry(output_dir, extensions) ⇒ Object
- .install!(podfile, options = {}) ⇒ Object
- .scan(start_dir) ⇒ Object
- .scan_components(source_dir) ⇒ Object
Class Method Details
.generate_registry(output_dir, extensions) ⇒ Object
36 37 38 39 40 41 42 43 44 |
# File 'lib/lynx/extension/autolink.rb', line 36 def generate_registry(output_dir, extensions) FileUtils.mkdir_p(output_dir) components = extensions.flat_map { |extension| scan_components(extension.source_dir) } File.write(File.join(output_dir, "#{REGISTRY_CLASS_NAME}.h"), header_source) File.write(File.join(output_dir, "#{REGISTRY_CLASS_NAME}.m"), implementation_source(components)) File.write(File.join(output_dir, 'LynxExtensionRegistry.podspec'), podspec_source) components end |
.install!(podfile, options = {}) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/lynx/extension/autolink.rb', line 17 def install!(podfile, = {}) start_dir = File.([:root] || Dir.pwd) output_dir = File.([:output_dir] || 'generated/lynx-extension', start_dir) extensions = scan(start_dir) extensions.each do |extension| pod_name = pod_name_from_podspec(extension.podspec_path) podfile.pod pod_name, :path => File.dirname(extension.podspec_path) end generate_registry(output_dir, extensions) podfile.pod 'LynxExtensionRegistry', :path => output_dir extensions end |
.scan(start_dir) ⇒ Object
30 31 32 33 34 |
# File 'lib/lynx/extension/autolink.rb', line 30 def scan(start_dir) node_modules_dirs(start_dir).flat_map do |node_modules| manifest_files(node_modules).map { |manifest| parse_manifest(manifest) }.compact end.sort_by(&:npm_name) end |
.scan_components(source_dir) ⇒ Object
46 47 48 |
# File 'lib/lynx/extension/autolink.rb', line 46 def scan_components(source_dir) source_files(source_dir).flat_map { |file| scan_source_file(file) } end |