handleDownloadPath method

Future<void> handleDownloadPath(
  1. ArgResults argResults
)

Implementation

Future<void> handleDownloadPath(ArgResults argResults) async {
  final args = argResults.rest.sublist(1);
  if (args.isEmpty) _exit('Usage: download-path <path>');

  await _prepareClient();

  final remotePath = args[0];
  final localDestination = argResults['target'] as String?;
  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(
      'download', [remotePath], localDestination ?? '.');
  print("\ud83d\udd04 Batch ID: $batchId");
  var batchState = await config.loadBatchState(batchId);

  try {
    await client.downloadPath(
      remotePath,
      localDestination: localDestination,
      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 Download batch completed.");
  } catch (e) {
    _exit('Download failed: $e');
  }
}