21494: Adapt linkchecker arguments to built SDKs 21494-sdk-doc-linkchecker
authorBrett Smith <brett.smith@curii.com>
Thu, 22 Feb 2024 19:48:04 +0000 (14:48 -0500)
committerBrett Smith <brett.smith@curii.com>
Thu, 22 Feb 2024 19:58:35 +0000 (14:58 -0500)
This lets you build a subset of SDK documentation, linkcheck it, and get
an accurate result.

Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith@curii.com>

doc/Rakefile

index c4e26cfb3b47eb78d2600057c1bab157a8858a6e..3ec494f57dcffab28248dc827d3cf7f69a1fae82 100644 (file)
@@ -19,6 +19,8 @@
 #
 # and then visit http://localhost:8000 in a browser.
 
+require "uri"
+
 require "rubygems"
 require "colorize"
 
@@ -31,18 +33,30 @@ def can_run?(*command, **options)
 end
 
 class JavaSDK
+  def self.build_path
+    "sdk/java-v2"
+  end
+
   def self.can_build?
     can_run?("gradle", "--version")
   end
 end
 
 class PythonSDK
+  def self.build_path
+    "sdk/python/arvados"
+  end
+
   def self.can_build?
     can_run?("./pysdk_pdoc.py", "--version")
   end
 end
 
 class RSDK
+  def self.build_path
+    "sdk/R"
+  end
+
   def self.can_build?
     can_run?("R", "--version")
   end
@@ -196,8 +210,17 @@ end
 
 task :linkchecker => [ :generate ] do
   # we need --check-extern to check relative links, weird but true
+  opts = [
+    "--check-extern",
+    "--ignore-url=!^file://",
+  ]
+  ([JavaSDK, PythonSDK, RSDK] - $build_sdks).map(&:build_path).each do |sdk_path|
+    sdk_url = URI.join(ENV["baseurl"], sdk_path)
+    url_re = Regexp.escape(sdk_url.to_s)
+    opts << "--ignore-url=^#{url_re}[./]"
+  end
   result = system(
-    "linkchecker", "index.html", "--check-extern", "--ignore-url=!file://",
+    "linkchecker", *opts, "index.html",
     chdir: ".site",
   )
   if result.nil?