Cleaning API
Publish PHP Package / docker (push) Successful in 6s Details

This commit is contained in:
Pavel Shevaev 2025-04-18 14:20:55 +03:00
parent 1b6bddd7ea
commit 0dc2cfda6d
2 changed files with 54 additions and 45 deletions

View File

@ -342,22 +342,6 @@ class ConfigCacheFileMap
}
}
class ConfigCacheUpdateResult
{
public ConfigDirFiles $affected_files;
public array $affected_entries = array();
/** @var array<string, string> */
public array $errors = array();
public int $corruptions = 0;
public int $fast_jsons = 0;
function __construct(ConfigCacheUpdateParams $params)
{
$this->affected_files = $params->affected_files;
}
}
class ConfigCacheUpdateParams
{
const MAX_DEFAULT_WORKERS = 5;
@ -408,7 +392,7 @@ class ConfigCacheUpdateParams
}
}
function _config_cache_update(ConfigCacheUpdateParams $params) : ConfigCacheUpdateResult
function _config_cache_update(ConfigUpdateResult $result, ConfigCacheUpdateParams $params)
{
$jobs = $params->splitJobs(sort: true);
@ -427,18 +411,14 @@ function _config_cache_update(ConfigCacheUpdateParams $params) : ConfigCacheUpda
}
}
$result = _config_merge_update_results($params, $results_by_job);
_config_merge_update_results($result, $results_by_job);
if($params->verbose)
config_log("Miss(Fast): {$result->affected_files->count()}({$result->fast_jsons})");
return $result;
}
function _config_merge_update_results(ConfigCacheUpdateParams $params, array $results_by_job) : ConfigCacheUpdateResult
function _config_merge_update_results(ConfigUpdateResult $result, array $results_by_job)
{
$result = new ConfigCacheUpdateResult($params);
$total_fast_jsons = 0;
foreach($results_by_job as $results)
@ -463,8 +443,6 @@ function _config_merge_update_results(ConfigCacheUpdateParams $params, array $re
}
$result->fast_jsons = $total_fast_jsons;
return $result;
}
function _config_update_cache_entry(ConfigCacheUpdateParams $params, $base_dir, string $file,

View File

@ -48,7 +48,7 @@ enum ConfigUpdateMode : int
{
case Force = 1;
case DetectChanged = 2;
case Patch = 3;
case Selected = 3;
}
class ConfigUpdateRequest
@ -57,19 +57,27 @@ class ConfigUpdateRequest
public ?ConfigDirFiles $files;
public ?string $result_file;
public ?\taskman\TaskmanFileChanges $file_changes;
public bool $verbose = false;
public bool $return_entries = false;
private function __construct() {}
static function force(?ConfigDirFiles $files = null) : ConfigUpdateRequest
static function force(\taskman\artefact\TaskmanDirFiles|ConfigDirFiles|null $files = null) : ConfigUpdateRequest
{
if($files instanceof \taskman\artefact\TaskmanDirFiles)
$files = ConfigDirFiles::makeFromArtefactFiles($files);
$req = new ConfigUpdateRequest();
$req->mode = ConfigUpdateMode::Force;
$req->files = $files;
return $req;
}
static function detectChanged(string $result_file, ?ConfigDirFiles $files = null) : ConfigUpdateRequest
static function detectChanged(string $result_file, \taskman\artefact\TaskmanDirFiles|ConfigDirFiles|null $files = null) : ConfigUpdateRequest
{
if($files instanceof \taskman\artefact\TaskmanDirFiles)
$files = ConfigDirFiles::makeFromArtefactFiles($files);
$req = new ConfigUpdateRequest();
$req->mode = ConfigUpdateMode::DetectChanged;
$req->files = $files;
@ -77,21 +85,32 @@ class ConfigUpdateRequest
return $req;
}
static function patch(\taskman\TaskmanFileChanges $file_changes, ConfigDirFiles $files) : ConfigUpdateRequest
static function selected(\taskman\artefact\TaskmanDirFiles|ConfigDirFiles $files, \taskman\TaskmanFileChanges|null $file_changes = null) : ConfigUpdateRequest
{
if($files instanceof \taskman\artefact\TaskmanDirFiles)
$files = ConfigDirFiles::makeFromArtefactFiles($files);
$req = new ConfigUpdateRequest();
$req->mode = ConfigUpdateMode::Patch;
$req->mode = ConfigUpdateMode::Selected;
$req->files = $files;
$req->file_changes = $file_changes;
return $req;
}
}
static function selected(ConfigDirFiles $files) : ConfigUpdateRequest
class ConfigUpdateResult
{
public ConfigDirFiles $affected_files;
public array $affected_entries = array();
/** @var array<string, string> */
public array $errors = array();
public int $corruptions = 0;
public int $fast_jsons = 0;
function __construct(ConfigCacheUpdateParams $params)
{
$req = new ConfigUpdateRequest();
$req->mode = ConfigUpdateMode::Patch;
$req->files = $files;
return $req;
$this->affected_files = $params->affected_files;
}
}
@ -138,12 +157,12 @@ class ConfigManager
return $this->file_map;
}
function updateCache(ConfigUpdateRequest $req, bool $return_entries = false, bool $verbose = false) : ConfigCacheUpdateResult
function update(ConfigUpdateRequest $req) : ConfigUpdateResult
{
config_log("Updating cache, mode '{$req->mode->name}'...");
config_log("Updating configs, mode '{$req->mode->name}'...");
if($req->files === null)
$req->files = $this->scanFiles(extension: '.js', verbose: $verbose);
$req->files = $this->scanFiles(extension: '.js', verbose: $req->verbose);
$added_files = [];
$removed_files = [];
@ -159,7 +178,7 @@ class ConfigManager
$update_params = new ConfigCacheUpdateParams(
globals: $this->globals,
affected_files: $affected_files,
verbose: $verbose
verbose: $req->verbose
);
$update_result = self::_updateCache($update_params);
@ -168,7 +187,7 @@ class ConfigManager
$this->_updateFileMap($req, $affected_files, $added_files, $removed_files);
if($return_entries)
if($req->return_entries)
{
foreach($affected_files as $file)
{
@ -180,14 +199,16 @@ class ConfigManager
return $update_result;
}
private function _updateCache(ConfigCacheUpdateParams $params) : ConfigCacheUpdateResult
private function _updateCache(ConfigCacheUpdateParams $params) : ConfigUpdateResult
{
$result = new ConfigUpdateResult($params);
if($params->affected_files->isEmpty())
return new ConfigCacheUpdateResult($params);
return $result;
$t = microtime(true);
$result = _config_cache_update($params);
_config_cache_update($result, $params);
if($result->errors)
{
@ -223,7 +244,7 @@ class ConfigManager
list($added_files, $removed_files) = $fs_cache_map->compare($req->files->getAllFiles());
config_log("File map compare, added: ".count($added_files).", removed: ".count($removed_files));
}
else if($req->mode === ConfigUpdateMode::Patch)
else if($req->mode === ConfigUpdateMode::Selected)
{
if($req->file_changes != null)
{
@ -299,7 +320,7 @@ class ConfigManager
}
}
}
else if($req->mode === ConfigUpdateMode::Patch)
else if($req->mode === ConfigUpdateMode::Selected)
{
$affected_files = ConfigDirFiles::makeFor($this);
@ -448,3 +469,13 @@ function config_bench_load(ConfigGlobals $globals, string $file)
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;
}