move the tool/bindings_generator dart+node script into the top-level bindings_generator/ directory (#123)
move the tool/bindings_generator dart+node script into the top-level bindings_generator/ directory
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 8aa7fa3..507091a 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -74,7 +74,7 @@
run: dart pub get
- name: Install Node dependencies
run: npm install
- working-directory: tool/bindings_generator
+ working-directory: bindings_generator
- name: Run the generator
run: dart tool/update_bindings.dart
- name: Analyze code
diff --git a/.gitignore b/.gitignore
index c6212fe..6fae96c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
.dart_tool
doc/api/
pubspec.lock
-tool/bindings_generator/*.js
-tool/bindings_generator/*.js.*
-tool/bindings_generator/node_modules/
+
+bindings_generator/*.js
+bindings_generator/*.js.*
+bindings_generator/node_modules/
diff --git a/README.md b/README.md
index 63175c0..7463225 100644
--- a/README.md
+++ b/README.md
@@ -36,3 +36,6 @@
<!-- START updated by tool/update_bindings.dart. Do not modify by hand -->
Based on [`@webref/idl 3.39.1`](https://www.npmjs.com/package/@webref/idl/v/3.39.1).
<!-- END updated by tool/update_bindings.dart. Do not modify by hand -->
+
+For instructions on re-generating the DOM bindings, see
+(bindings_generator/README.md)[bindings_generator/README.md].
diff --git a/bindings_generator/README.md b/bindings_generator/README.md
new file mode 100644
index 0000000..ed1d732
--- /dev/null
+++ b/bindings_generator/README.md
@@ -0,0 +1,19 @@
+The bindings generator for `package:web`.
+
+This tool is written in Dart, compiled to JavaScript, and run on Node.
+
+## Generating the bindings
+
+Run:
+
+```
+dart tool/update_bindings.dart
+```
+
+## Update to the latest Web IDL versions and regenerate
+
+Run:
+
+```
+dart tool/update_bindings.dart --update
+```
diff --git a/tool/bindings_generator/banned_names.dart b/bindings_generator/banned_names.dart
similarity index 100%
rename from tool/bindings_generator/banned_names.dart
rename to bindings_generator/banned_names.dart
diff --git a/tool/bindings_generator/dart_main.dart b/bindings_generator/dart_main.dart
similarity index 100%
rename from tool/bindings_generator/dart_main.dart
rename to bindings_generator/dart_main.dart
diff --git a/tool/bindings_generator/filesystem_api.dart b/bindings_generator/filesystem_api.dart
similarity index 100%
rename from tool/bindings_generator/filesystem_api.dart
rename to bindings_generator/filesystem_api.dart
diff --git a/tool/bindings_generator/generate_bindings.dart b/bindings_generator/generate_bindings.dart
similarity index 100%
rename from tool/bindings_generator/generate_bindings.dart
rename to bindings_generator/generate_bindings.dart
diff --git a/tool/bindings_generator/js_type_supertypes.dart b/bindings_generator/js_type_supertypes.dart
similarity index 95%
rename from tool/bindings_generator/js_type_supertypes.dart
rename to bindings_generator/js_type_supertypes.dart
index 312e9d7..121e858 100644
--- a/tool/bindings_generator/js_type_supertypes.dart
+++ b/bindings_generator/js_type_supertypes.dart
@@ -28,5 +28,5 @@
'JSUint16Array': 'JSTypedArray',
'JSUint32Array': 'JSTypedArray',
'JSUint8Array': 'JSTypedArray',
- 'JSUint8ClampedArray': 'JSTypedArray'
+ 'JSUint8ClampedArray': 'JSTypedArray',
};
diff --git a/tool/bindings_generator/main.mjs b/bindings_generator/main.mjs
similarity index 100%
rename from tool/bindings_generator/main.mjs
rename to bindings_generator/main.mjs
diff --git a/tool/bindings_generator/package-lock.json b/bindings_generator/package-lock.json
similarity index 100%
rename from tool/bindings_generator/package-lock.json
rename to bindings_generator/package-lock.json
diff --git a/tool/bindings_generator/package.json b/bindings_generator/package.json
similarity index 100%
rename from tool/bindings_generator/package.json
rename to bindings_generator/package.json
diff --git a/tool/bindings_generator/singletons.dart b/bindings_generator/singletons.dart
similarity index 100%
rename from tool/bindings_generator/singletons.dart
rename to bindings_generator/singletons.dart
diff --git a/tool/bindings_generator/translator.dart b/bindings_generator/translator.dart
similarity index 100%
rename from tool/bindings_generator/translator.dart
rename to bindings_generator/translator.dart
diff --git a/tool/bindings_generator/type_aliases.dart b/bindings_generator/type_aliases.dart
similarity index 100%
rename from tool/bindings_generator/type_aliases.dart
rename to bindings_generator/type_aliases.dart
diff --git a/tool/bindings_generator/type_union.dart b/bindings_generator/type_union.dart
similarity index 100%
rename from tool/bindings_generator/type_union.dart
rename to bindings_generator/type_union.dart
diff --git a/tool/bindings_generator/util.dart b/bindings_generator/util.dart
similarity index 100%
rename from tool/bindings_generator/util.dart
rename to bindings_generator/util.dart
diff --git a/tool/bindings_generator/webidl_api.dart b/bindings_generator/webidl_api.dart
similarity index 100%
rename from tool/bindings_generator/webidl_api.dart
rename to bindings_generator/webidl_api.dart
diff --git a/tool/bindings_generator/webref_css_api.dart b/bindings_generator/webref_css_api.dart
similarity index 100%
rename from tool/bindings_generator/webref_css_api.dart
rename to bindings_generator/webref_css_api.dart
diff --git a/tool/bindings_generator/webref_idl_api.dart b/bindings_generator/webref_idl_api.dart
similarity index 100%
rename from tool/bindings_generator/webref_idl_api.dart
rename to bindings_generator/webref_idl_api.dart
diff --git a/test/type_union_test.dart b/test/type_union_test.dart
index f1c5a54..282bf08 100644
--- a/test/type_union_test.dart
+++ b/test/type_union_test.dart
@@ -3,7 +3,8 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:test/test.dart';
-import '../tool/bindings_generator/type_union.dart';
+
+import '../bindings_generator/type_union.dart';
void main() {
test('Non-JS types', () {
diff --git a/tool/bindings_generator/README.md b/tool/bindings_generator/README.md
deleted file mode 100644
index f3b4704..0000000
--- a/tool/bindings_generator/README.md
+++ /dev/null
@@ -1,17 +0,0 @@
-The bindings generator requires dart and node.
-
-If you haven't installed the required node packages, or they have been updated,
-please run:
-```
-npm install
-```
-
-To compile the bindings generator run:
-```
-dart compile js dart_main.dart -o dart_main.js
-```
-
-Finally, run node to build the bindingS:
-```
-node main.mjs <output directory>
-```
diff --git a/tool/update_bindings.dart b/tool/update_bindings.dart
index 3f6a355..29792ee 100644
--- a/tool/update_bindings.dart
+++ b/tool/update_bindings.dart
@@ -36,13 +36,13 @@
assert(p.fromUri(Platform.script).endsWith(_thisScript));
- // Run `npm install` or `npm upgrade` as needed.
- if (argResult['update'] as bool) {
- await _runProc('npm', ['update'], workingDirectory: _bindingsGeneratorPath);
- } else {
- await _runProc('npm', ['install'],
- workingDirectory: _bindingsGeneratorPath);
- }
+ // Run `npm install` or `npm update` as needed.
+ final update = argResult['update'] as bool;
+ await _runProc(
+ 'npm',
+ [update ? 'update' : 'install'],
+ workingDirectory: _bindingsGeneratorPath,
+ );
// Compute JS type supertypes for union calculation in translator.
await _generateJsTypeSupertypes();
@@ -79,7 +79,7 @@
// Run app with `node`.
await _runProc(
'node',
- ['main.mjs', '../../lib/src'],
+ ['main.mjs', '../lib/src'],
workingDirectory: _bindingsGeneratorPath,
);
@@ -93,7 +93,7 @@
// Update readme.
final readmeFile = File(
- p.normalize(p.join(_bindingsGeneratorPath, '..', '..', 'README.md')),
+ p.normalize(p.join(_bindingsGeneratorPath, '..', 'README.md')),
);
final sourceContent = readmeFile.readAsStringSync();
@@ -138,8 +138,7 @@
return webRefIdl['version'] as String;
}
-final _bindingsGeneratorPath =
- p.fromUri(Platform.script.resolve('bindings_generator/'));
+const _bindingsGeneratorPath = 'bindings_generator';
const _webRefIdl = '@webref/idl';
@@ -194,6 +193,7 @@
// the old code.
void storeSupertypes(InterfaceElement element) {
if (!_isInJsTypesOrJsInterop(element)) return;
+
String? parentJsType;
final supertype = element.supertype;
final immediateSupertypes = <InterfaceType>[
@@ -222,22 +222,19 @@
}
final jsTypeSupertypesScript = '''
- // 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.
+// 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.
- // Updated by $_thisScript. Do not modify by hand.
+// Updated by $_thisScript. Do not modify by hand.
- const Map<String, String?> jsTypeSupertypes = $jsTypeSupertypes;
- ''';
+const Map<String, String?> jsTypeSupertypes = {
+${jsTypeSupertypes.entries.map((e) => " ${e.key}: ${e.value},").join('\n')}
+};
+''';
final jsTypeSupertypesPath =
p.join(_bindingsGeneratorPath, 'js_type_supertypes.dart');
await File(jsTypeSupertypesPath).writeAsString(jsTypeSupertypesScript);
- await _runProc(
- Platform.executable,
- ['format', jsTypeSupertypesPath],
- workingDirectory: _bindingsGeneratorPath,
- );
}
final _usage = '''