62 lines
1.2 KiB
PHP
62 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace Laravel\Dusk;
|
|
|
|
use Illuminate\Support\Str;
|
|
|
|
class OperatingSystem
|
|
{
|
|
/**
|
|
* Returns the current OS identifier.
|
|
*
|
|
* @return string
|
|
*/
|
|
public static function id()
|
|
{
|
|
if (static::onWindows()) {
|
|
return 'win';
|
|
} elseif (static::onMac()) {
|
|
return static::macArchitectureId();
|
|
}
|
|
|
|
return 'linux';
|
|
}
|
|
|
|
/**
|
|
* Determine if the operating system is Windows or Windows Subsystem for Linux.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public static function onWindows()
|
|
{
|
|
return PHP_OS === 'WINNT' || Str::contains(php_uname(), 'Microsoft');
|
|
}
|
|
|
|
/**
|
|
* Determine if the operating system is macOS.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public static function onMac()
|
|
{
|
|
return PHP_OS === 'Darwin';
|
|
}
|
|
|
|
/**
|
|
* Mac platform architecture.
|
|
*
|
|
* @return string
|
|
*/
|
|
public static function macArchitectureId()
|
|
{
|
|
switch (php_uname('m')) {
|
|
case 'arm64':
|
|
return 'mac-arm';
|
|
case 'x86_64':
|
|
return 'mac-intel';
|
|
default:
|
|
return 'mac';
|
|
}
|
|
}
|
|
}
|