Adding convenience stuff and removing some specifics
Publish PHP Package / docker (push) Successful in 7s
Details
Publish PHP Package / docker (push) Successful in 7s
Details
This commit is contained in:
parent
0dc2cfda6d
commit
04fd79645c
|
@ -100,17 +100,25 @@ class ConfigUpdateRequest
|
||||||
|
|
||||||
class ConfigUpdateResult
|
class ConfigUpdateResult
|
||||||
{
|
{
|
||||||
|
public ConfigUpdateMode $mode;
|
||||||
|
|
||||||
public ConfigDirFiles $affected_files;
|
public ConfigDirFiles $affected_files;
|
||||||
public array $affected_entries = array();
|
public array $affected_entries = array();
|
||||||
|
|
||||||
|
public array $added_files = array();
|
||||||
|
public array $removed_files = array();
|
||||||
|
|
||||||
/** @var array<string, string> */
|
/** @var array<string, string> */
|
||||||
public array $errors = array();
|
public array $errors = array();
|
||||||
public int $corruptions = 0;
|
public int $corruptions = 0;
|
||||||
public int $fast_jsons = 0;
|
public int $fast_jsons = 0;
|
||||||
|
|
||||||
function __construct(ConfigCacheUpdateParams $params)
|
function isPatchPossible() : bool
|
||||||
{
|
{
|
||||||
$this->affected_files = $params->affected_files;
|
return ($this->mode == ConfigUpdateMode::Selected ||
|
||||||
|
$this->mode === ConfigUpdateMode::DetectChanged) &&
|
||||||
|
count(array_filter($this->added_files, fn($f) => config_is_file($f))) == 0 &&
|
||||||
|
count(array_filter($this->removed_files, fn($f) => config_is_file($f))) == 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -171,16 +179,22 @@ class ConfigManager
|
||||||
$affected_files = $this->_getAffectedFiles($req, $added_files, $removed_files);
|
$affected_files = $this->_getAffectedFiles($req, $added_files, $removed_files);
|
||||||
|
|
||||||
//NOTE: at this point taking into account only config files
|
//NOTE: at this point taking into account only config files
|
||||||
$affected_files->filter(fn($file) => str_ends_with($file, '.conf.js'));
|
$affected_files->filter(fn($file) => config_is_file($file));
|
||||||
|
|
||||||
config_log("Affected files: {$affected_files->count()}");
|
config_log("Affected files: {$affected_files->count()}");
|
||||||
|
|
||||||
|
$update_result = new ConfigUpdateResult();
|
||||||
|
$update_result->mode = $req->mode;
|
||||||
|
$update_result->affected_files = $affected_files;
|
||||||
|
$update_result->added_files = $added_files;
|
||||||
|
$update_result->removed_files = $removed_files;
|
||||||
|
|
||||||
$update_params = new ConfigCacheUpdateParams(
|
$update_params = new ConfigCacheUpdateParams(
|
||||||
globals: $this->globals,
|
globals: $this->globals,
|
||||||
affected_files: $affected_files,
|
affected_files: $affected_files,
|
||||||
verbose: $req->verbose
|
verbose: $req->verbose
|
||||||
);
|
);
|
||||||
$update_result = self::_updateCache($update_params);
|
self::_updateCache($update_result, $update_params);
|
||||||
|
|
||||||
//let's clear internal cache once the update procedure is done
|
//let's clear internal cache once the update procedure is done
|
||||||
$this->cache->clear();
|
$this->cache->clear();
|
||||||
|
@ -199,12 +213,10 @@ class ConfigManager
|
||||||
return $update_result;
|
return $update_result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function _updateCache(ConfigCacheUpdateParams $params) : ConfigUpdateResult
|
private function _updateCache(ConfigUpdateResult $result, ConfigCacheUpdateParams $params)
|
||||||
{
|
{
|
||||||
$result = new ConfigUpdateResult($params);
|
|
||||||
|
|
||||||
if($params->affected_files->isEmpty())
|
if($params->affected_files->isEmpty())
|
||||||
return $result;
|
return;
|
||||||
|
|
||||||
$t = microtime(true);
|
$t = microtime(true);
|
||||||
|
|
||||||
|
@ -225,8 +237,6 @@ class ConfigManager
|
||||||
|
|
||||||
if($params->verbose)
|
if($params->verbose)
|
||||||
config_log("Update cache: " . round(microtime(true) - $t,2) . " sec.");
|
config_log("Update cache: " . round(microtime(true) - $t,2) . " sec.");
|
||||||
|
|
||||||
return $result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function _checkFileMap(ConfigUpdateRequest $req, array &$added_files, array &$removed_files)
|
private function _checkFileMap(ConfigUpdateRequest $req, array &$added_files, array &$removed_files)
|
||||||
|
@ -312,7 +322,7 @@ class ConfigManager
|
||||||
//if there were removed files we need to rebuild affected files
|
//if there were removed files we need to rebuild affected files
|
||||||
foreach($removed_files as $file)
|
foreach($removed_files as $file)
|
||||||
{
|
{
|
||||||
if(!str_ends_with($file, '.conf.js'))
|
if(!config_is_file($file))
|
||||||
{
|
{
|
||||||
$affected_by_file = $fs_cache_map->getAffectedFiles($file);
|
$affected_by_file = $fs_cache_map->getAffectedFiles($file);
|
||||||
foreach($affected_by_file as $dep)
|
foreach($affected_by_file as $dep)
|
||||||
|
@ -328,7 +338,7 @@ class ConfigManager
|
||||||
{
|
{
|
||||||
$affected_files->addFile($file, unique: true);
|
$affected_files->addFile($file, unique: true);
|
||||||
|
|
||||||
if(!str_ends_with($file, '.conf.js'))
|
if(!config_is_file($file))
|
||||||
{
|
{
|
||||||
$affected_by_file = $fs_cache_map->getAffectedFiles($file);
|
$affected_by_file = $fs_cache_map->getAffectedFiles($file);
|
||||||
foreach($affected_by_file as $dep)
|
foreach($affected_by_file as $dep)
|
||||||
|
@ -469,13 +479,3 @@ function config_bench_load(ConfigGlobals $globals, string $file)
|
||||||
config_log("Load: " . (microtime(true) - $t));
|
config_log("Load: " . (microtime(true) - $t));
|
||||||
}
|
}
|
||||||
|
|
||||||
function config_changes_has_deleted_or_added(TaskmanFileChanges $file_changes, iterable $files) : bool
|
|
||||||
{
|
|
||||||
foreach($files as $file)
|
|
||||||
{
|
|
||||||
if(str_ends_with($file, '.conf.js') && ($file_changes->isDeleted($file) || $file_changes->isCreated($file)))
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ function config_real_path(array $base_dirs, string $rel_path, bool $strict = tru
|
||||||
|
|
||||||
function config_is_file(string $filename) : bool
|
function config_is_file(string $filename) : bool
|
||||||
{
|
{
|
||||||
return (strrpos($filename, '.conf.js') === (strlen($filename) - 8));
|
return str_ends_with($filename, '.conf.js');
|
||||||
}
|
}
|
||||||
|
|
||||||
function config_file2id(string $conf_dir, string $filename) : int
|
function config_file2id(string $conf_dir, string $filename) : int
|
||||||
|
|
Loading…
Reference in New Issue