public function addFromTags($filter = null) { $tags = array_filter(explode("\n", $this->execute(array('tag')))); $versions = array_filter($tags, $this->filter); if (null !== $filter) { if (!$filter instanceof \Closure) { $regexes = array(); foreach ((array) $filter as $f) { $regexes[] = Glob::toRegex($f); } $filter = function ($version) use($regexes) { foreach ($regexes as $regex) { if (preg_match($regex, $version)) { return true; } } return false; }; } $versions = array_filter($versions, $filter); } usort($versions, $this->sorter); foreach ($versions as $version) { $version = new Version($version); $version->setFrozen(true); $this->add($version); } return $this; }