Making cache updating more robust
Publish PHP Package / docker (push) Successful in 6s
Details
Publish PHP Package / docker (push) Successful in 6s
Details
This commit is contained in:
parent
7b73207251
commit
83fa074f7d
|
@ -268,8 +268,11 @@ class ConfigCacheFileMap
|
||||||
return array_keys($this->file2deps[$file]);
|
return array_keys($this->file2deps[$file]);
|
||||||
}
|
}
|
||||||
|
|
||||||
function differs(array $files) : bool
|
function differs(ConfigDirFiles|\taskman\artefact\TaskmanDirFiles|array $files) : bool
|
||||||
{
|
{
|
||||||
|
if(!is_array($files))
|
||||||
|
$files = $files->getAllFiles();
|
||||||
|
|
||||||
$this_files = array_keys($this->file2deps);
|
$this_files = array_keys($this->file2deps);
|
||||||
|
|
||||||
return count($files) !== count($this_files) ||
|
return count($files) !== count($this_files) ||
|
||||||
|
|
|
@ -56,6 +56,7 @@ class ConfigUpdateRequest
|
||||||
public ConfigUpdateMode $mode;
|
public ConfigUpdateMode $mode;
|
||||||
public ?ConfigDirFiles $files;
|
public ?ConfigDirFiles $files;
|
||||||
public ?string $result_file;
|
public ?string $result_file;
|
||||||
|
public ?\taskman\TaskmanFileChanges $file_changes;
|
||||||
|
|
||||||
private function __construct() {}
|
private function __construct() {}
|
||||||
|
|
||||||
|
@ -76,7 +77,16 @@ class ConfigUpdateRequest
|
||||||
return $req;
|
return $req;
|
||||||
}
|
}
|
||||||
|
|
||||||
static function patch(ConfigDirFiles $files) : ConfigUpdateRequest
|
static function patch(\taskman\TaskmanFileChanges $file_changes, ConfigDirFiles $files) : ConfigUpdateRequest
|
||||||
|
{
|
||||||
|
$req = new ConfigUpdateRequest();
|
||||||
|
$req->mode = ConfigUpdateMode::Patch;
|
||||||
|
$req->files = $files;
|
||||||
|
$req->file_changes = $file_changes;
|
||||||
|
return $req;
|
||||||
|
}
|
||||||
|
|
||||||
|
static function selected(ConfigDirFiles $files) : ConfigUpdateRequest
|
||||||
{
|
{
|
||||||
$req = new ConfigUpdateRequest();
|
$req = new ConfigUpdateRequest();
|
||||||
$req->mode = ConfigUpdateMode::Patch;
|
$req->mode = ConfigUpdateMode::Patch;
|
||||||
|
@ -109,7 +119,7 @@ class ConfigManager
|
||||||
return $this->cache;
|
return $this->cache;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getArtifactFilesSpec() : array
|
function getArtefactFilesSpec() : array
|
||||||
{
|
{
|
||||||
return [$this->globals->base_dirs, ['.js']];
|
return [$this->globals->base_dirs, ['.js']];
|
||||||
}
|
}
|
||||||
|
@ -214,18 +224,19 @@ class ConfigManager
|
||||||
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::Patch)
|
||||||
|
{
|
||||||
|
if($req->file_changes != null)
|
||||||
{
|
{
|
||||||
foreach($req->files as $file)
|
foreach($req->files as $file)
|
||||||
{
|
{
|
||||||
//TODO: is it robust enough?
|
if($req->file_changes->isCreated($file))
|
||||||
//TODO: we should make difference between changed and added!
|
|
||||||
if(file_exists($file))
|
|
||||||
$added_files[] = $file;
|
$added_files[] = $file;
|
||||||
else
|
else if($req->file_changes->isDeleted($file))
|
||||||
$removed_files[] = $file;
|
$removed_files[] = $file;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private function _updateFileMap(ConfigUpdateRequest $req, ConfigDirFiles $affected_files, array $added_files, array $removed_files)
|
private function _updateFileMap(ConfigUpdateRequest $req, ConfigDirFiles $affected_files, array $added_files, array $removed_files)
|
||||||
{
|
{
|
||||||
|
@ -295,17 +306,6 @@ class ConfigManager
|
||||||
{
|
{
|
||||||
$affected_files = ConfigDirFiles::makeFor($this);
|
$affected_files = ConfigDirFiles::makeFor($this);
|
||||||
|
|
||||||
foreach($req->files as $file)
|
|
||||||
{
|
|
||||||
//removed config special case
|
|
||||||
if(str_ends_with($file, '.conf.js') && in_array($file, $removed_files))
|
|
||||||
{
|
|
||||||
//NOTE: let it be for now, rebuilds the whole bundle
|
|
||||||
$affected_files = $this->scanFiles(extension: '.conf.js');
|
|
||||||
return $affected_files;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach($req->files as $file)
|
foreach($req->files as $file)
|
||||||
{
|
{
|
||||||
$affected_files->addFile($file, unique: true);
|
$affected_files->addFile($file, unique: true);
|
||||||
|
|
Loading…
Reference in New Issue