Skip to content

Commit f807127

Browse files
authored
Add links to package manager pages for rosdep packages (#617)
Generated-by: Portions of this commit may include code completion from github.copilot version 1.372.0 or later Signed-off-by: R Kent James <kent@caspia.com>
1 parent 79e54ab commit f807127

File tree

2 files changed

+66
-13
lines changed

2 files changed

+66
-13
lines changed

_layouts/dep.html

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,13 @@ <h3><a style="text-decoration:none;" href="{{site.baseurl}}/d/{{page.dep_name}}"
9292
{% assign n_found = found | size %}
9393
{% if n_found > 0 %}
9494
{% for p in found %}
95-
<code>{{p}}</code>
95+
{% assign pkg_name = p[0] %}
96+
{% assign pkg_link = p[1] %}
97+
{% if pkg_link %}
98+
<a href="{{pkg_link}}"><b><code>{{pkg_name}}</code></b></a>
99+
{% else %}
100+
<code>{{pkg_name}}</code>
101+
{% endif %}
96102
{% endfor %}
97103
{% else %}
98104
<em>Not available</em>
@@ -108,7 +114,13 @@ <h3><a style="text-decoration:none;" href="{{site.baseurl}}/d/{{page.dep_name}}"
108114
{% assign n_found = found | size %}
109115
{% if n_found > 0 %}
110116
{% for p in found %}
111-
<code>{{p}}</code>
117+
{% assign pkg_name = p[0] %}
118+
{% assign pkg_link = p[1] %}
119+
{% if pkg_link %}
120+
<a href="{{pkg_link}}"><b><code>{{pkg_name}}</code></b></a>
121+
{% else %}
122+
<code>{{pkg_name}}</code>
123+
{% endif %}
112124
{% endfor %}
113125
{% else %}
114126
<em>Not available</em>

_plugins/rosindex_generator.rb

Lines changed: 52 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,34 @@ def resolve_dep(ps, ms, os, ver, data)
128128
return []
129129
end
130130

131+
def get_package_link(platform_key, pkg_name, version_key)
132+
# get a link for info on pkg_name on platform platform_key
133+
case platform_key
134+
when 'ubuntu'
135+
if ['noble', 'jammy', 'plucky', 'questing', 'resolute'].include?(version_key) then
136+
return "https://packages.ubuntu.com/#{version_key}/#{pkg_name}"
137+
else
138+
return nil
139+
end
140+
when 'debian'
141+
if ['bullseye', 'bookworm', 'trixie', 'forky','sid'].include?(version_key) then
142+
return "https://packages.debian.org/#{version_key}/#{pkg_name}"
143+
else
144+
return nil
145+
end
146+
when 'fedora'
147+
if ['41', '42', '43'].include?(version_key) then
148+
return "https://packages.fedoraproject.org/pkgs/#{pkg_name}/#{pkg_name}/"
149+
else
150+
return nil
151+
end
152+
when 'osx'
153+
return "https://formulae.brew.sh/formula/#{pkg_name}"
154+
end
155+
156+
return nil
157+
end
158+
131159
def expand_package_deps(package_name, package_names, deps, distro)
132160
# Expand package dependencies at all levels for package_name.
133161
if deps.include?(package_name)
@@ -788,12 +816,21 @@ def generate(site)
788816
platforms.each do |platform_key, platform_details|
789817
if platform_details['versions'].size > 0
790818
platform_data[platform_key] = {}
791-
platform_details['versions'].each do |version_key, version_name|
792-
platform_data[platform_key][version_key] = resolve_dep(platforms, manager_set, platform_key, version_key, dep_data)
819+
platform_details['versions'].each_key do |version_key|
820+
packages = resolve_dep(platforms, manager_set, platform_key, version_key, dep_data)
821+
if packages.is_a?(Array)
822+
platform_data[platform_key][version_key] = packages.map { |pkg_name|
823+
[pkg_name, get_package_link(platform_key, pkg_name, version_key)]
824+
}
825+
else
826+
# probably an old source entry, see libaria on debian Wheezy
827+
platform_data[platform_key][version_key] = [[packages, nil]]
828+
end
793829
end
794830
# Get dep description from debian
795-
if platform_key == 'debian' and platform_data[platform_key].has_key?('bullseye')
796-
platform_data[platform_key]['bullseye'].each do |debian_key|
831+
if platform_key == 'debian'
832+
platform_data[platform_key]['bullseye'].each do |key_and_link|
833+
debian_key = key_and_link[0]
797834
# zero-length debian_descriptions indicates a failed download
798835
if debian_descriptions.length > 0
799836
if debian_descriptions.has_key?(debian_key)
@@ -809,7 +846,11 @@ def generate(site)
809846
end
810847
end
811848
else
812-
platform_data[platform_key] = resolve_dep(platforms, manager_set, platform_key, 'any_version', dep_data)
849+
packages = resolve_dep(platforms, manager_set, platform_key, 'any_version', dep_data)
850+
# all platforms that don't have versions currently don't have links available
851+
platform_data[platform_key] = packages.map { |pkg_name|
852+
[pkg_name, nil]
853+
}
813854
end
814855
end
815856
# if debian did not get a description, maybe we got it from pip
@@ -1183,15 +1224,15 @@ def generate(site)
11831224
if version_name.empty?
11841225
version_name = version_key.capitalize
11851226
end
1186-
names_for_version.collect do |name|
1187-
aliases.add(name)
1188-
"#{name} (#{platform_name} #{version_name})"
1227+
names_for_version.collect do |name_and_link|
1228+
aliases.add(name_and_link[0])
1229+
"#{name_and_link[0]} (#{platform_name} #{version_name})"
11891230
end.join(' : ')
11901231
end.compact.join(' : ')
11911232
else
1192-
data.collect do |name|
1193-
aliases.add(name)
1194-
"#{name} (#{platform_name})"
1233+
data.collect do |name_and_link|
1234+
aliases.add(name_and_link[0])
1235+
"#{name_and_link[0]} (#{platform_name})"
11951236
end.join(' : ')
11961237
end
11971238
end.compact.join(' : '),

0 commit comments

Comments
 (0)