8
8
use Codedge \Updater \Events \UpdateAvailable ;
9
9
use Codedge \Updater \SourceRepositoryTypes \GithubRepositoryType ;
10
10
use GuzzleHttp \Client ;
11
+ use Illuminate \Support \Collection ;
11
12
use Illuminate \Support \Facades \File ;
13
+ use Illuminate \Support \Facades \Log ;
12
14
use Illuminate \Support \Str ;
13
15
use InvalidArgumentException ;
14
16
use Psr \Http \Message \ResponseInterface ;
@@ -47,20 +49,31 @@ public function fetch(string $version = '')
47
49
File::makeDirectory ($ this ->storagePath , 493 , true , true );
48
50
}
49
51
50
- $ release = $ releaseCollection -> first ( );
52
+ $ release = $ this -> selectRelease ( $ releaseCollection , $ version );
51
53
52
- if (! empty ($ version )) {
53
- $ release = $ releaseCollection ->where ('sha ' , $ version )->first ();
54
- }
55
-
56
- $ storageFolder = $ this ->storagePath .$ release ->sha .'- ' .now ()->timestamp ;
54
+ $ storageFolder = $ this ->storagePath .$ release ->commit ->author ->date .'- ' .now ()->timestamp ;
57
55
$ storageFilename = $ storageFolder .'.zip ' ;
58
56
59
- if (! $ this ->isSourceAlreadyFetched ($ release ->sha )) {
57
+ if (! $ this ->isSourceAlreadyFetched ($ release ->commit -> author -> date )) {
60
58
$ this ->downloadRelease ($ this ->client , $ this ->generateZipUrl ($ release ->sha ), $ storageFilename );
61
59
$ this ->unzipArchive ($ storageFilename , $ storageFolder );
62
- $ this ->createReleaseFolder ($ storageFolder , $ release ->sha );
60
+ $ this ->createReleaseFolder ($ storageFolder , $ release ->commit ->author ->date );
61
+ }
62
+ }
63
+
64
+ public function selectRelease (Collection $ collection , string $ version )
65
+ {
66
+ $ release = $ collection ->first ();
67
+
68
+ if (! empty ($ version )) {
69
+ if ($ collection ->contains ('commit.author.date ' , $ version )) {
70
+ $ release = $ collection ->where ('commit.author.date ' , $ version )->first ();
71
+ } else {
72
+ Log::info ('No release for version " ' .$ version .'" found. Selecting latest. ' );
73
+ }
63
74
}
75
+
76
+ return $ release ;
64
77
}
65
78
66
79
/**
@@ -85,8 +98,6 @@ public function isNewVersionAvailable($currentVersion = ''): bool
85
98
86
99
$ versionAvailable = $ this ->getVersionAvailable ();
87
100
88
- //dd($version, $versionAvailable, version_compare($version, $versionAvailable, '<'));
89
-
90
101
if (version_compare ($ version , $ versionAvailable , '< ' )) {
91
102
if (! $ this ->versionFileExists ()) {
92
103
$ this ->setVersionFile ($ versionAvailable );
0 commit comments