Skip to content

Commit 5b6f838

Browse files
committed
fix: return error code from process when exiting
1 parent 0c29d24 commit 5b6f838

File tree

3 files changed

+13
-5
lines changed

3 files changed

+13
-5
lines changed

bin/script_runner.dart

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import 'dart:io' as io;
2+
13
import 'package:script_runner/src/base.dart';
24
import 'package:script_runner/src/utils.dart';
35

@@ -10,8 +12,12 @@ Future<void> main(List<String> args) async {
1012
final scriptCmd = args.first;
1113
final scriptArgs = args.sublist(1);
1214
try {
13-
await runScript(scriptCmd, scriptArgs);
15+
final code = await runScript(scriptCmd, scriptArgs);
16+
io.exit(code);
1417
} catch (e, stack) {
1518
printColor('$e\n$stack', [TerminalColor.red]);
19+
if (e is io.ProcessException) {
20+
io.exit(e.errorCode);
21+
}
1622
}
1723
}

lib/src/base.dart

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
11
import 'package:script_runner/src/config.dart';
22

33
/// Runs a script with the given name, and any extra arguments.
4-
Future<void> runScript(String entryName, List<String> args) async {
4+
/// Returns the exit code.
5+
Future<int> runScript(String entryName, List<String> args) async {
56
final config = await ScriptRunnerConfig.get();
67
if (config.scripts.isEmpty) {
78
throw StateError('No scripts found');
89
}
910
if (['-h', '--help'].contains(entryName)) {
1011
config.printUsage();
11-
return;
12+
return 0;
1213
}
1314
if (['-ls', '--list'].contains(entryName)) {
1415
final search = args.isNotEmpty ? args.first : '';
1516
config.printScripts(search);
16-
return;
17+
return 0;
1718
}
1819
final entry = config.scriptsMap[entryName];
1920
if (entry == null) {

lib/src/runnable_script.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ class RunnableScript {
101101
}
102102

103103
/// Runs the current script with the given extra arguments.
104-
Future<dynamic> run(List<String> extraArgs) async {
104+
Future<int> run(List<String> extraArgs) async {
105105
final effectiveArgs = args + extraArgs;
106106
final config = await ScriptRunnerConfig.get(_fileSystem);
107107

@@ -135,6 +135,7 @@ class RunnableScript {
135135
);
136136
throw e;
137137
}
138+
return exitCode;
138139
} finally {
139140
await _fileSystem.file(scrPath).delete();
140141
}

0 commit comments

Comments
 (0)