ZWLQGZQABEX4KWHT3CWIGBDLOGEQS2I3WVI6JJZFHT6M2CEVUKLQC
<h1 align="center">
<!-- Formatting idea shamelessly stolen from https://github.com/OneGal/viper ty for the idea :) -->
<img src="https://static.wikia.nocookie.net/titanfall/images/d/d5/ScorchIcon.png" />
<br>
Papa
<br>
<img alt="GitHub Workflow Status" src="https://img.shields.io/github/workflow/status/AnActualEmerald/papa/Rust"> <img alt="Crates.io (latest)" src="https://img.shields.io/crates/dv/papa">
</h1>
<p align="center">Mod manager CLI for <a href="https://github.com/R2Northstar/Northstar">Northstar</a></p>
## Features
- Install and update Northstar from the command line
- Search Thunderstore for mods from the command line
- Download a mod *and* its dependencies with one command
- Easily keep your mods up to date
- Per-directory tracking makes hosting multiple servers with different mods from one machine easy
- Enable and disable mods independent of N*'s own enabling and disabling
## Usage
```bash
papa install server_utilities #install a mod
papa list #list installed mods
papa update #update any out of date mods
papa remove server_utilities #uninstall a mod
papa clear #clear the download cache
```
## Installation
Regardless of which method you use, I recommend setting your mods directory to something useful before using `papa`
```bash
papa config -m /PATH/TO/MODS/FOLDER/
```
Or initialize Northstar to set everything up automatically
```bash
papa ns init /PATH/TO/TITANFALL2/
```
### Ubuntu/Debian(& derivatives)
Download the `.deb` file from the latest release and install it using whatever you usually use to install packages:
```bash
sudo apt install ./papa_2.1.0.deb
```
### Windows
Download and run the `.msi` installer from the latest release.
### Using prebuilt binaries
Download the appropriate binary for your system (make sure you get the `.exe` for Windows) and place it somewhere in your PATH. You should then be able to call the `papa` command from your favorite command line.
### Building from source
If you have cargo installed on your system, you should be able to install `papa` directly from [crates.io](https://crates.io)
```bash
cargo install papa
```
or from the git repo
```bash
cargo install --git https://github.com/AnActualEmerald/papa
```
If you want to build from source but don't have cargo installed, you should check out [rustup.rs](https://rustup.rs)
## Caveats
- The default install directory is **relative to the current working directory**, meaning that running the command in ~/ will install mods into ~/mods
- Installed mods are tracked by a `.papa.ron` file in the mods directory, so each directory will have its own list of mods
- For now updates will blow up any changes made within the mod files themselves
MIT License
Copyright (c) 2022 AnActualEmerald
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
[package]
name = "papa"
version = "2.3.0"
edition = "2021"
license = "MIT"
description = "A cli mod manager for the Northstar launcher"
readme = "README.md"
authors = ["AnActualEmerald"]
repository = "https://github.com/AnActualEmerald/papa"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
anyhow = "1.0.58"
clap = { version = "3.2.8", features = ["derive", "color"] }
convert_case = "0.5.0"
directories = "4.0.1"
env_logger = "0.9.0"
futures-util = "0.3.21"
indicatif = "0.16.2"
log = "0.4.17"
regex = "1.5.6"
reqwest = { version = "0.11.11", features = ["stream"] }
ron = "0.7.1"
rustyline = "9.1.2"
serde = { version = "1.0.138", features = ["derive"] }
serde_json = "1.0.82"
tokio = { version = "1.19.2", features = ["full"] }
toml = "0.5.9"
zip = "0.6.2"
[features]
default = ["northstar"]
northstar = []
launcher = ["northstar"]
[profile.release]
strip = true
lto = true
opt-level = "z"
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Fixed
- `update` now handles linked mods correctly
## v2.2.0
### Added
- Global install option (unix only)
- `inlcude` and `exclude` commands for using global mods (unix only)
- Options to `list` for global and all mods
- `update` now lists the mods it will update, similar to `install`
### Changed
- Improved formatting a bit when installing many mods
### Fixed
- Cache breaking for packages with `_` in the package name
- Cache not actually clearing without `force` option
- Crash where the config directory wasn't be created properly
## v2.1.1
### Added
- `force` option to `install` command
- Cache now cleans older versions of packages
### Fixed
- Running `search` with no terms returning no results rather than everything
- `install` asking to install nothing
## v2.1.0
### Added
- Northstar `install`, `init`, and `update` commands
- File overwrite warning on `update`
- Overwrite protection for `.cfg` files
- debug flag for base command
### Chagned
- Internal error handling
- Slimmed binary sized a bit
### Fixed
- `update` not respecting disabled status
- `disable` and `enable` not properly modifying all sub mods if the parent mod's name was used
- `install` potentially using an outdated version from the cache
## v2.0.0
### Added
- Northstar `install`, `init`, and `update` commands
- File overwrite warning on `update`
- Overwrite protection for `.cfg` files
- debug flag for base command
### Chagned
- Internal error handling
- Slimmed binary sized a bit
### Fixed
- `update` not respecting disabled status
- `disable` and `enable` not properly modifying all sub mods if the parent mod's name was used
- `install` potentially using an outdated version from the cache
## v2.0.0
### Added
- `search` command
- Support "bundle" type mods
- `enable` and `disable` commands
### Changed
- Improved list formatting
- More colorful output for readability
## v1.0.0
### Added
- `update` command
- Installed mod tracking
- Support ~~somewhat~~ non-standard directory structures
- Pre-installation confirmation
### Changed
- Get download URLs from thunderstore api
- Use only package name for selecting packages
- `install` and `remove` are now case-insensitive
- Formatting changes
## v0.2.0
### Added
- `config` command to manage configuration
### Changed
- Improved `list` command formatting
### Fixed
- `remove` command not working on windows
- Install message not always getting package name