37 lines
1.1 KiB
Dart
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;
|
|
}
|
|
}
|