diff options
author | Douwe Maan <douwe@selenight.nl> | 2017-05-16 23:29:34 +0300 |
---|---|---|
committer | Douwe Maan <douwe@selenight.nl> | 2017-05-23 23:35:50 +0300 |
commit | c35463d5f856c2f8025893f2e185825dfb691f8e (patch) | |
tree | 88820a09ea443686a5c2ebdb9cd8231401d8d468 /lib/gitlab/dependency_linker | |
parent | 190b7b45a605475668a089a0ce43f3d89b9d7c47 (diff) |
Autolink package names in podspec.json
Diffstat (limited to 'lib/gitlab/dependency_linker')
-rw-r--r-- | lib/gitlab/dependency_linker/podspec_json_linker.rb | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/gitlab/dependency_linker/podspec_json_linker.rb b/lib/gitlab/dependency_linker/podspec_json_linker.rb new file mode 100644 index 00000000000..d82237ed3f1 --- /dev/null +++ b/lib/gitlab/dependency_linker/podspec_json_linker.rb @@ -0,0 +1,32 @@ +module Gitlab + module DependencyLinker + class PodspecJsonLinker < JsonLinker + include Cocoapods + + self.file_type = :podspec_json + + private + + def link_dependencies + link_json('name', json["name"], &method(:package_url)) + link_json('license', &method(:license_url)) + link_json(%w[homepage git], URL_REGEX, &:itself) + + link_packages_at_key("dependencies", &method(:package_url)) + + json["subspecs"]&.each do |subspec| + link_packages_at_key("dependencies", subspec, &method(:package_url)) + end + end + + def link_packages_at_key(key, root = json, &url_proc) + dependencies = root[key] + return unless dependencies + + dependencies.each do |name, _| + link_regex(/"(?<name>#{Regexp.escape(name)})":\s*\[/, &url_proc) + end + end + end + end +end |