## Description Are you tired of manually controlling the version of programms not found in your distros repositories? This tool manages those for you. The goal is to make installing things from source more similar to installing things using a package manager. #### Why the weird name? I wanted to name it "gitman" but there are multiple other things named that including [this](https://pypi.org/project/gitman/) python project. Since a different open-source project is already named that I gave up on the name but wanted to keep it short and simple. I came up with the name gitwife because this is a housewife for your programs installed from source. ## Dependencies: Debian/Ubuntu and derivatives ``` sudo apt install libssl3 libssl-dev libc6 libgit2 ``` Fedora ``` sudo dnf install openssl-devel libgcc glibc libgit2 ``` For everyone else you will need the following: * cargo * libgit2 * libssl * libcrypto * libgcc * libm * libc ## Installation If you are on Arch Linux or any derivatives I recommend installing it from the [AUR](https://aur.archlinux.org/packages/gitwife) or [AUR-git](https://aur.archlinux.org/packages/gitwife-git). ###### Install rustup Use this script to install rustup (if you haven't installed rust/cargo already). For some of you rust may be in your Repositories. You can use that as well. If it does not work please open an issue and use rustup in the meantime. Follow the on screen instructions. ``` curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh ``` ###### Install gitwife from source ``` git clone https://gitlab.com/Teddy-Kun/gitwife/ cd gitwife make sudo make install ``` OR ###### Install gitwife using cargo ``` cargo install gitwife ``` Note: Cargo is the package manager for Rust and it gets installed along the compiler when you use rustup. ## Usage First clone a repository using one of the following 2 methods: 1. Cloning the main branch: ```gitwife -C [URL]``` **OR** 2. Cloning a release (tag): For the latest tag created: ```gitwife -T [URL]``` For selecting a tag among all tags: ```gitwife -I [URL]``` Then build the repository with: - ```gitwife -m [NAME]``` If you want to update all installed "packages" use the following: - ```gitwife -u``` Uninstallation of "packages" is impossible as gitwife has no knowledge of what files changed in the process. However it is possible to tell it to stop managing a package using: - ```gitwife -f [NAME]``` Uninstallation of the programm has to be done manually afterwards. Please refer to the original projects instructions for this process. If you want to unfreeze a frozen repository use: - ```gitwife -g [NAME]``` You can also combine the commands, i.e: - ```gitwife -C [URL] -m``` - ```gitwife -C [URL] -m -u``` Note that in the case of "make" a [NAME] is not necessary if used in conjunction with "release" or "clone". It will automatically build the cloned repostiory Other commands can be read using the help menu: - ```gitwife -h``` Output: ``` Usage: gitwife [options] Running without options aliases to 'gitwife -u' Options: -C, --clone [URL] Clones a repository -T, --tag [URL] Clones a repositories latest tag/release if latest is set to true in the config file -I, --interactive [URL] Clones a tag but asks which one instead of the latest -u, --upgrade [REPO_NAME] Upgrades all repositories/The chosen repository -m, --make [NAME] Build the repository based on the make.gitwife file. If you use this at the same time as '-C' or '-R' [NAME] is not required. -f, --freeze [NAME] gitwife ignores updates for [NAME] -g, --unfreeze [NAME] gitwife checks updates for [NAME] -v, --version Outputs the current Version -h, --help print this help menu ``` #### How does gitwife know how to build the repository? Thats the trick, it doesn't. When you use the "make" command a bash script is created and then consequently opened in your default text editor. The user is then asked to complete the file as necessary/as per the instructions of the project in question. The file is then saved for future usage. ## File Locations The config (and make) files are located under your "XDG_CONFIG_HOME/gitwife/" and the cloned repositories under your "XDG_DATA_HOME/gitwife/" directories. The global default make file is located under "/usr/share/gitwife/default_make.gitwife" (this file does not exist if you install gitwife via cargo). The latest 2 log files are saved at "XDG_STATE_HOME/gitwife/". ## Authors and acknowledgment Currently I have made everything myself. If pull requests are opened I will agknowledge the persons here. Owner: Paul Orzel ## License This Project is licensed under the GPL-V3.