To set up your project, create the following file structure:

|- pkgbuild/
|- ebuild/
  |- metadata/
    |- layout.conf
  |- profiles/
    |- categories
    |- repo_name
  |- COPYRIGHT.txt
  |- repositories.xml
|- deb/
|- rpm/
  |- BUILD/
  |- RPMS/
  |- SRPMS/
  |- SOURCES/
  |- SPECS/
|- templates/
  |- rpm/
  |- deb/
  |- ebuild/
  |- pkgbuild/
|- pkggen.yaml

For more information on how to set up all files and folders other than pkggen.yaml, refer to the repository subarticles.

The pkggen.yaml file

This file lists all the metadata that is needed to generate your packages. It looks like this:

github:
  generator: "github"
  packages:
    - name: "untitled-cli-parser"
      github:
        user: "MadLadSquad"
        repo: "UntitledCLIParser"
        query: "releases"
        artifacts: [ "untitled-cli-parser-{version}.tar.xz" ]
        transforms:
          - [ "v", "" ]
    - name: "untitled-imgui-framework"
      github:
        user: "MadLadSquad"
        repo: "UntitledImGuiFramework"
        query: "releases"
        artifacts: [ "untitled-imgui-framework-{version}.tar.xz" ]
        transforms:
          - [ "v", "" ]

The root fields(github in this example, but there can be more than one) are used to list the different generator jobs. Each generator job uses a generation generator, such as github, url or a generator that you wrote yourself. Writing your own generator is covered in later pages.

After defining the generator for the job, you need to provide a packages array where each entry is an object that contains a name at the bare minimum. Different generators have their own data entries. Any other entry that is not name or a generator a generator entry and is not an object is a custom variable that can be accessed from templates.

The templates directory

Coming soon!