handleUpload method
Future<void>
handleUpload(
- ArgResults argResults
)
Implementation
Future<void> handleUpload(ArgResults argResults) async {
final sources = argResults.rest.sublist(1);
if (sources.isEmpty) _exit('No source files specified');
await _prepareClient();
String targetPath = '/';
List<String> actualSources = sources;
if (argResults.wasParsed('target')) {
targetPath = argResults['target'] as String;
} else if (sources.length > 1) {
final lastArg = sources.last;
if (lastArg.startsWith('/') || !lastArg.contains('*')) {
targetPath = lastArg;
actualSources = sources.sublist(0, sources.length - 1);
}
}
final recursive = argResults['recursive'] as bool;
final onConflict = argResults['on-conflict'] as String;
final preserveTimestamps = argResults['preserve-timestamps'] as bool;
final include = argResults['include'] as List<String>;
final exclude = argResults['exclude'] as List<String>;
final batchId = config.generateBatchId('upload', actualSources, targetPath);
print("\ud83d\udd04 Batch ID: $batchId");
print("\ud83c\udfaf Target: $targetPath");
var batchState = await config.loadBatchState(batchId);
try {
await client.upload(
actualSources,
targetPath,
recursive: recursive,
onConflict: onConflict,
preserveTimestamps: preserveTimestamps,
include: include,
exclude: exclude,
batchId: batchId,
initialBatchState: batchState,
saveStateCallback: (state) => config.saveBatchState(batchId, state),
);
await config.deleteBatchState(batchId);
print("\u2705 Upload batch completed.");
} catch (e) {
_exit('Upload failed: $e');
}
}