Skip to content

Commit ae71d46

Browse files
committed
Returning correct exit code on failure
1 parent b263f47 commit ae71d46

File tree

2 files changed

+12
-13
lines changed

2 files changed

+12
-13
lines changed

Core/Cosmos.DataTransfer.Core/Program.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public static async Task<int> Main(string[] args)
4141
Sink = ctx.BindingContext.ParseResult.GetValueForOption(rootCommand.Options.ElementAt(1)) as string,
4242
Settings = ctx.BindingContext.ParseResult.GetValueForOption(rootCommand.Options.ElementAt(2)) as FileInfo
4343
};
44-
await handler.InvokeAsync(ctx);
44+
ctx.ExitCode = await handler.InvokeAsync(ctx);
4545
}
4646
});
4747

Core/Cosmos.DataTransfer.Core/RunCommand.cs

+11-12
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ public async Task<int> InvokeAsync(InvocationContext context)
101101
var sinkConfig = GetSinkConfig(combinedConfig);
102102
var operationConfigs = combinedConfig.GetSection("Operations");
103103
var operations = operationConfigs?.GetChildren().ToList();
104+
bool succeeded = true;
104105
if (operations?.Any() == true)
105106
{
106107
foreach (var operationConfig in operations)
@@ -117,19 +118,19 @@ public async Task<int> InvokeAsync(InvocationContext context)
117118
{
118119
sinkBuilder.AddConfiguration(operationSink);
119120
}
120-
await ExecuteDataTransferOperation(source,
121-
sourceBuilder.Build(),
122-
sink,
123-
sinkBuilder.Build(),
124-
cancellationToken);
121+
succeeded &= await ExecuteDataTransferOperation(source,
122+
sourceBuilder.Build(),
123+
sink,
124+
sinkBuilder.Build(),
125+
cancellationToken);
125126
}
126127
}
127128
else
128129
{
129-
await ExecuteDataTransferOperation(source, sourceConfig, sink, sinkConfig, cancellationToken);
130+
succeeded = await ExecuteDataTransferOperation(source, sourceConfig, sink, sinkConfig, cancellationToken);
130131
}
131132

132-
return 0;
133+
return succeeded ? 0 : 1;
133134
}
134135
catch (OperationCanceledException ex)
135136
{
@@ -158,7 +159,7 @@ private static IConfigurationSection GetSinkConfig(IConfiguration combinedConfig
158159
return config;
159160
}
160161

161-
private async Task ExecuteDataTransferOperation(IDataSourceExtension source, IConfiguration sourceConfig, IDataSinkExtension sink, IConfiguration sinkConfig, CancellationToken cancellationToken)
162+
private async Task<bool> ExecuteDataTransferOperation(IDataSourceExtension source, IConfiguration sourceConfig, IDataSinkExtension sink, IConfiguration sinkConfig, CancellationToken cancellationToken)
162163
{
163164
_logger.LogDebug("Loaded {SettingCount} settings for source {SourceName}:\n\t\t{SettingList}",
164165
sourceConfig.AsEnumerable().Count(),
@@ -178,14 +179,12 @@ private async Task ExecuteDataTransferOperation(IDataSourceExtension source, ICo
178179
await sink.WriteAsync(data, sinkConfig, source, _loggerFactory.CreateLogger(sink.GetType().Name), cancellationToken);
179180

180181
_logger.LogInformation("Data transfer complete");
182+
return true;
181183
}
182184
catch (Exception ex)
183185
{
184186
_logger.LogError(ex, "Data transfer failed");
185-
if (ex is OperationCanceledException)
186-
{
187-
throw;
188-
}
187+
return false;
189188
}
190189
}
191190

0 commit comments

Comments
 (0)