Compare commits
13 Commits
Author | SHA1 | Date |
---|---|---|
|
4361e7579e | |
|
616c2c46d1 | |
|
720d851a23 | |
|
9ad9c3acce | |
|
fd241509a5 | |
|
8e4a56f89c | |
|
2e666d8b66 | |
|
5b1a5ec442 | |
|
6b40e78795 | |
|
9500897b1e | |
|
9bfc1fea7e | |
|
101ddc102a | |
|
3aeb5a23db |
|
@ -0,0 +1,28 @@
|
||||||
|
name: Publish PHP Package
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- 'v*'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
docker:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Get tag name
|
||||||
|
run: echo "TAG=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: zip and send
|
||||||
|
run: |
|
||||||
|
ls -la
|
||||||
|
apt-get update -y
|
||||||
|
apt-get install -y zip
|
||||||
|
cd ../
|
||||||
|
zip -r ${{ gitea.event.repository.name }}.zip ${{ gitea.event.repository.name }} -x '*.git*'
|
||||||
|
curl -v \
|
||||||
|
--user composer-pbl:${{ secrets.COMPOSER_PSWD }} \
|
||||||
|
--upload-file ${{ gitea.event.repository.name }}.zip \
|
||||||
|
https://git.bit5.ru/api/packages/bit/composer?version=${{ env.TAG }}
|
|
@ -0,0 +1,5 @@
|
||||||
|
## v1.8.1
|
||||||
|
- Adding null check in need_to_regen_any(..)
|
||||||
|
|
||||||
|
## v1.7.2
|
||||||
|
- Fixing weird lstat bug on Windows for rrmdir function for large amount of directory items
|
|
@ -87,8 +87,6 @@ function find_files(string $dir, array $fnmatch_patterns = []) : array
|
||||||
return $results;
|
return $results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//obsolete, use find_files instead
|
|
||||||
function scan_files_rec(array $dirs, array $only_extensions = [], int $mode = 1) : array
|
function scan_files_rec(array $dirs, array $only_extensions = [], int $mode = 1) : array
|
||||||
{
|
{
|
||||||
$files = array();
|
$files = array();
|
||||||
|
@ -168,7 +166,7 @@ function json_make_pretty(string $json) : string
|
||||||
return prettyJSON($json);
|
return prettyJSON($json);
|
||||||
}
|
}
|
||||||
|
|
||||||
function need_to_regen(string $file, array $deps, bool $debug = false) : bool
|
function need_to_regen(string $file, iterable $deps, bool $debug = false) : bool
|
||||||
{
|
{
|
||||||
if(!is_file($file))
|
if(!is_file($file))
|
||||||
{
|
{
|
||||||
|
@ -178,9 +176,10 @@ function need_to_regen(string $file, array $deps, bool $debug = false) : bool
|
||||||
}
|
}
|
||||||
|
|
||||||
$fmtime = filemtime($file);
|
$fmtime = filemtime($file);
|
||||||
|
|
||||||
foreach($deps as $dep)
|
foreach($deps as $dep)
|
||||||
{
|
{
|
||||||
if(is_file($dep) && (filemtime($dep) > $fmtime))
|
if($dep && is_file($dep) && (filemtime($dep) > $fmtime))
|
||||||
{
|
{
|
||||||
if($debug)
|
if($debug)
|
||||||
echo "$dep > $file\n";
|
echo "$dep > $file\n";
|
||||||
|
@ -215,6 +214,9 @@ function need_to_regen_any(array $files, array $deps, bool $debug = false) : boo
|
||||||
echo "need_to_regen_any, earliest file: $earliest_file ($date)\n";
|
echo "need_to_regen_any, earliest file: $earliest_file ($date)\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if($earliest_file === null)
|
||||||
|
return true;
|
||||||
|
|
||||||
return need_to_regen($earliest_file, $deps, $debug);
|
return need_to_regen($earliest_file, $deps, $debug);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -378,10 +380,11 @@ function recurse_copy(
|
||||||
$excluded = false;
|
$excluded = false;
|
||||||
foreach($excludes as $exclude_pattern)
|
foreach($excludes as $exclude_pattern)
|
||||||
$excluded = $excluded || (bool)preg_match("~$exclude_pattern~", $src . '/' . $file);
|
$excluded = $excluded || (bool)preg_match("~$exclude_pattern~", $src . '/' . $file);
|
||||||
|
$fnmatched = sizeof($fnmatches) == 0;
|
||||||
foreach($fnmatches as $fnmatch)
|
foreach($fnmatches as $fnmatch)
|
||||||
$excluded = $excluded || !fnmatch($fnmatch, $file);
|
$fnmatched = $fnmatched || fnmatch($fnmatch, $file);
|
||||||
|
|
||||||
if($excluded)
|
if($excluded || !$fnmatched)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
_ensure_copy_file($src . '/' . $file, $dst . '/' . $file, $copy_mode, $mtime_check);
|
_ensure_copy_file($src . '/' . $file, $dst . '/' . $file, $copy_mode, $mtime_check);
|
||||||
|
@ -586,7 +589,7 @@ function rrmdir(string $dir, bool $remove_top_dir = true)
|
||||||
{
|
{
|
||||||
if($object != "." && $object != "..")
|
if($object != "." && $object != "..")
|
||||||
{
|
{
|
||||||
if(filetype($dir."/".$object) == "dir")
|
if(is_dir($dir."/".$object))
|
||||||
rrmdir($dir."/".$object);
|
rrmdir($dir."/".$object);
|
||||||
else
|
else
|
||||||
unlink($dir."/".$object);
|
unlink($dir."/".$object);
|
||||||
|
@ -603,49 +606,66 @@ function rrmdir(string $dir, bool $remove_top_dir = true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function git_get_info() : array
|
define("GIT_INFO_REV_HASH" , 1 << 0);
|
||||||
|
define("GIT_INFO_BRANCH" , 1 << 1);
|
||||||
|
define("GIT_INFO_REV_NUMBER", 1 << 2);
|
||||||
|
define("GIT_INFO_ALL" , ~0);
|
||||||
|
|
||||||
|
function git_get_info($info = GIT_INFO_ALL) : array
|
||||||
{
|
{
|
||||||
global $GAME_ROOT;
|
global $GAME_ROOT;
|
||||||
|
$rev_hash = "";
|
||||||
|
$branch = "";
|
||||||
|
$revision_number = 0;
|
||||||
|
|
||||||
if(!is_dir("$GAME_ROOT/.git"))
|
if(!is_dir("$GAME_ROOT/.git"))
|
||||||
throw new Exception("Not a Git repository");
|
throw new Exception("Not a Git repository");
|
||||||
|
|
||||||
$out = array();
|
if($info & GIT_INFO_REV_HASH)
|
||||||
exec("git rev-parse HEAD", $out);
|
{
|
||||||
$rev_hash = trim($out[0]);
|
$out = array();
|
||||||
if(!$rev_hash)
|
exec("git rev-parse HEAD", $out);
|
||||||
throw new Exception("Error getting git revision hash");
|
$rev_hash = trim($out[0]);
|
||||||
|
if(!$rev_hash)
|
||||||
|
throw new Exception("Error getting git revision hash");
|
||||||
|
}
|
||||||
|
|
||||||
$out = array();
|
if($info & GIT_INFO_BRANCH)
|
||||||
exec("git rev-parse --abbrev-ref HEAD", $out);
|
{
|
||||||
$branch = trim($out[0]);
|
$out = array();
|
||||||
if(!$branch)
|
exec("git rev-parse --abbrev-ref HEAD", $out);
|
||||||
throw new Exception("Error getting git branch");
|
$branch = trim($out[0]);
|
||||||
|
if(!$branch)
|
||||||
|
throw new Exception("Error getting git branch");
|
||||||
|
}
|
||||||
|
|
||||||
$out = array();
|
if($info & GIT_INFO_REV_NUMBER)
|
||||||
exec("git rev-list HEAD --count", $out);
|
{
|
||||||
$revision_number = (int)$out[0];
|
$out = array();
|
||||||
if(!$revision_number)
|
exec("git rev-list HEAD --count", $out);
|
||||||
throw new Exception("Error getting git revision number");
|
$revision_number = (int)$out[0];
|
||||||
|
if(!$revision_number)
|
||||||
|
throw new Exception("Error getting git revision number");
|
||||||
|
}
|
||||||
|
|
||||||
return array($rev_hash, $branch, $revision_number);
|
return array($rev_hash, $branch, $revision_number);
|
||||||
}
|
}
|
||||||
|
|
||||||
function git_get_rev_hash() : string
|
function git_get_rev_hash() : string
|
||||||
{
|
{
|
||||||
list($rev_hash, $_, $__) = git_get_info();
|
list($rev_hash, $_, $__) = git_get_info(GIT_INFO_REV_HASH);
|
||||||
return $rev_hash;
|
return $rev_hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
function git_get_branch() : string
|
function git_get_branch() : string
|
||||||
{
|
{
|
||||||
list($_, $branch, $__) = git_get_info();
|
list($_, $branch, $__) = git_get_info(GIT_INFO_BRANCH);
|
||||||
return $branch;
|
return $branch;
|
||||||
}
|
}
|
||||||
|
|
||||||
function git_get_rev_number() : string
|
function git_get_rev_number() : string
|
||||||
{
|
{
|
||||||
list($_, $__, $rev_number) = git_get_info();
|
list($_, $__, $rev_number) = git_get_info(GIT_INFO_REV_NUMBER);
|
||||||
return $rev_number;
|
return $rev_number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1173,13 +1193,32 @@ function are_you_sure_ask() : bool
|
||||||
return $resp == "YES";
|
return $resp == "YES";
|
||||||
}
|
}
|
||||||
|
|
||||||
function names_hash_changed(string $crc_file, array $names) : bool
|
function names_hash_changed(string $crc_file, iterable $names) : bool
|
||||||
{
|
{
|
||||||
$ctx = hash_init('crc32');
|
$ctx = hash_init('crc32');
|
||||||
foreach($names as $name)
|
foreach($names as $name)
|
||||||
hash_update($ctx, $name);
|
hash_update($ctx, $name);
|
||||||
$names_crc = hash_final($ctx, true);
|
$names_crc = hash_final($ctx, false);
|
||||||
$changed = !file_exists($crc_file) || ensure_read($crc_file) != $names_crc;
|
$changed = !file_exists($crc_file) || ensure_read($crc_file) != $names_crc;
|
||||||
ensure_write($crc_file, $names_crc);
|
ensure_write($crc_file, $names_crc);
|
||||||
return $changed;
|
return $changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function is_apple_silicon()
|
||||||
|
{
|
||||||
|
$arch = php_uname('m');
|
||||||
|
|
||||||
|
// Check if the machine type contains 'arm' (ARM architecture)
|
||||||
|
if (strpos($arch, 'arm') !== false) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If running on x86_64, check for Apple Silicon using sysctl
|
||||||
|
// (because we might get 'x86_64' when running under Rosetta)
|
||||||
|
if ($arch === 'x86_64') {
|
||||||
|
$sysctl = shell_exec('sysctl -n machdep.cpu.brand_string');
|
||||||
|
return strpos($sysctl, 'Apple') !== false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue