Skip to content

Releases: juraj-hrivnak/Pakku

v0.21.0

02 Nov 18:28
Compare
Choose a tag to compare
  • Improved projects updating, by @SettingDust in #49.
    • Projects now prefer their current loaders of project files when updating.
  • Added option the specify the project type when adding projects, by @SettingDust in #54.
    • Fixed duplicated project files when updating.
  • Updated Exporting a Modpack docs page and improved the Managing Projects docs page.

v0.20.2

14 Oct 18:24
Compare
Choose a tag to compare
  • Fixed an issue that caused project files from CurseForge to be outdated due to incorrect release date parsing.

v0.20.1

13 Oct 00:07
Compare
Choose a tag to compare
  • Reverted glob pattern matching support for overrides, due to performance limitations with large modpacks.
    • It will be reintroduced in the next releases.

v0.20.0

12 Oct 16:48
Compare
Choose a tag to compare

What's new?

  • Implemented glob pattern support for specifying overrides. by @SettingDust in #43, and @juraj-hrivnak.
    • An asterisk "*" matches anything except a slash. The character "?" matches any one character except "/". The range notation, e.g. [a-zA-Z], can be used to match one of the characters in a range.
    • Two consecutive asterisks ("**") means match in all directories; <directory>/** means match everything inside the directory.
    • An optional prefix "!" negates the pattern; any matching file included by a previous pattern will become excluded again.
  • Implemented retry logic for the fetch command.
    • Use pakku fetch --retry to retry downloading when it fails, with an optional number of times to retry. (Defaults to 2.)
  • Added support for specifying a different version of an already added project using the add command.
  • Added simple colored diff for showing changes to file names when using the status command.
  • The newest file from all providers is now preferred when downloading, by @SettingDust in #41.

v0.19.0

08 Oct 21:27
Compare
Choose a tag to compare

Highlights

  • Added the cfg command for configuring properties of the config file, by @SettingDust in #29.
    • This change deprecated the pakku set [<projects>] argument. Use the config file (pakku.json) or the cfg prj subcommand instead.
  • Implemented configurable subpaths for projects and configurable paths for project types.
  • Implemented configurable project aliases, by @SettingDust in #34.
  • Added support for data packs.
  • Added better support for multi-loader modpacks, by @SettingDust in #36 and #37. (Sinytra Connector support.)
    • Project files are now also sorted in order of loaders in the lock file.
  • Rewritten fetch command's deleting algorithm to account for subpaths.
    • Saves & screenshots are always excluded.
  • Improved the UI of the status command.
    • Now it's much nicer and shows you changes to project files.

Fixes

  • Fixed ConcurrentModificationException on running fetch command in some cases.
  • Fixed setting loaders using the set command when projects have unusual loaders.

Configurable Subpaths

There is now a new subpath property for projects that you configure in the config file or using the cfg prj subcommand.

Config file - syntax:

{
  "projects": {
    "<project>": {
      "subpath": "<path>"
    }
  }
}

Config file - example usage:

{
  "projects": {
    "sodium-extras": {
      "subpath": "optimize.client"
    },
    "iris": {
      "subpath": "decoration.client"
    }
  }
}

Configurable Paths for Project Types

There is now a variable for each project type that you configure in the config file or using the cfg command.

Config file - syntax:

{
  "paths": {
    "mods": "<path>",
    "resource_packs": "<path>",
    "data_packs": "<path>",
    "worlds": "<path>",
    "shaders": "<path>"
  }
}

Project Aliases

There is now a new aliases property of type array for projects that you configure in the config file or using the cfg prj subcommand.

Config file - syntax:

{
  "projects": {
    "<project>": {
      "aliases": ["<alias>"]
    }
  }
}

Config file - example usage:

{
  "projects": {
    "forgified-fabric-api": {
      "aliases": ["fabric-api"]
    }
  }
}

API

  • Updated Clikt to 5.0.0 & Mordant to 3.0.0.
  • Improved docs generation with better subcommand support.

v0.18.2

25 Sep 10:42
Compare
Choose a tag to compare
  • Fixed error when GitHub license URL is null.

v0.18.1

25 Sep 09:54
Compare
Choose a tag to compare
  • Fixed tag parsing in GitHub project arguments.

v0.18.0

24 Sep 17:17
Compare
Choose a tag to compare

Highlights

Pakku now fully supports GitHub.

Adding GitHub projects

GitHub repositories with releases can be added as projects.
To add a GitHub project, run pakku add {owner}/{repo} or pakku add https://github.com/{owner}/{repo}.

You can also use the prj subcommand: pakku add prj --gh {owner}/{repo} or pakku add prj --gh https://github.com/{owner}/{repo}

Combining projects is also possible: pakku add prj --mr greenery --gh juraj-hrivnak/Greenery

To add a specific version (tag) of a GitHub project, run pakku add {owner}/{repo}@{tag}, pakku add https://github.com/{owner}/{repo}/releases/tag/{tag} or pakku add https://github.com/{owner}/{repo}/tree/{tag}.

Updating

GitHub projects can be updated using the pakku update command.
They are also recognized in other commands as expected.

Exporting

For CurseForge, GitHub projects are added to the overrides.
For Modrinth, GitHub projects are added to the modrinth.index.json also with generated sha512 and sha1 hashes.

The project side of GitHub projects defaults to BOTH. If you need to change this, do so in pakku.json.
Pakku determines whether the GitHub project is redistributable based on its licence's spdx code. No licence means ARR.

UI

GitHub projects are displayed in the format: gh={owner}/{repo}

gh_support

Other Changes

  • Project types can now be overridden in the config file (pakku.json).
  • Deprecated set command's -s, --side and -r, --redistributable options. Use the config file (pakku.json) instead.

Technical Notes

  • Many functions now support IProjectProviders instead of Platforms only.
  • The lock file is now sorted by project names instead of slugs.
  • Implemented the ProjectArg monad to better handle project additions.
    • Its fold() function can be used to map the possible arg types:
      arg.fold(
          commonArg = { },
          gitHubArg = { }
      )
  • Integrity checking will now allow projects without hashes (GitHub) and will warn the user instead.

v0.17.1

10 Sep 15:56
Compare
Choose a tag to compare
  • Fixed add command not being invoked without a subcommand. (#22)
  • Updated to the latest snapshot of the Clikt library.
  • Added red color to platform names in slugs when files are missing.

v0.17.0

04 Sep 19:12
Compare
Choose a tag to compare
  • Added the prj subcommand for the add command.
    • With this subcommand you can specify the project you want to add precisely, using the --cf and/or --mr options.
    • This subcommand can be used multiple times.
    • Example usage: pakku add prj --mr iris --cf irisshaders
    • Note that the add command functionality remains the same.
  • Added descriptions to command arguments.