From 3d3462ff7b28054db25ed217d685072544be8040 Mon Sep 17 00:00:00 2001 From: Colin Alworth Date: Fri, 20 Oct 2023 20:36:59 -0500 Subject: [PATCH] Support standard doclet flags, so that this is usable under Gradle Fixes #83 --- .../com/vertispan/tsdefs/doclet/TsDoclet.java | 59 +++++------------- .../tsdefs/doclet/TsDocletOption.java | 62 +++++++++++++++++++ 2 files changed, 79 insertions(+), 42 deletions(-) create mode 100644 jsinterop-ts-defs-doclet/src/main/java/com/vertispan/tsdefs/doclet/TsDocletOption.java diff --git a/jsinterop-ts-defs-doclet/src/main/java/com/vertispan/tsdefs/doclet/TsDoclet.java b/jsinterop-ts-defs-doclet/src/main/java/com/vertispan/tsdefs/doclet/TsDoclet.java index 5591222..90d31cb 100644 --- a/jsinterop-ts-defs-doclet/src/main/java/com/vertispan/tsdefs/doclet/TsDoclet.java +++ b/jsinterop-ts-defs-doclet/src/main/java/com/vertispan/tsdefs/doclet/TsDoclet.java @@ -53,7 +53,7 @@ public class TsDoclet implements Doclet, HasProcessorEnv { private Messager messager; private DocletLogWrapper logWrapper; - public static final String TSOUT_DIR = "-tsoutput"; + public static final String TSOUT_DIR = "-d"; private String outputDir; @@ -76,47 +76,22 @@ public SourceVersion getSupportedSourceVersion() { @Override public Set getSupportedOptions() { - Option[] options = { - new Option() { - - @Override - public int getArgumentCount() { - return 1; - } - - @Override - public String getDescription() { - return "Type script generated definition file location"; - } - - @Override - public Kind getKind() { - return Kind.STANDARD; - } - - @Override - public List getNames() { - return List.of(TSOUT_DIR); - } - - @Override - public String getParameters() { - return "file"; - } - - @Override - public boolean process(String opt, List arguments) { - if (arguments.isEmpty()) { - reporter.print( - Diagnostic.Kind.ERROR, "You must specify an output filepath with " + TSOUT_DIR); - return false; - } - outputDir = arguments.get(0); - return true; - } - } - }; - return new HashSet<>(Arrays.asList(options)); + return Set.of( + TsDocletOption.of( + "-d", + "Type script generated definition file location", + (opt, arguments) -> { + if (arguments.isEmpty()) { + reporter.print( + Diagnostic.Kind.ERROR, "You must specify an output filepath with " + TSOUT_DIR); + return false; + } + outputDir = arguments.get(0); + return true; + }), + TsDocletOption.ignored("-doctitle"), + TsDocletOption.ignored("-windowtitle"), + TsDocletOption.ignored("-notimestamp")); } @Override diff --git a/jsinterop-ts-defs-doclet/src/main/java/com/vertispan/tsdefs/doclet/TsDocletOption.java b/jsinterop-ts-defs-doclet/src/main/java/com/vertispan/tsdefs/doclet/TsDocletOption.java new file mode 100644 index 0000000..8ff23b4 --- /dev/null +++ b/jsinterop-ts-defs-doclet/src/main/java/com/vertispan/tsdefs/doclet/TsDocletOption.java @@ -0,0 +1,62 @@ +/* + * Copyright © 2023 Vertispan + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.vertispan.tsdefs.doclet; + +import java.util.List; +import java.util.function.BiPredicate; +import jdk.javadoc.doclet.Doclet; + +public abstract class TsDocletOption implements Doclet.Option { + public static TsDocletOption of( + String name, String description, BiPredicate> process) { + return new TsDocletOption() { + + @Override + public String getDescription() { + return description; + } + + @Override + public List getNames() { + return List.of(name); + } + + @Override + public boolean process(String s, List list) { + return process.test(s, list); + } + }; + } + + public static TsDocletOption ignored(String name) { + return of(name, "ignored, only supported to appease Gradle", (opt, args) -> true); + } + + @Override + public int getArgumentCount() { + return 1; + } + + @Override + public Kind getKind() { + return Kind.STANDARD; + } + + @Override + public String getParameters() { + return "value"; + } +}