Skip to content

Commit

Permalink
fix errors in ArtifactsRepository
Browse files Browse the repository at this point in the history
  • Loading branch information
bartekpacia committed Oct 17, 2022
1 parent 519493e commit 6280d33
Showing 1 changed file with 33 additions and 15 deletions.
48 changes: 33 additions & 15 deletions packages/patrol_cli/lib/src/common/artifacts_repository.dart
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,15 @@ class Artifact with _$Artifact {
return result;
}

String get archiveName {
return map(
file: (_) => throw StateError(
'archiveName is not applicable for file artifacts',
),
archive: (artifact) => '${artifact.name}-${artifact.version}.zip',
);
}

/// Returns an unversioned (i.e debug) variant of this artifact.
Artifact get debug => copyWith(version: null);

Expand Down Expand Up @@ -98,6 +107,10 @@ class Artifact with _$Artifact {
}
}

extension _ArtifactArchiveX on _ArtifactArchive {
String get archiveName => '$name-$version.zip';
}

class ArtifactsRepository {
ArtifactsRepository({
required FileSystem fs,
Expand Down Expand Up @@ -224,16 +237,32 @@ class ArtifactsRepository {
],
]);

if (!platform.isMacOS) {
return;
if (platform.isMacOS) {
await _extractArtifact(Artifacts.ios);
await _extractArtifact(Artifacts.iosSimulatorArm);
await _extractArtifact(Artifacts.iosSimulatorAmd);
}
}

Future<void> _downloadArtifact(Artifact artifact) async {
final response = await _httpClient.get(artifact.uri);

if (response.statusCode != 200) {
throw Exception('Failed to download $artifact from ${artifact.uri}');
}

final bytes = await _fs.file(_paths.iosZipPath).readAsBytes();
final p = join(artifactPath, artifact.filename);
_createFileRecursively(p).writeAsBytesSync(response.bodyBytes);
}

Future<void> _extractArtifact(Artifact artifact) async {
final archievePath = join(artifactPath, artifact.archiveName);
final bytes = await _fs.file(archievePath).readAsBytes();
final archive = _zipDecoder.decodeBytes(bytes);

for (final archiveFile in archive) {
final filename = archiveFile.name;
final extractPath = _paths.iosDirPath + platform.pathSeparator + filename;
final extractPath = join(artifactPath, artifact.filename, filename);
if (archiveFile.isFile) {
final data = archiveFile.content as List<int>;
final newFile = _fs.file(extractPath);
Expand All @@ -246,17 +275,6 @@ class ArtifactsRepository {
}
}

Future<void> _downloadArtifact(Artifact artifact) async {
final response = await _httpClient.get(artifact.uri);

if (response.statusCode != 200) {
throw Exception('Failed to download $artifact from ${artifact.uri}');
}

final p = join(artifactPath, artifact.filename);
_createFileRecursively(p).writeAsBytesSync(response.bodyBytes);
}

/// Create a file at [fullPath], recursively creating non-existent
/// directories.
File _createFileRecursively(String fullPath) {
Expand Down

0 comments on commit 6280d33

Please sign in to comment.