README
¶
MakeGo
MakeGo is a simple tool for compilation and packaging of Go projects. It uses a single TOML configuration file to automate the build process and package for all major Linux systems.
How to Build
- Clone or download the repository.
- Build using
- MakeGo: Run
makego
- Go: Run
go get && go build -ldflags="-w -s" .
- MakeGo: Run
Installation
MakeGo can be downloaded as a binary, as a package from the Releases page or using Go's package manager.
Installing Using Go
- Run:
go install github.com/DanielNos/makego@latest
Installing Binary
Linux
- Download the correct MakeGo binary for your system.
- Move the package to /usr/local/bin:
mv [binary name] /usr/local/bin/makego
Windows
- Download the correct MakeGo binary for your system.
- Move it to the folder where it should be installed.
- Open the Edit the system environment variables application.
- Go to the Advanced tab and click on the Environment Variables... button.
- Find the Path environment variable and click Edit.
- Click New and write the path to your installation folder to the new Field.
- Click OK. You may need to restart your terminal or system to apply this change.
Installing Package
- Download the correct MakeGo package for your package manager.
- Install it using the package manager:
- APT:
sudo apt install [package path]
- DNF:
sudo dnf install [package path]
- PacMan:
sudo pacman -S [package path]
- APT:
Quick Start
- Create a new configuration file:
makego new
- Edit the make.toml file to suit your needs.
- Build your project:
makego
Commands
Usage
makego [action [argument]] [config file]
Actions
Default action is all
.
help
- Shows help.new [template]
- Creates a new config from a template. Templates: normal, all, emptyclean
orcln
- Removes all build and package directories.binary
orbin
- Builds project binaries.package
orpkg
- Builds project binaries and packages them.all
- Does the same as package.purge
- Removes all build and packaging tools.
Flags
--help
or-h
- Shows help.--version
or-v
- Shows version.--time
or-t
- Prints timestamps for log messages.
Config File
This is how the default make.toml template looks:
[application]
name = "app"
version = "1.0.0"
description = "My cool application."
long_description = "My cool application."
url = "https://github.com/Username/app"
license = ""
gui = false
[desktop_entry]
name = "App"
icon = "./icon.png"
categories = [ "Utility" ]
[maintainer]
name = "Name Surname"
email = "name.surname@email.com"
[build]
target = "."
flags = "-ldflags=\"-w -s\""
platforms = [ "linux/amd64", "windows/amd64", "darwin/arm64" ]
[deb]
package = false
architectures = [ "amd64" ]
[rpm]
package = false
build_src = true
architectures = [ "amd64" ]
[pkg]
package = true
architectures = [ "amd64" ]
[appimage]
package = true
architectures = [ "amd64" ]
custom_apprun = ""
application
Field | Data Type | Description |
---|---|---|
name | string | The name of the application. |
version | string | The version of the application. Should be either X.X.X or X.X . |
description | string | A short description of your application. |
long_description | string | A long description of your application. Used only in RPM packages. |
url | string | The url of the main web page for your application. |
license | string | A short name of your project's license (MIT, AGPLv2, ...). Should not contain spaces. |
gui | bool | Whether the application has a GUI or is terminal only. |
desktop_entry
Field | Data Type | Description |
---|---|---|
name | string | The name of the application used in desktop entries of the application. |
icon | string | The icon of the desktop entry. |
categories | string array | The categories in which your application falls. List of all valid categories can be found at specifications.freedesktop.org. |
maintainer
Field | Data Type | Description |
---|---|---|
name | string | The name and surname of the project maintainer. |
string | The email address of the project maintainer. |
build
Field | Data Type | Description |
---|---|---|
target | string | Build target when running go build [target] . |
flags | string | Build flags. |
platforms | string array | Build platforms in format [GOOS]/[GOARCH] . List of all operating systems and architectures can be found on go.dev/doc. |
deb
, pkg
Field | Data Type | Description |
---|---|---|
package | bool | Should the application be packaged for this packaging system. |
architectures | string array | Which architectures should be packaged. |
rpm
Field | Data Type | Description |
---|---|---|
package | bool | Should the application be packaged for this packaging system. |
build_src | bool | Should the source package be built. |
architectures | string array | Which architectures should be packaged. |
appimage
Field | Data Type | Description |
---|---|---|
package | bool | Should the application be packaged for this packaging system. |
architectures | string array | Which architectures should be packaged. |
custom_apprun | string | Path to custom AppRun. If left empty, official default AppRun will be used. |
Supported Architectures:
Package Format | Architectures |
---|---|
deb, RPM, AppImage | amd64, 386, arm, arm64 |
pkg | amd64 |
It's possible to package other architectures that aren't specified here, but they are either unsupported by the packaging system or not tested
Documentation
¶
There is no documentation for this package.
Click to show internal directories.
Click to hide internal directories.