@@ -24,8 +24,6 @@ Future<void> generatePresets() async {
24
24
serverReleases.sort ((a, b) => b.compareTo (a));
25
25
final apps = await _getApps (appIDs, httpClient);
26
26
27
- final urlChecksums = < String , String > {};
28
-
29
27
for (final app in apps) {
30
28
final appPresetsDir = Directory ('docker/presets/${app .id }' );
31
29
if (appPresetsDir.existsSync ()) {
@@ -51,21 +49,11 @@ Future<void> generatePresets() async {
51
49
a.findLatestRelease ();
52
50
}
53
51
54
- if (urlChecksums[appRelease.url] == null ) {
55
- final request = http.Request ('GET' , Uri .parse (appRelease.url));
56
-
57
- final streamedResponse = await httpClient.send (request);
58
- if (streamedResponse.statusCode != 200 ) {
59
- throw Exception ('Unable to get app, status code: ${streamedResponse .statusCode }' );
60
- }
61
-
62
- final checksum = await sha256.bind (streamedResponse.stream).first;
63
- urlChecksums[appRelease.url] = checksum.toString ();
64
- }
52
+ final checksum = await _getUrlChecksum (httpClient, appRelease.url);
65
53
66
54
buffer
67
55
..writeln ('${a .id .toUpperCase ()}_URL=${appRelease .url }' )
68
- ..writeln ('${a .id .toUpperCase ()}_CHECKSUM=sha256:${ urlChecksums [ appRelease . url ]} ' );
56
+ ..writeln ('${a .id .toUpperCase ()}_CHECKSUM=sha256:$checksum ' );
69
57
}
70
58
71
59
File ('${appPresetsDir .path }/${release .presetVersion }' ).writeAsStringSync (buffer.toString ());
@@ -85,7 +73,12 @@ Future<void> generatePresets() async {
85
73
final release = app.findLatestCompatibleRelease (serverRelease) ??
86
74
app.findLatestCompatibleRelease (serverRelease, allowUnstable: true ) ??
87
75
app.findLatestRelease ();
88
- buffer.writeln ('${app .id .toUpperCase ()}_URL=${release .url }' );
76
+
77
+ final checksum = await _getUrlChecksum (httpClient, release.url);
78
+
79
+ buffer
80
+ ..writeln ('${app .id .toUpperCase ()}_URL=${release .url }' )
81
+ ..writeln ('${app .id .toUpperCase ()}_CHECKSUM=sha256:$checksum ' );
89
82
}
90
83
91
84
File ('${serverPresetsDir .path }/${serverRelease .presetVersion }' ).writeAsStringSync (buffer.toString ());
@@ -101,6 +94,23 @@ Future<void> generatePresets() async {
101
94
httpClient.close ();
102
95
}
103
96
97
+ final _urlChecksums = < String , String > {};
98
+ Future <String > _getUrlChecksum (http.Client httpClient, String url) async {
99
+ if (_urlChecksums[url] == null ) {
100
+ final request = http.Request ('GET' , Uri .parse (url));
101
+
102
+ final streamedResponse = await httpClient.send (request);
103
+ if (streamedResponse.statusCode != 200 ) {
104
+ throw Exception ('Unable to get app, status code: ${streamedResponse .statusCode }' );
105
+ }
106
+
107
+ final checksum = await sha256.bind (streamedResponse.stream).first;
108
+ _urlChecksums[url] = checksum.toString ();
109
+ }
110
+
111
+ return _urlChecksums[url]! ;
112
+ }
113
+
104
114
Future <List <ServerRelease >> _getServerReleases (http.Client httpClient) async {
105
115
final versions = < Version , ServerRelease > {};
106
116
String ? next = 'https://hub.docker.com/v2/repositories/library/nextcloud/tags?page_size=1000' ;
0 commit comments