Skip to content

Latest commit

 

History

History
67 lines (50 loc) · 1.85 KB

README.md

File metadata and controls

67 lines (50 loc) · 1.85 KB

Flatpak Go modules helper

This CLI tool generates Flatpak sources directives for Go modules.

It helps avoid exposing network access to Flatpak build step, which is one of the requirements for publishing to Flathub.

Usage

go run github.com/dennwc/flatpak-go-mod@latest ./path/to/your/project

It will generate following files: go.mod.yml (or go.mod.json) and modules.txt.

Contents of go.mod.yml (or go.mod.json) should be copied into sources directives of Flatpak YAML. These directives will populate ./vendor during Flatpak build with all dependencies of your project, downloading them directly from Go modules mirror.

The modules.txt file should be copied into your Flatpak directory, which will be added to ./vendor directory during Flatpak build as well.

Then, build your Go project as usual. It should detect vendor directory automatically. You can also pass -mod=vendor to force vendoring mode during build.

Output

YAML

# Workaround for Go modules generated by github.com/dennwc/flatpak-go-mod
- type: file
  path: modules.txt
  dest: vendor
- type: archive
  url: https://proxy.golang.org/golang.org/x/mod/@v/v0.7.0.zip
  strip-components: 3
  dest: vendor/golang.org/x/mod
  sha256: 24abd1db13329873d72034dc27efad09cbc37d39cf28b8ff7bb3c2adc8eedef7

JSON

[
  {
    "type": "file",
    "path": "modules.txt",
    "dest": "vendor"
  },
  {
    "type": "archive",
    "url": "https://proxy.golang.org/golang.org/x/mod/@v/v0.7.0.zip",
    "strip-components": 3,
    "dest": "vendor/golang.org/x/mod",
    "sha256": "24abd1db13329873d72034dc27efad09cbc37d39cf28b8ff7bb3c2adc8eedef7"
  }
]

Options

  • line-pref customizes indentation in YAML/JSON file
  • dest-pref sets a prefix for sources.dest paths in YAML/JSON file
  • json changes the output format to JSON instead of YAML

License

MIT