From 3f5812fee8c5084ab28dd0eab3e7602ce7cfc448 Mon Sep 17 00:00:00 2001 From: sylar Date: Tue, 11 Feb 2025 15:09:37 +0800 Subject: [PATCH 1/2] chore: remove dependence of package paraphrase --- .github/workflows/prepare-release.yml | 2 +- .gitignore | 4 +- tool/testcase_gen/bin/testcase_gen.dart | 2 +- tool/testcase_gen/lib/core/paraphrase.dart | 759 ++++++++++++++++++ tool/testcase_gen/lib/default_generator.dart | 2 +- tool/testcase_gen/lib/generator.dart | 2 +- ...ecorder_observer_somke_test_generator.dart | 2 +- ...el_event_handler_smoke_test_generator.dart | 2 +- ...c_device_manager_smoke_test_generator.dart | 2 +- ...ne_event_handler_somke_test_generator.dart | 2 +- ...gine_sub_process_smoke_test_generator.dart | 2 +- .../testcase_gen/lib/templated_generator.dart | 2 +- tool/testcase_gen/pubspec.yaml | 6 - 13 files changed, 772 insertions(+), 17 deletions(-) create mode 100644 tool/testcase_gen/lib/core/paraphrase.dart diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml index 49cc5ab5d..1d33cf7e2 100644 --- a/.github/workflows/prepare-release.yml +++ b/.github/workflows/prepare-release.yml @@ -78,4 +78,4 @@ jobs: ci:skip ci:prepare_release reviewers: | - littleGnAl + peilinok diff --git a/.gitignore b/.gitignore index 285f6e0b6..d6d489e28 100644 --- a/.gitignore +++ b/.gitignore @@ -45,4 +45,6 @@ third_party/ .ccls-cache/ test_shard/**/scripts/iris_web_version.js -test_shard/**/web/iris_web_version.js \ No newline at end of file +test_shard/**/web/iris_web_version.js + +artifacts \ No newline at end of file diff --git a/tool/testcase_gen/bin/testcase_gen.dart b/tool/testcase_gen/bin/testcase_gen.dart index 0c00bb3b8..d6624b4ab 100644 --- a/tool/testcase_gen/bin/testcase_gen.dart +++ b/tool/testcase_gen/bin/testcase_gen.dart @@ -1,7 +1,7 @@ import 'dart:io'; import 'package:args/args.dart'; -import 'package:paraphrase/paraphrase.dart'; +import 'package:testcase_gen/core/paraphrase.dart'; import 'package:testcase_gen/generator.dart'; import 'package:testcase_gen/media_recorder_observer_somke_test_generator.dart'; import 'package:testcase_gen/rtc_channel_event_handler_smoke_test_generator.dart'; diff --git a/tool/testcase_gen/lib/core/paraphrase.dart b/tool/testcase_gen/lib/core/paraphrase.dart new file mode 100644 index 000000000..2fbdcfb9d --- /dev/null +++ b/tool/testcase_gen/lib/core/paraphrase.dart @@ -0,0 +1,759 @@ +import 'dart:io'; + +import 'package:analyzer/dart/analysis/analysis_context.dart'; +import 'package:analyzer/dart/analysis/analysis_context_collection.dart' + show AnalysisContextCollection; +import 'package:analyzer/dart/analysis/results.dart' show ParsedUnitResult; +import 'package:analyzer/dart/analysis/session.dart' show AnalysisSession; +import 'package:analyzer/dart/ast/ast.dart'; +import 'package:analyzer/dart/ast/ast.dart' as dart_ast; +import 'package:analyzer/dart/ast/visitor.dart' as dart_ast_visitor; +import 'package:analyzer/dart/element/type.dart'; +import 'package:analyzer/error/error.dart' show AnalysisError; +import 'package:analyzer/file_system/file_system.dart'; + +class CallApiInvoke { + late String apiType; + late String params; +} + +class FunctionBody { + late CallApiInvoke callApiInvoke; +} + +class Parameter { + late DartType? dartType; + late Type type; + // List typeArguments = []; + late String name; + late bool isNamed; + late bool isOptional; + String? defaultValue; +} + +extension ParameterExt on Parameter { + bool get isPrimitiveType => + type.type == 'int' || + type.type == 'double' || + type.type == 'bool' || + type.type == 'String' || + type.type == 'List' || + type.type == 'Map' || + type.type == 'Set' || + type.type == 'Uint8List'; + + String primitiveDefualtValue() { + switch (type.type) { + case 'int': + return '10'; + case 'double': + return '10.0'; + case 'String': + return '"hello"'; + case 'bool': + return 'true'; + case 'List': + return '[]'; + case 'Map': + return '{}'; + case 'Uint8List': + return 'Uint8List.fromList([1, 2, 3, 4, 5])'; + case 'Set': + return '{}'; + + default: + throw Exception('not support type $type'); + } + } +} + +class Type { + late String type; + List typeArguments = []; + // The parameters associated with the function type. + List parameters = []; +} + +extension TypeExt on Type { + bool get isPrimitiveType => + type == 'int' || + type == 'double' || + type == 'bool' || + type == 'String' || + type == 'List' || + type == 'Map' || + type == 'Set'; + + String primitiveDefualtValue() { + switch (type) { + case 'int': + return '10'; + case 'double': + return '10.0'; + case 'String': + return '"hello"'; + case 'bool': + return 'true'; + case 'List': + return '[]'; + case 'Map': + return '{}'; + case 'Uint8List': + return 'Uint8List.fromList([])'; + case 'Set': + return '{}'; + default: + throw Exception('not support type $type'); + } + } + + bool isVoid() { + return type == 'void'; + } +} + +class SimpleLiteral { + late String type; + late String value; +} + +class SimpleAnnotation { + late String name; + List arguments = []; +} + +class SimpleComment { + List commentLines = []; + late int offset; + late int end; +} + +class BaseNode { + late SimpleComment comment; + late String source; + late Uri uri; +} + +class Method extends BaseNode { + late String name; + late FunctionBody body; + List parameters = []; + late Type returnType; +} + +class Field extends BaseNode { + late Type type; + late String name; +} + +class Constructor extends BaseNode { + late String name; + List parameters = []; + late bool isFactory; + late bool isConst; +} + +class Clazz extends BaseNode { + late String name; + List constructors = []; + List methods = []; + List fields = []; +} + +class Extensionz extends BaseNode { + late String name; + late String extendedType; + List methods = []; + List fields = []; +} + +class EnumConstant extends BaseNode { + late String name; + List annotations = []; +} + +class Enumz extends BaseNode { + late String name; + List enumConstants = []; +} + +class ParseResult { + late List classes; + late List enums; + late List extensions; + + // TODO(littlegnal): Optimize this later. + // late Map> classFieldsMap; + // late Map fieldsTypeMap; + late Map> genericTypeAliasParametersMap; +} + +extension ParseResultExt on ParseResult { + bool hasEnum(String type) { + return enums.any((e) => e.name == type); + } + + List getEnum(String type, {String? package}) { + List foundEnums = []; + for (final enumz in enums) { + if (package == null) { + if (enumz.name == type) { + foundEnums.add(enumz); + } + } else { + if (enumz.name == type && + enumz.uri.pathSegments.last.replaceAll('.dart', '') == package) { + foundEnums.add(enumz); + } + } + } + + return foundEnums; + } + + bool hasClass(String type) { + return classes.any((e) => e.name == type); + } + + List getClazz(String type, {String? package}) { + List foundClasses = []; + for (final clazz in classes) { + if (package == null) { + if (clazz.name == type) { + foundClasses.add(clazz); + } + } else { + if (clazz.name == type && + clazz.uri.pathSegments.last.replaceAll('.dart', '') == package) { + foundClasses.add(clazz); + } + } + } + + return foundClasses; + } + + bool hasExtension(String type) { + return extensions.any((e) => e.name == type); + } + + List getExtension(String type, {String? package}) { + List foundExtensions = []; + for (final extension in extensions) { + if (package == null) { + if (extension.name == type) { + foundExtensions.add(extension); + } + } else { + if (extension.name == type && + extension.uri.pathSegments.last.replaceAll('.dart', '') == + package) { + foundExtensions.add(extension); + } + } + } + + return foundExtensions; + } +} + +abstract class DefaultVisitor + extends dart_ast_visitor.RecursiveAstVisitor { + /// Called before visiting any node. + void preVisit(Uri uri) {} + + /// Called after visiting nodes completed. + void postVisit(Uri uri) {} +} + +class DefaultVisitorImpl extends DefaultVisitor { + final classFieldsMap = >{}; + final fieldsTypeMap = {}; + final genericTypeAliasParametersMap = >{}; + + final classMap = {}; + final enumMap = {}; + final extensionMap = {}; + + Uri? _currentVisitUri; + + @override + void preVisit(Uri uri) { + _currentVisitUri = uri; + } + + @override + void postVisit(Uri uri) { + _currentVisitUri = null; + } + + @override + Object? visitFieldDeclaration(dart_ast.FieldDeclaration node) { + final clazz = _getClazz(node); + if (clazz == null) return null; + + final dart_ast.TypeAnnotation? type = node.fields.type; + final fieldName = node.fields.variables[0].name.name; + if (type is dart_ast.NamedType) { + Field field = Field() + ..name = fieldName + ..comment = _generateComment(node) + ..source = node.toString() + ..uri = _currentVisitUri!; + + Type t = Type()..type = type.name.name; + field.type = t; + + clazz.fields.add(field); + } else if (type is dart_ast.GenericFunctionType) { + Field field = Field() + ..name = fieldName + ..comment = _generateComment(node) + ..source = node.toString() + ..uri = _currentVisitUri!; + + Type t = Type()..type = type.functionKeyword.stringValue!; + t.parameters = _getParameter(null, type.parameters); + field.type = t; + + clazz.fields.add(field); + } + + return null; + } + + @override + Object? visitConstructorDeclaration(ConstructorDeclaration node) { + final clazz = _getClazz(node); + if (clazz == null) return null; + + Constructor constructor = Constructor() + ..name = node.name?.name ?? '' + ..parameters = _getParameter(node.parent, node.parameters) + ..isFactory = node.factoryKeyword != null + ..isConst = node.constKeyword != null + ..comment = _generateComment(node) + ..source = node.toSource(); + + clazz.constructors.add(constructor); + + return null; + } + + @override + Object? visitEnumDeclaration(EnumDeclaration node) { + final enumz = enumMap.putIfAbsent(node.name.name, () => Enumz()); + enumz.name = node.name.name; + enumz.comment = _generateComment(node); + enumz.uri = _currentVisitUri!; + + for (final constant in node.constants) { + EnumConstant enumConstant = EnumConstant() + ..name = '${node.name.name}.${constant.name.name}' + ..comment = _generateComment(constant) + ..source = constant.toSource(); + enumz.enumConstants.add(enumConstant); + + for (final meta in constant.metadata) { + SimpleAnnotation simpleAnnotation = SimpleAnnotation() + ..name = meta.name.name; + enumConstant.annotations.add(simpleAnnotation); + + for (final a in meta.arguments?.arguments ?? []) { + SimpleLiteral simpleLiteral = SimpleLiteral(); + simpleAnnotation.arguments.add(simpleLiteral); + + late String type; + late String value; + + if (a is IntegerLiteral) { + type = 'int'; + value = a.value.toString(); + } else if (a is PrefixExpression) { + if (a.operand is IntegerLiteral) { + final operand = a.operand as IntegerLiteral; + type = 'int'; + value = '${a.operator.value()}${operand.value.toString()}'; + } + } else if (a is BinaryExpression) { + type = 'int'; + value = a.toSource(); + } else if (a is SimpleStringLiteral) { + type = 'String'; + value = a.toSource(); + } else if (a is ParenthesizedExpression) { + if (a.expression.unParenthesized is BinaryExpression || + a.expression.unParenthesized is IntegerLiteral) { + type = 'int'; + value = a.expression.unParenthesized.toSource(); + } + } else { + stderr.writeln( + 'Not handled enum: ${enumz.name}, annotation type: ${a.runtimeType}'); + } + stderr.writeln( + ' handled enum: ${enumz.name}, annotation type: ${a.runtimeType}'); + simpleLiteral.type = type; + simpleLiteral.value = value; + } + } + } + + return null; + } + + Clazz? _getClazz(AstNode node) { + final classNode = node.parent; + if (_currentVisitUri == null || + classNode == null || + classNode is! dart_ast.ClassDeclaration) { + return null; + } + + Clazz clazz = classMap.putIfAbsent( + '${_currentVisitUri.toString()}#${classNode.name.name}', + () => Clazz() + ..name = classNode.name.name + ..comment = _generateComment(node as AnnotatedNode) + ..uri = _currentVisitUri!, + ); + + return clazz; + } + + List _getParameter( + AstNode? root, FormalParameterList? formalParameterList) { + if (formalParameterList == null) return []; + List parameters = []; + for (final p in formalParameterList.parameters) { + Parameter parameter = Parameter(); + Type type = Type(); + parameter.type = type; + + if (p is SimpleFormalParameter) { + parameter.name = p.identifier?.name ?? ''; + DartType? dartType = p.type?.type; + + parameter.dartType = dartType; + + final namedType = p.type as NamedType; + for (final ta in namedType.typeArguments?.arguments ?? []) { + type.typeArguments.add(ta.name.name); + } + + type.type = namedType.name.name; + parameter.isNamed = p.isNamed; + parameter.isOptional = p.isOptional; + } else if (p is DefaultFormalParameter) { + parameter.name = p.identifier?.name ?? ''; + parameter.defaultValue = p.defaultValue?.toSource(); + + DartType? dartType; + String? typeName; + List typeArguments = []; + + if (p.parameter is SimpleFormalParameter) { + final SimpleFormalParameter simpleFormalParameter = + p.parameter as SimpleFormalParameter; + dartType = simpleFormalParameter.type?.type; + + if (simpleFormalParameter.type is NamedType) { + final namedType = simpleFormalParameter.type as NamedType; + for (final ta in namedType.typeArguments?.arguments ?? []) { + typeArguments.add(ta.name.name); + } + + typeName = (simpleFormalParameter.type as NamedType).name.name; + } else if (simpleFormalParameter.type is GenericFunctionType) { + typeName = (simpleFormalParameter.type as GenericFunctionType) + .functionKeyword + .stringValue; + type.parameters = _getParameter(null, + (simpleFormalParameter.type as GenericFunctionType).parameters); + } + } else if (p.parameter is FieldFormalParameter) { + final FieldFormalParameter fieldFormalParameter = + p.parameter as FieldFormalParameter; + + dartType = fieldFormalParameter.type?.type; + + if (fieldFormalParameter.thisKeyword.stringValue == 'this') { + if (root != null && root is ClassDeclaration) { + for (final classMember in root.members) { + if (classMember is FieldDeclaration) { + final dart_ast.TypeAnnotation? fieldType = + classMember.fields.type; + final fieldName = classMember.fields.variables[0].name.name; + if (fieldType is dart_ast.NamedType) { + if (fieldName == fieldFormalParameter.identifier.name) { + typeName = fieldType.name.name; + for (final ta + in fieldType.typeArguments?.arguments ?? []) { + typeArguments.add(ta.name.name); + } + break; + } + } else if (fieldType is dart_ast.GenericFunctionType) { + if (fieldName == fieldFormalParameter.identifier.name) { + typeName = fieldType.functionKeyword.stringValue; + type.parameters = + _getParameter(null, fieldType.parameters); + + break; + } + } + } + } + } + } else if (fieldFormalParameter is dart_ast.GenericFunctionType) { + typeName = (fieldFormalParameter as GenericFunctionType) + .functionKeyword + .stringValue; + type.parameters = + _getParameter(null, fieldFormalParameter.parameters); + + break; + } + } + + parameter.dartType = dartType; + type.type = typeName!; + type.typeArguments.addAll(typeArguments); + parameter.isNamed = p.isNamed; + parameter.isOptional = p.isOptional; + } else if (p is FieldFormalParameter) { + String typeName = ''; + List typeArguments = []; + if (root != null && root is ClassDeclaration) { + for (final classMember in root.members) { + if (classMember is FieldDeclaration) { + final dart_ast.TypeAnnotation? fieldType = + classMember.fields.type; + final fieldName = classMember.fields.variables[0].name.name; + if (fieldType is dart_ast.NamedType) { + if (fieldName == p.identifier.name) { + typeName = fieldType.name.name; + for (final ta in fieldType.typeArguments?.arguments ?? []) { + typeArguments.add(ta.name.name); + } + break; + } + } else if (fieldType is dart_ast.GenericFunctionType) { + if (fieldName == p.identifier.name) { + typeName = fieldType.functionKeyword.stringValue ?? ''; + type.parameters = _getParameter(root, fieldType.parameters); + + break; + } + } + } + } + } + + parameter.name = p.identifier.name; + parameter.dartType = p.type?.type; + type.type = typeName; + type.typeArguments.addAll(typeArguments); + parameter.isNamed = p.isNamed; + parameter.isOptional = p.isOptional; + } + + parameters.add(parameter); + } + + return parameters; + } + + CallApiInvoke? _getCallApiInvoke(Expression expression) { + if (expression is! MethodInvocation) return null; + + if (expression.target != null) { + return _getCallApiInvoke(expression.target!); + } + + CallApiInvoke callApiInvoke = CallApiInvoke(); + for (final argument in expression.argumentList.arguments) { + if (argument is SimpleStringLiteral) { + } else if (argument is FunctionExpression) { + } else if (argument is SetOrMapLiteral) { + for (final element in argument.elements) { + if (element is MapLiteralEntry) { + final key = (element.key as SimpleStringLiteral).value; + if (key == 'apiType') { + callApiInvoke.apiType = element.value.toSource(); + } else if (key == 'params') { + callApiInvoke.params = element.value.toSource(); + } + } + } + } + } + + return callApiInvoke; + } + + SimpleComment _generateComment(AnnotatedNode node) { + SimpleComment simpleComment = SimpleComment() + ..offset = node.documentationComment?.offset ?? 0 + ..end = node.documentationComment?.end ?? 0; + + for (final token in node.documentationComment?.tokens ?? []) { + simpleComment.commentLines.add(token.stringValue ?? ''); + } + return simpleComment; + } + + @override + Object? visitMethodDeclaration(MethodDeclaration node) { + final clazz = _getClazz(node); + if (clazz == null) return null; + + clazz.methods.add(_createMethod(node)); + + return null; + } + + Method _createMethod(MethodDeclaration node) { + Method method = Method() + ..name = node.name.name + ..source = node.toString() + ..uri = _currentVisitUri!; + + method.comment = _generateComment(node); + + if (node.parameters != null) { + method.parameters.addAll(_getParameter(node.parent, node.parameters)); + } + + if (node.returnType != null && node.returnType is NamedType) { + final returnType = node.returnType as NamedType; + method.returnType = Type() + ..type = returnType.name.name + ..typeArguments = returnType.typeArguments?.arguments + .map((ta) => (ta as NamedType).name.name) + .toList() ?? + []; + } + + if (node.body is BlockFunctionBody) { + final body = node.body as BlockFunctionBody; + + FunctionBody fb = FunctionBody(); + method.body = fb; + CallApiInvoke callApiInvoke = CallApiInvoke(); + method.body.callApiInvoke = callApiInvoke; + + for (final statement in body.block.statements) { + if (statement is ReturnStatement) { + final returns = statement; + + if (returns.expression != null) { + CallApiInvoke? callApiInvoke = + _getCallApiInvoke(returns.expression!); + if (callApiInvoke != null) { + method.body.callApiInvoke = callApiInvoke; + } + } + } + } + } + + return method; + } + + @override + Object? visitGenericTypeAlias(dart_ast.GenericTypeAlias node) { + final parametersList = node.functionType?.parameters.parameters + .map((e) { + if (e is SimpleFormalParameter) { + return '${e.type} ${e.identifier?.name}'; + } + return ''; + }) + .where((e) => e.isNotEmpty) + .toList() ?? + []; + + genericTypeAliasParametersMap[node.name.name] = parametersList; + + return null; + } + + @override + Object? visitExtensionDeclaration(dart_ast.ExtensionDeclaration node) { + extensionMap.putIfAbsent(node.name?.name ?? '', () { + Extensionz extensionz = Extensionz() + ..name = node.name?.name ?? '' + ..uri = _currentVisitUri!; + if (node.extendedType is dart_ast.NamedType) { + extensionz.extendedType = + (node.extendedType as dart_ast.NamedType).name.name; + } + for (final member in node.members) { + if (member is MethodDeclaration) { + extensionz.methods.add(_createMethod(member)); + } + } + + return extensionz; + }); + + return null; + } +} + +class Paraphrase { + const Paraphrase({ + required this.includedPaths, + this.excludedPaths, + this.resourceProvider, + }); + + final List includedPaths; + + final List? excludedPaths; + final ResourceProvider? resourceProvider; + + ParseResult visit() { + final DefaultVisitorImpl rootBuilder = DefaultVisitorImpl(); + + visitWith(visitor: rootBuilder); + + final parseResult = ParseResult() + ..classes = rootBuilder.classMap.values.toList() + ..enums = rootBuilder.enumMap.values.toList() + ..extensions = rootBuilder.extensionMap.values.toList() + ..genericTypeAliasParametersMap = + rootBuilder.genericTypeAliasParametersMap; + + return parseResult; + } + + void visitWith({ + required DefaultVisitor visitor, + }) { + final AnalysisContextCollection collection = AnalysisContextCollection( + includedPaths: includedPaths, + excludedPaths: excludedPaths, + resourceProvider: resourceProvider, + ); + + for (final AnalysisContext context in collection.contexts) { + for (final String path in context.contextRoot.analyzedFiles()) { + final AnalysisSession session = context.currentSession; + final ParsedUnitResult result = + session.getParsedUnit(path) as ParsedUnitResult; + if (result.errors.isEmpty) { + final dart_ast.CompilationUnit unit = result.unit; + visitor.preVisit(result.uri); + unit.accept(visitor); + visitor.postVisit(result.uri); + } else { + for (final AnalysisError error in result.errors) { + stderr.writeln(error.toString()); + } + } + } + } + } +} diff --git a/tool/testcase_gen/lib/default_generator.dart b/tool/testcase_gen/lib/default_generator.dart index cb765845c..ebd2ca43c 100644 --- a/tool/testcase_gen/lib/default_generator.dart +++ b/tool/testcase_gen/lib/default_generator.dart @@ -1,7 +1,7 @@ import 'dart:io'; import 'package:dart_style/dart_style.dart'; -import 'package:paraphrase/paraphrase.dart'; +import 'package:testcase_gen/core/paraphrase.dart'; import 'package:testcase_gen/generator.dart'; import 'package:meta/meta.dart'; diff --git a/tool/testcase_gen/lib/generator.dart b/tool/testcase_gen/lib/generator.dart index 201e8e0e7..b0b819655 100644 --- a/tool/testcase_gen/lib/generator.dart +++ b/tool/testcase_gen/lib/generator.dart @@ -1,6 +1,6 @@ import 'dart:io'; -import 'package:paraphrase/paraphrase.dart'; +import 'package:testcase_gen/core/paraphrase.dart'; enum GeneratorConfigPlatform { android, diff --git a/tool/testcase_gen/lib/media_recorder_observer_somke_test_generator.dart b/tool/testcase_gen/lib/media_recorder_observer_somke_test_generator.dart index d0487b603..c9c36e9ea 100644 --- a/tool/testcase_gen/lib/media_recorder_observer_somke_test_generator.dart +++ b/tool/testcase_gen/lib/media_recorder_observer_somke_test_generator.dart @@ -1,7 +1,7 @@ import 'dart:io'; import 'package:dart_style/dart_style.dart'; -import 'package:paraphrase/paraphrase.dart'; +import 'package:testcase_gen/core/paraphrase.dart'; import 'package:testcase_gen/default_generator.dart'; import 'package:testcase_gen/generator.dart'; diff --git a/tool/testcase_gen/lib/rtc_channel_event_handler_smoke_test_generator.dart b/tool/testcase_gen/lib/rtc_channel_event_handler_smoke_test_generator.dart index f4fc579b6..fe57c14a0 100644 --- a/tool/testcase_gen/lib/rtc_channel_event_handler_smoke_test_generator.dart +++ b/tool/testcase_gen/lib/rtc_channel_event_handler_smoke_test_generator.dart @@ -1,7 +1,7 @@ import 'dart:io'; import 'package:dart_style/dart_style.dart'; -import 'package:paraphrase/paraphrase.dart'; +import 'package:testcase_gen/core/paraphrase.dart'; import 'package:path/path.dart' as path; import 'package:testcase_gen/generator.dart'; diff --git a/tool/testcase_gen/lib/rtc_device_manager_smoke_test_generator.dart b/tool/testcase_gen/lib/rtc_device_manager_smoke_test_generator.dart index 01001b1ff..bc783d0fd 100644 --- a/tool/testcase_gen/lib/rtc_device_manager_smoke_test_generator.dart +++ b/tool/testcase_gen/lib/rtc_device_manager_smoke_test_generator.dart @@ -1,6 +1,6 @@ import 'dart:io'; -import 'package:paraphrase/paraphrase.dart'; +import 'package:testcase_gen/core/paraphrase.dart'; import 'package:testcase_gen/default_generator.dart'; import 'package:testcase_gen/generator.dart'; import 'package:path/path.dart' as path; diff --git a/tool/testcase_gen/lib/rtc_engine_event_handler_somke_test_generator.dart b/tool/testcase_gen/lib/rtc_engine_event_handler_somke_test_generator.dart index 845a2208a..f51cbaae9 100644 --- a/tool/testcase_gen/lib/rtc_engine_event_handler_somke_test_generator.dart +++ b/tool/testcase_gen/lib/rtc_engine_event_handler_somke_test_generator.dart @@ -1,7 +1,7 @@ import 'dart:io'; import 'package:dart_style/dart_style.dart'; -import 'package:paraphrase/paraphrase.dart'; +import 'package:testcase_gen/core/paraphrase.dart'; import 'package:path/path.dart' as path; import 'package:testcase_gen/generator.dart'; diff --git a/tool/testcase_gen/lib/rtc_engine_sub_process_smoke_test_generator.dart b/tool/testcase_gen/lib/rtc_engine_sub_process_smoke_test_generator.dart index 0d8c7d209..1580d0cf6 100644 --- a/tool/testcase_gen/lib/rtc_engine_sub_process_smoke_test_generator.dart +++ b/tool/testcase_gen/lib/rtc_engine_sub_process_smoke_test_generator.dart @@ -1,6 +1,6 @@ import 'dart:io'; -import 'package:paraphrase/paraphrase.dart'; +import 'package:testcase_gen/core/paraphrase.dart'; import 'package:path/path.dart' as path; import 'package:testcase_gen/default_generator.dart'; import 'package:testcase_gen/generator.dart'; diff --git a/tool/testcase_gen/lib/templated_generator.dart b/tool/testcase_gen/lib/templated_generator.dart index 8084cc3cc..76c05aee6 100644 --- a/tool/testcase_gen/lib/templated_generator.dart +++ b/tool/testcase_gen/lib/templated_generator.dart @@ -1,5 +1,5 @@ import 'package:dart_style/dart_style.dart'; -import 'package:paraphrase/paraphrase.dart'; +import 'package:testcase_gen/core/paraphrase.dart'; import 'dart:io'; import 'package:testcase_gen/default_generator.dart'; diff --git a/tool/testcase_gen/pubspec.yaml b/tool/testcase_gen/pubspec.yaml index 2ba71a855..fd7479ec6 100644 --- a/tool/testcase_gen/pubspec.yaml +++ b/tool/testcase_gen/pubspec.yaml @@ -9,13 +9,7 @@ environment: publish_to: none dependencies: - paraphrase: - git: - url: https://github.com/littleGnAl/paraphrase.git - ref: 0.1.0 - args: ^2.3.1 - dart_style: ^2.2.1 dev_dependencies: From 4d2d60a469bcf526623204f1fe08d28fa042ed9d Mon Sep 17 00:00:00 2001 From: sylar Date: Tue, 11 Feb 2025 15:35:39 +0800 Subject: [PATCH 2/2] chore: remove dependence of package hoe --- .github/workflows/build.yml | 40 +++++++++---------- .github/workflows/code-gen.yaml | 2 - .../integration-test-iris-artifacts.yml | 40 +++++++++---------- .github/workflows/prepare-release.yml | 2 - 4 files changed, 40 insertions(+), 44 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 328a53203..18870aa98 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -391,12 +391,12 @@ jobs: with: flutter-version: "3.24.5" cache: true - - name: Checkout hoe + - name: Checkout agora_flutter_sdks_build uses: actions/checkout@v3 with: - repository: littleGnAl/hoe - ref: littlegnal/update - path: hoe + repository: AgoraIO-Extensions/agora_flutter_sdks_build + ref: main + path: agora_flutter_sdks_build - name: Download iris artifacts if: ${{ contains(github.event.pull_request.labels.*.name, 'integration_test:iris_artifacts') }} run: | @@ -405,7 +405,7 @@ jobs: PROJECT_DIR=$(pwd) mkdir -p output - cd hoe + cd agora_flutter_sdks_build dart pub get dart run bin/hoe.dart build-agora-flutter-example \ --setup-local-dev \ @@ -453,19 +453,19 @@ jobs: - uses: subosito/flutter-action@v2 with: flutter-version: ${{ matrix.version }} - - name: Checkout hoe + - name: Checkout agora_flutter_sdks_build uses: actions/checkout@v3 with: - repository: littleGnAl/hoe - ref: littlegnal/update - path: hoe + repository: AgoraIO-Extensions/agora_flutter_sdks_build + ref: main + path: agora_flutter_sdks_build - name: Download iris artifacts if: ${{ contains(github.event.pull_request.labels.*.name, 'integration_test:iris_artifacts') }} run: | source scripts/artifacts_version.sh PROJECT_DIR=$(pwd) mkdir -p output - cd hoe + cd agora_flutter_sdks_build dart pub get dart run bin/hoe.dart build-agora-flutter-example \ --setup-local-dev \ @@ -502,12 +502,12 @@ jobs: with: flutter-version: ${{ matrix.version }} cache: true - - name: Checkout hoe + - name: Checkout agora_flutter_sdks_build uses: actions/checkout@v3 with: - repository: littleGnAl/hoe - ref: littlegnal/update - path: hoe + repository: AgoraIO-Extensions/agora_flutter_sdks_build + ref: main + path: agora_flutter_sdks_build - name: Download iris artifacts if: ${{ contains(github.event.pull_request.labels.*.name, 'integration_test:iris_artifacts') }} run: | @@ -520,7 +520,7 @@ jobs: ls ${PROJECT_DIR} mkdir -p output - cd hoe + cd agora_flutter_sdks_build dart pub get dart run bin/hoe.dart build-agora-flutter-example \ --setup-local-dev \ @@ -557,12 +557,12 @@ jobs: with: flutter-version: ${{ matrix.version }} cache: true - - name: Checkout hoe + - name: Checkout agora_flutter_sdks_build uses: actions/checkout@v3 with: - repository: littleGnAl/hoe - ref: littlegnal/update - path: hoe + repository: AgoraIO-Extensions/agora_flutter_sdks_build + ref: main + path: agora_flutter_sdks_build - name: Download iris artifacts if: ${{ contains(github.event.pull_request.labels.*.name, 'integration_test:iris_artifacts') }} shell: bash @@ -572,7 +572,7 @@ jobs: PROJECT_DIR=$(pwd) mkdir -p output - cd hoe + cd agora_flutter_sdks_build dart pub get dart run bin/hoe.dart build-agora-flutter-example \ --setup-local-dev \ diff --git a/.github/workflows/code-gen.yaml b/.github/workflows/code-gen.yaml index 9a7549c2a..5b9d70d85 100644 --- a/.github/workflows/code-gen.yaml +++ b/.github/workflows/code-gen.yaml @@ -67,5 +67,3 @@ jobs: *This pull request is opened by bot* labels: | ci:skip - reviewers: | - littleGnAl diff --git a/.github/workflows/integration-test-iris-artifacts.yml b/.github/workflows/integration-test-iris-artifacts.yml index 16671f1e0..be675d903 100644 --- a/.github/workflows/integration-test-iris-artifacts.yml +++ b/.github/workflows/integration-test-iris-artifacts.yml @@ -33,12 +33,12 @@ jobs: with: flutter-version: ${{ matrix.version }} cache: true - - name: Checkout hoe + - name: Checkout agora_flutter_sdks_build uses: actions/checkout@v3 with: - repository: littleGnAl/hoe - ref: littlegnal/update - path: hoe + repository: AgoraIO-Extensions/agora_flutter_sdks_build + ref: main + path: agora_flutter_sdks_build - name: Download iris artifacts run: | source scripts/artifacts_version.sh @@ -46,7 +46,7 @@ jobs: PROJECT_DIR=$(pwd) mkdir -p output - cd hoe + cd agora_flutter_sdks_build dart pub get dart run bin/hoe.dart build-agora-flutter-example \ --setup-local-dev \ @@ -88,12 +88,12 @@ jobs: - uses: futureware-tech/simulator-action@v3 with: model: 'iPhone 15' - - name: Checkout hoe + - name: Checkout agora_flutter_sdks_build uses: actions/checkout@v3 with: - repository: littleGnAl/hoe - ref: littlegnal/update - path: hoe + repository: AgoraIO-Extensions/agora_flutter_sdks_build + ref: main + path: agora_flutter_sdks_build - name: Download iris artifacts run: | source scripts/artifacts_version.sh @@ -101,7 +101,7 @@ jobs: PROJECT_DIR=$(pwd) mkdir -p output - cd hoe + cd agora_flutter_sdks_build dart pub get dart run bin/hoe.dart build-agora-flutter-example \ --setup-local-dev \ @@ -129,12 +129,12 @@ jobs: with: flutter-version: ${{ matrix.version }} cache: true - - name: Checkout hoe + - name: Checkout agora_flutter_sdks_build uses: actions/checkout@v3 with: - repository: littleGnAl/hoe - ref: littlegnal/update - path: hoe + repository: AgoraIO-Extensions/agora_flutter_sdks_build + ref: main + path: agora_flutter_sdks_build - name: Download iris artifacts run: | source scripts/artifacts_version.sh @@ -146,7 +146,7 @@ jobs: ls ${PROJECT_DIR} mkdir -p output - cd hoe + cd agora_flutter_sdks_build dart pub get dart run bin/hoe.dart build-agora-flutter-example \ --setup-local-dev \ @@ -175,12 +175,12 @@ jobs: with: flutter-version: ${{ matrix.version }} cache: true - - name: Checkout hoe + - name: Checkout agora_flutter_sdks_build uses: actions/checkout@v3 with: - repository: littleGnAl/hoe - ref: littlegnal/update - path: hoe + repository: AgoraIO-Extensions/agora_flutter_sdks_build + ref: main + path: agora_flutter_sdks_build - name: Download iris artifacts shell: bash run: | @@ -189,7 +189,7 @@ jobs: PROJECT_DIR=$(pwd) mkdir -p output - cd hoe + cd agora_flutter_sdks_build dart pub get dart run bin/hoe.dart build-agora-flutter-example \ --setup-local-dev \ diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml index 1d33cf7e2..27baa9de4 100644 --- a/.github/workflows/prepare-release.yml +++ b/.github/workflows/prepare-release.yml @@ -77,5 +77,3 @@ jobs: labels: | ci:skip ci:prepare_release - reviewers: | - peilinok