Now supports excluding files and dirs
This commit is contained in:
parent
41ad908bc6
commit
be93645db9
13
README.md
13
README.md
@ -73,8 +73,15 @@ be added through one of the rules in the `include` block.
|
|||||||
|
|
||||||
stub "src/stub.php";
|
stub "src/stub.php";
|
||||||
|
|
||||||
In the future, it will also be possible to exclude files matching specific
|
You can follow the same approach when excluding files with the `exclude` block:
|
||||||
patterns.
|
|
||||||
|
exclude {
|
||||||
|
dir ".git";
|
||||||
|
file "DONT-INCLUDE-ME-IN-PHAR";
|
||||||
|
}
|
||||||
|
|
||||||
|
The `dir` rules match against `*/<dirname>/*` while the `file` rule will match
|
||||||
|
against `*/<filename>`.
|
||||||
|
|
||||||
|
|
||||||
## Props
|
## Props
|
||||||
@ -153,3 +160,5 @@ into a temporary directory before running. But right now **it does nothing**.
|
|||||||
them to the archive. This shouldn't be an issue, but if your code depends on
|
them to the archive. This shouldn't be an issue, but if your code depends on
|
||||||
a specific character index in a specific php file, you might want to specify
|
a specific character index in a specific php file, you might want to specify
|
||||||
the `verbatim` option.
|
the `verbatim` option.
|
||||||
|
* You can specify multiple `props` blocks, f.ex. one containing static values
|
||||||
|
and another one generate f.ex. build date or git revision.
|
||||||
|
@ -23,6 +23,8 @@ class Manifest
|
|||||||
protected $verbatim = false;
|
protected $verbatim = false;
|
||||||
/** @var array Properties to be defined in the main stub */
|
/** @var array Properties to be defined in the main stub */
|
||||||
protected $props = [];
|
protected $props = [];
|
||||||
|
/** @var array Patterns to exclude */
|
||||||
|
protected $excludes = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Read manifests from a makephar.sdl file and return all the build targets
|
* Read manifests from a makephar.sdl file and return all the build targets
|
||||||
@ -74,6 +76,18 @@ class Manifest
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 'exclude':
|
||||||
|
foreach ($child->getChildren() as $inc) switch ($inc->getTagName()) {
|
||||||
|
case 'dir':
|
||||||
|
$val = (string)$inc->getValue();
|
||||||
|
$mf->excludes[] = "*/{$val}/*";
|
||||||
|
break;
|
||||||
|
case 'file':
|
||||||
|
$val = (string)$inc->getValue();
|
||||||
|
$mf->excludes[] = "*/{$val}";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 'props':
|
case 'props':
|
||||||
$props = [];
|
$props = [];
|
||||||
if ($src = (string)$child->getValue()) {
|
if ($src = (string)$child->getValue()) {
|
||||||
@ -199,10 +213,18 @@ class Manifest
|
|||||||
log_warn("Unsupported source type: %s", $source->type);
|
log_warn("Unsupported source type: %s", $source->type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$items = array_filter($items, function ($item) {
|
$rules = $this->excludes;
|
||||||
if (fnmatch("*/.git/*", $item->src)) return false;
|
$before = count($items);
|
||||||
|
$items = array_filter($items, function ($item) use ($rules) {
|
||||||
|
foreach ($rules as $rule) {
|
||||||
|
if (fnmatch($rule, $item->src)) return false;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
$after = count($items);
|
||||||
|
if ($after < $before) {
|
||||||
|
log_debug("Skipped %d files matching exclusion patterns", $before-$after);
|
||||||
|
}
|
||||||
return $items;
|
return $items;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user