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 class ConfigCacheUpdateParams
{ {
const MAX_DEFAULT_WORKERS = 5; 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); $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) if($params->verbose)
config_log("Miss(Fast): {$result->affected_files->count()}({$result->fast_jsons})"); 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; $total_fast_jsons = 0;
foreach($results_by_job as $results) 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; $result->fast_jsons = $total_fast_jsons;
return $result;
} }
function _config_update_cache_entry(ConfigCacheUpdateParams $params, $base_dir, string $file, function _config_update_cache_entry(ConfigCacheUpdateParams $params, $base_dir, string $file,

View File

@ -48,7 +48,7 @@ enum ConfigUpdateMode : int
{ {
case Force = 1; case Force = 1;
case DetectChanged = 2; case DetectChanged = 2;
case Patch = 3; case Selected = 3;
} }
class ConfigUpdateRequest class ConfigUpdateRequest
@ -57,19 +57,27 @@ class ConfigUpdateRequest
public ?ConfigDirFiles $files; public ?ConfigDirFiles $files;
public ?string $result_file; public ?string $result_file;
public ?\taskman\TaskmanFileChanges $file_changes; public ?\taskman\TaskmanFileChanges $file_changes;
public bool $verbose = false;
public bool $return_entries = false;
private function __construct() {} 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 = new ConfigUpdateRequest();
$req->mode = ConfigUpdateMode::Force; $req->mode = ConfigUpdateMode::Force;
$req->files = $files; $req->files = $files;
return $req; 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 = new ConfigUpdateRequest();
$req->mode = ConfigUpdateMode::DetectChanged; $req->mode = ConfigUpdateMode::DetectChanged;
$req->files = $files; $req->files = $files;
@ -77,21 +85,32 @@ class ConfigUpdateRequest
return $req; 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 = new ConfigUpdateRequest();
$req->mode = ConfigUpdateMode::Patch; $req->mode = ConfigUpdateMode::Selected;
$req->files = $files; $req->files = $files;
$req->file_changes = $file_changes; $req->file_changes = $file_changes;
return $req; 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(); $this->affected_files = $params->affected_files;
$req->mode = ConfigUpdateMode::Patch;
$req->files = $files;
return $req;
} }
} }
@ -138,12 +157,12 @@ class ConfigManager
return $this->file_map; 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) if($req->files === null)
$req->files = $this->scanFiles(extension: '.js', verbose: $verbose); $req->files = $this->scanFiles(extension: '.js', verbose: $req->verbose);
$added_files = []; $added_files = [];
$removed_files = []; $removed_files = [];
@ -159,7 +178,7 @@ class ConfigManager
$update_params = new ConfigCacheUpdateParams( $update_params = new ConfigCacheUpdateParams(
globals: $this->globals, globals: $this->globals,
affected_files: $affected_files, affected_files: $affected_files,
verbose: $verbose verbose: $req->verbose
); );
$update_result = self::_updateCache($update_params); $update_result = self::_updateCache($update_params);
@ -168,7 +187,7 @@ class ConfigManager
$this->_updateFileMap($req, $affected_files, $added_files, $removed_files); $this->_updateFileMap($req, $affected_files, $added_files, $removed_files);
if($return_entries) if($req->return_entries)
{ {
foreach($affected_files as $file) foreach($affected_files as $file)
{ {
@ -180,14 +199,16 @@ class ConfigManager
return $update_result; return $update_result;
} }
private function _updateCache(ConfigCacheUpdateParams $params) : ConfigCacheUpdateResult private function _updateCache(ConfigCacheUpdateParams $params) : ConfigUpdateResult
{ {
$result = new ConfigUpdateResult($params);
if($params->affected_files->isEmpty()) if($params->affected_files->isEmpty())
return new ConfigCacheUpdateResult($params); return $result;
$t = microtime(true); $t = microtime(true);
$result = _config_cache_update($params); _config_cache_update($result, $params);
if($result->errors) if($result->errors)
{ {
@ -223,7 +244,7 @@ class ConfigManager
list($added_files, $removed_files) = $fs_cache_map->compare($req->files->getAllFiles()); 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)); 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) 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); $affected_files = ConfigDirFiles::makeFor($this);
@ -448,3 +469,13 @@ 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;
}