Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ jobs:
"goreleaser",
"instant-client",
"jfrog-cli",
"kubectl",
"locale",
"make",
"mingw",
Expand Down
25 changes: 25 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ Below is a list with included features, click on the link for more details.
| [goreleaser](./features/src/goreleaser/README.md) | Installs GoReleaser. |
| [instant-client](./features/src/instant-client/README.md) | Installs the Oracle Instant Client Basic package. |
| [jfrog-cli](./features/src/jfrog-cli/README.md) | Installs the JFrog CLI. |
| [kubectl](./features/src/kubectl/README.md) | Installs kubectl and other tools for managing kubernetes. |
| [locale](./features/src/locale/README.md) | Allows setting the locale. |
| [make](./features/src/make/README.md) | Installs Make. |
| [mingw](./features/src/mingw/README.md) | Installs MinGW. |
Expand All @@ -42,6 +43,11 @@ Below is a list with included features, click on the link for more details.

## Usage

### Tokens

Some version lookups depend on APIs with a rate limit. Use the following environment variables to set api tokens to increase those limits:
* `DEV_FEATURE_TOKEN_GITHUB_API` - Set a token to use the GitHub API.

### Versions

Most features allow you to define one or more versions of the software that should be installed by the feature.
Expand Down Expand Up @@ -110,3 +116,22 @@ Then set this in your feature to explicitly unset it:
### Extend an existing feature

TBD

## Development

### Testing features

To test a feature, you can compile it and copy or mount the installer into a container with root privileges.

Here is an example to compile a feature:
```go
go build -o kubectl.bin features/src/kubectl/installer.go
```
Then you can run a simple docker container which mounts the folder with the installer and then just run the installer:
```bash
docker run --rm -it -v $PWD:/data debian /bin/bash
```
and then run the installer:
```bash
/data/kubectl.bin --version=1.35.0
```
293 changes: 77 additions & 216 deletions build/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,268 +81,129 @@ func init() {
})

////////// browsers
gotaskr.Task("Feature:browsers:Package", func() error {
return packageFeature("browsers")
})
gotaskr.Task("Feature:browsers:Test", func() error {
return testFeature("browsers")
})
gotaskr.Task("Feature:browsers:Publish", func() error {
return publishFeature("browsers")
})
gotaskr.Task("Feature:browsers:Package", func() error { return packageFeature("browsers") })
gotaskr.Task("Feature:browsers:Test", func() error { return testFeature("browsers") })
gotaskr.Task("Feature:browsers:Publish", func() error { return publishFeature("browsers") })

////////// build-essential
gotaskr.Task("Feature:build-essential:Package", func() error {
return packageFeature("build-essential")
})
gotaskr.Task("Feature:build-essential:Test", func() error {
return testFeature("build-essential")
})
gotaskr.Task("Feature:build-essential:Publish", func() error {
return publishFeature("build-essential")
})
gotaskr.Task("Feature:build-essential:Package", func() error { return packageFeature("build-essential") })
gotaskr.Task("Feature:build-essential:Test", func() error { return testFeature("build-essential") })
gotaskr.Task("Feature:build-essential:Publish", func() error { return publishFeature("build-essential") })

////////// cypress-deps
gotaskr.Task("Feature:cypress-deps:Package", func() error {
return packageFeature("cypress-deps")
})
gotaskr.Task("Feature:cypress-deps:Test", func() error {
return testFeature("cypress-deps")
})
gotaskr.Task("Feature:cypress-deps:Publish", func() error {
return publishFeature("cypress-deps")
})
gotaskr.Task("Feature:cypress-deps:Package", func() error { return packageFeature("cypress-deps") })
gotaskr.Task("Feature:cypress-deps:Test", func() error { return testFeature("cypress-deps") })
gotaskr.Task("Feature:cypress-deps:Publish", func() error { return publishFeature("cypress-deps") })

////////// docker-out
gotaskr.Task("Feature:docker-out:Package", func() error {
return packageFeature("docker-out")
})
gotaskr.Task("Feature:docker-out:Test", func() error {
return testFeature("docker-out")
})
gotaskr.Task("Feature:docker-out:Publish", func() error {
return publishFeature("docker-out")
})
gotaskr.Task("Feature:docker-out:Package", func() error { return packageFeature("docker-out") })
gotaskr.Task("Feature:docker-out:Test", func() error { return testFeature("docker-out") })
gotaskr.Task("Feature:docker-out:Publish", func() error { return publishFeature("docker-out") })

////////// eclipse-deps
gotaskr.Task("Feature:eclipse-deps:Package", func() error {
return packageFeature("eclipse-deps")
})
gotaskr.Task("Feature:eclipse-deps:Test", func() error {
return testFeature("eclipse-deps")
})
gotaskr.Task("Feature:eclipse-deps:Publish", func() error {
return publishFeature("eclipse-deps")
})
gotaskr.Task("Feature:eclipse-deps:Package", func() error { return packageFeature("eclipse-deps") })
gotaskr.Task("Feature:eclipse-deps:Test", func() error { return testFeature("eclipse-deps") })
gotaskr.Task("Feature:eclipse-deps:Publish", func() error { return publishFeature("eclipse-deps") })

////////// git-lfs
gotaskr.Task("Feature:git-lfs:Package", func() error {
return packageFeature("git-lfs")
})
gotaskr.Task("Feature:git-lfs:Test", func() error {
return testFeature("git-lfs")
})
gotaskr.Task("Feature:git-lfs:Publish", func() error {
return publishFeature("git-lfs")
})
gotaskr.Task("Feature:git-lfs:Package", func() error { return packageFeature("git-lfs") })
gotaskr.Task("Feature:git-lfs:Test", func() error { return testFeature("git-lfs") })
gotaskr.Task("Feature:git-lfs:Publish", func() error { return publishFeature("git-lfs") })

////////// gitlab-cli
gotaskr.Task("Feature:gitlab-cli:Package", func() error {
return packageFeature("gitlab-cli")
})
gotaskr.Task("Feature:gitlab-cli:Test", func() error {
return testFeature("gitlab-cli")
})
gotaskr.Task("Feature:gitlab-cli:Publish", func() error {
return publishFeature("gitlab-cli")
})
gotaskr.Task("Feature:gitlab-cli:Package", func() error { return packageFeature("gitlab-cli") })
gotaskr.Task("Feature:gitlab-cli:Test", func() error { return testFeature("gitlab-cli") })
gotaskr.Task("Feature:gitlab-cli:Publish", func() error { return publishFeature("gitlab-cli") })

////////// go
gotaskr.Task("Feature:go:Package", func() error {
return packageFeature("go")
})
gotaskr.Task("Feature:go:Test", func() error {
return testFeature("go")
})
gotaskr.Task("Feature:go:Publish", func() error {
return publishFeature("go")
})
gotaskr.Task("Feature:go:Package", func() error { return packageFeature("go") })
gotaskr.Task("Feature:go:Test", func() error { return testFeature("go") })
gotaskr.Task("Feature:go:Publish", func() error { return publishFeature("go") })

////////// gonovate
gotaskr.Task("Feature:gonovate:Package", func() error {
return packageFeature("gonovate")
})
gotaskr.Task("Feature:gonovate:Test", func() error {
return testFeature("gonovate")
})
gotaskr.Task("Feature:gonovate:Publish", func() error {
return publishFeature("gonovate")
})
gotaskr.Task("Feature:gonovate:Package", func() error { return packageFeature("gonovate") })
gotaskr.Task("Feature:gonovate:Test", func() error { return testFeature("gonovate") })
gotaskr.Task("Feature:gonovate:Publish", func() error { return publishFeature("gonovate") })

////////// goreleaser
gotaskr.Task("Feature:goreleaser:Package", func() error {
return packageFeature("goreleaser")
})
gotaskr.Task("Feature:goreleaser:Test", func() error {
return testFeature("goreleaser")
})
gotaskr.Task("Feature:goreleaser:Publish", func() error {
return publishFeature("goreleaser")
})
gotaskr.Task("Feature:goreleaser:Package", func() error { return packageFeature("goreleaser") })
gotaskr.Task("Feature:goreleaser:Test", func() error { return testFeature("goreleaser") })
gotaskr.Task("Feature:goreleaser:Publish", func() error { return publishFeature("goreleaser") })

////////// instant-client
gotaskr.Task("Feature:instant-client:Package", func() error {
return packageFeature("instant-client")
})
gotaskr.Task("Feature:instant-client:Test", func() error {
return testFeature("instant-client")
})
gotaskr.Task("Feature:instant-client:Publish", func() error {
return publishFeature("instant-client")
})
gotaskr.Task("Feature:instant-client:Package", func() error { return packageFeature("instant-client") })
gotaskr.Task("Feature:instant-client:Test", func() error { return testFeature("instant-client") })
gotaskr.Task("Feature:instant-client:Publish", func() error { return publishFeature("instant-client") })

////////// jfrog-cli
gotaskr.Task("Feature:jfrog-cli:Package", func() error {
return packageFeature("jfrog-cli")
})
gotaskr.Task("Feature:jfrog-cli:Test", func() error {
return testFeature("jfrog-cli")
})
gotaskr.Task("Feature:jfrog-cli:Publish", func() error {
return publishFeature("jfrog-cli")
})
gotaskr.Task("Feature:jfrog-cli:Package", func() error { return packageFeature("jfrog-cli") })
gotaskr.Task("Feature:jfrog-cli:Test", func() error { return testFeature("jfrog-cli") })
gotaskr.Task("Feature:jfrog-cli:Publish", func() error { return publishFeature("jfrog-cli") })

////////// kubectl
gotaskr.Task("Feature:kubectl:Package", func() error { return packageFeature("kubectl") })
gotaskr.Task("Feature:kubectl:Test", func() error { return testFeature("kubectl") })
gotaskr.Task("Feature:kubectl:Publish", func() error { return publishFeature("kubectl") })

////////// locale
gotaskr.Task("Feature:locale:Package", func() error {
return packageFeature("locale")
})
gotaskr.Task("Feature:locale:Test", func() error {
return testFeature("locale")
})
gotaskr.Task("Feature:locale:Publish", func() error {
return publishFeature("locale")
})
gotaskr.Task("Feature:locale:Package", func() error { return packageFeature("locale") })
gotaskr.Task("Feature:locale:Test", func() error { return testFeature("locale") })
gotaskr.Task("Feature:locale:Publish", func() error { return publishFeature("locale") })

////////// make
gotaskr.Task("Feature:make:Package", func() error {
return packageFeature("make")
})
gotaskr.Task("Feature:make:Test", func() error {
return testFeature("make")
})
gotaskr.Task("Feature:make:Publish", func() error {
return publishFeature("make")
})
gotaskr.Task("Feature:make:Package", func() error { return packageFeature("make") })
gotaskr.Task("Feature:make:Test", func() error { return testFeature("make") })
gotaskr.Task("Feature:make:Publish", func() error { return publishFeature("make") })

////////// mingw
gotaskr.Task("Feature:mingw:Package", func() error {
return packageFeature("mingw")
})
gotaskr.Task("Feature:mingw:Test", func() error {
return testFeature("mingw")
})
gotaskr.Task("Feature:mingw:Publish", func() error {
return publishFeature("mingw")
})
gotaskr.Task("Feature:mingw:Package", func() error { return packageFeature("mingw") })
gotaskr.Task("Feature:mingw:Test", func() error { return testFeature("mingw") })
gotaskr.Task("Feature:mingw:Publish", func() error { return publishFeature("mingw") })

////////// nginx
gotaskr.Task("Feature:nginx:Package", func() error {
return packageFeature("nginx")
})
gotaskr.Task("Feature:nginx:Test", func() error {
return testFeature("nginx")
})
gotaskr.Task("Feature:nginx:Publish", func() error {
return publishFeature("nginx")
})
gotaskr.Task("Feature:nginx:Package", func() error { return packageFeature("nginx") })
gotaskr.Task("Feature:nginx:Test", func() error { return testFeature("nginx") })
gotaskr.Task("Feature:nginx:Publish", func() error { return publishFeature("nginx") })

////////// node
gotaskr.Task("Feature:node:Package", func() error {
return packageFeature("node")
})
gotaskr.Task("Feature:node:Test", func() error {
return testFeature("node")
})
gotaskr.Task("Feature:node:Publish", func() error {
return publishFeature("node")
})
gotaskr.Task("Feature:node:Package", func() error { return packageFeature("node") })
gotaskr.Task("Feature:node:Test", func() error { return testFeature("node") })
gotaskr.Task("Feature:node:Publish", func() error { return publishFeature("node") })

////////// playwright-deps
gotaskr.Task("Feature:playwright-deps:Package", func() error {
return packageFeature("playwright-deps")
})
gotaskr.Task("Feature:playwright-deps:Test", func() error {
return testFeature("playwright-deps")
})
gotaskr.Task("Feature:playwright-deps:Publish", func() error {
return publishFeature("playwright-deps")
})
gotaskr.Task("Feature:playwright-deps:Package", func() error { return packageFeature("playwright-deps") })
gotaskr.Task("Feature:playwright-deps:Test", func() error { return testFeature("playwright-deps") })
gotaskr.Task("Feature:playwright-deps:Publish", func() error { return publishFeature("playwright-deps") })

////////// python
gotaskr.Task("Feature:python:Package", func() error {
return packageFeature("python")
})
gotaskr.Task("Feature:python:Test", func() error {
return testFeature("python")
})
gotaskr.Task("Feature:python:Publish", func() error {
return publishFeature("python")
})
gotaskr.Task("Feature:python:Package", func() error { return packageFeature("python") })
gotaskr.Task("Feature:python:Test", func() error { return testFeature("python") })
gotaskr.Task("Feature:python:Publish", func() error { return publishFeature("python") })

////////// sonar-scanner-cli
gotaskr.Task("Feature:sonar-scanner-cli:Package", func() error {
return packageFeature("sonar-scanner-cli")
})
gotaskr.Task("Feature:sonar-scanner-cli:Test", func() error {
return testFeature("sonar-scanner-cli")
})
gotaskr.Task("Feature:sonar-scanner-cli:Publish", func() error {
return publishFeature("sonar-scanner-cli")
})
gotaskr.Task("Feature:sonar-scanner-cli:Package", func() error { return packageFeature("sonar-scanner-cli") })
gotaskr.Task("Feature:sonar-scanner-cli:Test", func() error { return testFeature("sonar-scanner-cli") })
gotaskr.Task("Feature:sonar-scanner-cli:Publish", func() error { return publishFeature("sonar-scanner-cli") })

////////// system-packages
gotaskr.Task("Feature:system-packages:Package", func() error {
return packageFeature("system-packages")
})
gotaskr.Task("Feature:system-packages:Test", func() error {
return testFeature("system-packages")
})
gotaskr.Task("Feature:system-packages:Publish", func() error {
return publishFeature("system-packages")
})
gotaskr.Task("Feature:system-packages:Package", func() error { return packageFeature("system-packages") })
gotaskr.Task("Feature:system-packages:Test", func() error { return testFeature("system-packages") })
gotaskr.Task("Feature:system-packages:Publish", func() error { return publishFeature("system-packages") })

////////// timezone
gotaskr.Task("Feature:timezone:Package", func() error {
return packageFeature("timezone")
})
gotaskr.Task("Feature:timezone:Test", func() error {
return testFeature("timezone")
})
gotaskr.Task("Feature:timezone:Publish", func() error {
return publishFeature("timezone")
})
gotaskr.Task("Feature:timezone:Package", func() error { return packageFeature("timezone") })
gotaskr.Task("Feature:timezone:Test", func() error { return testFeature("timezone") })
gotaskr.Task("Feature:timezone:Publish", func() error { return publishFeature("timezone") })

////////// vault-cli
gotaskr.Task("Feature:vault-cli:Package", func() error {
return packageFeature("vault-cli")
})
gotaskr.Task("Feature:vault-cli:Test", func() error {
return testFeature("vault-cli")
})
gotaskr.Task("Feature:vault-cli:Publish", func() error {
return publishFeature("vault-cli")
})
gotaskr.Task("Feature:vault-cli:Package", func() error { return packageFeature("vault-cli") })
gotaskr.Task("Feature:vault-cli:Test", func() error { return testFeature("vault-cli") })
gotaskr.Task("Feature:vault-cli:Publish", func() error { return publishFeature("vault-cli") })

////////// zig
gotaskr.Task("Feature:zig:Package", func() error {
return packageFeature("zig")
})
gotaskr.Task("Feature:zig:Test", func() error {
return testFeature("zig")
})
gotaskr.Task("Feature:zig:Publish", func() error {
return publishFeature("zig")
})
gotaskr.Task("Feature:zig:Package", func() error { return packageFeature("zig") })
gotaskr.Task("Feature:zig:Test", func() error { return testFeature("zig") })
gotaskr.Task("Feature:zig:Publish", func() error { return publishFeature("zig") })
}

////////////////////////////////////////////////////////////
Expand Down
Loading
Loading