Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F5979511
GitHubChecker.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
1 KB
Referenced Files
None
Subscribers
None
GitHubChecker.php
View Options
<?php
/*
* This file is part of Psy Shell.
*
* (c) 2012-2023 Justin Hileman
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace
Psy\VersionUpdater
;
use
Psy\Shell
;
class
GitHubChecker
implements
Checker
{
const
URL
=
'https://api.github.com/repos/bobthecow/psysh/releases/latest'
;
private
?
string
$latest
=
null
;
public
function
isLatest
():
bool
{
// version_compare doesn't handle semver completely;
// strip pre-release and build metadata before comparing
$version
=
\preg_replace
(
'/[+-]
\w
+/'
,
''
,
Shell
::
VERSION
);
return
\version_compare
(
$version
,
$this
->
getLatest
(),
'>='
);
}
public
function
getLatest
():
string
{
if
(!
isset
(
$this
->
latest
))
{
$this
->
setLatest
(
$this
->
getVersionFromTag
());
}
return
$this
->
latest
;
}
public
function
setLatest
(
string
$version
)
{
$this
->
latest
=
$version
;
}
private
function
getVersionFromTag
():
?
string
{
$contents
=
$this
->
fetchLatestRelease
();
if
(!
$contents
||
!
isset
(
$contents
->
tag_name
))
{
throw
new
\InvalidArgumentException
(
'Unable to check for updates'
);
}
$this
->
setLatest
(
$contents
->
tag_name
);
return
$this
->
getLatest
();
}
/**
* Set to public to make testing easier.
*
* @return mixed
*/
public
function
fetchLatestRelease
()
{
$context
=
\stream_context_create
([
'http'
=>
[
'user_agent'
=>
'PsySH/'
.
Shell
::
VERSION
,
'timeout'
=>
1.0
,
],
]);
\set_error_handler
(
function
()
{
// Just ignore all errors with this. The checker will throw an exception
// if it doesn't work :)
});
$result
=
@
\file_get_contents
(
self
::
URL
,
false
,
$context
);
\restore_error_handler
();
return
\json_decode
(
$result
);
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, Oct 3, 20:56 (4 d, 22 h ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
8a/0d/6ef44eec86f2fb14e7e64546e0f6
Default Alt Text
GitHubChecker.php (1 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment