Deprecate options.dart. (#3591)
diff --git a/bin/dartdoc.dart b/bin/dartdoc.dart
index 1e78f1b..5c4b118 100644
--- a/bin/dartdoc.dart
+++ b/bin/dartdoc.dart
@@ -6,8 +6,8 @@
import 'dart:async';
-import 'package:dartdoc/options.dart';
import 'package:dartdoc/src/dartdoc.dart';
+import 'package:dartdoc/src/dartdoc_options.dart';
import 'package:dartdoc/src/model/model.dart';
import 'package:dartdoc/src/package_config_provider.dart';
import 'package:dartdoc/src/package_meta.dart';
diff --git a/lib/options.dart b/lib/options.dart
index 6610d83..b75f215 100644
--- a/lib/options.dart
+++ b/lib/options.dart
@@ -1,153 +1,7 @@
-import 'dart:io' show stderr, exitCode;
+// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
-import 'package:args/args.dart';
-import 'package:dartdoc/src/dartdoc.dart' show dartdocVersion, programName;
-import 'package:dartdoc/src/dartdoc_options.dart';
-import 'package:dartdoc/src/generator/generator.dart';
-import 'package:dartdoc/src/logging.dart';
-import 'package:dartdoc/src/package_meta.dart';
-
-/// Helper class that consolidates option contexts for instantiating generators.
-class DartdocGeneratorOptionContext extends DartdocOptionContext {
- DartdocGeneratorOptionContext(
- super.optionSet, super.dir, super.resourceProvider);
- DartdocGeneratorOptionContext.fromDefaultContextLocation(
- super.optionSet, super.resourceProvider)
- : super.fromDefaultContextLocation();
-
- /// The joined contents of any 'header' files specified in options.
- String get header =>
- _joinCustomTextFiles(optionSet['header'].valueAt(context));
-
- /// The joined contents of any 'footer' files specified in options.
- String get footer =>
- _joinCustomTextFiles(optionSet['footer'].valueAt(context));
-
- /// The joined contents of any 'footer-text' files specified in options.
- String get footerText =>
- _joinCustomTextFiles(optionSet['footerText'].valueAt(context));
-
- String _joinCustomTextFiles(Iterable<String> paths) => paths
- .map((p) => resourceProvider.getFile(p).readAsStringSync())
- .join('\n');
-
- bool get prettyIndexJson => optionSet['prettyIndexJson'].valueAt(context);
-
- String? get favicon => optionSet['favicon'].valueAt(context);
-
- String? get relCanonicalPrefix =>
- optionSet['relCanonicalPrefix'].valueAt(context);
-
- String? get templatesDir => optionSet['templatesDir'].valueAt(context);
-
- // TODO(jdkoren): duplicated temporarily so that GeneratorContext is enough for configuration.
- @override
- bool get useBaseHref => optionSet['useBaseHref'].valueAt(context);
-
- String? get resourcesDir => optionSet['resourcesDir'].valueAt(context);
-}
-
-class DartdocProgramOptionContext extends DartdocGeneratorOptionContext
- with LoggingContext {
- DartdocProgramOptionContext(
- super.optionSet, super.dir, super.resourceProvider);
-
- DartdocProgramOptionContext.fromDefaultContextLocation(
- super.optionSet, super.resourceProvider)
- : super.fromDefaultContextLocation();
-
- /// Whether to generate docs or perform a dry run.
- bool get generateDocs => optionSet['generateDocs'].valueAt(context);
- bool get help => optionSet['help'].valueAt(context);
- bool get version => optionSet['version'].valueAt(context);
-}
-
-List<DartdocOption<bool>> createDartdocProgramOptions(
- PackageMetaProvider packageMetaProvider) {
- var resourceProvider = packageMetaProvider.resourceProvider;
- return [
- DartdocOptionArgOnly<bool>('generateDocs', true, resourceProvider,
- help:
- 'Generate docs into the output directory (or only display warnings '
- 'if false).',
- negatable: true),
- DartdocOptionArgOnly<bool>('help', false, resourceProvider,
- abbr: 'h', help: 'Show command help.', negatable: false),
- DartdocOptionArgOnly<bool>('version', false, resourceProvider,
- help: 'Display the version for $programName.', negatable: false),
- ];
-}
-
-DartdocProgramOptionContext? parseOptions(
- PackageMetaProvider packageMetaProvider,
- List<String> arguments, {
- // Additional options are given in google3.
- OptionGenerator? additionalOptions,
-}) {
- var optionRoot = DartdocOptionRoot.fromOptionGenerators(
- 'dartdoc',
- [
- createDartdocOptions,
- createDartdocProgramOptions,
- createLoggingOptions,
- createGeneratorOptions,
- if (additionalOptions != null) additionalOptions,
- ],
- packageMetaProvider);
-
- try {
- optionRoot.parseArguments(arguments);
- } on FormatException catch (e) {
- stderr.writeln(' fatal error: ${e.message}');
- stderr.writeln('');
- _printUsage(optionRoot.argParser);
- // Do not use `exit()` as this bypasses `--pause-isolates-on-exit`.
- exitCode = 64;
- return null;
- }
- if (optionRoot['help'].valueAtCurrent() as bool) {
- _printHelp(optionRoot.argParser);
- exitCode = 0;
- return null;
- }
- if (optionRoot['version'].valueAtCurrent() as bool) {
- _printVersion(optionRoot.argParser);
- exitCode = 0;
- return null;
- }
-
- DartdocProgramOptionContext config;
- try {
- config = DartdocProgramOptionContext.fromDefaultContextLocation(
- optionRoot, packageMetaProvider.resourceProvider);
- } on DartdocOptionError catch (e) {
- stderr.writeln(' fatal error: ${e.message}');
- stderr.writeln('');
- _printUsage(optionRoot.argParser);
- exitCode = 64;
- return null;
- }
- startLogging(
- isJson: config.json,
- isQuiet: config.quiet,
- showProgress: config.showProgress,
- );
- return config;
-}
-
-/// Print help if we are passed the help option.
-void _printHelp(ArgParser parser) {
- print('Generate HTML documentation for Dart libraries.\n');
- print(parser.usage);
-}
-
-/// Print usage information on invalid command lines.
-void _printUsage(ArgParser parser) {
- print('Usage: dartdoc [OPTIONS]\n');
- print(parser.usage);
-}
-
-/// Print version information.
-void _printVersion(ArgParser parser) {
- print('dartdoc version: $dartdocVersion');
-}
+@Deprecated(
+ 'Will be removed in a later version of DartDoc. Use /src/dartdoc_options.dart.')
+export 'package:dartdoc/src/dartdoc_options.dart';
diff --git a/lib/src/dartdoc.dart b/lib/src/dartdoc.dart
index c9a98e9..9bce7e1 100644
--- a/lib/src/dartdoc.dart
+++ b/lib/src/dartdoc.dart
@@ -7,7 +7,6 @@
import 'dart:io' show Platform, exitCode, stderr;
import 'package:analyzer/file_system/file_system.dart';
-import 'package:dartdoc/options.dart';
import 'package:dartdoc/src/dartdoc_options.dart';
import 'package:dartdoc/src/failure.dart';
import 'package:dartdoc/src/generator/empty_generator.dart';
diff --git a/lib/src/dartdoc_options.dart b/lib/src/dartdoc_options.dart
index f34e603..c4b11a8 100644
--- a/lib/src/dartdoc_options.dart
+++ b/lib/src/dartdoc_options.dart
@@ -14,14 +14,17 @@
///
library dartdoc.dartdoc_options;
-import 'dart:io' show Platform, stdout;
+import 'dart:io' show Platform, exitCode, stderr, stdout;
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/file_system/file_system.dart';
import 'package:args/args.dart';
+import 'package:dartdoc/src/dartdoc.dart' show dartdocVersion, programName;
import 'package:dartdoc/src/experiment_options.dart';
import 'package:dartdoc/src/failure.dart';
+import 'package:dartdoc/src/generator/generator.dart';
import 'package:dartdoc/src/io_utils.dart';
+import 'package:dartdoc/src/logging.dart';
import 'package:dartdoc/src/model/model.dart';
import 'package:dartdoc/src/package_meta.dart';
import 'package:dartdoc/src/source_linker.dart';
@@ -1340,6 +1343,151 @@
int.parse(optionSet['maxTotalSize'].valueAt(context) ?? '0');
}
+/// Helper class that consolidates option contexts for instantiating generators.
+class DartdocGeneratorOptionContext extends DartdocOptionContext {
+ DartdocGeneratorOptionContext(
+ super.optionSet, super.dir, super.resourceProvider);
+ DartdocGeneratorOptionContext.fromDefaultContextLocation(
+ super.optionSet, super.resourceProvider)
+ : super.fromDefaultContextLocation();
+
+ /// The joined contents of any 'header' files specified in options.
+ String get header =>
+ _joinCustomTextFiles(optionSet['header'].valueAt(context));
+
+ /// The joined contents of any 'footer' files specified in options.
+ String get footer =>
+ _joinCustomTextFiles(optionSet['footer'].valueAt(context));
+
+ /// The joined contents of any 'footer-text' files specified in options.
+ String get footerText =>
+ _joinCustomTextFiles(optionSet['footerText'].valueAt(context));
+
+ String _joinCustomTextFiles(Iterable<String> paths) => paths
+ .map((p) => resourceProvider.getFile(p).readAsStringSync())
+ .join('\n');
+
+ bool get prettyIndexJson => optionSet['prettyIndexJson'].valueAt(context);
+
+ String? get favicon => optionSet['favicon'].valueAt(context);
+
+ String? get relCanonicalPrefix =>
+ optionSet['relCanonicalPrefix'].valueAt(context);
+
+ String? get templatesDir => optionSet['templatesDir'].valueAt(context);
+
+ // TODO(jdkoren): duplicated temporarily so that GeneratorContext is enough for configuration.
+ @override
+ bool get useBaseHref => optionSet['useBaseHref'].valueAt(context);
+
+ String? get resourcesDir => optionSet['resourcesDir'].valueAt(context);
+}
+
+class DartdocProgramOptionContext extends DartdocGeneratorOptionContext
+ with LoggingContext {
+ DartdocProgramOptionContext(
+ super.optionSet, super.dir, super.resourceProvider);
+
+ DartdocProgramOptionContext.fromDefaultContextLocation(
+ super.optionSet, super.resourceProvider)
+ : super.fromDefaultContextLocation();
+
+ /// Whether to generate docs or perform a dry run.
+ bool get generateDocs => optionSet['generateDocs'].valueAt(context);
+ bool get help => optionSet['help'].valueAt(context);
+ bool get version => optionSet['version'].valueAt(context);
+}
+
+List<DartdocOption<bool>> createDartdocProgramOptions(
+ PackageMetaProvider packageMetaProvider) {
+ var resourceProvider = packageMetaProvider.resourceProvider;
+ return [
+ DartdocOptionArgOnly<bool>('generateDocs', true, resourceProvider,
+ help:
+ 'Generate docs into the output directory (or only display warnings '
+ 'if false).',
+ negatable: true),
+ DartdocOptionArgOnly<bool>('help', false, resourceProvider,
+ abbr: 'h', help: 'Show command help.', negatable: false),
+ DartdocOptionArgOnly<bool>('version', false, resourceProvider,
+ help: 'Display the version for $programName.', negatable: false),
+ ];
+}
+
+DartdocProgramOptionContext? parseOptions(
+ PackageMetaProvider packageMetaProvider,
+ List<String> arguments, {
+ // Additional options are given in google3.
+ OptionGenerator? additionalOptions,
+}) {
+ var optionRoot = DartdocOptionRoot.fromOptionGenerators(
+ 'dartdoc',
+ [
+ createDartdocOptions,
+ createDartdocProgramOptions,
+ createLoggingOptions,
+ createGeneratorOptions,
+ if (additionalOptions != null) additionalOptions,
+ ],
+ packageMetaProvider);
+
+ try {
+ optionRoot.parseArguments(arguments);
+ } on FormatException catch (e) {
+ stderr.writeln(' fatal error: ${e.message}');
+ stderr.writeln('');
+ _printUsage(optionRoot.argParser);
+ // Do not use `exit()` as this bypasses `--pause-isolates-on-exit`.
+ exitCode = 64;
+ return null;
+ }
+ if (optionRoot['help'].valueAtCurrent() as bool) {
+ _printHelp(optionRoot.argParser);
+ exitCode = 0;
+ return null;
+ }
+ if (optionRoot['version'].valueAtCurrent() as bool) {
+ _printVersion(optionRoot.argParser);
+ exitCode = 0;
+ return null;
+ }
+
+ DartdocProgramOptionContext config;
+ try {
+ config = DartdocProgramOptionContext.fromDefaultContextLocation(
+ optionRoot, packageMetaProvider.resourceProvider);
+ } on DartdocOptionError catch (e) {
+ stderr.writeln(' fatal error: ${e.message}');
+ stderr.writeln('');
+ _printUsage(optionRoot.argParser);
+ exitCode = 64;
+ return null;
+ }
+ startLogging(
+ isJson: config.json,
+ isQuiet: config.quiet,
+ showProgress: config.showProgress,
+ );
+ return config;
+}
+
+/// Print help if we are passed the help option.
+void _printHelp(ArgParser parser) {
+ print('Generate HTML documentation for Dart libraries.\n');
+ print(parser.usage);
+}
+
+/// Print usage information on invalid command lines.
+void _printUsage(ArgParser parser) {
+ print('Usage: dartdoc [OPTIONS]\n');
+ print(parser.usage);
+}
+
+/// Print version information.
+void _printVersion(ArgParser parser) {
+ print('dartdoc version: $dartdocVersion');
+}
+
/// Instantiate dartdoc's configuration file and options parser with the
/// given command line arguments.
List<DartdocOption> createDartdocOptions(
diff --git a/lib/src/generator/generator_backend.dart b/lib/src/generator/generator_backend.dart
index e6a29c1..522fb39 100644
--- a/lib/src/generator/generator_backend.dart
+++ b/lib/src/generator/generator_backend.dart
@@ -3,7 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/file_system/file_system.dart';
-import 'package:dartdoc/options.dart';
+import 'package:dartdoc/src/dartdoc_options.dart';
import 'package:dartdoc/src/generator/generator.dart';
import 'package:dartdoc/src/generator/generator_utils.dart' as generator_util;
import 'package:dartdoc/src/generator/template_data.dart';
diff --git a/lib/src/generator/html_generator.dart b/lib/src/generator/html_generator.dart
index 24de548..feb8b72 100644
--- a/lib/src/generator/html_generator.dart
+++ b/lib/src/generator/html_generator.dart
@@ -4,7 +4,7 @@
library dartdoc.html_generator;
-import 'package:dartdoc/options.dart';
+import 'package:dartdoc/src/dartdoc_options.dart';
import 'package:dartdoc/src/generator/generator.dart';
import 'package:dartdoc/src/generator/generator_backend.dart';
import 'package:dartdoc/src/generator/generator_frontend.dart';
diff --git a/lib/src/generator/markdown_generator.dart b/lib/src/generator/markdown_generator.dart
index 21d7caf..6c4d201 100644
--- a/lib/src/generator/markdown_generator.dart
+++ b/lib/src/generator/markdown_generator.dart
@@ -2,7 +2,7 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-import 'package:dartdoc/options.dart';
+import 'package:dartdoc/src/dartdoc_options.dart';
import 'package:dartdoc/src/generator/generator.dart';
import 'package:dartdoc/src/generator/generator_backend.dart';
import 'package:dartdoc/src/generator/generator_frontend.dart';
diff --git a/lib/src/generator/templates.dart b/lib/src/generator/templates.dart
index b550090..1445e25 100644
--- a/lib/src/generator/templates.dart
+++ b/lib/src/generator/templates.dart
@@ -39,7 +39,7 @@
library dartdoc.templates;
import 'package:analyzer/file_system/file_system.dart';
-import 'package:dartdoc/options.dart';
+import 'package:dartdoc/src/dartdoc_options.dart';
import 'package:dartdoc/src/element_type.dart';
import 'package:dartdoc/src/failure.dart';
import 'package:dartdoc/src/generator/resource_loader.dart';
diff --git a/test/end2end/dartdoc_test.dart b/test/end2end/dartdoc_test.dart
index 7680327..438a27e 100644
--- a/test/end2end/dartdoc_test.dart
+++ b/test/end2end/dartdoc_test.dart
@@ -7,7 +7,6 @@
import 'dart:async';
import 'package:analyzer/file_system/file_system.dart';
-import 'package:dartdoc/options.dart';
import 'package:dartdoc/src/dartdoc.dart' show Dartdoc, DartdocResults;
import 'package:dartdoc/src/dartdoc_options.dart';
import 'package:dartdoc/src/failure.dart';
diff --git a/test/html_generator_test.dart b/test/html_generator_test.dart
index 93451d8..202cf2f 100644
--- a/test/html_generator_test.dart
+++ b/test/html_generator_test.dart
@@ -4,7 +4,6 @@
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/file_system/memory_file_system.dart';
-import 'package:dartdoc/options.dart';
import 'package:dartdoc/src/dartdoc.dart' show DartdocFileWriter;
import 'package:dartdoc/src/dartdoc_options.dart';
import 'package:dartdoc/src/generator/generator.dart';
diff --git a/test/mustachio/renderers_output_test.dart b/test/mustachio/renderers_output_test.dart
index 227dea2..9ab8285 100644
--- a/test/mustachio/renderers_output_test.dart
+++ b/test/mustachio/renderers_output_test.dart
@@ -9,7 +9,6 @@
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/file_system/memory_file_system.dart';
-import 'package:dartdoc/options.dart';
import 'package:dartdoc/src/dartdoc.dart' show Dartdoc, DartdocFileWriter;
import 'package:dartdoc/src/dartdoc_options.dart';
import 'package:dartdoc/src/generator/generator.dart';
diff --git a/test/src/utils.dart b/test/src/utils.dart
index 9604b90..f95ad09 100644
--- a/test/src/utils.dart
+++ b/test/src/utils.dart
@@ -9,7 +9,6 @@
import 'package:analyzer/file_system/physical_file_system.dart';
import 'package:analyzer/src/dart/sdk/sdk.dart';
import 'package:analyzer/src/test_utilities/mock_sdk.dart';
-import 'package:dartdoc/options.dart';
import 'package:dartdoc/src/dartdoc_options.dart';
import 'package:dartdoc/src/failure.dart';
import 'package:dartdoc/src/generator/generator.dart';
diff --git a/test/templates/category_test.dart b/test/templates/category_test.dart
index af65866..4e1fd0e 100644
--- a/test/templates/category_test.dart
+++ b/test/templates/category_test.dart
@@ -3,8 +3,8 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/file_system/memory_file_system.dart';
-import 'package:dartdoc/options.dart';
import 'package:dartdoc/src/dartdoc.dart';
+import 'package:dartdoc/src/dartdoc_options.dart';
import 'package:dartdoc/src/model/model.dart';
import 'package:dartdoc/src/package_meta.dart';
import 'package:path/path.dart' as path;
diff --git a/test/templates/extension_test.dart b/test/templates/extension_test.dart
index bc28c56..36fe9a5 100644
--- a/test/templates/extension_test.dart
+++ b/test/templates/extension_test.dart
@@ -3,8 +3,8 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/file_system/memory_file_system.dart';
-import 'package:dartdoc/options.dart';
import 'package:dartdoc/src/dartdoc.dart';
+import 'package:dartdoc/src/dartdoc_options.dart';
import 'package:dartdoc/src/model/model.dart';
import 'package:dartdoc/src/package_meta.dart';
import 'package:path/path.dart' as path;
diff --git a/test/templates/extension_type_test.dart b/test/templates/extension_type_test.dart
index ecd52eb..e0a559a 100644
--- a/test/templates/extension_type_test.dart
+++ b/test/templates/extension_type_test.dart
@@ -3,8 +3,8 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/file_system/memory_file_system.dart';
-import 'package:dartdoc/options.dart';
import 'package:dartdoc/src/dartdoc.dart';
+import 'package:dartdoc/src/dartdoc_options.dart';
import 'package:dartdoc/src/model/model.dart';
import 'package:dartdoc/src/package_meta.dart';
import 'package:path/path.dart' as path;
diff --git a/test/warnings_test.dart b/test/warnings_test.dart
index 9ba62ef..33ed00b 100644
--- a/test/warnings_test.dart
+++ b/test/warnings_test.dart
@@ -6,7 +6,6 @@
library dartdoc.warnings_test;
import 'package:analyzer/file_system/physical_file_system.dart';
-import 'package:dartdoc/options.dart';
import 'package:dartdoc/src/dartdoc_options.dart';
import 'package:dartdoc/src/generator/generator.dart';
import 'package:dartdoc/src/io_utils.dart';