Compare commits

...

53 Commits
v0.2.0 ... main

Author SHA1 Message Date
woodpecker-bot
06e90d56f8 chore(deps): update golangci/golangci-lint docker tag to v1.61 2024-09-14 00:06:55 +00:00
woodpecker-bot
33cbc07540 fix(deps): update module golang.org/x/net to v0.29.0 2024-09-08 00:20:37 +00:00
woodpecker-bot
cac90b61b0 fix(deps): update github.com/urfave/cli/v3 digest to 31c5c84 2024-09-07 00:08:49 +00:00
woodpecker-bot
2b59a3028d fix(deps): update github.com/urfave/cli/v3 digest to 3d76e1b 2024-08-31 00:07:36 +00:00
woodpecker-bot
2b17135e0c fix(deps): update github.com/urfave/cli/v3 digest to cd7d34a (#32)
Reviewed-on: https://codeberg.org/woodpecker-plugins/go-plugin/pulls/32
Co-authored-by: woodpecker-bot <woodpecker-bot@obermui.de>
Co-committed-by: woodpecker-bot <woodpecker-bot@obermui.de>
2024-08-26 06:21:25 +00:00
woodpecker-bot
c79c27bb51 chore(deps): update golangci/golangci-lint docker tag to v1.60 2024-08-19 00:07:48 +00:00
woodpecker-bot
5859397549 fix(deps): update github.com/urfave/cli/v3 digest to 3110c0e 2024-08-18 00:17:52 +00:00
woodpecker-bot
b9a4363bd9 chore(deps): update golang docker tag to v1.23 2024-08-17 00:07:18 +00:00
woodpecker-bot
81050b18f0 fix(deps): update module golang.org/x/net to v0.28.0 2024-08-10 00:08:54 +00:00
6543
67b6cdf4a6 Migrate to github.com/urfave/cli/v3 (#29)
Reviewed-on: https://codeberg.org/woodpecker-plugins/go-plugin/pulls/29
Reviewed-by: Patrick Schratz <pat-s@noreply.codeberg.org>
Co-authored-by: 6543 <6543@obermui.de>
Co-committed-by: 6543 <6543@obermui.de>
2024-07-22 23:32:14 +00:00
6543
2e397e1b02 Add .gitignore (#28)
Reviewed-on: https://codeberg.org/woodpecker-plugins/go-plugin/pulls/28
2024-07-22 21:37:31 +00:00
6543
525775bd26 Add nix flake (#31)
Reviewed-on: https://codeberg.org/woodpecker-plugins/go-plugin/pulls/31
2024-07-22 21:37:09 +00:00
6543
1b0f1c5754 Format Readme (#30)
Reviewed-on: https://codeberg.org/woodpecker-plugins/go-plugin/pulls/30
2024-07-22 21:35:53 +00:00
Lauris BH
7ea01d1b3b Add Forgejo forge type constant (#27)
Reviewed-on: https://codeberg.org/woodpecker-plugins/go-plugin/pulls/27
Co-authored-by: Lauris BH <lauris@nix.lv>
Co-committed-by: Lauris BH <lauris@nix.lv>
2024-07-18 18:32:09 +00:00
woodpecker-bot
212153caee fix(deps): update module golang.org/x/net to v0.27.0 2024-07-06 00:07:20 +00:00
woodpecker-bot
1842b6efa6 fix(deps): update module golang.org/x/net to v0.26.0 2024-06-09 00:16:37 +00:00
woodpecker-bot
d493cf5c51 chore(deps): update woodpeckerci/plugin-reviewdog-golangci-lint docker tag to v1.59 2024-06-08 00:05:34 +00:00
woodpecker-bot
19c216c533 chore(deps): update golangci/golangci-lint docker tag to v1.59 (#26)
Reviewed-on: https://codeberg.org/woodpecker-plugins/go-plugin/pulls/26
Reviewed-by: qwerty287 <qwerty287@noreply.codeberg.org>
Co-authored-by: woodpecker-bot <woodpecker-bot@obermui.de>
Co-committed-by: woodpecker-bot <woodpecker-bot@obermui.de>
2024-06-02 12:06:57 +00:00
woodpecker-bot
c182818d82 fix(deps): update module github.com/rs/zerolog to v1.33.0 2024-05-25 00:09:55 +00:00
woodpecker-bot
38dcac787e fix(deps): update module golang.org/x/net to v0.25.0 2024-05-11 00:06:54 +00:00
woodpecker-bot
5c32612e8d chore(deps): update golangci/golangci-lint docker tag to v1.58 2024-05-04 00:06:24 +00:00
woodpecker-bot
567908df09 fix(deps): update module github.com/urfave/cli/v2 to v2.27.2 2024-04-28 00:13:40 +00:00
woodpecker-bot
72d3ea674d fix(deps): update module golang.org/x/net to v0.24.0 2024-04-06 00:08:04 +00:00
Lauris BH
ca1f8e48fe Update pipeline with Go code review (#25)
Reviewed-on: https://codeberg.org/woodpecker-plugins/go-plugin/pulls/25
Co-authored-by: Lauris BH <lauris@nix.lv>
Co-committed-by: Lauris BH <lauris@nix.lv>
2024-03-30 15:52:30 +00:00
Lauris BH
b67c23ab79
Set usage text to not display default urfave cli one 2024-03-30 17:33:08 +02:00
woodpecker-bot
f6037e6127 chore(deps): update golangci/golangci-lint docker tag to v1.57 2024-03-23 00:09:05 +00:00
woodpecker-bot
fa7f39a739 fix(deps): update module golang.org/x/net to v0.22.0 2024-03-09 00:11:20 +00:00
woodpecker-bot
0ab802ca5b fix(deps): update module github.com/stretchr/testify to v1.9.0 2024-03-02 00:09:58 +00:00
anbraten
090b4571b4 Add & update some env data (#24)
- Some renamings to be more descriptive
- link -> url
- deprecated all old properties

closes #22

Co-authored-by: Anbraten <6918444+anbraten@users.noreply.github.com>
Reviewed-on: https://codeberg.org/woodpecker-plugins/go-plugin/pulls/24
Reviewed-by: 6543 <6543@obermui.de>
Co-authored-by: anbraten <anbraten@noreply.codeberg.org>
Co-committed-by: anbraten <anbraten@noreply.codeberg.org>
2024-02-15 18:53:26 +00:00
woodpecker-bot
6a59bd9561 fix(deps): update module golang.org/x/net to v0.21.0 2024-02-08 11:41:26 +00:00
woodpecker-bot
f3134af984 chore(deps): update golangci/golangci-lint docker tag to v1.56 2024-02-08 11:06:03 +00:00
woodpecker-bot
890edaf1c3 chore(deps): update golang docker tag to v1.22 2024-02-08 10:36:05 +00:00
woodpecker-bot
a969947601 fix(deps): update module github.com/rs/zerolog to v1.32.0 2024-02-05 00:10:14 +00:00
woodpecker-bot
0ae47cb04a fix(deps): update module golang.org/x/net to v0.20.0 2024-01-09 00:09:10 +00:00
woodpecker-bot
125fb101dc fix(deps): update module github.com/urfave/cli/v2 to v2.27.1 2023-12-31 00:18:25 +00:00
woodpecker-bot
7b81f9a203 fix(deps): update module github.com/urfave/cli/v2 to v2.27.0 2023-12-27 00:10:03 +00:00
Lauris BH
93da4f40e1 Add Forge metadata (#20)
Adds support for loading Forge metadata from env variables

Reviewed-on: https://codeberg.org/woodpecker-plugins/go-plugin/pulls/20
Reviewed-by: qwerty287 <qwerty287@noreply.codeberg.org>
Co-authored-by: Lauris BH <lauris@nix.lv>
Co-committed-by: Lauris BH <lauris@nix.lv>
2023-12-10 20:27:57 +00:00
Lauris BH
30c031631d Fix support for woodpecker 2.0.0 (#19)
`_LINK` -> `_URL`

Reviewed-on: https://codeberg.org/woodpecker-plugins/go-plugin/pulls/19
Reviewed-by: anbraten <anbraten@noreply.codeberg.org>
Co-authored-by: Lauris BH <lauris@nix.lv>
Co-committed-by: Lauris BH <lauris@nix.lv>
2023-12-07 10:45:09 +00:00
woodpecker-bot
f02d9dcbb4 fix(deps): update module github.com/urfave/cli/v2 to v2.26.0 2023-12-04 00:11:20 +00:00
woodpecker-bot
39a7259ed0 fix(deps): update module golang.org/x/net to v0.19.0 2023-11-29 00:11:00 +00:00
jolheiser
275eb26ca7 fix: make readme example compile (#17)
Resolves #16

Also formatted it.

https://go.dev/play/p/sFpiRTwLGlq
Reviewed-on: https://codeberg.org/woodpecker-plugins/go-plugin/pulls/17
Reviewed-by: Patrick Schratz <pat-s@noreply.codeberg.org>
Co-authored-by: jolheiser <jolheiser@noreply.codeberg.org>
Co-committed-by: jolheiser <jolheiser@noreply.codeberg.org>
2023-11-15 17:33:12 +00:00
woodpecker-bot
f1c4c040ce fix(deps): update module golang.org/x/net to v0.18.0 2023-11-09 00:09:30 +00:00
pat-s
174f822f73
also run tests on renovate/ branches 2023-11-08 20:04:23 +01:00
woodpecker-bot
ab2091b8bc Update module github.com/joho/godotenv to v1.5.1 (#11)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [github.com/joho/godotenv](https://github.com/joho/godotenv) | require | minor | `v1.4.0` -> `v1.5.1` |

---

### Release Notes

<details>
<summary>joho/godotenv (github.com/joho/godotenv)</summary>

### [`v1.5.1`](https://github.com/joho/godotenv/releases/tag/v1.5.1): Fix parser regressions from multiline support

[Compare Source](https://github.com/joho/godotenv/compare/v1.5.0...v1.5.1)

Version 1.5 came with a whole new parser, and with a new parser comes new bugs.

Things that were broken in 1.5 that are now fixed:

-   unquoted variables with interior whitespace no longer split on the first space (and then break the following line if you have one)
-   inline comments now work again for both quoted and unquoted variables
-   ` export  ` statement filtering was made more robust and matched earlier versions behaviour
-   `FOO.BAR` key names are permitted again (i have no idea why you'd do it, but it's explicitly supported in ruby dotenv files)

There's one breaking change: earlier versions of this library would allow unterminated quoted variables in some instances and return a value (ie `FOO="bar` would set env of `FOO: '"bar'`), this now returns an error.

#### What's Changed

-   Fix bug where internal unquoted whitespace truncates values by [@&#8203;joho](https://github.com/joho) in https://github.com/joho/godotenv/pull/205

**Full Changelog**: https://github.com/joho/godotenv/compare/v1.5.0...v1.5.1

### [`v1.5.0`](https://github.com/joho/godotenv/releases/tag/v1.5.0): - multiline variables

[Compare Source](https://github.com/joho/godotenv/compare/v1.4.0...v1.5.0)

The big news this release is that godotenv finally, after much procrastination in review, supports multiline variables (fixes [#&#8203;64](https://github.com/joho/godotenv/issues/64)). Big shoutout to [@&#8203;x1unix](https://github.com/x1unix) for the bulk of the work on the original PR and also to [@&#8203;coolaj86](https://github.com/coolaj86) and [@&#8203;austinsasko](https://github.com/austinsasko) for some very helpful review and tweaks.

Also added a `-o` overload flag (thanks [@&#8203;2tef](https://github.com/2tef))

#### What's Changed

-   Try and fix go get in CI for power8 by [@&#8203;joho](https://github.com/joho) in https://github.com/joho/godotenv/pull/157
-   Fix typos in comments and extend README by [@&#8203;alexandear](https://github.com/alexandear) in https://github.com/joho/godotenv/pull/177
-   tune README by [@&#8203;bikbah](https://github.com/bikbah) in https://github.com/joho/godotenv/pull/170
-   Remove renovate, add dependabot by [@&#8203;joho](https://github.com/joho) in https://github.com/joho/godotenv/pull/183
-   Setup codeql by [@&#8203;joho](https://github.com/joho) in https://github.com/joho/godotenv/pull/186
-   Bump actions/checkout from 2 to 3 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/joho/godotenv/pull/184
-   Bump actions/setup-go from 2 to 3 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/joho/godotenv/pull/185
-   Add darwin arm64 build by [@&#8203;statik](https://github.com/statik) in https://github.com/joho/godotenv/pull/174
-   Sort Go import in README by [@&#8203;Doarakko](https://github.com/Doarakko) in https://github.com/joho/godotenv/pull/193
-   Fix godoc formatting by [@&#8203;joho](https://github.com/joho) in https://github.com/joho/godotenv/pull/197
-   fix tiny details by [@&#8203;2tef](https://github.com/2tef) in https://github.com/joho/godotenv/pull/199
-   Multiline string support by [@&#8203;x1unix](https://github.com/x1unix) in https://github.com/joho/godotenv/pull/156
-   Update CI to test go 1.20 by [@&#8203;joho](https://github.com/joho) in https://github.com/joho/godotenv/pull/201
-   fix whitespace with gofmt by [@&#8203;2tef](https://github.com/2tef) in https://github.com/joho/godotenv/pull/203
-   add overload flag by [@&#8203;2tef](https://github.com/2tef) in https://github.com/joho/godotenv/pull/200
-   -   Fix: ioutil.ReadAll() is deprecated, so removed it's dependency by [@&#8203;dreygur](https://github.com/dreygur) in https://github.com/joho/godotenv/pull/202

#### New Contributors

-   [@&#8203;x1unix](https://github.com/x1unix) made their first contribution in https://github.com/joho/godotenv/pull/118
-   [@&#8203;alexandear](https://github.com/alexandear) made their first contribution in https://github.com/joho/godotenv/pull/177
-   [@&#8203;bikbah](https://github.com/bikbah) made their first contribution in https://github.com/joho/godotenv/pull/170
-   [@&#8203;dependabot](https://github.com/dependabot) made their first contribution in https://github.com/joho/godotenv/pull/184
-   [@&#8203;statik](https://github.com/statik) made their first contribution in https://github.com/joho/godotenv/pull/174
-   [@&#8203;Doarakko](https://github.com/Doarakko) made their first contribution in https://github.com/joho/godotenv/pull/193
-   [@&#8203;2tef](https://github.com/2tef) made their first contribution in https://github.com/joho/godotenv/pull/199
-   [@&#8203;dreygur](https://github.com/dreygur) made their first contribution in https://github.com/joho/godotenv/pull/202

**Full Changelog**: https://github.com/joho/godotenv/compare/v1.4.0...v1.5.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - "before 4am" (UTC).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMi4wIiwidXBkYXRlZEluVmVyIjoiMzcuMzMuNiIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Reviewed-on: https://codeberg.org/woodpecker-plugins/go-plugin/pulls/11
Co-authored-by: woodpecker-bot <woodpecker-bot@obermui.de>
Co-committed-by: woodpecker-bot <woodpecker-bot@obermui.de>
2023-10-27 12:27:44 +00:00
woodpecker-bot
7a77b4deb6 Update golang Docker tag to v1.21 (#9)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| golang | minor | `1.18` -> `1.21` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - "before 4am" (UTC).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMi4wIiwidXBkYXRlZEluVmVyIjoiMzcuMzIuMCIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Reviewed-on: https://codeberg.org/woodpecker-plugins/go-plugin/pulls/9
Co-authored-by: woodpecker-bot <woodpecker-bot@obermui.de>
Co-committed-by: woodpecker-bot <woodpecker-bot@obermui.de>
2023-10-27 12:27:37 +00:00
woodpecker-bot
1396daf59f Update module golang.org/x/net to v0.17.0 2023-10-27 00:09:34 +00:00
woodpecker-bot
4595cecac4 Update module github.com/urfave/cli/v2 to v2.25.7 2023-10-26 00:14:32 +00:00
woodpecker-bot
629a1a9258 Update module github.com/rs/zerolog to v1.31.0 2023-10-26 00:08:32 +00:00
woodpecker-bot
875983b71f Update golangci/golangci-lint Docker tag to v1.55 2023-10-25 10:43:48 +00:00
Woodpecker Bot
1baf72dd81 Update module github.com/stretchr/testify to v1.8.4 2023-10-22 20:43:52 +00:00
pat-s
92ff2797fa No dup wfs (#6)
Reviewed-on: https://codeberg.org/woodpecker-plugins/go-plugin/pulls/6
Co-authored-by: pat-s <patrick.schratz@gmail.com>
Co-committed-by: pat-s <patrick.schratz@gmail.com>
2023-10-17 17:19:21 +00:00
Patrick Schratz
18a1562886 Configure Renovate (#4)
Welcome to [Renovate](https://github.com/renovatebot/renovate)! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.

🚦 To activate Renovate, merge this Pull Request. To disable Renovate, simply close this Pull Request unmerged.

---
### Detected Package Files

 * `go.mod` (gomod)
 * `.woodpecker.yaml` (woodpecker)

### Configuration Summary

Based on the default config's presets, Renovate will:

  - Start dependency updates only once this onboarding PR is merged
  - Enable Renovate Dependency Dashboard creation.
  - Use semantic commit type `fix` for dependencies and `chore` for all others if semantic commits are in use.
  - Ignore `node_modules`, `bower_components`, `vendor` and various test/tests directories.
  - Group known monorepo packages together.
  - Use curated list of recommended non-monorepo package groupings.
  - Apply crowd-sourced package replacement rules.
  - Apply crowd-sourced workarounds for known problems with packages.
  - Run lock file maintenance (updates) early Monday mornings.
  - Schedule automerge daily.
  - Schedule for weekends.
  - Enable Renovate Dependency Dashboard creation.
  - Use semantic commit type `fix` for dependencies and `chore` for all others if semantic commits are in use.
  - Ignore `node_modules`, `bower_components`, `vendor` and various test/tests directories.
  - Group known monorepo packages together.
  - Use curated list of recommended non-monorepo package groupings.
  - Apply crowd-sourced package replacement rules.
  - Apply crowd-sourced workarounds for known problems with packages.
  - Run lock file maintenance (updates) early Monday mornings.
  - Schedule automerge daily.
  - Schedule for weekends.
  - Run Renovate on following schedule: every weekend

🔡 Would you like to change the way Renovate is upgrading your dependencies? Simply edit the `renovate.json` in this branch with your custom config and the list of Pull Requests in the "What to Expect" section below will be updated the next time Renovate runs.

---

### What to Expect

With your current configuration, Renovate will create 7 Pull Requests:

<details>
<summary>Update module github.com/stretchr/testify to v1.8.4</summary>

  - Schedule: ["every weekend"]
  - Branch name: `renovate/github.com-stretchr-testify-1.x`
  - Merge into: `main`
  - Upgrade [github.com/stretchr/testify](https://github.com/stretchr/testify) to `v1.8.4`

</details>

<details>
<summary>Update golang Docker tag to v1.21</summary>

  - Schedule: ["every weekend"]
  - Branch name: `renovate/golang-1.x`
  - Merge into: `main`
  - Upgrade golang to `1.21`

</details>

<details>
<summary>Update golangci/golangci-lint Docker tag to v1.54</summary>

  - Schedule: ["every weekend"]
  - Branch name: `renovate/golangci-golangci-lint-1.x`
  - Merge into: `main`
  - Upgrade golangci/golangci-lint to `v1.54-alpine`

</details>

<details>
<summary>Update module github.com/joho/godotenv to v1.5.1</summary>

  - Schedule: ["every weekend"]
  - Branch name: `renovate/github.com-joho-godotenv-1.x`
  - Merge into: `main`
  - Upgrade [github.com/joho/godotenv](https://github.com/joho/godotenv) to `v1.5.1`

</details>

<details>
<summary>Update module github.com/rs/zerolog to v1.31.0</summary>

  - Schedule: ["every weekend"]
  - Branch name: `renovate/github.com-rs-zerolog-1.x`
  - Merge into: `main`
  - Upgrade [github.com/rs/zerolog](https://github.com/rs/zerolog) to `v1.31.0`

</details>

<details>
<summary>Update module github.com/urfave/cli/v2 to v2.25.7</summary>

  - Schedule: ["every weekend"]
  - Branch name: `renovate/github.com-urfave-cli-v2-2.x`
  - Merge into: `main`
  - Upgrade [github.com/urfave/cli/v2](https://github.com/urfave/cli) to `v2.25.7`

</details>

<details>
<summary>Update module golang.org/x/net to v0.17.0</summary>

  - Schedule: ["every weekend"]
  - Branch name: `renovate/golang.org-x-net-0.x`
  - Merge into: `main`
  - Upgrade golang.org/x/net to `v0.17.0`

</details>

<br />

🚸 Branch creation will be limited to maximum 2 per hour, so it doesn't swamp any CI resources or overwhelm the project. See docs for `prhourlylimit` for details.

---

 Got questions? Check out Renovate's [Docs](https://docs.renovatebot.com/), particularly the Getting Started section.
If you need any further assistance then you can also [request help here](https://github.com/renovatebot/renovate/discussions).

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).

<!--renovate-config-hash:d0f89381ee26ddd9055d24c12fa2ffc765c573491e687875e761186223a52bc4-->

Reviewed-on: https://codeberg.org/woodpecker-plugins/go-plugin/pulls/4
Co-authored-by: Patrick Schratz <pat-s@mailbox.org>
Co-committed-by: Patrick Schratz <pat-s@mailbox.org>
2023-10-16 16:52:34 +00:00
6543
afbbefb22e
update pipeline to meet v1.0.0 standard 2023-07-31 05:24:14 +02:00
21 changed files with 634 additions and 317 deletions

23
.gitignore vendored Normal file
View File

@ -0,0 +1,23 @@
### Go ###
# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib
# Test binary, built with `go test -c`
*.test
# Output of the go coverage tool, specifically when used with LiteIDE
*.out
# Dependency directories (remove the comment below to include it)
vendor/
# Go workspace file
go.work
### IDE ###
.vscode/

View File

@ -1,15 +1,34 @@
variables:
- &golang 'golang:1.18'
when:
- event: [pull_request, tag, cron]
- event: push
branch:
- ${CI_REPO_DEFAULT_BRANCH}
- 'renovate/*'
pipeline:
- name: vendor
variables:
- &golang "golang:1.23"
- &golangci-lint "golangci/golangci-lint:v1.61-alpine"
- &reviewdog-golangci-lint "woodpeckerci/plugin-reviewdog-golangci-lint:1.59"
steps:
vendor:
image: *golang
commands: go mod vendor
- name: lint
image: golangci/golangci-lint:v1.50-alpine
commands: golangci-lint run
review-go:
image: *reviewdog-golangci-lint
settings:
token:
from_secret: reviewdog_token
when:
event: pull_request
- name: test
lint:
image: *golangci-lint
commands: golangci-lint run --timeout 5m
when:
event: [push, tag, cron]
test:
image: *golang
commands: go test --cover ./...

View File

@ -9,21 +9,23 @@ HTTP client library.
## Builtin settings
| Settings Name | Environment variable | Default | Description |
|---|---|----|---|
| ------------- | -------------------- | ------- | ---------------------------------------------------------------------------- | ------------------------------------ |
| `log_level` | - | `info` | Sets log level (`panic`, `fatal`, `error`, `warn`, `info`, `debug`, `trace`) |
| `skip_verify` | - | `false` | - | Skip verification of TLS certificate |
| | `SOCKS_PROXY` | *none* | SOCKS5 proxy to use for connections |
| | `SOCKS_PROXY_OFF` | *none* | Do not use SOCKS5 proxy |
| | `SOCKS_PROXY` | _none_ | SOCKS5 proxy to use for connections |
| | `SOCKS_PROXY_OFF` | _none_ | Do not use SOCKS5 proxy |
## Creating plugin
```go
package main
import (
"context"
"codeberg.org/woodpecker-plugins/go-plugin"
"github.com/urfave/cli/v2"
"github.com/rs/zerolog/log"
"github.com/urfave/cli/v3"
)
type Settings struct {
@ -42,7 +44,7 @@ func (p *Plugin) Flags() []cli.Flag {
&cli.StringFlag{
Name: "sample.flag",
Usage: "sample flag",
EnvVars: []string{"PLUGIN_SAMPLE_FLAG"},
Sources: cli.EnvVars("PLUGIN_SAMPLE_FLAG"),
Destination: &p.Settings.SampleFlag,
},
}
@ -56,10 +58,10 @@ func (p *Plugin) Execute(ctx context.Context) error {
func main() {
p := &Plugin{
&Settings{}
Settings: &Settings{},
}
p.Plugin = plugin.New(Options{
p.Plugin = plugin.New(plugin.Options{
Name: "sample-plugin",
Description: "Sample plugin",
Flags: p.Flags(),

104
commit.go
View File

@ -15,7 +15,7 @@
package plugin
import (
"github.com/urfave/cli/v2"
"github.com/urfave/cli/v3"
)
type (
@ -41,72 +41,109 @@ type (
}
)
func currFlags() []cli.Flag {
func commitFlags() []cli.Flag {
return []cli.Flag{
&cli.StringFlag{
Name: "commit.sha",
Usage: "commit SHA",
EnvVars: []string{"CI_COMMIT_SHA", "DRONE_COMMIT", "DRONE_COMMIT_SHA"},
Sources: cli.EnvVars(
"CI_COMMIT_SHA",
"DRONE_COMMIT",
"DRONE_COMMIT_SHA",
),
},
&cli.StringFlag{
Name: "commit.ref",
Usage: "commit ref",
EnvVars: []string{"CI_COMMIT_REF", "DRONE_COMMIT_REF"},
Sources: cli.EnvVars(
"CI_COMMIT_REF",
"DRONE_COMMIT_REF",
),
},
&cli.StringFlag{
Name: "commit.refspec",
Usage: "commit refspec",
EnvVars: []string{"CI_COMMIT_REFSPEC"},
Sources: cli.EnvVars(
"CI_COMMIT_REFSPEC",
),
},
&cli.StringFlag{
Name: "commit.pull-request",
Usage: "commit pull request",
EnvVars: []string{"CI_COMMIT_PULL_REQUEST", "DRONE_PULL_REQUEST"},
Sources: cli.EnvVars(
"CI_COMMIT_PULL_REQUEST",
"DRONE_PULL_REQUEST",
),
},
&cli.StringFlag{
Name: "commit.source-branch",
Usage: "commit source branch",
EnvVars: []string{"CI_COMMIT_SOURCE_BRANCH", "DRONE_SOURCE_BRANCH"},
Sources: cli.EnvVars(
"CI_COMMIT_SOURCE_BRANCH",
"DRONE_SOURCE_BRANCH",
),
},
&cli.StringFlag{
Name: "commit.target-branch",
Usage: "commit target branch",
EnvVars: []string{"CI_COMMIT_TARGET_BRANCH", "DRONE_TARGET_BRANCH"},
Sources: cli.EnvVars(
"CI_COMMIT_TARGET_BRANCH",
"DRONE_TARGET_BRANCH",
),
},
&cli.StringFlag{
Name: "commit.branch",
Usage: "commit branch",
EnvVars: []string{"CI_COMMIT_BRANCH", "DRONE_BRANCH"},
Sources: cli.EnvVars(
"CI_COMMIT_BRANCH",
"DRONE_BRANCH",
),
},
&cli.StringFlag{
Name: "commit.tag",
Usage: "commit tag",
EnvVars: []string{"CI_COMMIT_TAG", "DRONE_TAG"},
Sources: cli.EnvVars(
"CI_COMMIT_TAG",
"DRONE_TAG",
),
},
&cli.StringFlag{
Name: "commit.message",
Usage: "commit message",
EnvVars: []string{"CI_COMMIT_MESSAGE", "DRONE_COMMIT_MESSAGE"},
Sources: cli.EnvVars(
"CI_COMMIT_MESSAGE",
"DRONE_COMMIT_MESSAGE",
),
},
&cli.StringFlag{
Name: "commit.author.name",
Usage: "commit author name",
EnvVars: []string{"CI_COMMIT_AUTHOR", "DRONE_COMMIT_AUTHOR", "DRONE_COMMIT_AUTHOR_NAME"},
Sources: cli.EnvVars(
"CI_COMMIT_AUTHOR",
"DRONE_COMMIT_AUTHOR",
"DRONE_COMMIT_AUTHOR_NAME",
),
},
&cli.StringFlag{
Name: "commit.author.email",
Usage: "commit author email",
EnvVars: []string{"CI_COMMIT_AUTHOR_EMAIL", "DRONE_COMMIT_AUTHOR_EMAIL"},
Sources: cli.EnvVars(
"CI_COMMIT_AUTHOR_EMAIL",
"DRONE_COMMIT_AUTHOR_EMAIL",
),
},
&cli.StringFlag{
Name: "commit.author.avatar",
Usage: "commit author avatar",
EnvVars: []string{"CI_COMMIT_AUTHOR_AVATAR", "DRONE_COMMIT_AUTHOR_AVATAR"},
Sources: cli.EnvVars(
"CI_COMMIT_AUTHOR_AVATAR",
"DRONE_COMMIT_AUTHOR_AVATAR",
),
},
}
}
func currFromContext(c *cli.Context) Commit {
func commitFromContext(c *cli.Command) Commit {
return Commit{
Sha: c.String("commit.sha"),
Ref: c.String("commit.ref"),
@ -125,52 +162,69 @@ func currFromContext(c *cli.Context) Commit {
}
}
func prevFlags() []cli.Flag {
func previousCommitFlags() []cli.Flag {
return []cli.Flag{
&cli.StringFlag{
Name: "prev.commit.sha",
Usage: "previous commit SHA",
EnvVars: []string{"CI_PREV_COMMIT_SHA", "DRONE_COMMIT_BEFORE"},
Sources: cli.EnvVars(
"CI_PREV_COMMIT_SHA",
"DRONE_COMMIT_BEFORE",
),
},
&cli.StringFlag{
Name: "prev.commit.ref",
Usage: "previous commit ref",
EnvVars: []string{"CI_PREV_COMMIT_REF"},
Sources: cli.EnvVars(
"CI_PREV_COMMIT_REF",
),
},
&cli.StringFlag{
Name: "prev.commit.refspec",
Usage: "previous commit refspec",
EnvVars: []string{"CI_PREV_COMMIT_REFSPEC"},
Sources: cli.EnvVars(
"CI_PREV_COMMIT_REFSPEC",
),
},
&cli.StringFlag{
Name: "prev.commit.branch",
Usage: "previous commit branch",
EnvVars: []string{"CI_PREV_COMMIT_BRANCH"},
Sources: cli.EnvVars(
"CI_PREV_COMMIT_BRANCH",
),
},
&cli.StringFlag{
Name: "prev.commit.message",
Usage: "previous commit message",
EnvVars: []string{"CI_PREV_COMMIT_MESSAGE"},
Sources: cli.EnvVars(
"CI_PREV_COMMIT_MESSAGE",
),
},
&cli.StringFlag{
Name: "prev.commit.author.name",
Usage: "previous commit author name",
EnvVars: []string{"CI_PREV_COMMIT_AUTHOR"},
Sources: cli.EnvVars(
"CI_PREV_COMMIT_AUTHOR",
),
},
&cli.StringFlag{
Name: "prev.commit.author.email",
Usage: "previous commit author email",
EnvVars: []string{"CI_PREV_COMMIT_AUTHOR_EMAIL"},
Sources: cli.EnvVars(
"CI_PREV_COMMIT_AUTHOR_EMAIL",
),
},
&cli.StringFlag{
Name: "prev.commit.author.avatar",
Usage: "previous commit author avatar",
EnvVars: []string{"CI_PREV_COMMIT_AUTHOR_AVATAR"},
Sources: cli.EnvVars(
"CI_PREV_COMMIT_AUTHOR_AVATAR",
),
},
}
}
func prevFromContext(c *cli.Context) Commit {
func previousCommitFromContext(c *cli.Command) Commit {
return Commit{
Sha: c.String("prev.commit.sha"),
Ref: c.String("prev.commit.ref"),

View File

@ -15,7 +15,7 @@
package plugin
import (
"github.com/urfave/cli/v2"
"github.com/urfave/cli/v3"
)
// Flags has the cli.Flags for the Woodpecker plugin.
@ -25,10 +25,11 @@ func Flags() []cli.Flag {
// Pipeline flags
flags = append(flags, repositoryFlags()...)
flags = append(flags, pipelineFlags()...)
flags = append(flags, currFlags()...)
flags = append(flags, prevFlags()...)
flags = append(flags, commitFlags()...)
flags = append(flags, previousCommitFlags()...)
flags = append(flags, stepFlags()...)
flags = append(flags, systemFlags()...)
flags = append(flags, forgeFlags()...)
// Plugin flags
flags = append(flags, loggingFlags()...)

61
flake.lock Normal file
View File

@ -0,0 +1,61 @@
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1720542800,
"narHash": "sha256-ZgnNHuKV6h2+fQ5LuqnUaqZey1Lqqt5dTUAiAnqH0QQ=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "feb2849fdeb70028c70d73b848214b00d324a497",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

24
flake.nix Normal file
View File

@ -0,0 +1,24 @@
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs =
{ nixpkgs, flake-utils, ... }:
flake-utils.lib.eachDefaultSystem (
system:
let
pkgs = nixpkgs.legacyPackages.${system};
in
{
devShells.default = pkgs.mkShell {
buildInputs = with pkgs; [
go_1_22
gofumpt
golangci-lint
];
};
}
);
}

65
forge.go Normal file
View File

@ -0,0 +1,65 @@
// Copyright 2023 Woodpecker Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package plugin
import (
"github.com/urfave/cli/v3"
)
const (
ForgeTypeGitea = "gitea"
ForgeTypeForgejo = "forgejo"
ForgeTypeGitHub = "github"
ForgeTypeGitLab = "gitlab"
ForgeTypeBitbucket = "bitbucket"
)
// Forge defines metadata for integration with a forge.
type Forge struct {
Type string `json:"type,omitempty"`
URL string `json:"url,omitempty"`
// Deprecated: Please use URL instead.
Link string `json:"link,omitempty"`
}
func forgeFlags() []cli.Flag {
return []cli.Flag{
&cli.StringFlag{
Name: "forge.type",
Usage: "forge type (gitea, forgejo, github, gitlab, bitbucket)",
Sources: cli.EnvVars(
"CI_FORGE_TYPE",
),
},
&cli.StringFlag{
Name: "forge.url",
Aliases: []string{"forge.link"},
Usage: "forge url",
Sources: cli.EnvVars(
"CI_FORGE_URL",
"CI_FORGE_LINK",
),
},
}
}
func forgeFromContext(c *cli.Command) Forge {
return Forge{
Type: c.String("forge.type"),
Link: c.String("forge.url"),
URL: c.String("forge.url"),
}
}

19
go.mod
View File

@ -3,21 +3,18 @@ module codeberg.org/woodpecker-plugins/go-plugin
go 1.19
require (
github.com/joho/godotenv v1.4.0
github.com/rs/zerolog v1.28.0
github.com/stretchr/testify v1.8.1
github.com/urfave/cli/v2 v2.23.7
golang.org/x/net v0.5.0
github.com/joho/godotenv v1.5.1
github.com/rs/zerolog v1.33.0
github.com/stretchr/testify v1.9.0
github.com/urfave/cli/v3 v3.0.0-alpha9.0.20240901123629-31c5c841e98f
golang.org/x/net v0.29.0
)
require (
github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/mattn/go-colorable v0.1.12 // indirect
github.com/mattn/go-isatty v0.0.14 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.19 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
golang.org/x/sys v0.4.0 // indirect
golang.org/x/sys v0.25.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)

55
go.sum
View File

@ -1,43 +1,32 @@
github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/joho/godotenv v1.4.0 h1:3l4+N6zfMWnkbPEXKng2o2/MR5mSwTrBih4ZEkkz1lg=
github.com/joho/godotenv v1.4.0/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/rs/zerolog v1.28.0 h1:MirSo27VyNi7RJYP3078AA1+Cyzd2GB66qy3aUHvsWY=
github.com/rs/zerolog v1.28.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0=
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/urfave/cli/v2 v2.23.7 h1:YHDQ46s3VghFHFf1DdF+Sh7H4RqhcM+t0TmZRJx4oJY=
github.com/urfave/cli/v2 v2.23.7/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc=
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU=
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw=
golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18=
golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8=
github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/urfave/cli/v3 v3.0.0-alpha9.0.20240901123629-31c5c841e98f h1:NLtJkwEq8wijGw/t5340pm/SRM2loRQ6m+2IRaM+8eM=
github.com/urfave/cli/v3 v3.0.0-alpha9.0.20240901123629-31c5c841e98f/go.mod h1:Z1ItyMma7t6I7zHG9OpbExhHQOSkFf/96n+mAZ9MtVI=
golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo=
golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34=
golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

26
http.go
View File

@ -23,7 +23,7 @@ import (
"time"
"github.com/rs/zerolog/log"
"github.com/urfave/cli/v2"
"github.com/urfave/cli/v3"
"golang.org/x/net/proxy"
)
@ -32,28 +32,34 @@ func httpClientFlags() []cli.Flag {
&cli.BoolFlag{
Name: "transport.skip-verify",
Usage: "skip ssl verify",
EnvVars: []string{"PLUGIN_SKIP_VERIFY"},
Sources: cli.EnvVars(
"PLUGIN_SKIP_VERIFY",
),
},
&cli.StringFlag{
Name: "transport.socks-proxy",
Usage: "socks proxy address",
EnvVars: []string{"SOCKS_PROXY"},
Sources: cli.EnvVars(
"SOCKS_PROXY",
),
Hidden: true,
},
&cli.BoolFlag{
Name: "transport.socks-proxy-off",
Usage: "socks proxy ignored",
EnvVars: []string{"SOCKS_PROXY_OFF"},
Sources: cli.EnvVars(
"SOCKS_PROXY_OFF",
),
Hidden: true,
},
}
}
func HTTPClientFromContext(ctx *cli.Context) *http.Client {
func HTTPClientFromContext(c *cli.Command) *http.Client {
var (
skip = ctx.Bool("transport.skip-verify")
socks = ctx.String("transport.socks-proxy")
socksoff = ctx.Bool("transport.socks-proxy-off")
skip = c.Bool("transport.skip-verify")
socks = c.String("transport.socks-proxy")
socksOff = c.Bool("transport.socks-proxy-off")
)
certs, err := x509.SystemCertPool()
@ -80,7 +86,7 @@ func HTTPClientFromContext(ctx *cli.Context) *http.Client {
DualStack: true,
}
if len(socks) != 0 && !socksoff {
if len(socks) != 0 && !socksOff {
proxyDialer, err := proxy.SOCKS5("tcp", socks, nil, dialer)
if err != nil {
log.Error().Err(err).Msg("failed to create socks proxy")
@ -88,7 +94,7 @@ func HTTPClientFromContext(ctx *cli.Context) *http.Client {
if contextDialer, ok := proxyDialer.(proxy.ContextDialer); ok {
transport.DialContext = contextDialer.DialContext
} else {
transport.DialContext = func(ctx context.Context, network, addr string) (net.Conn, error) {
transport.DialContext = func(_ context.Context, network, addr string) (net.Conn, error) {
return proxyDialer.Dial(network, addr)
}
}

View File

@ -19,7 +19,7 @@ import (
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"github.com/urfave/cli/v2"
"github.com/urfave/cli/v3"
)
func loggingFlags() []cli.Flag {
@ -27,14 +27,16 @@ func loggingFlags() []cli.Flag {
&cli.StringFlag{
Name: "log-level",
Usage: "log level",
EnvVars: []string{"PLUGIN_LOG_LEVEL"},
Sources: cli.EnvVars(
"PLUGIN_LOG_LEVEL",
),
Value: "info",
},
}
}
// SetupConsoleLogger sets up the console logger.
func SetupConsoleLogger(c *cli.Context) error {
func SetupConsoleLogger(c *cli.Command) error {
level := c.String("log-level")
lvl, err := zerolog.ParseLevel(level)
if err != nil {

View File

@ -15,27 +15,41 @@
package plugin
import (
"github.com/urfave/cli/v2"
"github.com/urfave/cli/v3"
)
// Metadata defines runtime metadata.
type Metadata struct {
Repository Repository `json:"repo,omitempty"`
Pipeline Pipeline `json:"curr,omitempty"`
Curr Commit `json:"commit,omitempty"`
Prev Commit `json:"prev,omitempty"`
Commit Commit `json:"commit,omitempty"`
PreviousCommit Commit `json:"previous_commit,omitempty"`
Step Step `json:"step,omitempty"`
System System `json:"sys,omitempty"`
Forge Forge `json:"forge,omitempty"`
// Deprecated: Please use Commit instead.
Curr Commit
// Deprecated: Please use PreviousCommit instead.
Prev Commit `json:"prev,omitempty"`
}
// MetadataFromContext creates a Metadata from the cli.Context.
func MetadataFromContext(ctx *cli.Context) Metadata {
func MetadataFromContext(c *cli.Command) Metadata {
commit := commitFromContext(c)
previousCommit := previousCommitFromContext(c)
return Metadata{
Repository: repositoryFromContext(ctx),
Pipeline: pipelineFromContext(ctx),
Curr: currFromContext(ctx),
Prev: prevFromContext(ctx),
Step: stepFromContext(ctx),
System: systemFromContext(ctx),
Repository: repositoryFromContext(c),
Pipeline: pipelineFromContext(c),
Commit: commit,
PreviousCommit: previousCommit,
Step: stepFromContext(c),
System: systemFromContext(c),
Forge: forgeFromContext(c),
Curr: commit,
Prev: previousCommit,
}
}

View File

@ -32,8 +32,8 @@ func testMetadata() map[string]string {
"CI_REPO_NAME": "woodpecker",
"CI_REPO_OWNER": "woodpecker-ci",
"CI_REPO_SCM": "git",
"CI_REPO_LINK": "https://github.com/woodpecker-ci/woodpecker",
"CI_REPO_CLONE_URL": "https://github.com/woodpecker-ci/woodpecker.git",
"CI_REPO_URL": "https://codeberg.org/woodpecker-plugins/go-plugin",
"CI_REPO_CLONE_URL": "https://codeberg.org/woodpecker-plugins/go-plugin.git",
"CI_REPO_DEFAULT_BRANCH": "main",
"CI_REPO_PRIVATE": "false",
// Commit
@ -45,11 +45,11 @@ func testMetadata() map[string]string {
"CI_COMMIT_AUTHOR": "John Doe",
"CI_COMMIT_AUTHOR_EMAIL": "john@example.com",
"CI_COMMIT_AUTHOR_AVATAR": "https://avatars.githubusercontent.com/u/1234567?v=4",
"CI_COMMIT_LINK": "https://github.com/woodpecker-ci/woodpecker/commit/a1b2c3d4",
"CI_COMMIT_URL": "https://codeberg.org/woodpecker-plugins/go-plugin/commit/a1b2c3d4",
// Build
"CI_PIPELINE_NUMBER": "1",
"CI_PIPELINE_EVENT": "push",
"CI_PIPELINE_LINK": "https://ci.woodpecker-ci.org/woodpecker-ci/woodpecker/1",
"CI_PIPELINE_EVENT": EventTypePush,
"CI_PIPELINE_URL": "https://ci.woodpecker-ci.org/woodpecker-ci/woodpecker/1",
"CI_PIPELINE_STATUS": "running",
"CI_PIPELINE_CREATED": "1611234567",
"CI_PIPELINE_STARTED": "1611234567",
@ -60,9 +60,12 @@ func testMetadata() map[string]string {
"CI_STEP_STARTED": "1611234567",
// System
"CI_SYSTEM_NAME": "woodpecker",
"CI_SYSTEM_LINK": "https://ci.woodpecker-ci.org",
"CI_SYSTEM_URL": "https://ci.woodpecker-ci.org",
"CI_SYSTEM_VERSION": "1.0.0",
"CI_SYSTEM_HOST": "woodpecker-ci.org",
// Forge
"CI_FORGE_TYPE": ForgeTypeGitea,
"CI_FORGE_URL": "https://codeberg.org",
}
}
@ -76,14 +79,14 @@ func TestMetadata(t *testing.T) {
return nil
},
})
err := plugin.app.Run([]string{"test"})
err := plugin.app.Run(plugin.ctx, []string{"test"})
require.NoError(t, err)
// Repository
assert.Equal(t, "woodpecker", plugin.Metadata.Repository.Name)
assert.Equal(t, "woodpecker-ci", plugin.Metadata.Repository.Owner)
assert.Equal(t, "https://github.com/woodpecker-ci/woodpecker", plugin.Metadata.Repository.Link)
assert.Equal(t, "https://github.com/woodpecker-ci/woodpecker.git", plugin.Metadata.Repository.CloneURL)
assert.Equal(t, "https://codeberg.org/woodpecker-plugins/go-plugin", plugin.Metadata.Repository.URL)
assert.Equal(t, "https://codeberg.org/woodpecker-plugins/go-plugin.git", plugin.Metadata.Repository.CloneURL)
assert.Equal(t, "main", plugin.Metadata.Repository.Branch)
assert.False(t, plugin.Metadata.Repository.Private)
@ -99,8 +102,8 @@ func TestMetadata(t *testing.T) {
// Pipeline
assert.Equal(t, int64(1), plugin.Metadata.Pipeline.Number)
assert.Equal(t, "push", plugin.Metadata.Pipeline.Event)
assert.Equal(t, "https://ci.woodpecker-ci.org/woodpecker-ci/woodpecker/1", plugin.Metadata.Pipeline.Link)
assert.Equal(t, EventTypePush, plugin.Metadata.Pipeline.Event)
assert.Equal(t, "https://ci.woodpecker-ci.org/woodpecker-ci/woodpecker/1", plugin.Metadata.Pipeline.URL)
assert.Equal(t, "running", plugin.Metadata.Pipeline.Status)
assert.Equal(t, time.Unix(1611234567, 0), plugin.Metadata.Pipeline.Created)
assert.Equal(t, time.Unix(1611234567, 0), plugin.Metadata.Pipeline.Started)
@ -111,7 +114,11 @@ func TestMetadata(t *testing.T) {
// System
assert.Equal(t, "woodpecker", plugin.Metadata.System.Name)
assert.Equal(t, "https://ci.woodpecker-ci.org", plugin.Metadata.System.Link)
assert.Equal(t, "https://ci.woodpecker-ci.org", plugin.Metadata.System.URL)
assert.Equal(t, "1.0.0", plugin.Metadata.System.Version)
assert.Equal(t, "woodpecker-ci.org", plugin.Metadata.System.Host)
// Forge
assert.Equal(t, ForgeTypeGitea, plugin.Metadata.Forge.Type)
assert.Equal(t, "https://codeberg.org", plugin.Metadata.Forge.URL)
}

View File

@ -17,7 +17,16 @@ package plugin
import (
"time"
"github.com/urfave/cli/v2"
"github.com/urfave/cli/v3"
)
const (
EventTypePush = "push"
EventTypePullRequest = "pull_request"
EventTypeTag = "tag"
EventTypeDeployment = "deployment"
EventTypeCron = "cron"
EventTypeManual = "manual"
)
// Pipeline defines runtime metadata for a pipeline.
@ -25,101 +34,107 @@ type Pipeline struct {
Number int64 `json:"number,omitempty"`
Status string `json:"status,omitempty"`
Event string `json:"event,omitempty"`
Link string `json:"link,omitempty"`
URL string `json:"url,omitempty"`
DeployTarget string `json:"target,omitempty"`
Created time.Time `json:"created,omitempty"`
Started time.Time `json:"started,omitempty"`
Finished time.Time `json:"finished,omitempty"`
Parent int64 `json:"parent,omitempty"`
// Deprecated: Please use URL instead.
Link string `json:"link,omitempty"`
}
func pipelineFlags() []cli.Flag {
return []cli.Flag{
&cli.Int64Flag{
&cli.IntFlag{
Name: "pipeline.number",
Usage: "pipeline number",
EnvVars: []string{
Sources: cli.EnvVars(
"CI_PIPELINE_NUMBER",
"DRONE_BUILD_NUMBER",
},
),
},
&cli.StringFlag{
Name: "pipeline.status",
Usage: "pipeline status",
EnvVars: []string{
Sources: cli.EnvVars(
"CI_PIPELINE_STATUS",
"DRONE_BUILD_STATUS",
},
),
},
&cli.StringFlag{
Name: "pipeline.event",
Usage: "pipeline event",
EnvVars: []string{
Sources: cli.EnvVars(
"CI_PIPELINE_EVENT",
"DRONE_BUILD_EVENT",
},
),
},
&cli.StringFlag{
Name: "pipeline.link",
Usage: "pipeline link",
EnvVars: []string{
Name: "pipeline.url",
Aliases: []string{"pipeline.link"},
Usage: "pipeline url",
Sources: cli.EnvVars(
"CI_PIPELINE_URL",
"CI_PIPELINE_LINK",
"DRONE_BUILD_LINK",
},
),
},
&cli.StringFlag{
Name: "pipeline.deploy-target",
Usage: "pipeline deployment target",
EnvVars: []string{
Sources: cli.EnvVars(
"CI_PIPELINE_DEPLOY_TARGET",
"DRONE_DEPLOY_TO",
),
},
},
&cli.Int64Flag{
&cli.IntFlag{
Name: "pipeline.created",
Usage: "pipeline creation time",
EnvVars: []string{
Sources: cli.EnvVars(
"CI_PIPELINE_CREATED",
"DRONE_BUILD_CREATED",
),
},
},
&cli.Int64Flag{
&cli.IntFlag{
Name: "pipeline.started",
Usage: "pipeline start time",
EnvVars: []string{
Sources: cli.EnvVars(
"CI_PIPELINE_STARTED",
"DRONE_BUILD_STARTED",
),
},
},
&cli.Int64Flag{
&cli.IntFlag{
Name: "pipeline.finished",
Usage: "pipeline finish time",
EnvVars: []string{
Sources: cli.EnvVars(
"CI_PIPELINE_FINISHED",
"DRONE_BUILD_FINISHED",
),
},
},
&cli.Int64Flag{
&cli.IntFlag{
Name: "pipeline.parent",
Usage: "pipeline parent",
EnvVars: []string{
Sources: cli.EnvVars(
"CI_PIPELINE_PARENT",
"DRONE_BUILD_PARENT",
},
),
},
}
}
func pipelineFromContext(c *cli.Context) Pipeline {
func pipelineFromContext(c *cli.Command) Pipeline {
return Pipeline{
Number: c.Int64("pipeline.number"),
Number: c.Int("pipeline.number"),
Status: c.String("pipeline.status"),
Event: c.String("pipeline.event"),
Link: c.String("pipeline.link"),
URL: c.String("pipeline.url"),
Link: c.String("pipeline.url"),
DeployTarget: c.String("pipeline.deploy-target"),
Created: time.Unix(c.Int64("pipeline.created"), 0),
Started: time.Unix(c.Int64("pipeline.started"), 0),
Finished: time.Unix(c.Int64("pipeline.finished"), 0),
Parent: c.Int64("pipeline.parent"),
Created: time.Unix(c.Int("pipeline.created"), 0),
Started: time.Unix(c.Int("pipeline.started"), 0),
Finished: time.Unix(c.Int("pipeline.finished"), 0),
Parent: c.Int("pipeline.parent"),
}
}

View File

@ -21,7 +21,7 @@ import (
"github.com/joho/godotenv"
"github.com/rs/zerolog/log"
"github.com/urfave/cli/v2"
"github.com/urfave/cli/v3"
)
// Options defines the options for the plugin.
@ -36,13 +36,16 @@ type Options struct {
Flags []cli.Flag
// Execute function of the plugin.
Execute ExecuteFunc
// Context the plugin will use while executing.
Context context.Context
}
// Plugin defines the plugin instance.
type Plugin struct {
app *cli.App
app *cli.Command
execute ExecuteFunc
client *http.Client
ctx context.Context
// Metadata of the current pipeline.
Metadata Metadata
}
@ -56,8 +59,9 @@ func New(opt Options) *Plugin {
_ = godotenv.Overload("/run/woodpecker/env")
}
app := &cli.App{
app := &cli.Command{
Name: opt.Name,
Usage: "Run the Woodpecker CI plugin",
Description: opt.Description,
Version: opt.Version,
Flags: append(opt.Flags, Flags()...),
@ -66,25 +70,30 @@ func New(opt Options) *Plugin {
plugin := &Plugin{
app: app,
execute: opt.Execute,
ctx: opt.Context,
}
plugin.app.Action = plugin.action
if plugin.ctx == nil {
plugin.ctx = context.Background()
}
return plugin
}
func (p *Plugin) action(ctx *cli.Context) error {
if err := SetupConsoleLogger(ctx); err != nil {
func (p *Plugin) action(ctx context.Context, c *cli.Command) error {
if err := SetupConsoleLogger(c); err != nil {
return err
}
p.Metadata = MetadataFromContext(ctx)
p.client = HTTPClientFromContext(ctx)
p.Metadata = MetadataFromContext(c)
p.client = HTTPClientFromContext(c)
if p.execute == nil {
panic("plugin execute function is not set")
}
return p.execute(ctx.Context)
return p.execute(ctx)
}
// HTTPClient returns the http.Client instance.
@ -94,7 +103,7 @@ func (p *Plugin) HTTPClient() *http.Client {
// Run the plugin.
func (p *Plugin) Run() {
if err := p.app.Run(os.Args); err != nil {
if err := p.app.Run(p.ctx, os.Args); err != nil {
log.Error().Err(err).Msg("execution failed")
os.Exit(1)
}

View File

@ -30,7 +30,7 @@ func TestPlugin(t *testing.T) {
return nil
},
})
err := p.app.Run([]string{"test"})
err := p.app.Run(p.ctx, []string{"test"})
assert.NoError(t, err)
assert.True(t, executed)
}

6
renovate.json Normal file
View File

@ -0,0 +1,6 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"local>woodpecker-plugins/renovate-config"
]
}

53
repo.go
View File

@ -15,79 +15,96 @@
package plugin
import (
"github.com/urfave/cli/v2"
"github.com/urfave/cli/v3"
)
// Repository defines runtime metadata for a repository.
type Repository struct {
RemoteID string `json:"remote_id,omitempty"`
Name string `json:"name,omitempty"`
Owner string `json:"owner,omitempty"`
Link string `json:"link,omitempty"`
URL string `json:"url,omitempty"`
CloneURL string `json:"clone_url,omitempty"`
Private bool `json:"private,omitempty"`
Branch string `json:"default_branch,omitempty"`
DefaultBranch string `json:"default_branch,omitempty"`
// Deprecated: Please use DefaultBranch instead.
Branch string
}
func repositoryFlags() []cli.Flag {
return []cli.Flag{
&cli.StringFlag{
Name: "repo.remote-id",
Usage: "repo remote id",
Sources: cli.EnvVars(
"CI_REPO_REMOTE_ID",
),
},
&cli.StringFlag{
Name: "repo.name",
Usage: "repo name",
EnvVars: []string{
Sources: cli.EnvVars(
"CI_REPO_NAME",
"DRONE_REPO_NAME",
},
),
},
&cli.StringFlag{
Name: "repo.owner",
Usage: "repo owner",
EnvVars: []string{
Sources: cli.EnvVars(
"CI_REPO_OWNER",
"DRONE_REPO_OWNER",
},
),
},
&cli.StringFlag{
Name: "repo.link",
Usage: "repo link",
EnvVars: []string{
Name: "repo.url",
Aliases: []string{"repo.link"},
Usage: "repo url",
Sources: cli.EnvVars(
"CI_REPO_URL",
"CI_REPO_LINK",
"DRONE_REPO_LINK",
},
),
},
&cli.StringFlag{
Name: "repo.clone-url",
Usage: "repo clone url",
EnvVars: []string{
Sources: cli.EnvVars(
"CI_REPO_CLONE_URL",
"DRONE_GIT_HTTP_URL",
},
),
},
&cli.BoolFlag{
Name: "repo.private",
Usage: "repo private",
EnvVars: []string{
Sources: cli.EnvVars(
"CI_REPO_PRIVATE",
"DRONE_REPO_PRIVATE",
},
),
},
&cli.StringFlag{
Name: "repo.default-branch",
Usage: "repo default branch",
EnvVars: []string{
Sources: cli.EnvVars(
"CI_REPO_DEFAULT_BRANCH",
"DRONE_REPO_BRANCH",
},
),
},
}
}
func repositoryFromContext(c *cli.Context) Repository {
func repositoryFromContext(c *cli.Command) Repository {
return Repository{
RemoteID: c.String("repo.remote-id"),
Name: c.String("repo.name"),
Owner: c.String("repo.owner"),
Link: c.String("repo.link"),
URL: c.String("repo.url"),
Link: c.String("repo.url"),
CloneURL: c.String("repo.clone-url"),
Private: c.Bool("repo.private"),
Branch: c.String("repo.default-branch"),
DefaultBranch: c.String("repo.default-branch"),
}
}

26
step.go
View File

@ -17,7 +17,7 @@ package plugin
import (
"time"
"github.com/urfave/cli/v2"
"github.com/urfave/cli/v3"
)
// Step defines runtime metadata for a step.
@ -32,32 +32,32 @@ func stepFlags() []cli.Flag {
&cli.IntFlag{
Name: "step.number",
Usage: "step number",
EnvVars: []string{
Sources: cli.EnvVars(
"CI_STEP_NUMBER",
"DRONE_STEP_NUMBER",
),
},
},
&cli.Int64Flag{
&cli.IntFlag{
Name: "step.started",
Usage: "step start time",
EnvVars: []string{
Sources: cli.EnvVars(
"CI_STEP_STARTED",
),
},
},
&cli.Int64Flag{
&cli.IntFlag{
Name: "step.finished",
Usage: "step finish time",
EnvVars: []string{
Sources: cli.EnvVars(
"CI_STEP_FINISHED",
},
),
},
}
}
func stepFromContext(c *cli.Context) Step {
func stepFromContext(c *cli.Command) Step {
return Step{
Number: c.Int("step.number"),
Started: time.Unix(c.Int64("step.started"), 0),
Finished: time.Unix(c.Int64("step.finished"), 0),
Number: int(c.Int("step.number")),
Started: time.Unix(c.Int("step.started"), 0),
Finished: time.Unix(c.Int("step.finished"), 0),
}
}

View File

@ -17,16 +17,19 @@ package plugin
import (
"os"
"github.com/urfave/cli/v2"
"github.com/urfave/cli/v3"
)
// System defines runtime metadata for a ci/cd system.
type System struct {
Name string `json:"name,omitempty"`
Host string `json:"host,omitempty"`
Link string `json:"link,omitempty"`
Platform string `json:"arch,omitempty"`
Version string `json:"version,omitempty"`
URL string `json:"url,omitempty"`
// Deprecated: Please use URL instead.
Link string `json:"link,omitempty"`
}
func systemFlags() []cli.Flag {
@ -34,60 +37,63 @@ func systemFlags() []cli.Flag {
&cli.StringFlag{
Name: "system.name",
Usage: "system name",
EnvVars: []string{
Sources: cli.EnvVars(
"CI_SYSTEM_NAME",
},
),
},
&cli.StringFlag{
Name: "system.host",
Usage: "system host",
EnvVars: []string{
Sources: cli.EnvVars(
"CI_SYSTEM_HOST",
"DRONE_SYSTEM_HOST",
"DRONE_SYSTEM_HOSTNAME",
},
),
},
&cli.StringFlag{
Name: "system.link",
Usage: "system link",
EnvVars: []string{
Name: "system.url",
Aliases: []string{"system.link"},
Usage: "system url",
Sources: cli.EnvVars(
"CI_SYSTEM_URL",
"CI_SYSTEM_LINK",
},
),
},
&cli.StringFlag{
Name: "system.arch",
Usage: "system arch",
EnvVars: []string{
Sources: cli.EnvVars(
"CI_SYSTEM_PLATFORM",
"DRONE_STAGE_ARCH",
},
),
},
&cli.StringFlag{
Name: "system.version",
Usage: "system version",
EnvVars: []string{
Sources: cli.EnvVars(
"CI_SYSTEM_VERSION",
"DRONE_SYSTEM_VERSION",
},
),
},
}
}
func systemFromContext(ctx *cli.Context) System {
link := ctx.String("system.link")
host := ctx.String("system.host")
if link == "" && host != "" {
// Alternative link format used by Drone.
func systemFromContext(c *cli.Command) System {
url := c.String("system.url")
host := c.String("system.host")
if url == "" && host != "" {
// Alternative url format used by Drone.
proto := os.Getenv("DRONE_SYSTEM_PROTO")
if proto != "" {
link = proto + "://" + host
url = proto + "://" + host
}
}
return System{
Name: ctx.String("system.name"),
Name: c.String("system.name"),
Host: host,
Link: link,
Platform: ctx.String("system.arch"),
Version: ctx.String("system.version"),
URL: url,
Link: url,
Platform: c.String("system.arch"),
Version: c.String("system.version"),
}
}