pacup


Namepacup JSON
Version 2.1.1 PyPI version JSON
download
home_pagehttps://github.com/pacstall/pacup
SummaryHelp maintainers update pacscripts
upload_time2024-02-19 02:25:47
maintainer
docs_urlNone
authorSourajyoti Basak
requires_python>=3.10,<4
licenseGPL-3.0-or-later
keywords aur cli command line console debian pacscript pacstall ubuntu repology
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <p align="center"><img alt="logo" src="https://raw.githubusercontent.com/pacstall/pacup/master/imgs/logo.png"></p>
<h1 align="center">Pacup</h1>
<p align="center">
  <a href="https://www.python.org/"><img alt="Python: 3.10+" src="https://img.shields.io/badge/python-3.10%2B-306998?logo=python&logoColor=white&style=for-the-badge"></a>
  <a href="https://github.com/psf/black"><img alt="Code style: black" src="https://img.shields.io/badge/code%20style-black-black?style=for-the-badge"/></a>
  <a href="https://www.codacy.com/gh/pacstall/pacup/dashboard?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=pacstall/pacup&amp;utm_campaign=Badge_Grade"><img alt="Codacy: grade" src="https://img.shields.io/codacy/grade/4b1365e6f7d2474283243f62b2c5973d?label=Codacy&logo=codacy&style=for-the-badge"></a>
  <a href="https://pypi.org/project/pacup/"><img alt="PyPI: version" src="https://img.shields.io/pypi/v/pacup?color=%233775a9&logo=pypi&logoColor=white&style=for-the-badge"></a>
<p/>
<p align="center">
  <!-- Social -->
  <a href="https://discord.gg/yzrjXJV6K8"><img alt="join discord" src="https://img.shields.io/discord/839818021207801878?color=5865F2&label=Discord&logo=discord&logoColor=FFFFFF&style=for-the-badge"></a>
  <a href="https://reddit.com/r/pacstall"><img src="https://img.shields.io/reddit/subreddit-subscribers/pacstall?label=Reddit&color=FF4301&style=for-the-badge&logo=reddit&logoColor=FFFFFF" loading="lazy"></a>
  <a href="https://social.linux.pizza/web/@pacstall"><img alt="Mastodon Follow" src="https://img.shields.io/mastodon/follow/107278715447740005?color=3088d4&domain=https%3A%2F%2Fsocial.linux.pizza&label=Mastodon&logo=mastodon&logoColor=white&style=for-the-badge" loading="lazy"></a>
  <a href="https://matrix.to/#/#pacstall:matrix.org"><img alt="join matrix" src="https://img.shields.io/matrix/pacstall:matrix.org?color=888888&label=Matrix&logo=Matrix&style=for-the-badge"></a>
<p/>

## What is this?

Pacup (**Pac**script **Up**dater) is a maintainer helper tool to help
maintainers update their pacscripts. It semi-automates the tedious task of
updating pacscripts, and aims to make it a fun process for the maintainer!

## Installation

To install the latest release run:

```console
$ pacstall -I pacup-bin # or pip install pacup
```

To install the latest development build run:

```console
$ pip install git+https://github.com/pacstall/pacup
```

## Usage

```console
Usage: pacup [OPTIONS] PACSCRIPTS...

Updates specified pacscripts.
If ship flag is passed, the pacscript will be prepared for shipping to upstream.
After the pacscript is prepared, it will be committed and pushed to the origin remote.
This requires you to be present in your cloned fork.

╭─ Arguments ──────────────────────────────────────────────────────────────────────────────────────────╮
│ *    pacscripts      PACSCRIPTS...  The pacscripts to update. [default: None] [required]             │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────╮
│ --show-repology       -r                                       Show the parsed repology data and     │
│                                                                exit.                                 │
│ --debug               -d                                       Turn on debugging mode.               │
│ --version             -v                                       Show the version and exit.            │
│ --ship                -s                                       Prepare the pacscript for shipping to │
│                                                                upstream.                             │
│ --install-completion          [bash|zsh|fish|powershell|pwsh]  Install completion for the specified  │
│                                                                shell.                                │
│                                                                [default: None]                       │
│ --show-completion             [bash|zsh|fish|powershell|pwsh]  Show completion for the specified     │
│                                                                shell, to copy it or customize the    │
│                                                                installation.                         │
│                                                                [default: None]                       │
│ --help                                                         Show this message and exit.           │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────╯
```

You can get this help text by running `pacup --help`.

You should visit our [wiki](https://github.com/pacstall/pacup/wiki/Wiki), for
more information on how to use the `repology` key.

## How does it work?

Suppose `foo.pacscript` is outdated.

On running `pacup foo.pacscript` Pacup will parse the pacscript's variables,
then it compiles a list of filters specified in the `repology` variable in the
pacscript. Then it queries the [Repology API](https://repology.org/api) to get
all the repositories which have packaged that package. After which it applies
the filter to the response, and from the filtrate it considers the most common
version to be the latest.

Then it replaces all occurrences of the previous `version`'s value in the `url`
with the latest one placeholder's value with the latest version, and downloads
the new package, and generates it's hash.

Then writes the edited pacscript and installs it with
[Pacstall](https://github.com/pacstall/pacstall), after installation it asks
the user to confirm that the installed package works. On approval the pacscript
is considered successfully upgraded and the program ends.

## Caveats

* Does not work with `-git` pacscripts as those pacscripts are auto updating.
* Doesn't work if a pacscript doesn't have an equivalent
  [Repology](https://repology.org/) package.

## Stats

<p align="center"><img alt="Repobeats analytics image" src="https://repobeats.axiom.co/api/embed/80bc45a6d65fbfb43905aa22b3950badc09edd97.svg" /></p>

## License

```monospace
    ____             __  __
   / __ \____ ______/ / / /___
  / /_/ / __ `/ ___/ / / / __ \
 / ____/ /_/ / /__/ /_/ / /_/ /
/_/    \__,_/\___/\____/ .___/
                      /_/

Copyright (C) 2022-present

This file is part of PacUp

PacUp is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

PacUp is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with PacUp.  If not, see <https://www.gnu.org/licenses/>.
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/pacstall/pacup",
    "name": "pacup",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.10,<4",
    "maintainer_email": "",
    "keywords": "aur,cli,command line,console,debian,pacscript,pacstall,ubuntu,repology",
    "author": "Sourajyoti Basak",
    "author_email": "wiz28@protonmail.com",
    "download_url": "https://files.pythonhosted.org/packages/89/df/ad0ec75c639af9de73d7f616b7be19da8b9c7d8866ee1fc44802d4c17cf1/pacup-2.1.1.tar.gz",
    "platform": null,
    "description": "<p align=\"center\"><img alt=\"logo\" src=\"https://raw.githubusercontent.com/pacstall/pacup/master/imgs/logo.png\"></p>\n<h1 align=\"center\">Pacup</h1>\n<p align=\"center\">\n  <a href=\"https://www.python.org/\"><img alt=\"Python: 3.10+\" src=\"https://img.shields.io/badge/python-3.10%2B-306998?logo=python&logoColor=white&style=for-the-badge\"></a>\n  <a href=\"https://github.com/psf/black\"><img alt=\"Code style: black\" src=\"https://img.shields.io/badge/code%20style-black-black?style=for-the-badge\"/></a>\n  <a href=\"https://www.codacy.com/gh/pacstall/pacup/dashboard?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=pacstall/pacup&amp;utm_campaign=Badge_Grade\"><img alt=\"Codacy: grade\" src=\"https://img.shields.io/codacy/grade/4b1365e6f7d2474283243f62b2c5973d?label=Codacy&logo=codacy&style=for-the-badge\"></a>\n  <a href=\"https://pypi.org/project/pacup/\"><img alt=\"PyPI: version\" src=\"https://img.shields.io/pypi/v/pacup?color=%233775a9&logo=pypi&logoColor=white&style=for-the-badge\"></a>\n<p/>\n<p align=\"center\">\n  <!-- Social -->\n  <a href=\"https://discord.gg/yzrjXJV6K8\"><img alt=\"join discord\" src=\"https://img.shields.io/discord/839818021207801878?color=5865F2&label=Discord&logo=discord&logoColor=FFFFFF&style=for-the-badge\"></a>\n  <a href=\"https://reddit.com/r/pacstall\"><img src=\"https://img.shields.io/reddit/subreddit-subscribers/pacstall?label=Reddit&color=FF4301&style=for-the-badge&logo=reddit&logoColor=FFFFFF\" loading=\"lazy\"></a>\n  <a href=\"https://social.linux.pizza/web/@pacstall\"><img alt=\"Mastodon Follow\" src=\"https://img.shields.io/mastodon/follow/107278715447740005?color=3088d4&domain=https%3A%2F%2Fsocial.linux.pizza&label=Mastodon&logo=mastodon&logoColor=white&style=for-the-badge\" loading=\"lazy\"></a>\n  <a href=\"https://matrix.to/#/#pacstall:matrix.org\"><img alt=\"join matrix\" src=\"https://img.shields.io/matrix/pacstall:matrix.org?color=888888&label=Matrix&logo=Matrix&style=for-the-badge\"></a>\n<p/>\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!\n\n## Installation\n\nTo install the latest release run:\n\n```console\n$ pacstall -I pacup-bin # or pip install pacup\n```\n\nTo install the latest development build run:\n\n```console\n$ pip install git+https://github.com/pacstall/pacup\n```\n\n## Usage\n\n```console\nUsage: pacup [OPTIONS] PACSCRIPTS...\n\nUpdates specified pacscripts.\nIf ship flag is passed, the pacscript will be prepared for shipping to upstream.\nAfter the pacscript is prepared, it will be committed and pushed to the origin remote.\nThis requires you to be present in your cloned fork.\n\n\u256d\u2500 Arguments \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 *    pacscripts      PACSCRIPTS...  The pacscripts to update. [default: None] [required]             \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\u256d\u2500 Options \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 --show-repology       -r                                       Show the parsed repology data and     \u2502\n\u2502                                                                exit.                                 \u2502\n\u2502 --debug               -d                                       Turn on debugging mode.               \u2502\n\u2502 --version             -v                                       Show the version and exit.            \u2502\n\u2502 --ship                -s                                       Prepare the pacscript for shipping to \u2502\n\u2502                                                                upstream.                             \u2502\n\u2502 --install-completion          [bash|zsh|fish|powershell|pwsh]  Install completion for the specified  \u2502\n\u2502                                                                shell.                                \u2502\n\u2502                                                                [default: None]                       \u2502\n\u2502 --show-completion             [bash|zsh|fish|powershell|pwsh]  Show completion for the specified     \u2502\n\u2502                                                                shell, to copy it or customize the    \u2502\n\u2502                                                                installation.                         \u2502\n\u2502                                                                [default: None]                       \u2502\n\u2502 --help                                                         Show this message and exit.           \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\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<p align=\"center\"><img alt=\"Repobeats analytics image\" src=\"https://repobeats.axiom.co/api/embed/80bc45a6d65fbfb43905aa22b3950badc09edd97.svg\" /></p>\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 <https://www.gnu.org/licenses/>.\n```\n",
    "bugtrack_url": null,
    "license": "GPL-3.0-or-later",
    "summary": "Help maintainers update pacscripts",
    "version": "2.1.1",
    "project_urls": {
        "Documentation": "https://github.com/pacstall/pacup/wiki",
        "Homepage": "https://github.com/pacstall/pacup",
        "Repository": "https://github.com/pacstall/pacup"
    },
    "split_keywords": [
        "aur",
        "cli",
        "command line",
        "console",
        "debian",
        "pacscript",
        "pacstall",
        "ubuntu",
        "repology"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "55e1858047ef253ff296284b78eba0b7a204ba6cb7801845854a3e01ae5bc3fd",
                "md5": "9f75896507f4ce8ea86e81a20bd7bef3",
                "sha256": "fb8366a7490efcbc8f209f11bba1e729a0a66aabe0fdda66ef03581288905d79"
            },
            "downloads": -1,
            "filename": "pacup-2.1.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9f75896507f4ce8ea86e81a20bd7bef3",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10,<4",
            "size": 32326,
            "upload_time": "2024-02-19T02:25:45",
            "upload_time_iso_8601": "2024-02-19T02:25:45.446210Z",
            "url": "https://files.pythonhosted.org/packages/55/e1/858047ef253ff296284b78eba0b7a204ba6cb7801845854a3e01ae5bc3fd/pacup-2.1.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "89dfad0ec75c639af9de73d7f616b7be19da8b9c7d8866ee1fc44802d4c17cf1",
                "md5": "d709cfac117f73ab179ead7ec7e9e241",
                "sha256": "203083d1a2d8f146cef760ed0c90bf19d4068e67908edd7fd4092b0ece51d33c"
            },
            "downloads": -1,
            "filename": "pacup-2.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "d709cfac117f73ab179ead7ec7e9e241",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10,<4",
            "size": 29850,
            "upload_time": "2024-02-19T02:25:47",
            "upload_time_iso_8601": "2024-02-19T02:25:47.519138Z",
            "url": "https://files.pythonhosted.org/packages/89/df/ad0ec75c639af9de73d7f616b7be19da8b9c7d8866ee1fc44802d4c17cf1/pacup-2.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-19 02:25:47",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "pacstall",
    "github_project": "pacup",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pacup"
}
        
Elapsed time: 3.29172s