88use Codedge \Updater \Events \UpdateAvailable ;
99use Codedge \Updater \SourceRepositoryTypes \GithubRepositoryType ;
1010use GuzzleHttp \Client ;
11+ use Illuminate \Support \Collection ;
1112use Illuminate \Support \Facades \File ;
13+ use Illuminate \Support \Facades \Log ;
1214use Illuminate \Support \Str ;
1315use InvalidArgumentException ;
1416use Psr \Http \Message \ResponseInterface ;
@@ -47,20 +49,31 @@ public function fetch(string $version = '')
4749 File::makeDirectory ($ this ->storagePath , 493 , true , true );
4850 }
4951
50- $ release = $ releaseCollection -> first ( );
52+ $ release = $ this -> selectRelease ( $ releaseCollection , $ version );
5153
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 ;
5755 $ storageFilename = $ storageFolder .'.zip ' ;
5856
59- if (! $ this ->isSourceAlreadyFetched ($ release ->sha )) {
57+ if (! $ this ->isSourceAlreadyFetched ($ release ->commit -> author -> date )) {
6058 $ this ->downloadRelease ($ this ->client , $ this ->generateZipUrl ($ release ->sha ), $ storageFilename );
6159 $ 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+ }
6374 }
75+
76+ return $ release ;
6477 }
6578
6679 /**
@@ -85,8 +98,6 @@ public function isNewVersionAvailable($currentVersion = ''): bool
8598
8699 $ versionAvailable = $ this ->getVersionAvailable ();
87100
88- //dd($version, $versionAvailable, version_compare($version, $versionAvailable, '<'));
89-
90101 if (version_compare ($ version , $ versionAvailable , '< ' )) {
91102 if (! $ this ->versionFileExists ()) {
92103 $ this ->setVersionFile ($ versionAvailable );
0 commit comments