unzipToTemp static method

Future<String> unzipToTemp(
  1. String zipFilePath
)

Implementation

static Future<String> unzipToTemp(String zipFilePath) async {
  final sourceFile = File(zipFilePath);
  if (!await sourceFile.exists()) {
    throw Exception('Source file not found: $zipFilePath');
  }

  /// 1. Create Temp Directory
  final tmpDir = await Directory.systemTemp.createTemp('opentool_unpack_');
  final extractDir = p.join(
    tmpDir.path,
    p.basenameWithoutExtension(zipFilePath),
  );
  await Directory(extractDir).create(recursive: true);

  /// 2. Unzip
  final bytes = await sourceFile.readAsBytes();
  final archive = ZipDecoder().decodeBytes(bytes);

  for (final file in archive) {
    final filePath = p.join(extractDir, file.name);
    if (file.isFile) {
      final outFile = File(filePath);
      await outFile.create(recursive: true);
      await outFile.writeAsBytes(file.content as List<int>);
    } else {
      await Directory(filePath).create(recursive: true);
    }
  }

  return extractDir;
}