@foo/bar refs are now taken into account during affected files detection
Publish PHP Package / docker (push) Successful in 7s
Details
Publish PHP Package / docker (push) Successful in 7s
Details
This commit is contained in:
parent
7b9e1764d9
commit
67b1d51860
|
@ -325,14 +325,24 @@ class ConfigCacheFileMap
|
||||||
unset($this->file2deps[$file]);
|
unset($this->file2deps[$file]);
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateDepsForEntry(ConfigCacheEntry $entry)
|
function updateDepsForEntry(array $base_dirs, ConfigCacheEntry $entry)
|
||||||
{
|
{
|
||||||
foreach($entry->includes as $include)
|
//1. add includes
|
||||||
|
$all_refs = $entry->includes;
|
||||||
|
|
||||||
|
//2. add refs
|
||||||
|
foreach($entry->refs as $ref => $_)
|
||||||
{
|
{
|
||||||
if(isset($this->file2deps[$include]))
|
$file = config_real_path($base_dirs, substr($ref, 1) . '.conf.js');
|
||||||
$this->file2deps[$include][$entry->file] = true;
|
$all_refs[] = $file;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach($all_refs as $ref_file)
|
||||||
|
{
|
||||||
|
if(isset($this->file2deps[$ref_file]))
|
||||||
|
$this->file2deps[$ref_file][$entry->file] = true;
|
||||||
else
|
else
|
||||||
$this->file2deps[$include] = [$entry->file => true];
|
$this->file2deps[$ref_file] = [$entry->file => true];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -223,7 +223,7 @@ class ConfigManager
|
||||||
$affected_all_files = $this->_getAffectedFiles($req, $added_files, $removed_files);
|
$affected_all_files = $this->_getAffectedFiles($req, $added_files, $removed_files);
|
||||||
$affected_conf_files = $this->filterConfigFiles($affected_all_files);
|
$affected_conf_files = $this->filterConfigFiles($affected_all_files);
|
||||||
|
|
||||||
config_log("Affected configs: {$affected_conf_files->count()} (request: {$req->files->count()})");
|
config_log("Affected configs: {$affected_conf_files->count()} (requested: {$req->files->count()})");
|
||||||
|
|
||||||
$update_result = new ConfigUpdateResult();
|
$update_result = new ConfigUpdateResult();
|
||||||
$update_result->request = $req;
|
$update_result->request = $req;
|
||||||
|
@ -349,7 +349,7 @@ class ConfigManager
|
||||||
foreach($affected_conf_files as $file)
|
foreach($affected_conf_files as $file)
|
||||||
{
|
{
|
||||||
$cache_entry = $this->cache->getOrLoadByPath($file);
|
$cache_entry = $this->cache->getOrLoadByPath($file);
|
||||||
$fs_cache_map->updateDepsForEntry($cache_entry);
|
$fs_cache_map->updateDepsForEntry($this->globals->base_dirs, $cache_entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
if($req->mode == ConfigUpdateMode::Force ||
|
if($req->mode == ConfigUpdateMode::Force ||
|
||||||
|
@ -395,15 +395,12 @@ 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(!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)
|
||||||
$affected_files->addFile($dep, unique: true);
|
$affected_files->addFile($dep, unique: true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else if($req->mode === ConfigUpdateMode::Selected)
|
else if($req->mode === ConfigUpdateMode::Selected)
|
||||||
{
|
{
|
||||||
$affected_files = ConfigDirFiles::makeFor($this);
|
$affected_files = ConfigDirFiles::makeFor($this);
|
||||||
|
@ -411,15 +408,11 @@ class ConfigManager
|
||||||
foreach($req->files as $file)
|
foreach($req->files as $file)
|
||||||
{
|
{
|
||||||
$affected_files->addFile($file, unique: true);
|
$affected_files->addFile($file, unique: true);
|
||||||
|
|
||||||
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)
|
||||||
$affected_files->addFile($dep, unique: true);
|
$affected_files->addFile($dep, unique: true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return $affected_files;
|
return $affected_files;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,9 +28,11 @@ function config_real_path(array $base_dirs, string $rel_path, bool $strict = tru
|
||||||
{
|
{
|
||||||
foreach($base_dirs as $dir)
|
foreach($base_dirs as $dir)
|
||||||
if(is_file($dir . '/' . $rel_path))
|
if(is_file($dir . '/' . $rel_path))
|
||||||
return $dir . '/' . $rel_path;
|
return normalize_path($dir . '/' . $rel_path);
|
||||||
|
|
||||||
if($strict)
|
if($strict)
|
||||||
throw new Exception("No file for relative path '$rel_path'");
|
throw new Exception("No file for relative path '$rel_path'");
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,6 +106,7 @@ function config_walk_fields(object $proto, callable $callback)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO: doesn't really belong here
|
||||||
function config_includes_map_find_text_origin(array $map, string $file, string $text) : array
|
function config_includes_map_find_text_origin(array $map, string $file, string $text) : array
|
||||||
{
|
{
|
||||||
if(!isset($map[$file]))
|
if(!isset($map[$file]))
|
||||||
|
|
Loading…
Reference in New Issue