{"id":15625853,"url":"https://github.com/pacstall/pacup","last_synced_at":"2026-03-15T13:46:47.426Z","repository":{"id":233185123,"uuid":"786333580","full_name":"pacstall/pacup","owner":"pacstall","description":"Help maintainers update pacscripts (next-gen Perl rewrite)","archived":false,"fork":false,"pushed_at":"2025-02-09T01:49:23.000Z","size":210,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-22T07:00:33.866Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pacstall.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"pacstall","liberapay":"pacstall"}},"created_at":"2024-04-14T06:02:11.000Z","updated_at":"2025-02-09T01:49:09.000Z","dependencies_parsed_at":"2024-04-14T12:05:41.974Z","dependency_job_id":"84548615-7bfb-4437-9c3a-001deddd7df6","html_url":"https://github.com/pacstall/pacup","commit_stats":{"total_commits":121,"total_committers":6,"mean_commits":"20.166666666666668","dds":0.371900826446281,"last_synced_commit":"9f8f95e2f22b0f5c4027ef4aec9440b45e292b67"},"previous_names":["pacstall/pacup.pl","pacstall/pacup"],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pacstall%2Fpacup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pacstall%2Fpacup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pacstall%2Fpacup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pacstall%2Fpacup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pacstall","download_url":"https://codeload.github.com/pacstall/pacup/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251014472,"owners_count":21523052,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["pacscript","pacstall","pacstall-programs","python","python3","utility"],"created_at":"2024-10-03T10:06:43.249Z","updated_at":"2026-03-15T13:46:47.421Z","avatar_url":"https://github.com/pacstall.png","language":"Shell","readme":"\u003cp align=\"center\"\u003e\u003cimg alt=\"logo\" src=\"https://raw.githubusercontent.com/pacstall/pacup/master/misc/logo.png\"\u003e\u003c/p\u003e\n\u003ch1 align=\"center\"\u003ePacup\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.perl.org/\"\u003e\u003cimg alt=\"Perl\" src=\"https://img.shields.io/badge/language-perl_5-306998?logo=perl\u0026logoColor=white\u0026style=for-the-badge\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/psf/black\"\u003e\u003cimg alt=\"Code style: perltidy\" src=\"https://img.shields.io/badge/code%20style-perltidy-blue?style=for-the-badge\"/\u003e\u003c/a\u003e\n\u003cp/\u003e\n\u003cp align=\"center\"\u003e\n  \u003c!-- Social --\u003e\n  \u003ca href=\"https://discord.gg/yzrjXJV6K8\"\u003e\u003cimg alt=\"join discord\" src=\"https://img.shields.io/discord/839818021207801878?color=5865F2\u0026label=Discord\u0026logo=discord\u0026logoColor=FFFFFF\u0026style=for-the-badge\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://social.linux.pizza/web/@pacstall\"\u003e\u003cimg alt=\"Mastodon Follow\" src=\"https://img.shields.io/mastodon/follow/107278715447740005?color=3088d4\u0026domain=https%3A%2F%2Fsocial.linux.pizza\u0026label=Mastodon\u0026logo=mastodon\u0026logoColor=white\u0026style=for-the-badge\" loading=\"lazy\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://matrix.to/#/#pacstall:matrix.org\"\u003e\u003cimg alt=\"join matrix\" src=\"https://img.shields.io/matrix/pacstall:matrix.org?color=888888\u0026label=Matrix\u0026logo=Matrix\u0026style=for-the-badge\"\u003e\u003c/a\u003e\n\u003cp/\u003e\n\n## What is this?\n\nPacup (**Pac**script **Up**dater) is a maintainer helper tool to help\nmaintainers update their pacscripts. It semi-automates the tedious task of\nupdating pacscripts, and aims to make it a fun process for the maintainer!\nOriginally written in Python, now in Perl.\n\n## Installation\n\nTo install the latest release run:\n\n```bash\n$ pacstall -I pacup\n```\n\nTo install the latest development build run:\n\n```bash\n$ pacstall -I pacup-git\n```\n\nor\n\n```bash\n$ git clone https://github.com/pacstall/pacup.pl\n$ cd pacup.pl\n$ cpan Data::Compare File::chdir JSON List::MoreUtils Term::ProgressBar\n$ perl Makefile.PL\n$ sudo make install\n```\n\nTo develop in a `nix` shell run:\n```console\n$ nix-shell\n```\n\n`$PATH` in the `nix-shell` includes `./pacup`.\nUse [cached-nix-shell](https://github.com/xzfc/cached-nix-shell) for faster startup time.\n\n## Usage\n\n```bash\nUSAGE: pacup [OPTIONS] PACSCRIPT...\n\nOPTIONS:\n    -v, --version\n        Print version information and exit.\n\n    -h, -?, --help\n        Print this help message and exit.\n\n    -r, --show-repology\n        Print the parsed repology data and exit.\n\n    -s, --ship\n        Create a new branch and push the changes to git.\n\n    -o, --origin-remote\n        Specify the remote repository. Default is 'origin'.\n\n    -c, --custom-version\n        Set a custom version for the package to fetch, instead of querying\n        Repology.\n\n    -p, --push-force\n        Force push to the branch, overwriting any existing one.\n```\n\nYou can get this help text by running `pacup --help`.\n\nYou should visit our [wiki](https://github.com/pacstall/pacup/wiki/Wiki), for\nmore information on how to use the `repology` key.\n\n## How does it work?\n\nSuppose `foo.pacscript` is outdated.\n\nOn running `pacup foo.pacscript` Pacup will parse the pacscript's variables,\nthen it compiles a list of filters specified in the `repology` variable in the\npacscript. Then it queries the [Repology API](https://repology.org/api) to get\nall the repositories which have packaged that package. After which it applies\nthe filter to the response, and from the filtrate it considers the most common\nversion to be the latest.\n\nThen it replaces all occurrences of the previous `version`'s value in the `url`\nwith the latest one placeholder's value with the latest version, and downloads\nthe new package, and generates it's hash.\n\nThen writes the edited pacscript and installs it with\n[Pacstall](https://github.com/pacstall/pacstall), after installation it asks\nthe user to confirm that the installed package works. On approval the pacscript\nis considered successfully upgraded and the program ends.\n\n## Caveats\n\n* Does not work with `-git` pacscripts as those pacscripts are auto updating.\n* Doesn't work if a pacscript doesn't have an equivalent\n  [Repology](https://repology.org/) package.\n\n## Stats\n\n\u003cp align=\"center\"\u003e\u003cimg alt=\"Repobeats analytics image\" src=\"https://repobeats.axiom.co/api/embed/80bc45a6d65fbfb43905aa22b3950badc09edd97.svg\" /\u003e\u003c/p\u003e\n\n## License\n\n```monospace\n    ____             __  __\n   / __ \\____ ______/ / / /___\n  / /_/ / __ `/ ___/ / / / __ \\\n / ____/ /_/ / /__/ /_/ / /_/ /\n/_/    \\__,_/\\___/\\____/ .___/\n                      /_/\n\nCopyright (C) 2022-present\n\nThis file is part of PacUp\n\nPacUp is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nPacUp is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with PacUp.  If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n```\n","funding_links":["https://github.com/sponsors/pacstall","https://liberapay.com/pacstall"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpacstall%2Fpacup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpacstall%2Fpacup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpacstall%2Fpacup/lists"}