oto/lib/oto/shell/shell.dart
2023-11-04 18:53:03 +09:00

37 lines
1.1 KiB
Dart

import 'dart:async';
import 'dart:io';
import 'package:dart_framework/platform/process.dart';
import 'package:oto_cli/oto/application.dart';
import 'package:oto_cli/oto/command.dart';
import 'package:oto_cli/oto/data/data.dart';
class Shell implements Command {
@override
Future<bool> execute(DataCommand command) async {
Completer<bool> c = Completer<bool>();
var common = Application.instance.property;
var jenkins = Application.instance.jenkinsData!;
var data = DataShell.fromJson(command.param);
print(command.param);
//Start here
var workspace = Command.replaceTag(data.workspace ?? jenkins.workspace);
var path = Command.replaceTag(data.path);
var shell = StringBuffer();
if (Platform.isWindows) {
shell.writeln('call $path');
} else {
shell.writeln('source $path');
}
var process = await ProcessExecutor.run(shell, workspace: workspace);
c.complete(isSuccess(process.exitCode));
return c.future;
}
bool isSuccess(int exitCode) {
var success = false;
if (exitCode == 0 || exitCode == 128) {
success = true;
}
return success;
}
}