private static function parse_package($base_dir, $name, &$tgz_filename) { $tgz_filename = File::absolute(self::$tgz_dir, $name . ".tgz"); if (is_file($tgz_filename)) { return true; } $search_path = File::absolute($base_dir, $name); if (is_dir($search_path)) { $ignore = array("__\\w+__\\.php\$", "^work/", "^work\$"); File::tgz($tgz_filename, $search_path, $search_path, null, $ignore); return true; } else { if (is_file($search_path . ".php")) { File::tgz($tgz_filename, $base_dir, $search_path . ".php"); return true; } } return false; }
private static function parse_package($package_root_path, $base_dir, $package, &$tgz_filename) { $tgz_filename = File::absolute(self::$tgz_dir, str_replace("/", "_", $package) . ".tgz"); if (is_file($tgz_filename)) { return true; } $package_name = basename($base_dir); $search_path = File::absolute($base_dir, preg_replace("/^" . $package_name . "\\//", "", $package)); $base_name = basename($search_path); if (is_file($search_path . ".php")) { $isdir = is_dir($search_path); $tar = File::pack($base_dir, $search_path . ".php", $package_root_path, !$isdir); if ($isdir) { $tar .= File::pack($base_dir, $search_path, $package_root_path); } else { $parent_dir = basename(dirname($search_path)); $parent_search = dirname(dirname($search_path)) . "/" . $parent_dir . ".php"; if (is_file($parent_search)) { $tar .= File::pack($base_dir, $parent_search, $package_root_path); } } File::gzwrite($tgz_filename, $tar); return true; } else { if (is_file($search_path . "/" . $base_name . ".php")) { File::tgz($tgz_filename, $base_dir, $search_path, $package_root_path); return true; } } return false; }
private static function app($repository) { if (!$repository->start("app")) { return; } if (is_dir(App::path("apps"))) { $list = array(); foreach (File::dir(App::path("apps"), true) as $dir) { $bool = true; foreach ($list as $p) { if (strpos($dir, $p) === 0) { $bool = false; break; } } if ($bool) { $package = str_replace(array(App::path("apps/"), "/"), array("", "."), $dir); $info = App::info($dir); if (!empty($info["name"])) { $tgz_filename = $repository->tgz_path($package); File::tgz($tgz_filename, $dir); touch($tgz_filename, File::last_update($dir)); $repository->add($package, $info["name"], File::last_update($dir), $info["description"], $info["summary"]); $list[] = $dir; } } } } }