@@ -29,20 +29,25 @@ async function getLatestRelease(): Promise<{ version: string, url: string } | un
29
29
}
30
30
}
31
31
32
- async function getLocalApk ( config : HtkConfig ) {
33
- try {
34
- const apks = ( await readDir ( config . configPath ) )
35
- . map ( filename => filename . match ( / ^ h t t p t o o l k i t - ( .* ) .a p k $ / ) )
36
- . filter ( ( match ) : match is RegExpMatchArray => ! ! match )
37
- . map ( ( match ) => ( {
38
- path : path . join ( config . configPath , match [ 0 ] ) ,
39
- version : match [ 1 ]
40
- } ) ) ;
41
-
42
- apks . sort ( ( apk1 , apk2 ) => {
43
- return - 1 * semver . compare ( apk1 . version , apk2 . version ) ;
44
- } ) ;
32
+ async function getAllLocalApks ( config : HtkConfig ) {
33
+ const apks = ( await readDir ( config . configPath ) )
34
+ . map ( filename => filename . match ( / ^ h t t p t o o l k i t - ( .* ) .a p k $ / ) )
35
+ . filter ( ( match ) : match is RegExpMatchArray => ! ! match )
36
+ . map ( ( match ) => ( {
37
+ path : path . join ( config . configPath , match [ 0 ] ) ,
38
+ version : semver . valid ( match [ 1 ] ) || '0.0.0'
39
+ } ) ) ;
40
+
41
+ apks . sort ( ( apk1 , apk2 ) => {
42
+ return - 1 * semver . compare ( apk1 . version , apk2 . version ) ;
43
+ } ) ;
45
44
45
+ return apks ;
46
+ }
47
+
48
+ async function getLatestLocalApk ( config : HtkConfig ) {
49
+ try {
50
+ const apks = await getAllLocalApks ( config ) ;
46
51
const latestLocalApk = apks [ 0 ] ;
47
52
if ( ! latestLocalApk ) return ;
48
53
else return latestLocalApk ;
@@ -90,17 +95,7 @@ async function updateLocalApk(
90
95
91
96
// Delete all but the most recent APK version in the config directory.
92
97
async function cleanupOldApks ( config : HtkConfig ) {
93
- const apks = ( await readDir ( config . configPath ) )
94
- . map ( filename => filename . match ( / ^ h t t p t o o l k i t - ( .* ) .a p k $ / ) )
95
- . filter ( ( match ) : match is RegExpMatchArray => ! ! match )
96
- . map ( ( match ) => ( {
97
- path : path . join ( config . configPath , match [ 0 ] ) ,
98
- version : match [ 1 ]
99
- } ) ) ;
100
-
101
- apks . sort ( ( apk1 , apk2 ) => {
102
- return - 1 * semver . compare ( apk1 . version , apk2 . version ) ;
103
- } ) ;
98
+ const apks = await getAllLocalApks ( config ) ;
104
99
105
100
console . log ( `Deleting old APKs: ${ apks . slice ( 1 ) . map ( apk => apk . path ) . join ( ', ' ) } ` ) ;
106
101
@@ -112,7 +107,7 @@ async function cleanupOldApks(config: HtkConfig) {
112
107
export async function streamLatestApk ( config : HtkConfig ) : Promise < stream . Readable > {
113
108
const [ latestApkRelease , localApk ] = await Promise . all ( [
114
109
await getLatestRelease ( ) ,
115
- await getLocalApk ( config )
110
+ await getLatestLocalApk ( config )
116
111
] ) ;
117
112
118
113
if ( ! localApk ) {
0 commit comments