gitpkg


Namegitpkg JSON
Version 0.3.0 PyPI version JSON
download
home_pagehttps://github.com/atomicptr/gitpkg
SummaryA git powered package manager built on top of submodules.
upload_time2023-11-27 05:25:58
maintainer
docs_urlNone
authorChristopher Kaster
requires_python>=3.10,<4
licenseGPLv3
keywords packaging dependency
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # gitpkg

A git powered package manager built on top of submodules.

## Install

The recommended way to install git-pkg is via [pipx](https://pypa.github.io/pipx/):

```bash
$ pipx install gitpkg
```

## Usage

The first thing you need to do to make your project work with git pkg is add a
destination. A destination is a place where your packages will be installed into,
you can have multiple of these.

Install a destination by using:

```bash
$ git pkg dest add addons
```

The directory does not have to exist, it will be automatically generated.

Next we need to install packages lets do so by:

```bash
$ git pkg add https://github.com/coppolaemilio/dialogic
```

But wait! While we now have an addons/dialogic directory, the thing we actually
wanted there is now at addons/dialogic/addons/dialogic

Many projects, in this case Godot projects have the thing that is important to us
in a subdirectory, to have this subdirectory in the desired location we have
to define it as the package root by:

```bash
# You can just re-run this it will reconfigurate the package
$ git pkg add https://github.com/coppolaemilio/dialogic --package-root addons/dialogic
# OR: short hand
$ git pkg add https://github.com/coppolaemilio/dialogic -r addons/dialogic
```

Nice! But what do I do if the repository name and the directory I want is different?

Lets look at the next example:

```bash
$ git pkg add https://github.com/viniciusgerevini/godot-aseprite-wizard.git -r addons/AsepriteWizard
```

While this again will add addons/godot-aseprite-wizard we want the directory name to be
AsepriteWizard we can do this by:

```bash
$ git pkg add https://github.com/viniciusgerevini/godot-aseprite-wizard.git -r addons/AsepriteWizard --name AsepriteWizard
# OR:
$ git pkg add https://github.com/viniciusgerevini/godot-aseprite-wizard.git --package-root-with-name addons/AsepriteWizard
# OR: actual shorthand
$ git pkg add https://github.com/viniciusgerevini/godot-aseprite-wizard.git -rn addons/AsepriteWizard
```

Oh no! Now we have addons/godot-aseprite-wizard and addons/AsepriteWizard... why?
Names are essential for identifying projects so this can not be updated, we just have to remove
the unwanted package now:

```bash
$ git pkg remove godot-aseprite-wizard
```

Nice! Now we can finally get back to work!

A few days later...

It looks like the packages received some updates! To update all installed packages simply run:

```bash
$ git pkg update
# You can also update singular packages by providing their names
$ git pkg update dialogic AsepriteWizard
```

Since this is powered by git submodules, you have to commit the update.

## Motivation

Managing other git repositories as dependencies is essentially a very good idea
but git submodules are a pain to work with so there came the idea of having a 
simpler approach that feels more like using something like npm, composer etc.

I mostly wrote this to use this in Godot projects to manage the addons I install
but quickly realized this can be used for a lot of programming languages where
package managers are not an option.

This is essentially just an opinionated wrapper around git and git submodules.

## License

GNU General Public License v3

![](https://www.gnu.org/graphics/gplv3-127x51.png)

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/atomicptr/gitpkg",
    "name": "gitpkg",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.10,<4",
    "maintainer_email": "",
    "keywords": "packaging,dependency",
    "author": "Christopher Kaster",
    "author_email": "me@atomicptr.de",
    "download_url": "https://files.pythonhosted.org/packages/4b/74/7b324ce3bdb9e9cd5787c942c1ad212defffd0818a9ac43a5abef95b679c/gitpkg-0.3.0.tar.gz",
    "platform": null,
    "description": "# gitpkg\n\nA git powered package manager built on top of submodules.\n\n## Install\n\nThe recommended way to install git-pkg is via [pipx](https://pypa.github.io/pipx/):\n\n```bash\n$ pipx install gitpkg\n```\n\n## Usage\n\nThe first thing you need to do to make your project work with git pkg is add a\ndestination. A destination is a place where your packages will be installed into,\nyou can have multiple of these.\n\nInstall a destination by using:\n\n```bash\n$ git pkg dest add addons\n```\n\nThe directory does not have to exist, it will be automatically generated.\n\nNext we need to install packages lets do so by:\n\n```bash\n$ git pkg add https://github.com/coppolaemilio/dialogic\n```\n\nBut wait! While we now have an addons/dialogic directory, the thing we actually\nwanted there is now at addons/dialogic/addons/dialogic\n\nMany projects, in this case Godot projects have the thing that is important to us\nin a subdirectory, to have this subdirectory in the desired location we have\nto define it as the package root by:\n\n```bash\n# You can just re-run this it will reconfigurate the package\n$ git pkg add https://github.com/coppolaemilio/dialogic --package-root addons/dialogic\n# OR: short hand\n$ git pkg add https://github.com/coppolaemilio/dialogic -r addons/dialogic\n```\n\nNice! But what do I do if the repository name and the directory I want is different?\n\nLets look at the next example:\n\n```bash\n$ git pkg add https://github.com/viniciusgerevini/godot-aseprite-wizard.git -r addons/AsepriteWizard\n```\n\nWhile this again will add addons/godot-aseprite-wizard we want the directory name to be\nAsepriteWizard we can do this by:\n\n```bash\n$ git pkg add https://github.com/viniciusgerevini/godot-aseprite-wizard.git -r addons/AsepriteWizard --name AsepriteWizard\n# OR:\n$ git pkg add https://github.com/viniciusgerevini/godot-aseprite-wizard.git --package-root-with-name addons/AsepriteWizard\n# OR: actual shorthand\n$ git pkg add https://github.com/viniciusgerevini/godot-aseprite-wizard.git -rn addons/AsepriteWizard\n```\n\nOh no! Now we have addons/godot-aseprite-wizard and addons/AsepriteWizard... why?\nNames are essential for identifying projects so this can not be updated, we just have to remove\nthe unwanted package now:\n\n```bash\n$ git pkg remove godot-aseprite-wizard\n```\n\nNice! Now we can finally get back to work!\n\nA few days later...\n\nIt looks like the packages received some updates! To update all installed packages simply run:\n\n```bash\n$ git pkg update\n# You can also update singular packages by providing their names\n$ git pkg update dialogic AsepriteWizard\n```\n\nSince this is powered by git submodules, you have to commit the update.\n\n## Motivation\n\nManaging other git repositories as dependencies is essentially a very good idea\nbut git submodules are a pain to work with so there came the idea of having a \nsimpler approach that feels more like using something like npm, composer etc.\n\nI mostly wrote this to use this in Godot projects to manage the addons I install\nbut quickly realized this can be used for a lot of programming languages where\npackage managers are not an option.\n\nThis is essentially just an opinionated wrapper around git and git submodules.\n\n## License\n\nGNU General Public License v3\n\n![](https://www.gnu.org/graphics/gplv3-127x51.png)\n",
    "bugtrack_url": null,
    "license": "GPLv3",
    "summary": "A git powered package manager built on top of submodules.",
    "version": "0.3.0",
    "project_urls": {
        "Homepage": "https://github.com/atomicptr/gitpkg",
        "Repository": "https://github.com/atomicptr/gitpkg"
    },
    "split_keywords": [
        "packaging",
        "dependency"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d803fb727272e4deb456d621c66221165efd85357b64f392473e19b7a8bbcebd",
                "md5": "2e0ee96983fc082953ae954dc69c433d",
                "sha256": "fdb7b00f4b1a63eda2958eb8c26e90f587346c97873a1b6c44a7d1a1254e5b0b"
            },
            "downloads": -1,
            "filename": "gitpkg-0.3.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "2e0ee96983fc082953ae954dc69c433d",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10,<4",
            "size": 30617,
            "upload_time": "2023-11-27T05:25:56",
            "upload_time_iso_8601": "2023-11-27T05:25:56.476382Z",
            "url": "https://files.pythonhosted.org/packages/d8/03/fb727272e4deb456d621c66221165efd85357b64f392473e19b7a8bbcebd/gitpkg-0.3.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4b747b324ce3bdb9e9cd5787c942c1ad212defffd0818a9ac43a5abef95b679c",
                "md5": "7cb370d4bece873bf2316cca95c6a9b3",
                "sha256": "5a2f7358340454986784683892004b4d4f9f49b96a357882b6a78b362b73c892"
            },
            "downloads": -1,
            "filename": "gitpkg-0.3.0.tar.gz",
            "has_sig": false,
            "md5_digest": "7cb370d4bece873bf2316cca95c6a9b3",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10,<4",
            "size": 26065,
            "upload_time": "2023-11-27T05:25:58",
            "upload_time_iso_8601": "2023-11-27T05:25:58.042166Z",
            "url": "https://files.pythonhosted.org/packages/4b/74/7b324ce3bdb9e9cd5787c942c1ad212defffd0818a9ac43a5abef95b679c/gitpkg-0.3.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-11-27 05:25:58",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "atomicptr",
    "github_project": "gitpkg",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "gitpkg"
}
        
Elapsed time: 0.29153s