index : archweb32 | |
Archlinux32 website | gitolite user |
summaryrefslogtreecommitdiff |
author | Erich Eckner <git@eckner.net> | 2019-03-07 13:58:16 +0100 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2019-03-07 13:58:16 +0100 |
commit | 229df61eba717104bbaa34b6112e0b4fd5503598 (patch) | |
tree | 237f1c4b0f8e650e17f232bbb103d4d901ab194c /lib | |
parent | 96d39b398eb9b57fe808e34b40e7123204eef1db (diff) |
-rw-r--r-- | lib/helper.php | 86 |
diff --git a/lib/helper.php b/lib/helper.php index 0d7c5e5..43bd8a8 100644 --- a/lib/helper.php +++ b/lib/helper.php @@ -187,89 +187,3 @@ function add_fancy_unit($value, $unit) { $exponent = max(0,min(count($suffixes)-1,round(log(abs($value))/log(1024)-1))); return sprintf("%.2f %s%s", $value / pow(1024,$exponent), $suffixes[8 + $exponent], $unit); } - -function parse_package_filename($filename, $repo = NULL) { - if (! preg_match( - '/^(\S+)-(([^-:]+):)?([^-:]+)-([^-]+)-([^-]+)\.pkg\.tar\.xz$/', - $filename, - $matches - )) - return; - $result = array( - 'pkgname' => $matches[1], - 'pkgver' => $matches[4], - 'pkgrel' => $matches[5], - 'arch' => $matches[6] - ); - if (!empty($repo)) - $result['repo'] = $repo; - if (empty($matches[3])) - $result['epoch'] = '0'; - else - $result['epoch'] = $matches[3]; - - return $result; -} - -function find_upstream_packages_in($repo) { - $parse_package_filename_in_repo = function($filename) use ($repo) { - return parse_package_filename($filename, $repo); - }; - if (!file_exists("/var/lib/pacman/sync/" . $repo . ".db")) - return NULL; - return - array_map( - $parse_package_filename_in_repo, - explode( - "\n", - shell_exec( - "tar -Oxzf /var/lib/pacman/sync/" . $repo . ".db" . - " | grep -xFA1 '%FILENAME%'" . - " | grep -vxF '%FILENAME%\n--'" - ) - ) - ); -} - -function available_upstream_packages($columns = NULL) { - $available_upstream_packages = apcu_fetch('available_upstream_packages', $apcu_success); - if ($apcu_success == false) { - $available_upstream_packages_repowise = array_map( - 'find_upstream_packages_in', - array( - 'core', 'extra', 'community' - ) - ); - $available_upstream_packages = array(); - foreach ($available_upstream_packages_repowise as $sub_array) - $available_upstream_packages = - array_merge( - $available_upstream_packages, - $sub_array - ); - apcu_store('available_upstream_packages', $available_upstream_packages, 1800); - } - - if (!isset($columns)) - return $available_upstream_packages; - if (!is_array($columns)) - return array_column($available_upstream_packages, $columns); - $select_columns_of_interest = function($row) use ($columns) { - $select = function($column) use ($row) { - return $row[$column]; - }; - return - array_combine( - $columns, - array_map( - $select, - $columns - ) - ); - }; - return - array_map( - $select_columns_of_interest, - $available_upstream_packages - ); -} |