139 lines
3.9 KiB
Dart
139 lines
3.9 KiB
Dart
// ignore_for_file: constant_identifier_names
|
|
|
|
import 'dart:async';
|
|
import 'package:oto_cli/oto/application.dart';
|
|
import 'package:oto_cli/oto/build/app_data_creator.dart';
|
|
import 'package:oto_cli/oto/build/build_dart.dart';
|
|
import 'package:oto_cli/oto/build/build_dart_compile.dart';
|
|
import 'package:oto_cli/oto/build/build_dot_net.dart';
|
|
import 'package:oto_cli/oto/build/build_flutter.dart';
|
|
import 'package:oto_cli/oto/build/build_ios.dart';
|
|
import 'package:oto_cli/oto/data/data.dart';
|
|
import 'package:oto_cli/oto/file/delete.dart';
|
|
import 'package:oto_cli/oto/file/rename.dart';
|
|
import 'package:oto_cli/oto/shell/shell.dart';
|
|
import 'package:oto_cli/oto/file/copy.dart';
|
|
import 'package:oto_cli/oto/util/execute_app.dart';
|
|
import 'package:oto_cli/oto/util/publish_ios.dart';
|
|
import 'package:oto_cli/oto/util/slack.dart';
|
|
import 'package:oto_cli/oto/util/zip.dart';
|
|
import 'package:oto_cli/oto/uploader/uploader.dart';
|
|
|
|
enum CommandType {
|
|
SimpleCommand,
|
|
CreateAppData,
|
|
BuildDart,
|
|
BuildFlutter,
|
|
BuildDartCompile,
|
|
BuildDotNet,
|
|
BuildiOS,
|
|
ArchiveiOS,
|
|
ExportiOS,
|
|
PublishiOS,
|
|
ExecuteApp,
|
|
Upload,
|
|
Copy,
|
|
Rename,
|
|
Delete,
|
|
Slack,
|
|
SlackBuild,
|
|
Zip,
|
|
Shell
|
|
}
|
|
|
|
abstract class Command {
|
|
static final Map<CommandType, Command> _commandMap = {
|
|
CommandType.SimpleCommand: SimpleCommand(),
|
|
CommandType.CreateAppData: CreateAppData(),
|
|
CommandType.BuildDart: BuildDart(),
|
|
CommandType.BuildFlutter: BuildFlutter(),
|
|
CommandType.BuildDartCompile: BuildDartCompile(),
|
|
CommandType.BuildDotNet: BuildDotNet(),
|
|
CommandType.BuildiOS: BuildiOS(),
|
|
CommandType.ArchiveiOS: ArchiveiOS(),
|
|
CommandType.ExportiOS: ExportiOS(),
|
|
CommandType.PublishiOS: PublishiOS(),
|
|
CommandType.ExecuteApp: ExecuteApp(),
|
|
CommandType.Upload: Uploader(),
|
|
CommandType.Copy: Copy(),
|
|
CommandType.Rename: Rename(),
|
|
CommandType.Delete: Delete(),
|
|
CommandType.Slack: Slack(),
|
|
CommandType.SlackBuild: SlackBuild(),
|
|
CommandType.Zip: Zip(),
|
|
CommandType.Shell: Shell()
|
|
};
|
|
|
|
factory Command(CommandType type) {
|
|
return _commandMap[type]!;
|
|
}
|
|
|
|
static final Map<String, dynamic> _cache = <String, dynamic>{};
|
|
static String replaceTag(String raw) {
|
|
var regEx = RegExp(r'(<!)([a-zA-Z0-9.]+)(>)');
|
|
var list = regEx.allMatches(raw);
|
|
for (var match in list) {
|
|
var param = match.group(2);
|
|
if (!_cache.containsKey(param)) {
|
|
_cache[param!] = _getTagValue(param);
|
|
}
|
|
var target = '<!${param!}>';
|
|
raw = raw.replaceAll(target, _cache[param]);
|
|
}
|
|
return raw;
|
|
}
|
|
|
|
static void setReturnValue(String tag, dynamic value) {
|
|
var regEx = RegExp(r'(<!)([a-zA-Z0-9.]+)(>)');
|
|
var match = regEx.firstMatch(tag);
|
|
tag = match!.group(2)!;
|
|
if (tag.startsWith('common')) {
|
|
var key = tag.replaceFirst('common.', '');
|
|
Application.instance.property![key] = value;
|
|
}
|
|
}
|
|
|
|
static dynamic _getTagValue(String value) {
|
|
var setted = false;
|
|
dynamic data;
|
|
if (value.startsWith('common.')) {
|
|
var map = Application.instance.property;
|
|
var param = value.replaceFirst('common.', '');
|
|
if (map!.containsKey(param)) {
|
|
data = map[param];
|
|
setted = true;
|
|
} else {
|
|
print('"$value" is not exist in common');
|
|
data = '';
|
|
setted = true;
|
|
}
|
|
}
|
|
|
|
if (!setted) {
|
|
throw Exception(
|
|
'Command.getTagValue: "$value" is not defined in common.');
|
|
}
|
|
return data;
|
|
}
|
|
|
|
// ignore: missing_return
|
|
Future<bool> execute(DataCommand command) async {
|
|
var c = Completer<bool>();
|
|
c.complete(true);
|
|
return c.future;
|
|
}
|
|
}
|
|
|
|
//Templete
|
|
class SimpleCommand implements Command {
|
|
@override
|
|
Future<bool> execute(DataCommand command) async {
|
|
Completer<bool> c = Completer<bool>();
|
|
var common = Application.instance.property;
|
|
var jenkins = Application.instance.jenkinsData;
|
|
print(command.param);
|
|
//Start here
|
|
c.complete(true);
|
|
return c.future;
|
|
}
|
|
}
|