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]);
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
return count($files) !== count($this_files) ||
|
||||
|
|
|
@ -56,6 +56,7 @@ class ConfigUpdateRequest
|
|||
public ConfigUpdateMode $mode;
|
||||
public ?ConfigDirFiles $files;
|
||||
public ?string $result_file;
|
||||
public ?\taskman\TaskmanFileChanges $file_changes;
|
||||
|
||||
private function __construct() {}
|
||||
|
||||
|
@ -76,7 +77,16 @@ class ConfigUpdateRequest
|
|||
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->mode = ConfigUpdateMode::Patch;
|
||||
|
@ -109,7 +119,7 @@ class ConfigManager
|
|||
return $this->cache;
|
||||
}
|
||||
|
||||
function getArtifactFilesSpec() : array
|
||||
function getArtefactFilesSpec() : array
|
||||
{
|
||||
return [$this->globals->base_dirs, ['.js']];
|
||||
}
|
||||
|
@ -215,14 +225,15 @@ class ConfigManager
|
|||
}
|
||||
else if($req->mode === ConfigUpdateMode::Patch)
|
||||
{
|
||||
foreach($req->files as $file)
|
||||
if($req->file_changes != null)
|
||||
{
|
||||
//TODO: is it robust enough?
|
||||
//TODO: we should make difference between changed and added!
|
||||
if(file_exists($file))
|
||||
$added_files[] = $file;
|
||||
else
|
||||
$removed_files[] = $file;
|
||||
foreach($req->files as $file)
|
||||
{
|
||||
if($req->file_changes->isCreated($file))
|
||||
$added_files[] = $file;
|
||||
else if($req->file_changes->isDeleted($file))
|
||||
$removed_files[] = $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -295,17 +306,6 @@ class ConfigManager
|
|||
{
|
||||
$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)
|
||||
{
|
||||
$affected_files->addFile($file, unique: true);
|
||||
|
|
Loading…
Reference in New Issue