aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/skydoc
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2018-07-13 15:23:46 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-07-13 15:24:58 -0700
commit1771054491bcaa8bc5f2dacdb66381519e4ae29a (patch)
treede6006bb43b5e4d44911db90e88d3b0904bfc78c /src/main/java/com/google/devtools/build/skydoc
parentea410646981448956dd2f1ae2c1c9714347b6711 (diff)
Improve build API support in the fakebuildapi, allowing Skydoc to run on files which define new provider types and instantiate Labels.
Also improve docstring usage in attr definitions by doing whitespace trimming. RELNOTES: None. PiperOrigin-RevId: 204537623
Diffstat (limited to 'src/main/java/com/google/devtools/build/skydoc')
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeProviderApi.java21
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkRuleFunctionsApi.java12
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/rendering/AttributeInfo.java2
3 files changed, 30 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeProviderApi.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeProviderApi.java
index cdf8ef1f6e..01b64c1b4d 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeProviderApi.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeProviderApi.java
@@ -16,11 +16,28 @@ package com.google.devtools.build.skydoc.fakebuildapi;
import com.google.devtools.build.lib.skylarkbuildapi.ProviderApi;
import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
+import com.google.devtools.build.lib.syntax.BaseFunction;
+import com.google.devtools.build.lib.syntax.Environment;
+import com.google.devtools.build.lib.syntax.EvalException;
+import com.google.devtools.build.lib.syntax.FuncallExpression;
+import com.google.devtools.build.lib.syntax.FunctionSignature;
+import javax.annotation.Nullable;
/**
- * Fake implementation of {@link ProviderApi}.
+ * Fake implementation of {@link ProviderApi}. This fake is a subclass of {@link BaseFunction},
+ * as providers are themselves callable.
*/
-public class FakeProviderApi implements ProviderApi {
+public class FakeProviderApi extends BaseFunction implements ProviderApi {
+
+ public FakeProviderApi() {
+ super("ProviderFunction", FunctionSignature.WithValues.create(FunctionSignature.KWARGS));
+ }
+
+ @Override
+ protected Object call(Object[] args, @Nullable FuncallExpression ast, Environment env)
+ throws EvalException, InterruptedException {
+ return new FakeStructApi();
+ }
@Override
public void repr(SkylarkPrinter printer) {}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkRuleFunctionsApi.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkRuleFunctionsApi.java
index e75a483829..f86c455f45 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkRuleFunctionsApi.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkRuleFunctionsApi.java
@@ -16,6 +16,7 @@ package com.google.devtools.build.skydoc.fakebuildapi;
import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
import com.google.devtools.build.lib.skylarkbuildapi.FileTypeApi;
@@ -61,7 +62,7 @@ public class FakeSkylarkRuleFunctionsApi implements SkylarkRuleFunctionsApi<File
@Override
public ProviderApi provider(String doc, Object fields, Location location) throws EvalException {
- return null;
+ return new FakeProviderApi();
}
@Override
@@ -97,7 +98,14 @@ public class FakeSkylarkRuleFunctionsApi implements SkylarkRuleFunctionsApi<File
@Override
public Label label(String labelString, Boolean relativeToCallerRepository, Location loc,
Environment env) throws EvalException {
- return null;
+ try {
+ return Label.parseAbsolute(
+ labelString,
+ /* defaultToMain= */ false,
+ /* repositoryMapping= */ ImmutableMap.of());
+ } catch (LabelSyntaxException e) {
+ throw new EvalException(loc, "Illegal absolute label syntax: " + labelString);
+ }
}
@Override
diff --git a/src/main/java/com/google/devtools/build/skydoc/rendering/AttributeInfo.java b/src/main/java/com/google/devtools/build/skydoc/rendering/AttributeInfo.java
index 696fe2deb6..3824696527 100644
--- a/src/main/java/com/google/devtools/build/skydoc/rendering/AttributeInfo.java
+++ b/src/main/java/com/google/devtools/build/skydoc/rendering/AttributeInfo.java
@@ -26,7 +26,7 @@ public class AttributeInfo {
public AttributeInfo(String name, String docString, String typeString, boolean mandatory) {
this.name = name;
- this.docString = docString;
+ this.docString = docString.trim();
this.typeString = typeString;
this.mandatory = mandatory;
}