Compare commits

...

43 Commits
v0.2.1 ... main

Author SHA1 Message Date
techknowlogick
61a5e3c8a2 lock to version 1 of goreleaser 2024-09-18 14:46:56 -04:00
Jörg Markert
a07bd291f5 feat: add branch_protection resource (#72)
added terraform tests for the resource

Reviewed-on: https://gitea.com/gitea/terraform-provider-gitea/pulls/72
Co-authored-by: Jörg Markert <joerg.markert@gmail.com>
Co-committed-by: Jörg Markert <joerg.markert@gmail.com>
2024-09-11 17:32:48 +00:00
Renovate Bot
aa450c1855 fix(deps): update module code.gitea.io/sdk/gitea to v0.19.0 (#71)
Reviewed-on: https://gitea.com/gitea/terraform-provider-gitea/pulls/71
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2024-08-16 16:09:45 +00:00
Renovate Bot
9a338d640c chore(deps): update actions/checkout action to v4 (#70)
Reviewed-on: https://gitea.com/gitea/terraform-provider-gitea/pulls/70
Reviewed-by: techknowlogick <techknowlogick@noreply.gitea.com>
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2024-07-26 18:00:44 +00:00
venc0r
4b114faecf feat: add authorization header for webhooks (#69)
Co-authored-by: Jörg Markert <venc0r@live.com>
Reviewed-on: https://gitea.com/gitea/terraform-provider-gitea/pulls/69
Reviewed-by: techknowlogick <techknowlogick@noreply.gitea.com>
Co-authored-by: venc0r <venc0r@noreply.gitea.com>
Co-committed-by: venc0r <venc0r@noreply.gitea.com>
2024-07-16 14:36:46 +00:00
Renovate Bot
fb56ad7c76 chore(deps): update goreleaser/goreleaser-action action to v6 (#67)
Reviewed-on: https://gitea.com/gitea/terraform-provider-gitea/pulls/67
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2024-07-16 14:36:30 +00:00
Renovate Bot
b0585b00f1 chore(deps): update gitea/gitea docker tag to v1.22.1 (#68)
Reviewed-on: https://gitea.com/gitea/terraform-provider-gitea/pulls/68
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2024-07-16 14:36:14 +00:00
Renovate Bot
62e71e6fac fix(deps): update module github.com/hashicorp/terraform-plugin-docs to v0.19.4 (#66)
Reviewed-on: https://gitea.com/gitea/terraform-provider-gitea/pulls/66
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2024-06-05 06:00:31 +00:00
Renovate Bot
9101616d60 fix(deps): update module github.com/hashicorp/terraform-plugin-sdk/v2 to v2.34.0 (#63)
Reviewed-on: https://gitea.com/gitea/terraform-provider-gitea/pulls/63
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2024-06-05 06:00:20 +00:00
Renovate Bot
95d0747839 fix(deps): update module github.com/hashicorp/terraform-plugin-docs to v0.19.3 (#64)
Reviewed-on: https://gitea.com/gitea/terraform-provider-gitea/pulls/64
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2024-05-31 15:16:04 +00:00
Renovate Bot
f55b8617d1 chore(deps): update gitea/gitea docker tag to v1.22.0 (#65)
Reviewed-on: https://gitea.com/gitea/terraform-provider-gitea/pulls/65
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2024-05-31 15:08:45 +00:00
Renovate Bot
15348d755a fix(deps): update module code.gitea.io/sdk/gitea to v0.18.0 (#62)
Reviewed-on: https://gitea.com/gitea/terraform-provider-gitea/pulls/62
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2024-05-03 17:30:52 +00:00
Renovate Bot
c5a6da0a3d chore(deps): update gitea/gitea docker tag to v1.21.11 (#59)
Reviewed-on: https://gitea.com/gitea/terraform-provider-gitea/pulls/59
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2024-05-03 17:24:54 +00:00
Renovate Bot
cf8eb21ca4 fix(deps): update module github.com/hashicorp/terraform-plugin-docs to v0.19.2 (#61)
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2024-05-02 17:26:15 +00:00
Renovate Bot
278bd943b1 chore(deps): update gitea/gitea docker tag to v1.21.8 (#55)
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2024-03-14 17:42:49 +00:00
Renovate Bot
71f11fe8b9 fix(deps): update module github.com/hashicorp/terraform-plugin-sdk/v2 to v2.33.0 (#56)
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2024-02-26 21:22:16 +00:00
Renovate Bot
153af2e0ac fix(deps): update module github.com/hashicorp/terraform-plugin-sdk/v2 to v2.32.0 (#53)
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2024-02-20 06:28:07 +00:00
Renovate Bot
7cbea02973 chore(deps): update hashicorp/setup-terraform action to v3 (#54)
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2024-02-20 06:26:34 +00:00
Renovate Bot
6614cca9d4 fix(deps): update module github.com/hashicorp/terraform-plugin-docs to v0.18.0 (#52)
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2024-02-19 23:51:05 +00:00
Renovate Bot
af1532648a chore(deps): update gitea/gitea docker tag to v1.21.5 (#51)
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2024-02-19 23:50:57 +00:00
Renovate Bot
ea942f2d3b fix(deps): update module github.com/hashicorp/terraform-plugin-docs to v0.17.0 (#50)
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2024-01-18 17:20:15 +00:00
Renovate Bot
7c16a693a8 chore(deps): update gitea/gitea docker tag to v1.21.4 (#49)
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2024-01-18 17:12:59 +00:00
Renovate Bot
c4c1edc9bd fix(deps): update module code.gitea.io/sdk/gitea to v0.17.1 (#46)
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2024-01-06 05:12:46 +00:00
Renovate Bot
23c9273de5 chore(deps): update actions/setup-go action to v5 (#43)
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2023-12-23 05:55:08 +00:00
Renovate Bot
502034af9f fix(deps): update module code.gitea.io/sdk/gitea to v0.17.0 (#42)
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2023-12-23 05:54:18 +00:00
Renovate Bot
b472717098 chore(deps): update gitea/gitea docker tag to v1.21.3 (#44)
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2023-12-23 05:54:02 +00:00
Renovate Bot
122ec8f817 fix(deps): update module github.com/hashicorp/terraform-plugin-sdk/v2 to v2.31.0 (#45)
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2023-12-23 05:53:47 +00:00
Renovate Bot
09dbfe7ee4 chore(deps): update gitea/gitea docker tag to v1.21.1 (#40)
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2023-11-28 05:45:01 +00:00
Renovate Bot
71083f9d0a fix(deps): update module github.com/hashicorp/terraform-plugin-sdk/v2 to v2.30.0 (#37)
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2023-11-16 00:53:07 +00:00
tobiasbp
167ce6ed80 add-scope-to-token (#33)
This PR adds the ability to set scopes for tokens (they can not be used for much without). Removed the _username_ from the _token resource_ as the owner can not be configured, as it will be owned by the user creating the resource.

As far as I can tell, it's not possible to modify the scopes for a existing token using the API, so a token created by the provider will be recreated if the list of scopes is updated. This reflects what is possible using the GUI.

This PR fixes this issue: https://gitea.com/gitea/terraform-provider-gitea/issues/32

Reviewed-on: https://gitea.com/gitea/terraform-provider-gitea/pulls/33
Co-authored-by: tobiasbp <tobiasbp@noreply.gitea.com>
Co-committed-by: tobiasbp <tobiasbp@noreply.gitea.com>
2023-11-16 00:52:35 +00:00
Tobias Balle-Petersen
557ea2673a New resources for managing team membership (#36)
This PR adds two new resources, _gitea_team_membership_ & _gitea_team_members_, in an attempt to decouple _gitea_team_ resources from team memberships. This facilitates the removal of members from teams without altering/recreating an existing _team_ resource.

This PR adresses this issue: https://gitea.com/gitea/terraform-provider-gitea/issues/30

The ability to set members in the _gitea_team_ resource has been removed.

The resources proposed here are inspired by similar resources in the _GitHub_ provider:
* [team_members](https://registry.terraform.io/providers/integrations/github/latest/docs/resources/team_members)
* [team_membership](https://registry.terraform.io/providers/integrations/github/latest/docs/resources/team_membership)

# gitea_team_members
A single resource manages all members of a team.

- This resource must be recreated when membership changes. This means, that other team members will temporarily loose their membership until the recreation of the resource is complete.
- If the recreation of the resource fails, other users will have lost their membership until the resource can be recreated.

# gitea_team_membership
A single resource holds the relationship between a single user and a single team.

-  Memberships can be deleted without affecting other users.

Reviewed-on: https://gitea.com/gitea/terraform-provider-gitea/pulls/36
Reviewed-by: techknowlogick <techknowlogick@noreply.gitea.com>
Co-authored-by: Tobias Balle-Petersen <tobiasbp@gmail.com>
Co-committed-by: Tobias Balle-Petersen <tobiasbp@gmail.com>
2023-11-16 00:52:16 +00:00
Renovate Bot
0c0ab517c0 chore(deps): update gitea/gitea docker tag to v1.21.0 (#38)
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2023-11-14 21:09:29 +00:00
Petar Nikolovski
683696a756 Add repository webhook resource (#28)
Co-authored-by: techknowlogick <techknowlogick@noreply.gitea.com>
Reviewed-on: https://gitea.com/gitea/terraform-provider-gitea/pulls/28
Reviewed-by: techknowlogick <techknowlogick@noreply.gitea.com>
Co-authored-by: Petar Nikolovski <petar.nikolovski@protonmail.com>
Co-committed-by: Petar Nikolovski <petar.nikolovski@protonmail.com>
2023-10-24 19:46:11 +00:00
Renovate Bot
f59aab3d1f chore(deps): update gitea/gitea docker tag to v1.20.5 (#29)
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2023-10-04 02:57:10 +00:00
Renovate Bot
ea7db0ab14 chore(deps): update crazy-max/ghaction-import-gpg action to v6 (#24)
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2023-09-25 03:41:01 +00:00
Renovate Bot
8bd169d2c7 chore(deps): update goreleaser/goreleaser-action action to v5 (#25)
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2023-09-25 03:40:17 +00:00
Renovate Bot
0efcdef0b9 chore(deps): update gitea/gitea docker tag to v1.20.4 (#22)
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2023-09-08 15:45:35 +00:00
Renovate Bot
c9fec94bb3 chore(deps): update gitea/gitea docker tag to v1.20.3 (#21)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [gitea/gitea](https://github.com/go-gitea/gitea) | minor | `1.19.3` -> `1.20.3` |

---

### Release Notes

<details>
<summary>go-gitea/gitea (gitea/gitea)</summary>

### [`v1.20.3`](https://github.com/go-gitea/gitea/blob/HEAD/CHANGELOG.md#1203---2023-08-20)

[Compare Source](https://github.com/go-gitea/gitea/compare/v1.20.2...v1.20.3)

-   BREAKING
    -   Fix the wrong derive path ([#&#8203;26271](https://github.com/go-gitea/gitea/issues/26271)) ([#&#8203;26318](https://github.com/go-gitea/gitea/issues/26318))
-   SECURITY
    -   Fix API leaking Usermail if not logged in ([#&#8203;25097](https://github.com/go-gitea/gitea/issues/25097)) ([#&#8203;26350](https://github.com/go-gitea/gitea/issues/26350))
-   FEATURES
    -   Add ThreadID parameter for Telegram webhooks ([#&#8203;25996](https://github.com/go-gitea/gitea/issues/25996)) ([#&#8203;26480](https://github.com/go-gitea/gitea/issues/26480))
-   ENHANCEMENTS
    -   Add minimum polyfill to support "relative-time-element" in PaleMoon ([#&#8203;26575](https://github.com/go-gitea/gitea/issues/26575)) ([#&#8203;26578](https://github.com/go-gitea/gitea/issues/26578))
    -   Fix dark theme highlight for "NameNamespace" ([#&#8203;26519](https://github.com/go-gitea/gitea/issues/26519)) ([#&#8203;26527](https://github.com/go-gitea/gitea/issues/26527))
    -   Detect ogg mime-type as audio or video ([#&#8203;26494](https://github.com/go-gitea/gitea/issues/26494)) ([#&#8203;26505](https://github.com/go-gitea/gitea/issues/26505))
    -   Use `object-fit: contain` for oauth2 custom icons ([#&#8203;26493](https://github.com/go-gitea/gitea/issues/26493)) ([#&#8203;26498](https://github.com/go-gitea/gitea/issues/26498))
    -   Move dropzone progress bar to bottom to show filename when uploading ([#&#8203;26492](https://github.com/go-gitea/gitea/issues/26492)) ([#&#8203;26497](https://github.com/go-gitea/gitea/issues/26497))
    -   Remove last newline from config file ([#&#8203;26468](https://github.com/go-gitea/gitea/issues/26468)) ([#&#8203;26471](https://github.com/go-gitea/gitea/issues/26471))
    -   Minio: add missing region on client initialization ([#&#8203;26412](https://github.com/go-gitea/gitea/issues/26412)) ([#&#8203;26438](https://github.com/go-gitea/gitea/issues/26438))
    -   Add pull request review request webhook event ([#&#8203;26401](https://github.com/go-gitea/gitea/issues/26401)) ([#&#8203;26407](https://github.com/go-gitea/gitea/issues/26407))
    -   Fix text truncate ([#&#8203;26354](https://github.com/go-gitea/gitea/issues/26354)) ([#&#8203;26384](https://github.com/go-gitea/gitea/issues/26384))
    -   Fix incorrect color of selected assignees when create issue ([#&#8203;26324](https://github.com/go-gitea/gitea/issues/26324)) ([#&#8203;26372](https://github.com/go-gitea/gitea/issues/26372))
    -   Display human-readable text instead of cryptic filemodes ([#&#8203;26352](https://github.com/go-gitea/gitea/issues/26352)) ([#&#8203;26358](https://github.com/go-gitea/gitea/issues/26358))
    -   Hide `last indexed SHA` when a repo could not be indexed yet ([#&#8203;26340](https://github.com/go-gitea/gitea/issues/26340)) ([#&#8203;26345](https://github.com/go-gitea/gitea/issues/26345))
    -   Fix the topic validation rule and suport dots ([#&#8203;26286](https://github.com/go-gitea/gitea/issues/26286)) ([#&#8203;26303](https://github.com/go-gitea/gitea/issues/26303))
    -   Fix due date rendering the wrong date in issue ([#&#8203;26268](https://github.com/go-gitea/gitea/issues/26268)) ([#&#8203;26274](https://github.com/go-gitea/gitea/issues/26274))
    -   Don't autosize textarea in diff view ([#&#8203;26233](https://github.com/go-gitea/gitea/issues/26233)) ([#&#8203;26244](https://github.com/go-gitea/gitea/issues/26244))
    -   Fix commit compare style ([#&#8203;26209](https://github.com/go-gitea/gitea/issues/26209)) ([#&#8203;26226](https://github.com/go-gitea/gitea/issues/26226))
    -   Warn instead of reporting an error when a webhook cannot be found ([#&#8203;26039](https://github.com/go-gitea/gitea/issues/26039)) ([#&#8203;26211](https://github.com/go-gitea/gitea/issues/26211))
-   BUGFIXES
    -   Use "input" event instead of "keyup" event for migration form ([#&#8203;26602](https://github.com/go-gitea/gitea/issues/26602)) ([#&#8203;26605](https://github.com/go-gitea/gitea/issues/26605))
    -   Do not use deprecated log config options by default ([#&#8203;26592](https://github.com/go-gitea/gitea/issues/26592)) ([#&#8203;26600](https://github.com/go-gitea/gitea/issues/26600))
    -   Fix "issueReposQueryPattern does not match query" ([#&#8203;26556](https://github.com/go-gitea/gitea/issues/26556)) ([#&#8203;26564](https://github.com/go-gitea/gitea/issues/26564))
    -   Sync repo's IsEmpty status correctly ([#&#8203;26517](https://github.com/go-gitea/gitea/issues/26517)) ([#&#8203;26560](https://github.com/go-gitea/gitea/issues/26560))
    -   Fix project filter bugs ([#&#8203;26490](https://github.com/go-gitea/gitea/issues/26490)) ([#&#8203;26558](https://github.com/go-gitea/gitea/issues/26558))
    -   Use `hidden` over `clip` for text truncation ([#&#8203;26520](https://github.com/go-gitea/gitea/issues/26520)) ([#&#8203;26522](https://github.com/go-gitea/gitea/issues/26522))
    -   Set "type=button" for editor's toolbar buttons ([#&#8203;26510](https://github.com/go-gitea/gitea/issues/26510)) ([#&#8203;26518](https://github.com/go-gitea/gitea/issues/26518))
    -   Fix NuGet search endpoints ([#&#8203;25613](https://github.com/go-gitea/gitea/issues/25613)) ([#&#8203;26499](https://github.com/go-gitea/gitea/issues/26499))
    -   Fix storage path logic especially for relative paths ([#&#8203;26441](https://github.com/go-gitea/gitea/issues/26441)) ([#&#8203;26481](https://github.com/go-gitea/gitea/issues/26481))
    -   Close stdout correctly for "git blame" ([#&#8203;26470](https://github.com/go-gitea/gitea/issues/26470)) ([#&#8203;26473](https://github.com/go-gitea/gitea/issues/26473))
    -   Check first if minio bucket exists before trying to create it ([#&#8203;26420](https://github.com/go-gitea/gitea/issues/26420)) ([#&#8203;26465](https://github.com/go-gitea/gitea/issues/26465))
    -   Avoiding accessing undefined tributeValues [#&#8203;26461](https://github.com/go-gitea/gitea/issues/26461) ([#&#8203;26462](https://github.com/go-gitea/gitea/issues/26462))
    -   Call git.InitSimple for runRepoSyncReleases ([#&#8203;26396](https://github.com/go-gitea/gitea/issues/26396)) ([#&#8203;26450](https://github.com/go-gitea/gitea/issues/26450))
    -   Add transaction when creating pull request created dirty data ([#&#8203;26259](https://github.com/go-gitea/gitea/issues/26259)) ([#&#8203;26437](https://github.com/go-gitea/gitea/issues/26437))
    -   Fix wrong middleware sequence ([#&#8203;26428](https://github.com/go-gitea/gitea/issues/26428)) ([#&#8203;26436](https://github.com/go-gitea/gitea/issues/26436))
    -   Fix admin queue page title and fix CI failures ([#&#8203;26409](https://github.com/go-gitea/gitea/issues/26409)) ([#&#8203;26421](https://github.com/go-gitea/gitea/issues/26421))
    -   Introduce ctx.PathParamRaw to avoid incorrect unescaping ([#&#8203;26392](https://github.com/go-gitea/gitea/issues/26392)) ([#&#8203;26405](https://github.com/go-gitea/gitea/issues/26405))
    -   Bypass MariaDB performance bug of the "IN" sub-query, fix incorrect IssueIndex ([#&#8203;26279](https://github.com/go-gitea/gitea/issues/26279)) ([#&#8203;26368](https://github.com/go-gitea/gitea/issues/26368))
    -   Fix incorrect CLI exit code and duplicate error message ([#&#8203;26346](https://github.com/go-gitea/gitea/issues/26346)) ([#&#8203;26347](https://github.com/go-gitea/gitea/issues/26347))
    -   Prevent newline errors with Debian packages ([#&#8203;26332](https://github.com/go-gitea/gitea/issues/26332)) ([#&#8203;26342](https://github.com/go-gitea/gitea/issues/26342))
    -   Fix bug with sqlite load read ([#&#8203;26305](https://github.com/go-gitea/gitea/issues/26305)) ([#&#8203;26339](https://github.com/go-gitea/gitea/issues/26339))
    -   Make git batch operations use parent context timeout instead of default timeout ([#&#8203;26325](https://github.com/go-gitea/gitea/issues/26325)) ([#&#8203;26330](https://github.com/go-gitea/gitea/issues/26330))
    -   Support getting changed files when commit ID is `EmptySHA` ([#&#8203;26290](https://github.com/go-gitea/gitea/issues/26290)) ([#&#8203;26316](https://github.com/go-gitea/gitea/issues/26316))
    -   Clarify the logger's MODE config option ([#&#8203;26267](https://github.com/go-gitea/gitea/issues/26267)) ([#&#8203;26281](https://github.com/go-gitea/gitea/issues/26281))
    -   Use shared template for webhook icons ([#&#8203;26242](https://github.com/go-gitea/gitea/issues/26242)) ([#&#8203;26246](https://github.com/go-gitea/gitea/issues/26246))
    -   Fix pull request check list is limited ([#&#8203;26179](https://github.com/go-gitea/gitea/issues/26179)) ([#&#8203;26245](https://github.com/go-gitea/gitea/issues/26245))
    -   Fix attachment clipboard copy on insecure origin ([#&#8203;26224](https://github.com/go-gitea/gitea/issues/26224)) ([#&#8203;26231](https://github.com/go-gitea/gitea/issues/26231))
    -   Fix access check for org-level project ([#&#8203;26182](https://github.com/go-gitea/gitea/issues/26182)) ([#&#8203;26223](https://github.com/go-gitea/gitea/issues/26223))
-   MISC
    -   Improve profile readme rendering ([#&#8203;25988](https://github.com/go-gitea/gitea/issues/25988)) ([#&#8203;26453](https://github.com/go-gitea/gitea/issues/26453))
    -   \[docs] Add missing backtick in quickstart.zh-cn.md ([#&#8203;26349](https://github.com/go-gitea/gitea/issues/26349)) ([#&#8203;26357](https://github.com/go-gitea/gitea/issues/26357))
    -   Upgrade x/net to 0.13.0 ([#&#8203;26301](https://github.com/go-gitea/gitea/issues/26301))

### [`v1.20.2`](https://github.com/go-gitea/gitea/blob/HEAD/CHANGELOG.md#1202---2023-07-29)

[Compare Source](https://github.com/go-gitea/gitea/compare/v1.20.1...v1.20.2)

-   ENHANCEMENTS
    -   Calculate MAX_WORKERS default value by CPU number ([#&#8203;26177](https://github.com/go-gitea/gitea/issues/26177)) ([#&#8203;26183](https://github.com/go-gitea/gitea/issues/26183))
    -   Display deprecated warning in admin panel pages as well as in the log file ([#&#8203;26094](https://github.com/go-gitea/gitea/issues/26094)) ([#&#8203;26154](https://github.com/go-gitea/gitea/issues/26154))
-   BUGFIXES
    -   Fix allowed user types setting problem ([#&#8203;26200](https://github.com/go-gitea/gitea/issues/26200)) ([#&#8203;26206](https://github.com/go-gitea/gitea/issues/26206))
    -   Fix handling of plenty Nuget package versions ([#&#8203;26075](https://github.com/go-gitea/gitea/issues/26075)) ([#&#8203;26173](https://github.com/go-gitea/gitea/issues/26173))
    -   Fix UI regression of asciinema player ([#&#8203;26159](https://github.com/go-gitea/gitea/issues/26159)) ([#&#8203;26162](https://github.com/go-gitea/gitea/issues/26162))
    -   Fix LFS object list style ([#&#8203;26133](https://github.com/go-gitea/gitea/issues/26133)) ([#&#8203;26147](https://github.com/go-gitea/gitea/issues/26147))
    -   Fix allowed user types setting problem ([#&#8203;26200](https://github.com/go-gitea/gitea/issues/26200)) ([#&#8203;26206](https://github.com/go-gitea/gitea/issues/26206))
    -   Prevent primary key update on migration ([#&#8203;26192](https://github.com/go-gitea/gitea/issues/26192)) ([#&#8203;26199](https://github.com/go-gitea/gitea/issues/26199))
    -   Fix bug when pushing to a pull request which enabled dismiss approval automatically ([#&#8203;25882](https://github.com/go-gitea/gitea/issues/25882)) ([#&#8203;26158](https://github.com/go-gitea/gitea/issues/26158))
    -   Fix bugs in LFS meta garbage collection ([#&#8203;26122](https://github.com/go-gitea/gitea/issues/26122)) ([#&#8203;26157](https://github.com/go-gitea/gitea/issues/26157))
    -   Update xorm version ([#&#8203;26128](https://github.com/go-gitea/gitea/issues/26128)) ([#&#8203;26150](https://github.com/go-gitea/gitea/issues/26150))
    -   Remove "misc" scope check from public API endpoints ([#&#8203;26134](https://github.com/go-gitea/gitea/issues/26134)) ([#&#8203;26149](https://github.com/go-gitea/gitea/issues/26149))
    -   Fix CLI allowing creation of access tokens with existing name ([#&#8203;26071](https://github.com/go-gitea/gitea/issues/26071)) ([#&#8203;26144](https://github.com/go-gitea/gitea/issues/26144))
    -   Fix incorrect router logger ([#&#8203;26137](https://github.com/go-gitea/gitea/issues/26137)) ([#&#8203;26143](https://github.com/go-gitea/gitea/issues/26143))
    -   Improve commit graph alignment and truncating ([#&#8203;26112](https://github.com/go-gitea/gitea/issues/26112)) ([#&#8203;26127](https://github.com/go-gitea/gitea/issues/26127))
    -   Avoid writing config file if not installed ([#&#8203;26107](https://github.com/go-gitea/gitea/issues/26107)) ([#&#8203;26113](https://github.com/go-gitea/gitea/issues/26113))
    -   Fix escape problems in the branch selector ([#&#8203;25875](https://github.com/go-gitea/gitea/issues/25875)) ([#&#8203;26103](https://github.com/go-gitea/gitea/issues/26103))
    -   Fix handling of Debian files with trailing slash ([#&#8203;26087](https://github.com/go-gitea/gitea/issues/26087)) ([#&#8203;26098](https://github.com/go-gitea/gitea/issues/26098))
    -   Fix Missing 404 swagger response docs for /admin/users/{username} ([#&#8203;26086](https://github.com/go-gitea/gitea/issues/26086)) ([#&#8203;26089](https://github.com/go-gitea/gitea/issues/26089))
    -   Use stderr as fallback if the log file can't be opened ([#&#8203;26074](https://github.com/go-gitea/gitea/issues/26074)) ([#&#8203;26083](https://github.com/go-gitea/gitea/issues/26083))
    -   Increase table cell horizontal padding ([#&#8203;26140](https://github.com/go-gitea/gitea/issues/26140)) ([#&#8203;26142](https://github.com/go-gitea/gitea/issues/26142))
    -   Fix wrong workflow status when rerun a job in an already finished workflow ([#&#8203;26119](https://github.com/go-gitea/gitea/issues/26119)) ([#&#8203;26124](https://github.com/go-gitea/gitea/issues/26124))
    -   Fix duplicated url prefix on issue context menu ([#&#8203;26066](https://github.com/go-gitea/gitea/issues/26066)) ([#&#8203;26067](https://github.com/go-gitea/gitea/issues/26067))

### [`v1.20.1`](https://github.com/go-gitea/gitea/blob/HEAD/CHANGELOG.md#1201---2023-07-22)

[Compare Source](https://github.com/go-gitea/gitea/compare/v1.20.0...v1.20.1)

-   SECURITY
    -   Disallow dangerous URL schemes ([#&#8203;25960](https://github.com/go-gitea/gitea/issues/25960)) ([#&#8203;25964](https://github.com/go-gitea/gitea/issues/25964))
-   ENHANCEMENTS
    -   Show the mismatched ROOT_URL warning on the sign-in page if OAuth2 is enabled ([#&#8203;25947](https://github.com/go-gitea/gitea/issues/25947)) ([#&#8203;25972](https://github.com/go-gitea/gitea/issues/25972))
    -   Make pending commit status yellow again ([#&#8203;25935](https://github.com/go-gitea/gitea/issues/25935)) ([#&#8203;25968](https://github.com/go-gitea/gitea/issues/25968))
-   BUGFIXES
    -   Fix version in rpm repodata/primary.xml.gz ([#&#8203;26009](https://github.com/go-gitea/gitea/issues/26009)) ([#&#8203;26048](https://github.com/go-gitea/gitea/issues/26048))
    -   Fix env config parsing for "GITEA\_\_\_\_APP_NAME" ([#&#8203;26001](https://github.com/go-gitea/gitea/issues/26001)) ([#&#8203;26013](https://github.com/go-gitea/gitea/issues/26013))
    -   ParseScope with owner/repo always sets owner to zero ([#&#8203;25987](https://github.com/go-gitea/gitea/issues/25987)) ([#&#8203;25989](https://github.com/go-gitea/gitea/issues/25989))
    -   Fix SSPI auth panic ([#&#8203;25955](https://github.com/go-gitea/gitea/issues/25955)) ([#&#8203;25969](https://github.com/go-gitea/gitea/issues/25969))
    -   Avoid creating directories when loading config ([#&#8203;25944](https://github.com/go-gitea/gitea/issues/25944)) ([#&#8203;25957](https://github.com/go-gitea/gitea/issues/25957))
    -   Make environment-to-ini work with INSTALL_LOCK=true ([#&#8203;25926](https://github.com/go-gitea/gitea/issues/25926)) ([#&#8203;25937](https://github.com/go-gitea/gitea/issues/25937))
    -   Ignore `runs-on` with expressions when warning no matched runners ([#&#8203;25917](https://github.com/go-gitea/gitea/issues/25917)) ([#&#8203;25933](https://github.com/go-gitea/gitea/issues/25933))
    -   Avoid opening/closing PRs which are already merged ([#&#8203;25883](https://github.com/go-gitea/gitea/issues/25883)) ([#&#8203;25903](https://github.com/go-gitea/gitea/issues/25903))
-   DOCS
    -   RPM Registry: Show zypper commands for SUSE based distros as well ([#&#8203;25981](https://github.com/go-gitea/gitea/issues/25981)) ([#&#8203;26020](https://github.com/go-gitea/gitea/issues/26020))
    -   Correctly refer to dev tags as nightly in the docker docs ([#&#8203;26004](https://github.com/go-gitea/gitea/issues/26004)) ([#&#8203;26019](https://github.com/go-gitea/gitea/issues/26019))
    -   Update path related documents ([#&#8203;25417](https://github.com/go-gitea/gitea/issues/25417)) ([#&#8203;25982](https://github.com/go-gitea/gitea/issues/25982))
-   MISC
    -   Adding remaining enum for migration repo model type. ([#&#8203;26021](https://github.com/go-gitea/gitea/issues/26021)) ([#&#8203;26034](https://github.com/go-gitea/gitea/issues/26034))
    -   Fix the route for pull-request's authors ([#&#8203;26016](https://github.com/go-gitea/gitea/issues/26016)) ([#&#8203;26018](https://github.com/go-gitea/gitea/issues/26018))
    -   Fix commit status color on dashboard repolist ([#&#8203;25993](https://github.com/go-gitea/gitea/issues/25993)) ([#&#8203;25998](https://github.com/go-gitea/gitea/issues/25998))
    -   Avoid hard-coding height in language dropdown menu ([#&#8203;25986](https://github.com/go-gitea/gitea/issues/25986)) ([#&#8203;25997](https://github.com/go-gitea/gitea/issues/25997))
    -   Add shutting down notice ([#&#8203;25920](https://github.com/go-gitea/gitea/issues/25920)) ([#&#8203;25922](https://github.com/go-gitea/gitea/issues/25922))
    -   Fix incorrect milestone count when provide a keyword ([#&#8203;25880](https://github.com/go-gitea/gitea/issues/25880)) ([#&#8203;25904](https://github.com/go-gitea/gitea/issues/25904))

### [`v1.20.0`](https://github.com/go-gitea/gitea/blob/HEAD/CHANGELOG.md#1200---2023-07-16)

[Compare Source](https://github.com/go-gitea/gitea/compare/v1.19.4...v1.20.0)

-   BREAKING
    -   Fix WORK_DIR for docker (root) image ([#&#8203;25738](https://github.com/go-gitea/gitea/issues/25738)) ([#&#8203;25811](https://github.com/go-gitea/gitea/issues/25811))
    -   Restrict `[actions].DEFAULT_ACTIONS_URL` to only `github` or `self` ([#&#8203;25581](https://github.com/go-gitea/gitea/issues/25581)) ([#&#8203;25604](https://github.com/go-gitea/gitea/issues/25604))
    -   Refactor path & config system ([#&#8203;25330](https://github.com/go-gitea/gitea/issues/25330)) ([#&#8203;25416](https://github.com/go-gitea/gitea/issues/25416))
    -   Fix all possible setting error related storages and added some tests ([#&#8203;23911](https://github.com/go-gitea/gitea/issues/23911)) ([#&#8203;25244](https://github.com/go-gitea/gitea/issues/25244))
    -   Use a separate admin page to show global stats, remove `actions` stat ([#&#8203;25062](https://github.com/go-gitea/gitea/issues/25062))
    -   Remove the service worker ([#&#8203;25010](https://github.com/go-gitea/gitea/issues/25010))
    -   Remove meta tags `theme-color` and `default-theme` ([#&#8203;24960](https://github.com/go-gitea/gitea/issues/24960))
    -   Use `[git.config]` for reflog cleaning up ([#&#8203;24958](https://github.com/go-gitea/gitea/issues/24958))
    -   Allow all URL schemes in Markdown links by default ([#&#8203;24805](https://github.com/go-gitea/gitea/issues/24805))
    -   Redesign Scoped Access Tokens ([#&#8203;24767](https://github.com/go-gitea/gitea/issues/24767))
    -   Fix team members API endpoint pagination ([#&#8203;24754](https://github.com/go-gitea/gitea/issues/24754))
    -   Rewrite logger system ([#&#8203;24726](https://github.com/go-gitea/gitea/issues/24726))
    -   Increase default LFS auth timeout from 20m to 24h ([#&#8203;24628](https://github.com/go-gitea/gitea/issues/24628))
    -   Rewrite queue ([#&#8203;24505](https://github.com/go-gitea/gitea/issues/24505))
    -   Remove unused setting `time.FORMAT` ([#&#8203;24430](https://github.com/go-gitea/gitea/issues/24430))
    -   Refactor `setting.Other` and remove unused `SHOW_FOOTER_BRANDING` ([#&#8203;24270](https://github.com/go-gitea/gitea/issues/24270))
    -   Correct the access log format ([#&#8203;24085](https://github.com/go-gitea/gitea/issues/24085))
    -   Reserve ".png" suffix for user/org names ([#&#8203;23992](https://github.com/go-gitea/gitea/issues/23992))
    -   Prefer native parser for SSH public key parsing ([#&#8203;23798](https://github.com/go-gitea/gitea/issues/23798))
    -   Editor preview support for external renderers ([#&#8203;23333](https://github.com/go-gitea/gitea/issues/23333))
    -   Add Gitea Profile Readmes ([#&#8203;23260](https://github.com/go-gitea/gitea/issues/23260))
    -   Refactor `ctx` in templates ([#&#8203;23105](https://github.com/go-gitea/gitea/issues/23105))
-   SECURITY
    -   Test if container blob is accessible before mounting ([#&#8203;22759](https://github.com/go-gitea/gitea/issues/22759)) ([#&#8203;25784](https://github.com/go-gitea/gitea/issues/25784))
    -   Set type="password" on all auth_token fields ([#&#8203;22175](https://github.com/go-gitea/gitea/issues/22175))
-   FEATURES
    -   Add button on diff header to copy file name, misc diff header tweaks ([#&#8203;24986](https://github.com/go-gitea/gitea/issues/24986))
    -   API endpoint for changing/creating/deleting multiple files ([#&#8203;24887](https://github.com/go-gitea/gitea/issues/24887))
    -   Support changing git config through `app.ini`, use `diff.algorithm=histogram` by default ([#&#8203;24860](https://github.com/go-gitea/gitea/issues/24860))
    -   Add up and down arrows to selected lookup repositories ([#&#8203;24727](https://github.com/go-gitea/gitea/issues/24727))
    -   Add Go package registry ([#&#8203;24687](https://github.com/go-gitea/gitea/issues/24687))
    -   Add status indicator on main home screen for each repo ([#&#8203;24638](https://github.com/go-gitea/gitea/issues/24638))
    -   Support for status check pattern ([#&#8203;24633](https://github.com/go-gitea/gitea/issues/24633))
    -   Implement Cargo HTTP index ([#&#8203;24452](https://github.com/go-gitea/gitea/issues/24452))
    -   Add Debian package registry ([#&#8203;24426](https://github.com/go-gitea/gitea/issues/24426))
    -   Add the ability to pin Issues ([#&#8203;24406](https://github.com/go-gitea/gitea/issues/24406))
    -   Add follow organization and fix the logic of following page ([#&#8203;24345](https://github.com/go-gitea/gitea/issues/24345))
    -   Allow `webp` images as avatars ([#&#8203;24248](https://github.com/go-gitea/gitea/issues/24248))
    -   Support upload `outputs` and use `needs` context on Actions ([#&#8203;24230](https://github.com/go-gitea/gitea/issues/24230))
    -   Allow adding new files to an empty repo ([#&#8203;24164](https://github.com/go-gitea/gitea/issues/24164))
    -   Make wiki title supports dashes and improve wiki name related features ([#&#8203;24143](https://github.com/go-gitea/gitea/issues/24143))
    -   Add monospace toggle button to textarea ([#&#8203;24034](https://github.com/go-gitea/gitea/issues/24034))
    -   Use auto-updating, natively hoverable, localized time elements ([#&#8203;23988](https://github.com/go-gitea/gitea/issues/23988))
    -   Add ntlm authentication support for mail ([#&#8203;23811](https://github.com/go-gitea/gitea/issues/23811))
    -   Add CLI command to register runner tokens ([#&#8203;23762](https://github.com/go-gitea/gitea/issues/23762))
    -   Add Alpine package registry ([#&#8203;23714](https://github.com/go-gitea/gitea/issues/23714))
    -   Expand/Collapse all changed files ([#&#8203;23639](https://github.com/go-gitea/gitea/issues/23639))
    -   Add unset default project column ([#&#8203;23531](https://github.com/go-gitea/gitea/issues/23531))
    -   Add activity feeds API ([#&#8203;23494](https://github.com/go-gitea/gitea/issues/23494))
    -   Add RPM registry ([#&#8203;23380](https://github.com/go-gitea/gitea/issues/23380))
    -   Add meilisearch support ([#&#8203;23136](https://github.com/go-gitea/gitea/issues/23136))
    -   Add API for License templates ([#&#8203;23009](https://github.com/go-gitea/gitea/issues/23009))
    -   Add admin API email endpoints ([#&#8203;22792](https://github.com/go-gitea/gitea/issues/22792))
    -   Add user rename endpoint to admin api ([#&#8203;22789](https://github.com/go-gitea/gitea/issues/22789))
    -   Add API for gitignore templates ([#&#8203;22783](https://github.com/go-gitea/gitea/issues/22783))
    -   Implement actions artifacts ([#&#8203;22738](https://github.com/go-gitea/gitea/issues/22738))
    -   Add RSS Feeds for branches and files ([#&#8203;22719](https://github.com/go-gitea/gitea/issues/22719))
    -   Display when a repo was archived ([#&#8203;22664](https://github.com/go-gitea/gitea/issues/22664))
    -   Add Swift package registry ([#&#8203;22404](https://github.com/go-gitea/gitea/issues/22404))
    -   Add CRAN package registry ([#&#8203;22331](https://github.com/go-gitea/gitea/issues/22331))
    -   Add user webhooks ([#&#8203;21563](https://github.com/go-gitea/gitea/issues/21563))
    -   Implement systemd-notify protocol ([#&#8203;21151](https://github.com/go-gitea/gitea/issues/21151))
    -   Implement Issue Config ([#&#8203;20956](https://github.com/go-gitea/gitea/issues/20956))
    -   Add API to manage issue dependencies ([#&#8203;17935](https://github.com/go-gitea/gitea/issues/17935))
-   API
    -   Use correct response code in push mirror creation response in v1\_json.tmpl ([#&#8203;25476](https://github.com/go-gitea/gitea/issues/25476)) ([#&#8203;25571](https://github.com/go-gitea/gitea/issues/25571))
    -   Fix `Permission` in API returned repository struct ([#&#8203;25388](https://github.com/go-gitea/gitea/issues/25388)) ([#&#8203;25441](https://github.com/go-gitea/gitea/issues/25441))
    -   Add API for Label templates ([#&#8203;24602](https://github.com/go-gitea/gitea/issues/24602))
    -   Filters for GetAllCommits ([#&#8203;24568](https://github.com/go-gitea/gitea/issues/24568))
    -   Add ability to specify '--not' from GetAllCommits ([#&#8203;24409](https://github.com/go-gitea/gitea/issues/24409))
    -   Support uploading file to empty repo by API ([#&#8203;24357](https://github.com/go-gitea/gitea/issues/24357))
    -   Add absent repounits to create/edit repo API ([#&#8203;23500](https://github.com/go-gitea/gitea/issues/23500))
    -   Add login name and source id for admin user searching API ([#&#8203;23376](https://github.com/go-gitea/gitea/issues/23376))
    -   Create a branch directly from commit on the create branch API ([#&#8203;22956](https://github.com/go-gitea/gitea/issues/22956))
-   ENHANCEMENTS
    -   Make `add line comment` buttons focusable ([#&#8203;25894](https://github.com/go-gitea/gitea/issues/25894)) ([#&#8203;25896](https://github.com/go-gitea/gitea/issues/25896))
    -   Always pass 6-digit hex color to monaco ([#&#8203;25780](https://github.com/go-gitea/gitea/issues/25780)) ([#&#8203;25782](https://github.com/go-gitea/gitea/issues/25782))
    -   Clarify "text-align" CSS helpers, fix clone button padding ([#&#8203;25763](https://github.com/go-gitea/gitea/issues/25763)) ([#&#8203;25764](https://github.com/go-gitea/gitea/issues/25764))
    -   Hide `add file` button for pull mirrors ([#&#8203;25748](https://github.com/go-gitea/gitea/issues/25748)) ([#&#8203;25751](https://github.com/go-gitea/gitea/issues/25751))
    -   Allow/fix review (approve/reject) of empty PRs ([#&#8203;25690](https://github.com/go-gitea/gitea/issues/25690)) ([#&#8203;25732](https://github.com/go-gitea/gitea/issues/25732))
    -   Fix tags header and pretty format numbers ([#&#8203;25624](https://github.com/go-gitea/gitea/issues/25624)) ([#&#8203;25694](https://github.com/go-gitea/gitea/issues/25694))
    -   Actions list enhancements ([#&#8203;25601](https://github.com/go-gitea/gitea/issues/25601)) ([#&#8203;25678](https://github.com/go-gitea/gitea/issues/25678))
    -   Fix show more for image on diff page ([#&#8203;25672](https://github.com/go-gitea/gitea/issues/25672)) ([#&#8203;25673](https://github.com/go-gitea/gitea/issues/25673))
    -   Prevent SVG shrinking ([#&#8203;25652](https://github.com/go-gitea/gitea/issues/25652)) ([#&#8203;25669](https://github.com/go-gitea/gitea/issues/25669))
    -   Fix UI misalignment on user setting page ([#&#8203;25629](https://github.com/go-gitea/gitea/issues/25629)) ([#&#8203;25656](https://github.com/go-gitea/gitea/issues/25656))
    -   Use css on labels ([#&#8203;25626](https://github.com/go-gitea/gitea/issues/25626)) ([#&#8203;25636](https://github.com/go-gitea/gitea/issues/25636))
    -   Read-only checkboxes don't appear and don't entirely act the way one might expect ([#&#8203;25573](https://github.com/go-gitea/gitea/issues/25573)) ([#&#8203;25602](https://github.com/go-gitea/gitea/issues/25602))
    -   Redirect to package after version deletion ([#&#8203;25594](https://github.com/go-gitea/gitea/issues/25594)) ([#&#8203;25599](https://github.com/go-gitea/gitea/issues/25599))
    -   Reduce table padding globally ([#&#8203;25568](https://github.com/go-gitea/gitea/issues/25568)) ([#&#8203;25577](https://github.com/go-gitea/gitea/issues/25577))
    -   Change `Regenerate Secret` button display ([#&#8203;25534](https://github.com/go-gitea/gitea/issues/25534)) ([#&#8203;25541](https://github.com/go-gitea/gitea/issues/25541))
    -   Fix rerun icon on action view component ([#&#8203;25531](https://github.com/go-gitea/gitea/issues/25531)) ([#&#8203;25536](https://github.com/go-gitea/gitea/issues/25536))
    -   Move some regexp out of functions ([#&#8203;25430](https://github.com/go-gitea/gitea/issues/25430)) ([#&#8203;25445](https://github.com/go-gitea/gitea/issues/25445))
    -   Diff page enhancements ([#&#8203;25398](https://github.com/go-gitea/gitea/issues/25398)) ([#&#8203;25437](https://github.com/go-gitea/gitea/issues/25437))
    -   Various UI fixes ([#&#8203;25264](https://github.com/go-gitea/gitea/issues/25264)) ([#&#8203;25431](https://github.com/go-gitea/gitea/issues/25431))
    -   Fix label list divider ([#&#8203;25312](https://github.com/go-gitea/gitea/issues/25312)) ([#&#8203;25372](https://github.com/go-gitea/gitea/issues/25372))
    -   Fix UI on mobile view ([#&#8203;25315](https://github.com/go-gitea/gitea/issues/25315)) ([#&#8203;25340](https://github.com/go-gitea/gitea/issues/25340))
    -   When viewing a file, hide the add button ([#&#8203;25320](https://github.com/go-gitea/gitea/issues/25320)) ([#&#8203;25339](https://github.com/go-gitea/gitea/issues/25339))
    -   Show if File is Executable ([#&#8203;25287](https://github.com/go-gitea/gitea/issues/25287)) ([#&#8203;25300](https://github.com/go-gitea/gitea/issues/25300))
    -   Fix edit OAuth application width ([#&#8203;25262](https://github.com/go-gitea/gitea/issues/25262)) ([#&#8203;25263](https://github.com/go-gitea/gitea/issues/25263))
    -   Use flex to align SVG and text ([#&#8203;25163](https://github.com/go-gitea/gitea/issues/25163)) ([#&#8203;25260](https://github.com/go-gitea/gitea/issues/25260))
    -   Revert overflow: overlay (revert [#&#8203;21850](https://github.com/go-gitea/gitea/issues/21850)) ([#&#8203;25231](https://github.com/go-gitea/gitea/issues/25231)) ([#&#8203;25239](https://github.com/go-gitea/gitea/issues/25239))
    -   Use inline SVG for built-in OAuth providers ([#&#8203;25171](https://github.com/go-gitea/gitea/issues/25171)) ([#&#8203;25234](https://github.com/go-gitea/gitea/issues/25234))
    -   Change access token UI to select dropdowns ([#&#8203;25109](https://github.com/go-gitea/gitea/issues/25109)) ([#&#8203;25230](https://github.com/go-gitea/gitea/issues/25230))
    -   Remove hacky patch for "safari emoji glitch fix"  ([#&#8203;25208](https://github.com/go-gitea/gitea/issues/25208)) ([#&#8203;25211](https://github.com/go-gitea/gitea/issues/25211))
    -   Minor arc-green color tweaks ([#&#8203;25175](https://github.com/go-gitea/gitea/issues/25175)) ([#&#8203;25205](https://github.com/go-gitea/gitea/issues/25205))
    -   Button and color enhancements ([#&#8203;24989](https://github.com/go-gitea/gitea/issues/24989)) ([#&#8203;25176](https://github.com/go-gitea/gitea/issues/25176))
    -   Fix mobile navbar and misc cleanups ([#&#8203;25134](https://github.com/go-gitea/gitea/issues/25134)) ([#&#8203;25169](https://github.com/go-gitea/gitea/issues/25169))
    -   Modify OAuth login ui and fix display name, iconurl related logic ([#&#8203;25030](https://github.com/go-gitea/gitea/issues/25030)) ([#&#8203;25161](https://github.com/go-gitea/gitea/issues/25161))
    -   Improve notification icon and navbar  ([#&#8203;25111](https://github.com/go-gitea/gitea/issues/25111)) ([#&#8203;25124](https://github.com/go-gitea/gitea/issues/25124))
    -   Add details summary for vertical menus in settings to allow toggling ([#&#8203;25098](https://github.com/go-gitea/gitea/issues/25098))
    -   Don't display `select all issues` checkbox when no issues are available ([#&#8203;25086](https://github.com/go-gitea/gitea/issues/25086))
    -   Use RepositoryList instead of \[]\*Repository ([#&#8203;25074](https://github.com/go-gitea/gitea/issues/25074))
    -   Add ability to set multiple redirect URIs in OAuth application UI ([#&#8203;25072](https://github.com/go-gitea/gitea/issues/25072))
    -   Use git command instead of the ini package to remove the `origin` remote ([#&#8203;25066](https://github.com/go-gitea/gitea/issues/25066))
    -   Remove cancel button from branch protection form ([#&#8203;25063](https://github.com/go-gitea/gitea/issues/25063))
    -   Show file tree by default ([#&#8203;25052](https://github.com/go-gitea/gitea/issues/25052))
    -   Add Progressbar to Milestone Page ([#&#8203;25050](https://github.com/go-gitea/gitea/issues/25050))
    -   Minor UI improvements: logo alignment, auth map editor, auth name display ([#&#8203;25043](https://github.com/go-gitea/gitea/issues/25043))
    -   Allow for PKCE flow without client secret + add docs ([#&#8203;25033](https://github.com/go-gitea/gitea/issues/25033))
    -   Refactor INI package (first step) ([#&#8203;25024](https://github.com/go-gitea/gitea/issues/25024))
    -   Various style fixes ([#&#8203;25008](https://github.com/go-gitea/gitea/issues/25008))
    -   Fix delete user account modal ([#&#8203;25004](https://github.com/go-gitea/gitea/issues/25004))
    -   Refactor diffFileInfo / DiffTreeStore ([#&#8203;24998](https://github.com/go-gitea/gitea/issues/24998))
    -   Add user level action runners ([#&#8203;24995](https://github.com/go-gitea/gitea/issues/24995))
    -   Rename NotifyPullReviewRequest to NotifyPullRequestReviewRequest ([#&#8203;24988](https://github.com/go-gitea/gitea/issues/24988))
    -   Add step start time to `ViewStepLog` ([#&#8203;24980](https://github.com/go-gitea/gitea/issues/24980))
    -   Add dark mode to API Docs ([#&#8203;24971](https://github.com/go-gitea/gitea/issues/24971))
    -   Display file mode for new file and file mode changes ([#&#8203;24966](https://github.com/go-gitea/gitea/issues/24966))
    -   Make the 500 page load themes ([#&#8203;24953](https://github.com/go-gitea/gitea/issues/24953))
    -   Show `bot` label next to username when rendering autor link if the user is a bot ([#&#8203;24943](https://github.com/go-gitea/gitea/issues/24943))
    -   Repo list improvements, fix bold helper classes ([#&#8203;24935](https://github.com/go-gitea/gitea/issues/24935))
    -   Improve queue and logger context ([#&#8203;24924](https://github.com/go-gitea/gitea/issues/24924))
    -   Improve RunMode / dev mode ([#&#8203;24886](https://github.com/go-gitea/gitea/issues/24886))
    -   Improve some Forms ([#&#8203;24878](https://github.com/go-gitea/gitea/issues/24878))
    -   Add show timestamp/seconds and fullscreen options to action page ([#&#8203;24876](https://github.com/go-gitea/gitea/issues/24876))
    -   Fix double border and adjust width for user profile page ([#&#8203;24870](https://github.com/go-gitea/gitea/issues/24870))
    -   Improve Actions CSS ([#&#8203;24864](https://github.com/go-gitea/gitea/issues/24864))
    -   Fix `@font-face` overrides ([#&#8203;24855](https://github.com/go-gitea/gitea/issues/24855))
    -   Remove `In your repositories` link in milestones dashboard ([#&#8203;24853](https://github.com/go-gitea/gitea/issues/24853))
    -   Fix missing yes/no in delete time log modal ([#&#8203;24851](https://github.com/go-gitea/gitea/issues/24851))
    -   Show new pull request button also on subdirectories and files ([#&#8203;24842](https://github.com/go-gitea/gitea/issues/24842))
    -   Make environment-to-ini  support loading key value from file ([#&#8203;24832](https://github.com/go-gitea/gitea/issues/24832))
    -   Support wildcard in email domain allow/block list ([#&#8203;24831](https://github.com/go-gitea/gitea/issues/24831))
    -   Use `CommentList` instead of `[]*Comment` ([#&#8203;24828](https://github.com/go-gitea/gitea/issues/24828))
    -   Add RTL rendering support to Markdown ([#&#8203;24816](https://github.com/go-gitea/gitea/issues/24816))
    -   Rework notifications list ([#&#8203;24812](https://github.com/go-gitea/gitea/issues/24812))
    -   Mute repo names in dashboard repo list ([#&#8203;24811](https://github.com/go-gitea/gitea/issues/24811))
    -   Fix max width and margin of comment box on conversation page ([#&#8203;24809](https://github.com/go-gitea/gitea/issues/24809))
    -   Some refactors for issues stats ([#&#8203;24793](https://github.com/go-gitea/gitea/issues/24793))
    -   Rework label colors ([#&#8203;24790](https://github.com/go-gitea/gitea/issues/24790))
    -   Fix OAuth login loading state ([#&#8203;24788](https://github.com/go-gitea/gitea/issues/24788))
    -   Remove duplicated issues options and some more refactors ([#&#8203;24787](https://github.com/go-gitea/gitea/issues/24787))
    -   Decouple the different contexts from each other ([#&#8203;24786](https://github.com/go-gitea/gitea/issues/24786))
    -   Remove background on user dashboard filter bar ([#&#8203;24779](https://github.com/go-gitea/gitea/issues/24779))
    -   Improve and fix bugs surrounding reactions ([#&#8203;24760](https://github.com/go-gitea/gitea/issues/24760))
    -   Make the color of zero-contribution-squares in the activity heatmap more subtle ([#&#8203;24758](https://github.com/go-gitea/gitea/issues/24758))
    -   Fix WEBP image copying ([#&#8203;24743](https://github.com/go-gitea/gitea/issues/24743))
    -   Rework OAuth login buttons, swap github logo to monocolor ([#&#8203;24740](https://github.com/go-gitea/gitea/issues/24740))
    -   Consolidate the two review boxes into one ([#&#8203;24738](https://github.com/go-gitea/gitea/issues/24738))
    -   Unification of registration fields order ([#&#8203;24737](https://github.com/go-gitea/gitea/issues/24737))
    -   Refactor Pull Mirror and fix out-of-sync bugs ([#&#8203;24732](https://github.com/go-gitea/gitea/issues/24732))
    -   Improvements for action detail page ([#&#8203;24718](https://github.com/go-gitea/gitea/issues/24718))
    -   Fix flash of unstyled content in action view page ([#&#8203;24712](https://github.com/go-gitea/gitea/issues/24712))
    -   Don't filter action runs based on state ([#&#8203;24711](https://github.com/go-gitea/gitea/issues/24711))
    -   Optimize actions list by removing an unnecessary `git` call ([#&#8203;24710](https://github.com/go-gitea/gitea/issues/24710))
    -   Support no label/assignee filter and batch clearing labels/assignees ([#&#8203;24707](https://github.com/go-gitea/gitea/issues/24707))
    -   Add icon support for safari ([#&#8203;24697](https://github.com/go-gitea/gitea/issues/24697))
    -   Use standard HTTP library to serve files ([#&#8203;24693](https://github.com/go-gitea/gitea/issues/24693))
    -   Improve button-ghost, remove tertiary button ([#&#8203;24692](https://github.com/go-gitea/gitea/issues/24692))
    -   Only hide tooltip tippy instances ([#&#8203;24688](https://github.com/go-gitea/gitea/issues/24688))
    -   Support migrating storage for actions log via command line ([#&#8203;24679](https://github.com/go-gitea/gitea/issues/24679))
    -   Remove highlight in repo list ([#&#8203;24675](https://github.com/go-gitea/gitea/issues/24675))
    -   Add markdown preview to Submit Review Textarea ([#&#8203;24672](https://github.com/go-gitea/gitea/issues/24672))
    -   Update pin and add pin-slash ([#&#8203;24669](https://github.com/go-gitea/gitea/issues/24669))
    -   Improve empty notifications display ([#&#8203;24668](https://github.com/go-gitea/gitea/issues/24668))
    -   Support SSH for go get ([#&#8203;24664](https://github.com/go-gitea/gitea/issues/24664))
    -   Improve avatar uploading / resizing / compressing, remove Fomantic card module ([#&#8203;24653](https://github.com/go-gitea/gitea/issues/24653))
    -   Only show one tippy at a time ([#&#8203;24648](https://github.com/go-gitea/gitea/issues/24648))
    -   Notification list enhancements, fix striped tables on dark theme ([#&#8203;24639](https://github.com/go-gitea/gitea/issues/24639))
    -   Improve queue & process & stacktrace ([#&#8203;24636](https://github.com/go-gitea/gitea/issues/24636))
    -   Use the type RefName for all the needed places and fix pull mirror sync bugs ([#&#8203;24634](https://github.com/go-gitea/gitea/issues/24634))
    -   Remove fluid on compare diff page ([#&#8203;24627](https://github.com/go-gitea/gitea/issues/24627))
    -   Add a tooltip to the job rerun button ([#&#8203;24617](https://github.com/go-gitea/gitea/issues/24617))
    -   Attach a tooltip to the action status icon ([#&#8203;24614](https://github.com/go-gitea/gitea/issues/24614))
    -   Make the actions control button look like an actual button ([#&#8203;24611](https://github.com/go-gitea/gitea/issues/24611))
    -   Remove unnecessary code ([#&#8203;24610](https://github.com/go-gitea/gitea/issues/24610))
    -   Make repo migration cancelable and fix various bugs ([#&#8203;24605](https://github.com/go-gitea/gitea/issues/24605))
    -   Improve updating Actions tasks ([#&#8203;24600](https://github.com/go-gitea/gitea/issues/24600))
    -   Attach a tooltip to the action control button ([#&#8203;24595](https://github.com/go-gitea/gitea/issues/24595))
    -   Make repository response support HTTP range request ([#&#8203;24592](https://github.com/go-gitea/gitea/issues/24592))
    -   Improve Gitea's web context, decouple "issue template" code into service package ([#&#8203;24590](https://github.com/go-gitea/gitea/issues/24590))
    -   Modify luminance calculation and extract related functions into single files ([#&#8203;24586](https://github.com/go-gitea/gitea/issues/24586))
    -   Simplify template helper functions ([#&#8203;24570](https://github.com/go-gitea/gitea/issues/24570))
    -   Split "modules/context.go" to separate files ([#&#8203;24569](https://github.com/go-gitea/gitea/issues/24569))
    -   Add org visibility label to non-organization's dashboard ([#&#8203;24558](https://github.com/go-gitea/gitea/issues/24558))
    -   Update LDAP filters to include both username and email address ([#&#8203;24547](https://github.com/go-gitea/gitea/issues/24547))
    -   Review fixes and enhancements ([#&#8203;24526](https://github.com/go-gitea/gitea/issues/24526))
    -   Display warning when user try to rename default branch ([#&#8203;24512](https://github.com/go-gitea/gitea/issues/24512))
    -   Fix color for transfer related buttons when having no permission to act ([#&#8203;24510](https://github.com/go-gitea/gitea/issues/24510))
    -   Rework button coloring, add focus and active colors ([#&#8203;24507](https://github.com/go-gitea/gitea/issues/24507))
    -   New webhook trigger for receiving Pull Request review requests ([#&#8203;24481](https://github.com/go-gitea/gitea/issues/24481))
    -   Add goto issue id function ([#&#8203;24479](https://github.com/go-gitea/gitea/issues/24479))
    -   Fix incorrect webhook time and use relative-time to display it ([#&#8203;24477](https://github.com/go-gitea/gitea/issues/24477))
    -   RSS icon fixes ([#&#8203;24476](https://github.com/go-gitea/gitea/issues/24476))
    -   Replace `N/A` with `-` everywhere ([#&#8203;24474](https://github.com/go-gitea/gitea/issues/24474))
    -   Pass 'not' to commit count ([#&#8203;24473](https://github.com/go-gitea/gitea/issues/24473))
    -   Enhance stylelint rule config, remove dead CSS ([#&#8203;24472](https://github.com/go-gitea/gitea/issues/24472))
    -   Remove `font-awesome` and fomantic `icon` module ([#&#8203;24471](https://github.com/go-gitea/gitea/issues/24471))
    -   Improve "new-menu" ([#&#8203;24465](https://github.com/go-gitea/gitea/issues/24465))
    -   Remove fomantic breadcrumb module ([#&#8203;24463](https://github.com/go-gitea/gitea/issues/24463))
    -   Improve template system and panic recovery ([#&#8203;24461](https://github.com/go-gitea/gitea/issues/24461))
    -   Make Issue/PR/projects more compact, misc CSS tweaks ([#&#8203;24459](https://github.com/go-gitea/gitea/issues/24459))
    -   Replace remaining fontawesome dropdown icons with SVG ([#&#8203;24455](https://github.com/go-gitea/gitea/issues/24455))
    -   Remove all direct references to font-awesome ([#&#8203;24448](https://github.com/go-gitea/gitea/issues/24448))
    -   Move links out of translation ([#&#8203;24446](https://github.com/go-gitea/gitea/issues/24446))
    -   Add `ui-monospace` and `SF Mono` to `--fonts-monospace` ([#&#8203;24442](https://github.com/go-gitea/gitea/issues/24442))
    -   Hide 'Mirror Settings' when unneeded, improve hints ([#&#8203;24433](https://github.com/go-gitea/gitea/issues/24433))
    -   Add "Updated" column for admin repositories list ([#&#8203;24429](https://github.com/go-gitea/gitea/issues/24429))
    -   Improve issue list filter ([#&#8203;24425](https://github.com/go-gitea/gitea/issues/24425))
    -   Rework header bar on issue, pull requests and milestone ([#&#8203;24420](https://github.com/go-gitea/gitea/issues/24420))
    -   Improve template helper ([#&#8203;24417](https://github.com/go-gitea/gitea/issues/24417))
    -   Make repo size style matches others (commits/branches/tags) ([#&#8203;24408](https://github.com/go-gitea/gitea/issues/24408))
    -   Support markdown editor for issue template ([#&#8203;24400](https://github.com/go-gitea/gitea/issues/24400))
    -   Improve commit date in commit graph ([#&#8203;24399](https://github.com/go-gitea/gitea/issues/24399))
    -   Start cleaning the messy ".ui.left / .ui.right", improve label list page, fix stackable menu ([#&#8203;24393](https://github.com/go-gitea/gitea/issues/24393))
    -   Merge setting.InitXXX into one function with options ([#&#8203;24389](https://github.com/go-gitea/gitea/issues/24389))
    -   Move `Rename branch` from repo settings page to the page of branches list ([#&#8203;24380](https://github.com/go-gitea/gitea/issues/24380))
    -   Improve protected branch setting page ([#&#8203;24379](https://github.com/go-gitea/gitea/issues/24379))
    -   Display 'Unknown' when runner.version is empty ([#&#8203;24378](https://github.com/go-gitea/gitea/issues/24378))
    -   Display owner of a runner as a tooltip instead of static text ([#&#8203;24377](https://github.com/go-gitea/gitea/issues/24377))
    -   Fix incorrect last online time in runner_edit.tmpl ([#&#8203;24376](https://github.com/go-gitea/gitea/issues/24376))
    -   Fix unclear `IsRepositoryExist` logic ([#&#8203;24374](https://github.com/go-gitea/gitea/issues/24374))
    -   Add custom helm repo name generated from url ([#&#8203;24363](https://github.com/go-gitea/gitea/issues/24363))
    -   Replace placeholders in licenses ([#&#8203;24354](https://github.com/go-gitea/gitea/issues/24354))
    -   Add rerun workflow button and refactor to use SVG octicons ([#&#8203;24350](https://github.com/go-gitea/gitea/issues/24350))
    -   Fix runner button height ([#&#8203;24338](https://github.com/go-gitea/gitea/issues/24338))
    -   Restore bold on repolist ([#&#8203;24337](https://github.com/go-gitea/gitea/issues/24337))
    -   Improve RSS ([#&#8203;24335](https://github.com/go-gitea/gitea/issues/24335))
    -   Refactor "route" related code, fix Safari cookie bug ([#&#8203;24330](https://github.com/go-gitea/gitea/issues/24330))
    -   Alert error message if open dependencies are included in the issues that try to batch close ([#&#8203;24329](https://github.com/go-gitea/gitea/issues/24329))
    -   Add missed column title in runner management page ([#&#8203;24328](https://github.com/go-gitea/gitea/issues/24328))
    -   Automatically select the org when click create repo from org dashboard ([#&#8203;24325](https://github.com/go-gitea/gitea/issues/24325))
    -   Modify width of ui container, fine tune css for settings pages and org header ([#&#8203;24315](https://github.com/go-gitea/gitea/issues/24315))
    -   Fix config list overflow and layout ([#&#8203;24312](https://github.com/go-gitea/gitea/issues/24312))
    -   Improve some modal action buttons ([#&#8203;24289](https://github.com/go-gitea/gitea/issues/24289))
    -   Move code from module to service ([#&#8203;24287](https://github.com/go-gitea/gitea/issues/24287))
    -   Sort users and orgs on explore by recency by default ([#&#8203;24279](https://github.com/go-gitea/gitea/issues/24279))
    -   Allow using localized absolute date times within phrases with place holders and localize issue due date events ([#&#8203;24275](https://github.com/go-gitea/gitea/issues/24275))
    -   Show workflow config error on file view also ([#&#8203;24267](https://github.com/go-gitea/gitea/issues/24267))
    -   Improve template helper functions: string/slice ([#&#8203;24266](https://github.com/go-gitea/gitea/issues/24266))
    -   Use more specific test methods ([#&#8203;24265](https://github.com/go-gitea/gitea/issues/24265))
    -   Add `DumpVar` helper function to help debugging templates ([#&#8203;24262](https://github.com/go-gitea/gitea/issues/24262))
    -   Limit avatar upload to valid image files ([#&#8203;24258](https://github.com/go-gitea/gitea/issues/24258))
    -   Improve emoji and mention matching ([#&#8203;24255](https://github.com/go-gitea/gitea/issues/24255))
    -   Change to vertical navbar layout for secondary navbar for repo/user/admin settings ([#&#8203;24246](https://github.com/go-gitea/gitea/issues/24246))
    -   Refactor config provider ([#&#8203;24245](https://github.com/go-gitea/gitea/issues/24245))
    -   Improve test logger ([#&#8203;24235](https://github.com/go-gitea/gitea/issues/24235))
    -   Default show closed actions list if all actions was closed ([#&#8203;24234](https://github.com/go-gitea/gitea/issues/24234))
    -   Add missing badges in user profile for /projects and /packages ([#&#8203;24232](https://github.com/go-gitea/gitea/issues/24232))
    -   Add repository counter badge to repository tab ([#&#8203;24205](https://github.com/go-gitea/gitea/issues/24205))
    -   Move secrets and runners settings to actions settings ([#&#8203;24200](https://github.com/go-gitea/gitea/issues/24200))
    -   Require at least one unit to be enabled ([#&#8203;24189](https://github.com/go-gitea/gitea/issues/24189))
    -   Use same action status svg icons on actions list as on action page ([#&#8203;24178](https://github.com/go-gitea/gitea/issues/24178))
    -   Use secondary pointing menu for tabs on user/organization home page ([#&#8203;24162](https://github.com/go-gitea/gitea/issues/24162))
    -   Improve Wiki TOC ([#&#8203;24137](https://github.com/go-gitea/gitea/issues/24137))
    -   Refactor locale number ([#&#8203;24134](https://github.com/go-gitea/gitea/issues/24134))
    -   Localize activity heatmap (except tooltip) ([#&#8203;24131](https://github.com/go-gitea/gitea/issues/24131))
    -   Fix duplicate modals when clicking on "remove all" repository button ([#&#8203;24129](https://github.com/go-gitea/gitea/issues/24129))
    -   Add runner check in repo action page ([#&#8203;24124](https://github.com/go-gitea/gitea/issues/24124))
    -   Support triggering workflows by wiki related events ([#&#8203;24119](https://github.com/go-gitea/gitea/issues/24119))
    -   Refactor cookie ([#&#8203;24107](https://github.com/go-gitea/gitea/issues/24107))
    -   Remove untranslatable `on_date` key ([#&#8203;24106](https://github.com/go-gitea/gitea/issues/24106))
    -   Refactor delete_modal_actions template and use it for project column related actions ([#&#8203;24097](https://github.com/go-gitea/gitea/issues/24097))
    -   Improve git log for debugging ([#&#8203;24095](https://github.com/go-gitea/gitea/issues/24095))
    -   Add option to search for users is active join a team ([#&#8203;24093](https://github.com/go-gitea/gitea/issues/24093))
    -   Add PDF rendering via PDFObject ([#&#8203;24086](https://github.com/go-gitea/gitea/issues/24086))
    -   Refactor web route ([#&#8203;24080](https://github.com/go-gitea/gitea/issues/24080))
    -   Make more functions use ctx instead of db.DefaultContext ([#&#8203;24068](https://github.com/go-gitea/gitea/issues/24068))
    -   Make HTML template functions support context ([#&#8203;24056](https://github.com/go-gitea/gitea/issues/24056))
    -   Refactor rename user and rename organization ([#&#8203;24052](https://github.com/go-gitea/gitea/issues/24052))
    -   Localize milestone related time strings ([#&#8203;24051](https://github.com/go-gitea/gitea/issues/24051))
    -   Expand selected file when clicking file tree ([#&#8203;24041](https://github.com/go-gitea/gitea/issues/24041))
    -   Add popup to hashed comments/pull requests/issues in file editing/adding preview tab ([#&#8203;24040](https://github.com/go-gitea/gitea/issues/24040))
    -   Add placeholder and aria attributes to release and wiki edit page ([#&#8203;24031](https://github.com/go-gitea/gitea/issues/24031))
    -   Add new user types `reserved`, `bot`, and `remote` ([#&#8203;24026](https://github.com/go-gitea/gitea/issues/24026))
    -   Allow adding SSH keys even if SSH server is disabled ([#&#8203;24025](https://github.com/go-gitea/gitea/issues/24025))
    -   Use a general approach to access custom/static/builtin assets ([#&#8203;24022](https://github.com/go-gitea/gitea/issues/24022))
    -   Update github.com/google/go-github to v52 ([#&#8203;24004](https://github.com/go-gitea/gitea/issues/24004))
    -   Replace tribute with text-expander-element for textarea ([#&#8203;23985](https://github.com/go-gitea/gitea/issues/23985))
    -   Group template helper functions, remove `Printf`, improve template error messages ([#&#8203;23982](https://github.com/go-gitea/gitea/issues/23982))
    -   Drop "unrolled/render" package ([#&#8203;23965](https://github.com/go-gitea/gitea/issues/23965))
    -   Add job.duration in web ui ([#&#8203;23963](https://github.com/go-gitea/gitea/issues/23963))
    -   Tweak pull request branch delete ui ([#&#8203;23951](https://github.com/go-gitea/gitea/issues/23951))
    -   Merge template functions "dict/Dict/mergeinto" ([#&#8203;23932](https://github.com/go-gitea/gitea/issues/23932))
    -   Use a general Eval function for expressions in templates. ([#&#8203;23927](https://github.com/go-gitea/gitea/issues/23927))
    -   Clean template/helper.go ([#&#8203;23922](https://github.com/go-gitea/gitea/issues/23922))
    -   Actions: Use default branch as ref when a branch/tag delete occurs ([#&#8203;23910](https://github.com/go-gitea/gitea/issues/23910))
    -   Add tooltips for MD editor buttons and add `muted` class for buttons ([#&#8203;23896](https://github.com/go-gitea/gitea/issues/23896))
    -   Improve markdown editor: width, height, preferred ([#&#8203;23895](https://github.com/go-gitea/gitea/issues/23895))
    -   Make Release Download URLs predictable ([#&#8203;23891](https://github.com/go-gitea/gitea/issues/23891))
    -   Remove fomantic ".link" selector and styles ([#&#8203;23888](https://github.com/go-gitea/gitea/issues/23888))
    -   Added close/open button to details page of milestone ([#&#8203;23877](https://github.com/go-gitea/gitea/issues/23877))
    -   Introduce GitHub markdown editor, keep EasyMDE as fallback ([#&#8203;23876](https://github.com/go-gitea/gitea/issues/23876))
    -   Introduce GiteaLocaleNumber custom element to handle number localization on pages. ([#&#8203;23861](https://github.com/go-gitea/gitea/issues/23861))
    -   Make first section on home page full width ([#&#8203;23854](https://github.com/go-gitea/gitea/issues/23854))
    -   Use different SVG for pending and running actions ([#&#8203;23836](https://github.com/go-gitea/gitea/issues/23836))
    -   Display image size for multiarch container images ([#&#8203;23821](https://github.com/go-gitea/gitea/issues/23821))
    -   Improve action log display with control chars ([#&#8203;23820](https://github.com/go-gitea/gitea/issues/23820))
    -   Fix dropdown direction behavior ([#&#8203;23806](https://github.com/go-gitea/gitea/issues/23806))
    -   Fix incorrect/Improve error handle in edit user page ([#&#8203;23805](https://github.com/go-gitea/gitea/issues/23805))
    -   Use clippie module to copy to clipboard ([#&#8203;23801](https://github.com/go-gitea/gitea/issues/23801))
    -   Make minio package support legacy MD5 checksum ([#&#8203;23768](https://github.com/go-gitea/gitea/issues/23768))
    -   Add ONLY_SHOW_RELEVANT_REPOS back, fix explore page bug, make code more strict ([#&#8203;23766](https://github.com/go-gitea/gitea/issues/23766))
    -   Refactor docs ([#&#8203;23752](https://github.com/go-gitea/gitea/issues/23752))
    -   Fix markup background, improve wiki rendering ([#&#8203;23750](https://github.com/go-gitea/gitea/issues/23750))
    -   Make label templates have consistent behavior and priority ([#&#8203;23749](https://github.com/go-gitea/gitea/issues/23749))
    -   Improve LoadUnitConfig to handle invalid or duplicate units ([#&#8203;23736](https://github.com/go-gitea/gitea/issues/23736))
    -   Append `(comment)` when a link points at a comment rather than the whole issue ([#&#8203;23734](https://github.com/go-gitea/gitea/issues/23734))
    -   Clean some legacy files and move some build files ([#&#8203;23699](https://github.com/go-gitea/gitea/issues/23699))
    -   Refactor repo commit list ([#&#8203;23690](https://github.com/go-gitea/gitea/issues/23690))
    -   Refactor internal API for git commands, use meaningful messages instead of "Internal Server Error" ([#&#8203;23687](https://github.com/go-gitea/gitea/issues/23687))
    -   Add aria attributes to interactive time tooltips. ([#&#8203;23661](https://github.com/go-gitea/gitea/issues/23661))
    -   Fix long project name display in issue list and in related dropdown ([#&#8203;23653](https://github.com/go-gitea/gitea/issues/23653))
    -   Use data-tooltip-content for tippy tooltip ([#&#8203;23649](https://github.com/go-gitea/gitea/issues/23649))
    -   Fix new issue/pull request btn margin when it is next to sort ([#&#8203;23647](https://github.com/go-gitea/gitea/issues/23647))
    -   Fine tune more downdrop settings, use SVG for labels, improve Repo Topic Edit form ([#&#8203;23626](https://github.com/go-gitea/gitea/issues/23626))
    -   Allow new file and edit file preview if it has editable extension ([#&#8203;23624](https://github.com/go-gitea/gitea/issues/23624))
    -   Replace a few fontawesome icons with svg ([#&#8203;23602](https://github.com/go-gitea/gitea/issues/23602))
    -   `Publish Review` buttons should indicate why they are disabled ([#&#8203;23598](https://github.com/go-gitea/gitea/issues/23598))
    -   Convert issue list checkboxes to native ([#&#8203;23596](https://github.com/go-gitea/gitea/issues/23596))
    -   Set opaque background on markup and images ([#&#8203;23578](https://github.com/go-gitea/gitea/issues/23578))
    -   Use a general approach to show tooltip, fix temporary tooltip bug ([#&#8203;23574](https://github.com/go-gitea/gitea/issues/23574))
    -   Improve `<SvgIcon>` to make it output `svg` node and optimize performance ([#&#8203;23570](https://github.com/go-gitea/gitea/issues/23570))
    -   Enable color for consistency checks diffs ([#&#8203;23563](https://github.com/go-gitea/gitea/issues/23563))
    -   Fix dropdown icon misalignment when using fomantic icon ([#&#8203;23558](https://github.com/go-gitea/gitea/issues/23558))
    -   Decouple the issue-template code from comment_tab.tmpl ([#&#8203;23556](https://github.com/go-gitea/gitea/issues/23556))
    -   Remove `id="comment-form"` dead code, fix tag ([#&#8203;23555](https://github.com/go-gitea/gitea/issues/23555))
    -   Diff improvements ([#&#8203;23553](https://github.com/go-gitea/gitea/issues/23553))
    -   Sort Python package descriptors by version to mimic PyPI format ([#&#8203;23550](https://github.com/go-gitea/gitea/issues/23550))
    -   Use a general approch to improve a11y for all checkboxes and dropdowns. ([#&#8203;23542](https://github.com/go-gitea/gitea/issues/23542))
    -   Fix long name ui issues and label ui issue ([#&#8203;23541](https://github.com/go-gitea/gitea/issues/23541))
    -   Return `repository` in npm package metadata endpoint ([#&#8203;23539](https://github.com/go-gitea/gitea/issues/23539))
    -   Use `project.IconName` instead of repeated unreadable `if-else` chains ([#&#8203;23538](https://github.com/go-gitea/gitea/issues/23538))
    -   Remove stars in dashboard repo list ([#&#8203;23530](https://github.com/go-gitea/gitea/issues/23530))
    -   Update mini-css-extract-plugin, remove postcss ([#&#8203;23520](https://github.com/go-gitea/gitea/issues/23520))
    -   Change `Close` to either `Close issue` or `Close pull request` ([#&#8203;23506](https://github.com/go-gitea/gitea/issues/23506))
    -   Fix theme-auto loading ([#&#8203;23504](https://github.com/go-gitea/gitea/issues/23504))
    -   Fix tags sort by creation time (descending) on branch/tag dropdowns ([#&#8203;23491](https://github.com/go-gitea/gitea/issues/23491))
    -   Display the version of runner in the runner list ([#&#8203;23490](https://github.com/go-gitea/gitea/issues/23490))
    -   Replace Less with CSS ([#&#8203;23481](https://github.com/go-gitea/gitea/issues/23481))
    -   Fix `.locale.Tr` function not found in delete modal ([#&#8203;23468](https://github.com/go-gitea/gitea/issues/23468))
    -   Allow both fullname and username search when `DEFAULT_SHOW_FULL_NAME` is true ([#&#8203;23463](https://github.com/go-gitea/gitea/issues/23463))
    -   Add project type descriptions in issue badge and improve project icons ([#&#8203;23437](https://github.com/go-gitea/gitea/issues/23437))
    -   Use context for `RepositoryList.LoadAttributes` ([#&#8203;23435](https://github.com/go-gitea/gitea/issues/23435))
    -   Refactor branch/tag selector to Vue SFC ([#&#8203;23421](https://github.com/go-gitea/gitea/issues/23421))
    -   Keep (add if not existing) xmlns attribute for generated SVG images ([#&#8203;23410](https://github.com/go-gitea/gitea/issues/23410))
    -   Refactor dashboard repo list to Vue SFC ([#&#8203;23405](https://github.com/go-gitea/gitea/issues/23405))
    -   Add workflow error notification in ui ([#&#8203;23404](https://github.com/go-gitea/gitea/issues/23404))
    -   Refactor branch/tag selector dropdown (first step) ([#&#8203;23394](https://github.com/go-gitea/gitea/issues/23394))
    -   Reduce duplicate and useless code in options ([#&#8203;23369](https://github.com/go-gitea/gitea/issues/23369))
    -   Convert `<div class="button">` to `<button class="button">` ([#&#8203;23337](https://github.com/go-gitea/gitea/issues/23337))
    -   Add path prefix to ObjectStorage.Iterator ([#&#8203;23332](https://github.com/go-gitea/gitea/issues/23332))
    -   Improve cache context ([#&#8203;23330](https://github.com/go-gitea/gitea/issues/23330))
    -   Move pidfile creation from setting to web cmd package ([#&#8203;23285](https://github.com/go-gitea/gitea/issues/23285))
    -   Fix tags view ([#&#8203;23243](https://github.com/go-gitea/gitea/issues/23243))
    -   Add commit info in action page ([#&#8203;23210](https://github.com/go-gitea/gitea/issues/23210))
    -   Support paste treepath when creating a new file or updating the file name ([#&#8203;23209](https://github.com/go-gitea/gitea/issues/23209))
    -   Allow skipping forks and mirrors from being indexed ([#&#8203;23187](https://github.com/go-gitea/gitea/issues/23187))
    -   Use context parameter in services/repository ([#&#8203;23186](https://github.com/go-gitea/gitea/issues/23186))
    -   Hide target selector if tag exists when creating new release ([#&#8203;23171](https://github.com/go-gitea/gitea/issues/23171))
    -   Improve FindProjects ([#&#8203;23085](https://github.com/go-gitea/gitea/issues/23085))
    -   Clean Path in Options ([#&#8203;23006](https://github.com/go-gitea/gitea/issues/23006))
    -   Add margin top to the top of branches ([#&#8203;23002](https://github.com/go-gitea/gitea/issues/23002))
    -   Remove unnecessary and incorrect `find('.menu').toggle()` ([#&#8203;22987](https://github.com/go-gitea/gitea/issues/22987))
    -   Improve GetBoards and getDefaultBoard ([#&#8203;22981](https://github.com/go-gitea/gitea/issues/22981))
    -   Improve squash merge commit author and co-author with private emails ([#&#8203;22977](https://github.com/go-gitea/gitea/issues/22977))
    -   Add --quiet option to gitea dump ([#&#8203;22969](https://github.com/go-gitea/gitea/issues/22969))
    -   Add pagination for dashboard and user activity feeds ([#&#8203;22937](https://github.com/go-gitea/gitea/issues/22937))
    -   Handle files starting with colons in WalkGitLog ([#&#8203;22935](https://github.com/go-gitea/gitea/issues/22935))
    -   Add "Reviewed by you" filter for pull requests ([#&#8203;22927](https://github.com/go-gitea/gitea/issues/22927))
    -   Parse external request id from request headers, and print it in access log ([#&#8203;22906](https://github.com/go-gitea/gitea/issues/22906))
    -   Replace `repo.namedBlob` by `git.TreeEntry`. ([#&#8203;22898](https://github.com/go-gitea/gitea/issues/22898))
    -   Pull Requests: add button to compare force pushed commits ([#&#8203;22857](https://github.com/go-gitea/gitea/issues/22857))
    -   Fix pull request update showing too many commits with multiple branches ([#&#8203;22856](https://github.com/go-gitea/gitea/issues/22856))
    -   Require approval to run actions for fork pull request ([#&#8203;22803](https://github.com/go-gitea/gitea/issues/22803))
    -   Projects: rename Board to Column in interface and improve consistency ([#&#8203;22767](https://github.com/go-gitea/gitea/issues/22767))
    -   Add user visibility in dashboard navbar ([#&#8203;22747](https://github.com/go-gitea/gitea/issues/22747))
    -   Add .livemd as a markdown extension ([#&#8203;22730](https://github.com/go-gitea/gitea/issues/22730))
    -   Clean up WebAuthn javascript code and remove JQuery code ([#&#8203;22697](https://github.com/go-gitea/gitea/issues/22697))
    -   Merge message template support for rebase without merge commit ([#&#8203;22669](https://github.com/go-gitea/gitea/issues/22669))
    -   Show editorconfig warnings when viewing a malformed editorconfig ([#&#8203;21257](https://github.com/go-gitea/gitea/issues/21257))
    -   Npm packages: set repository link based on the url in package.json ([#&#8203;20379](https://github.com/go-gitea/gitea/issues/20379))
-   BUGFIXES
    -   Add support for different Maven POM encoding ([#&#8203;25873](https://github.com/go-gitea/gitea/issues/25873)) ([#&#8203;25890](https://github.com/go-gitea/gitea/issues/25890))
    -   Fix incorrect repo url when changed the case of ownername ([#&#8203;25733](https://github.com/go-gitea/gitea/issues/25733)) ([#&#8203;25881](https://github.com/go-gitea/gitea/issues/25881))
    -   Fix empty project displayed in issue sidebar ([#&#8203;25802](https://github.com/go-gitea/gitea/issues/25802)) ([#&#8203;25854](https://github.com/go-gitea/gitea/issues/25854))
    -   Show correct SSL Mode on "install page" ([#&#8203;25818](https://github.com/go-gitea/gitea/issues/25818)) ([#&#8203;25838](https://github.com/go-gitea/gitea/issues/25838))
    -   Fix the error message when the token is incorrect ([#&#8203;25701](https://github.com/go-gitea/gitea/issues/25701)) ([#&#8203;25836](https://github.com/go-gitea/gitea/issues/25836))
    -   Fix incorrect oldest sort in project list ([#&#8203;25806](https://github.com/go-gitea/gitea/issues/25806)) ([#&#8203;25835](https://github.com/go-gitea/gitea/issues/25835))
    -   For API attachments, use API URL ([#&#8203;25639](https://github.com/go-gitea/gitea/issues/25639)) ([#&#8203;25814](https://github.com/go-gitea/gitea/issues/25814))
    -   Avoid amending the Rebase and Fast-forward merge if there is no message template ([#&#8203;25779](https://github.com/go-gitea/gitea/issues/25779)) ([#&#8203;25809](https://github.com/go-gitea/gitea/issues/25809))
    -   Make "install page" respect environment config ([#&#8203;25648](https://github.com/go-gitea/gitea/issues/25648)) ([#&#8203;25799](https://github.com/go-gitea/gitea/issues/25799))
    -   Fix activity type match in `matchPullRequestEvent` ([#&#8203;25746](https://github.com/go-gitea/gitea/issues/25746)) ([#&#8203;25796](https://github.com/go-gitea/gitea/issues/25796))
    -   Fix notification list bugs ([#&#8203;25781](https://github.com/go-gitea/gitea/issues/25781)) ([#&#8203;25787](https://github.com/go-gitea/gitea/issues/25787))
    -   Revert package access change from [#&#8203;23879](https://github.com/go-gitea/gitea/issues/23879) ([#&#8203;25707](https://github.com/go-gitea/gitea/issues/25707)) ([#&#8203;25785](https://github.com/go-gitea/gitea/issues/25785))
    -   Check `ctx.Written()` for `GetActionIssue` ([#&#8203;25698](https://github.com/go-gitea/gitea/issues/25698)) ([#&#8203;25711](https://github.com/go-gitea/gitea/issues/25711))
    -   Fix position of org follow button ([#&#8203;25688](https://github.com/go-gitea/gitea/issues/25688)) ([#&#8203;25692](https://github.com/go-gitea/gitea/issues/25692))
    -   Fix the nil pointer when assigning issues to projects ([#&#8203;25665](https://github.com/go-gitea/gitea/issues/25665)) ([#&#8203;25677](https://github.com/go-gitea/gitea/issues/25677))
    -   Log the real reason when authentication fails (but don't show the user) ([#&#8203;25414](https://github.com/go-gitea/gitea/issues/25414)) ([#&#8203;25660](https://github.com/go-gitea/gitea/issues/25660))
    -   Fix bug when change user name ([#&#8203;25637](https://github.com/go-gitea/gitea/issues/25637)) ([#&#8203;25646](https://github.com/go-gitea/gitea/issues/25646))
    -   Make "cancel" buttons have proper type in modal forms ([#&#8203;25618](https://github.com/go-gitea/gitea/issues/25618)) ([#&#8203;25641](https://github.com/go-gitea/gitea/issues/25641))
    -   Use AfterCommitId to get commit for Viewed functionality ([#&#8203;25529](https://github.com/go-gitea/gitea/issues/25529)) ([#&#8203;25612](https://github.com/go-gitea/gitea/issues/25612))
    -   Fix bug of branches API with tests([#&#8203;25578](https://github.com/go-gitea/gitea/issues/25578)) ([#&#8203;25579](https://github.com/go-gitea/gitea/issues/25579))
    -   Fix content holes in Actions task logs file ([#&#8203;25560](https://github.com/go-gitea/gitea/issues/25560)) ([#&#8203;25566](https://github.com/go-gitea/gitea/issues/25566))
    -   Fix bugs related to notification endpoints ([#&#8203;25548](https://github.com/go-gitea/gitea/issues/25548)) ([#&#8203;25562](https://github.com/go-gitea/gitea/issues/25562))
    -   Add Adopt repository event and handler ([#&#8203;25497](https://github.com/go-gitea/gitea/issues/25497)) ([#&#8203;25518](https://github.com/go-gitea/gitea/issues/25518))
    -   Improve wiki sidebar and TOC ([#&#8203;25460](https://github.com/go-gitea/gitea/issues/25460)) ([#&#8203;25477](https://github.com/go-gitea/gitea/issues/25477))
    -   Make "dismiss" content shown correctly ([#&#8203;25461](https://github.com/go-gitea/gitea/issues/25461)) ([#&#8203;25465](https://github.com/go-gitea/gitea/issues/25465))
    -   Change default email domain for LDAP users ([#&#8203;25425](https://github.com/go-gitea/gitea/issues/25425)) ([#&#8203;25434](https://github.com/go-gitea/gitea/issues/25434))
    -   Fix missing commit message body when the message has leading newlines ([#&#8203;25418](https://github.com/go-gitea/gitea/issues/25418)) ([#&#8203;25422](https://github.com/go-gitea/gitea/issues/25422))
    -   Fix LDAP sync when Username Attribute is empty ([#&#8203;25278](https://github.com/go-gitea/gitea/issues/25278)) ([#&#8203;25379](https://github.com/go-gitea/gitea/issues/25379))
    -   Fetch all git data for embedding correct version in docker image ([#&#8203;25361](https://github.com/go-gitea/gitea/issues/25361)) ([#&#8203;25373](https://github.com/go-gitea/gitea/issues/25373))
    -   Fix incorrect actions ref_name ([#&#8203;25358](https://github.com/go-gitea/gitea/issues/25358)) ([#&#8203;25367](https://github.com/go-gitea/gitea/issues/25367))
    -   Write absolute AppDataPath to app.ini when installing ([#&#8203;25331](https://github.com/go-gitea/gitea/issues/25331)) ([#&#8203;25347](https://github.com/go-gitea/gitea/issues/25347))
    -   Fix incorrect config argument position for builtin SSH server ([#&#8203;25341](https://github.com/go-gitea/gitea/issues/25341))
    -   Remove EasyMDE focus outline on text ([#&#8203;25328](https://github.com/go-gitea/gitea/issues/25328)) ([#&#8203;25332](https://github.com/go-gitea/gitea/issues/25332))
    -   Fix displayed RPM repo url ([#&#8203;25310](https://github.com/go-gitea/gitea/issues/25310)) ([#&#8203;25313](https://github.com/go-gitea/gitea/issues/25313))
    -   Fix index generation parallelly failure ([#&#8203;25235](https://github.com/go-gitea/gitea/issues/25235)) ([#&#8203;25269](https://github.com/go-gitea/gitea/issues/25269))
    -   Fix panic when migrating a repo from GitHub with issues ([#&#8203;25246](https://github.com/go-gitea/gitea/issues/25246)) ([#&#8203;25247](https://github.com/go-gitea/gitea/issues/25247))
    -   Fix task list checkbox toggle to work with YAML front matter ([#&#8203;25184](https://github.com/go-gitea/gitea/issues/25184)) ([#&#8203;25227](https://github.com/go-gitea/gitea/issues/25227))
    -   Fix compatible for webhook ref type ([#&#8203;25195](https://github.com/go-gitea/gitea/issues/25195)) ([#&#8203;25223](https://github.com/go-gitea/gitea/issues/25223))
    -   Hide limited users if viewed by anonymous ghost ([#&#8203;25214](https://github.com/go-gitea/gitea/issues/25214)) ([#&#8203;25220](https://github.com/go-gitea/gitea/issues/25220))
    -   Do not overwrite the log mode when installing ([#&#8203;25203](https://github.com/go-gitea/gitea/issues/25203)) ([#&#8203;25209](https://github.com/go-gitea/gitea/issues/25209))
    -   Fix fullscreen for action  ([#&#8203;25200](https://github.com/go-gitea/gitea/issues/25200)) ([#&#8203;25207](https://github.com/go-gitea/gitea/issues/25207))
    -   Add `WithPullRequest` for `actionsNotifier` ([#&#8203;25144](https://github.com/go-gitea/gitea/issues/25144)) ([#&#8203;25197](https://github.com/go-gitea/gitea/issues/25197))
    -   Fix `MilestoneIDs` when querying issues ([#&#8203;25125](https://github.com/go-gitea/gitea/issues/25125)) ([#&#8203;25141](https://github.com/go-gitea/gitea/issues/25141))
    -   Fix incorrect git ignore rule and add missing license files ([#&#8203;25135](https://github.com/go-gitea/gitea/issues/25135)) ([#&#8203;25138](https://github.com/go-gitea/gitea/issues/25138))
    -   Remove incorrect element ID on "post-install" page ([#&#8203;25104](https://github.com/go-gitea/gitea/issues/25104)) ([#&#8203;25129](https://github.com/go-gitea/gitea/issues/25129))
    -   Fix 500 error caused by notifications without an issue such as repo transfers ([#&#8203;25101](https://github.com/go-gitea/gitea/issues/25101))
    -   Help to recover from corrupted levelqueue ([#&#8203;24912](https://github.com/go-gitea/gitea/issues/24912))
    -   Fix 500 error when select `No assignee` filter in issue list page ([#&#8203;24854](https://github.com/go-gitea/gitea/issues/24854))
    -   Add validations.required check to dropdown field ([#&#8203;24849](https://github.com/go-gitea/gitea/issues/24849))
    -   Reenable creating default webhooks. ([#&#8203;24626](https://github.com/go-gitea/gitea/issues/24626))
    -   Fix incorrect user visibility ([#&#8203;24557](https://github.com/go-gitea/gitea/issues/24557))
    -   Fix commits pushed with deploy keys not shown in dashboard ([#&#8203;24521](https://github.com/go-gitea/gitea/issues/24521))
    -   Check length of `LogIndexes` in case it is outdated ([#&#8203;24516](https://github.com/go-gitea/gitea/issues/24516))
    -   Fix incorrect CurrentUser check for docker rootless ([#&#8203;24441](https://github.com/go-gitea/gitea/issues/24441))
    -   Fix some mistakes when using `ignSignIn` ([#&#8203;24415](https://github.com/go-gitea/gitea/issues/24415))
    -   Fix incorrect CORS response in Http Git handler ([#&#8203;24303](https://github.com/go-gitea/gitea/issues/24303))
    -   Fix issue attachment handling ([#&#8203;24202](https://github.com/go-gitea/gitea/issues/24202))
    -   Make mention autocomplete case insensitive in new markdown editor ([#&#8203;24190](https://github.com/go-gitea/gitea/issues/24190))
    -   Use 1.18's aria role for dropdown menus ([#&#8203;24144](https://github.com/go-gitea/gitea/issues/24144))
    -   Fix internal sever error when visiting a PR that bound to the deleted team ([#&#8203;24127](https://github.com/go-gitea/gitea/issues/24127))
    -   Add migration to fix external unit access mode of owner/admin team ([#&#8203;24117](https://github.com/go-gitea/gitea/issues/24117))
    -   Show friendly 500 error page to users and developers ([#&#8203;24110](https://github.com/go-gitea/gitea/issues/24110))
    -   Fix meilisearch not working when searching across multiple repositories ([#&#8203;24109](https://github.com/go-gitea/gitea/issues/24109))
    -   Fix math and mermaid rendering bugs ([#&#8203;24049](https://github.com/go-gitea/gitea/issues/24049))
    -   Remove "inverted" class on creating new label and cancel buttons ([#&#8203;24030](https://github.com/go-gitea/gitea/issues/24030))
    -   Allow repo admins too to delete the repo ([#&#8203;23940](https://github.com/go-gitea/gitea/issues/23940))
    -   Disable editing tags ([#&#8203;23883](https://github.com/go-gitea/gitea/issues/23883))
    -   Fix review conversation reply ([#&#8203;23846](https://github.com/go-gitea/gitea/issues/23846))
    -   Fix incorrect CORS failure detection logic ([#&#8203;23844](https://github.com/go-gitea/gitea/issues/23844))
    -   Remove incorrect HTML self close tag ([#&#8203;23748](https://github.com/go-gitea/gitea/issues/23748))
    -   Fix incorrect `toggle` buttons ([#&#8203;23676](https://github.com/go-gitea/gitea/issues/23676))
    -   Introduce path Clean/Join helper functions ([#&#8203;23495](https://github.com/go-gitea/gitea/issues/23495))
    -   Fix missed migration in [#&#8203;22235](https://github.com/go-gitea/gitea/issues/22235) ([#&#8203;23482](https://github.com/go-gitea/gitea/issues/23482))
    -   Do not store user projects as organization projects ([#&#8203;23353](https://github.com/go-gitea/gitea/issues/23353))
    -   Fix incorrect display for comment context menu ([#&#8203;23343](https://github.com/go-gitea/gitea/issues/23343))
    -   Make Ctrl+Enter submit a pending comment (starting review) instead of submitting a single comment ([#&#8203;23245](https://github.com/go-gitea/gitea/issues/23245))
    -   Fix submit button won't refresh in New Repository Fork page ([#&#8203;22994](https://github.com/go-gitea/gitea/issues/22994))
    -   Remove stars when repo goes private ([#&#8203;19904](https://github.com/go-gitea/gitea/issues/19904))
-   TESTING
    -   Add unit test for repository collaboration ([#&#8203;25640](https://github.com/go-gitea/gitea/issues/25640)) ([#&#8203;25658](https://github.com/go-gitea/gitea/issues/25658))
    -   Add missing test case and fix typo in tests ([#&#8203;24915](https://github.com/go-gitea/gitea/issues/24915))
    -   Kd/fix redis unit test ([#&#8203;24650](https://github.com/go-gitea/gitea/issues/24650))
    -   Add owner team permission check test ([#&#8203;24096](https://github.com/go-gitea/gitea/issues/24096))
    -   Test renderReadmeFile ([#&#8203;23185](https://github.com/go-gitea/gitea/issues/23185))
    -   Add default owner team to privated_org and limited_org in unit test ([#&#8203;23109](https://github.com/go-gitea/gitea/issues/23109))
    -   Speed up HasUserStopwatch & GetActiveStopwatch ([#&#8203;23051](https://github.com/go-gitea/gitea/issues/23051))
    -   Remove all package data after tests ([#&#8203;22984](https://github.com/go-gitea/gitea/issues/22984))
-   TRANSLATION
    -   Backport locales to v1.20 ([#&#8203;25899](https://github.com/go-gitea/gitea/issues/25899))
    -   Translate untranslated string in issues list ([#&#8203;25759](https://github.com/go-gitea/gitea/issues/25759)) ([#&#8203;25761](https://github.com/go-gitea/gitea/issues/25761))
    -   Remove broken translations ([#&#8203;25737](https://github.com/go-gitea/gitea/issues/25737))
    -   Show correct naming for 1 comment ([#&#8203;25704](https://github.com/go-gitea/gitea/issues/25704)) ([#&#8203;25712](https://github.com/go-gitea/gitea/issues/25712))
    -   Add Chinese documentations for Actions ([#&#8203;24902](https://github.com/go-gitea/gitea/issues/24902))
    -   Change `valid_until` translation to `valid_until_date` and include placeholder for the date ([#&#8203;24563](https://github.com/go-gitea/gitea/issues/24563))
    -   Change `add_on` translation to `added_on` and include placeholder for the date ([#&#8203;24562](https://github.com/go-gitea/gitea/issues/24562))
    -   Change `join_on` translation to `joined_on` and include placeholder for the date ([#&#8203;24550](https://github.com/go-gitea/gitea/issues/24550))
    -   Use double quotes consistently in en-US ([#&#8203;24141](https://github.com/go-gitea/gitea/issues/24141))
    -   Clarify Gitea/Crowdin locale behaviors, add tests for LocaleStore, fix some strings with semicolons ([#&#8203;23819](https://github.com/go-gitea/gitea/issues/23819))
    -   Update localization.zh-cn.md ([#&#8203;23448](https://github.com/go-gitea/gitea/issues/23448))
    -   Fix grammar in error message ([#&#8203;23273](https://github.com/go-gitea/gitea/issues/23273))
-   BUILD
    -   Correct permissions for `.ssh` and `authorized_keys` ([#&#8203;25721](https://github.com/go-gitea/gitea/issues/25721)) ([#&#8203;25730](https://github.com/go-gitea/gitea/issues/25730))
    -   Upgrade snap to node 20 ([#&#8203;24990](https://github.com/go-gitea/gitea/issues/24990))
    -   Use Go 1.20 for next release ([#&#8203;24859](https://github.com/go-gitea/gitea/issues/24859))
    -   Ignore build for docs only ([#&#8203;24761](https://github.com/go-gitea/gitea/issues/24761))
    -   Update cron-translations.yml ([#&#8203;24708](https://github.com/go-gitea/gitea/issues/24708))
    -   Update to Alpine 3.18 ([#&#8203;24700](https://github.com/go-gitea/gitea/issues/24700))
    -   Check latest version on CI ([#&#8203;24556](https://github.com/go-gitea/gitea/issues/24556))
    -   Upgrade to Node 20 on CI, enable actions cancellation ([#&#8203;24524](https://github.com/go-gitea/gitea/issues/24524))
    -   Mark `/templates/swagger/v1_json.tmpl` as generated file ([#&#8203;24306](https://github.com/go-gitea/gitea/issues/24306))
    -   Enable forbidigo linter ([#&#8203;24278](https://github.com/go-gitea/gitea/issues/24278))
    -   Introduce lint-md and compliance-docs pipeline ([#&#8203;24021](https://github.com/go-gitea/gitea/issues/24021))
    -   Add eslint-plugin-custom-elements ([#&#8203;23991](https://github.com/go-gitea/gitea/issues/23991))
    -   Update eslints for Vue 3 ([#&#8203;23935](https://github.com/go-gitea/gitea/issues/23935))
    -   Improve backport-locales.go ([#&#8203;23807](https://github.com/go-gitea/gitea/issues/23807))
    -   Don't run unnecessary steps when only docs changed ([#&#8203;23103](https://github.com/go-gitea/gitea/issues/23103))
-   DOCS
    -   Docs: rootless docker ssh's default port is 2222 ([#&#8203;25771](https://github.com/go-gitea/gitea/issues/25771)) ([#&#8203;25772](https://github.com/go-gitea/gitea/issues/25772))
    -   Add documentation about supported workflow trigger events ([#&#8203;25582](https://github.com/go-gitea/gitea/issues/25582)) ([#&#8203;25589](https://github.com/go-gitea/gitea/issues/25589))
    -   Document creating an API key from the CLI ([#&#8203;25504](https://github.com/go-gitea/gitea/issues/25504))
    -   Use the new download domain replace the old ([#&#8203;25405](https://github.com/go-gitea/gitea/issues/25405)) ([#&#8203;25409](https://github.com/go-gitea/gitea/issues/25409))
    -   Add Exoscale to installation on cloud provider docs ([#&#8203;25342](https://github.com/go-gitea/gitea/issues/25342)) ([#&#8203;25346](https://github.com/go-gitea/gitea/issues/25346))
    -   Improve some documents: release version, logging, NFS lock ([#&#8203;25202](https://github.com/go-gitea/gitea/issues/25202)) ([#&#8203;25204](https://github.com/go-gitea/gitea/issues/25204))
    -   Change branch name from master to main in some documents' links ([#&#8203;25126](https://github.com/go-gitea/gitea/issues/25126)) ([#&#8203;25140](https://github.com/go-gitea/gitea/issues/25140))
    -   Introduce how to configure cache when starting a Runner with Docker ([#&#8203;25077](https://github.com/go-gitea/gitea/issues/25077))
    -   Docs: remove an extraneous whitespace ([#&#8203;24949](https://github.com/go-gitea/gitea/issues/24949))
    -   Update Asciidoc markup example with safe defaults ([#&#8203;24920](https://github.com/go-gitea/gitea/issues/24920))
    -   Fix \<empty> in administration/config-cheat-sheet.en-us.md ([#&#8203;24905](https://github.com/go-gitea/gitea/issues/24905))
    -   Rename docs packages title from xxx Packages Repository -> xxx Package Registry ([#&#8203;24895](https://github.com/go-gitea/gitea/issues/24895))
    -   Replace `drone exec` to `act_runner exec` in test README.md ([#&#8203;24791](https://github.com/go-gitea/gitea/issues/24791))
    -   Update packages overview page ([#&#8203;24730](https://github.com/go-gitea/gitea/issues/24730))
    -   Docs for creating a user to run Gitea on Fedora/RHEL/CentOS ([#&#8203;24725](https://github.com/go-gitea/gitea/issues/24725))
    -   Move actions as usage's subdirectory and update comparsion zh-cn version ([#&#8203;24719](https://github.com/go-gitea/gitea/issues/24719))
    -   Document `redis-cluster` explicitly in config ([#&#8203;24717](https://github.com/go-gitea/gitea/issues/24717))
    -   Improve reverse-proxy document and fix nginx config bug ([#&#8203;24616](https://github.com/go-gitea/gitea/issues/24616))
    -   Fix broken `README` link ([#&#8203;24546](https://github.com/go-gitea/gitea/issues/24546))
    -   Update `CONTRIBUTING.md` ([#&#8203;24492](https://github.com/go-gitea/gitea/issues/24492))
    -   Docs for Gitea Actions ([#&#8203;24405](https://github.com/go-gitea/gitea/issues/24405))
    -   Zh-cn support on doc pages ([#&#8203;24166](https://github.com/go-gitea/gitea/issues/24166))
    -   Fix https setup doc zh-cn ([#&#8203;24015](https://github.com/go-gitea/gitea/issues/24015))
    -   Adjust some documentations titles ([#&#8203;23941](https://github.com/go-gitea/gitea/issues/23941))
    -   More specific and unique feed name for NuGet install command template. ([#&#8203;23889](https://github.com/go-gitea/gitea/issues/23889))
    -   Clarify that Gitea requires JavaScript ([#&#8203;23677](https://github.com/go-gitea/gitea/issues/23677))
    -   Rename develop -> development, contribute -> contributing, administer -> administration ([#&#8203;23662](https://github.com/go-gitea/gitea/issues/23662))
    -   Update PR documentation ([#&#8203;23620](https://github.com/go-gitea/gitea/issues/23620))
    -   Add package registry architecture overview ([#&#8203;23445](https://github.com/go-gitea/gitea/issues/23445))
    -   Add gradle samples in maven doc of packages ([#&#8203;23374](https://github.com/go-gitea/gitea/issues/23374))
    -   Improve the frontend guideline ([#&#8203;23298](https://github.com/go-gitea/gitea/issues/23298))
    -   Add document for `webcomponents` ([#&#8203;23261](https://github.com/go-gitea/gitea/issues/23261))
    -   Add Gitea Community Code of Conduct ([#&#8203;23188](https://github.com/go-gitea/gitea/issues/23188))
    -   Avoid Hugo from adding quote to actions url ([#&#8203;23097](https://github.com/go-gitea/gitea/issues/23097))
    -   Improve reverse proxies documentation ([#&#8203;23068](https://github.com/go-gitea/gitea/issues/23068))
    -   Docs: HTTPS configuration for zh-cn ([#&#8203;23039](https://github.com/go-gitea/gitea/issues/23039))
-   MISC
    -   Do not prepare oauth2 config if it is not enabled, do not write config in some sub-commands ([#&#8203;25567](https://github.com/go-gitea/gitea/issues/25567)) ([#&#8203;25576](https://github.com/go-gitea/gitea/issues/25576))
    -   Align language menu icon and fit the footer area ([#&#8203;25556](https://github.com/go-gitea/gitea/issues/25556)) ([#&#8203;25563](https://github.com/go-gitea/gitea/issues/25563))
    -   Fix sub-command log level ([#&#8203;25537](https://github.com/go-gitea/gitea/issues/25537)) ([#&#8203;25553](https://github.com/go-gitea/gitea/issues/25553))
    -   Fix admin-dl-horizontal ([#&#8203;25512](https://github.com/go-gitea/gitea/issues/25512)) ([#&#8203;25535](https://github.com/go-gitea/gitea/issues/25535))
    -   Fix input `line-height` cutting off `g` ([#&#8203;25334](https://github.com/go-gitea/gitea/issues/25334)) ([#&#8203;25533](https://github.com/go-gitea/gitea/issues/25533))
    -   Clarify the reason why the user can't add a new email if there is a pending activation ([#&#8203;25509](https://github.com/go-gitea/gitea/issues/25509)) ([#&#8203;25514](https://github.com/go-gitea/gitea/issues/25514))
    -   Improve loadprojects for issue list ([#&#8203;25468](https://github.com/go-gitea/gitea/issues/25468)) ([#&#8203;25493](https://github.com/go-gitea/gitea/issues/25493))
    -   Use "utf8mb4" for MySQL by default ([#&#8203;25432](https://github.com/go-gitea/gitea/issues/25432))
    -   Show outdated comments in files changed tab ([#&#8203;24936](https://github.com/go-gitea/gitea/issues/24936)) ([#&#8203;25428](https://github.com/go-gitea/gitea/issues/25428))
    -   Avoid polluting config file when "save" ([#&#8203;25395](https://github.com/go-gitea/gitea/issues/25395)) ([#&#8203;25406](https://github.com/go-gitea/gitea/issues/25406))
    -   Fix blank dir message when uploading files from web editor ([#&#8203;25391](https://github.com/go-gitea/gitea/issues/25391)) ([#&#8203;25400](https://github.com/go-gitea/gitea/issues/25400))
    -   Fix issue filters on mobile view ([#&#8203;25368](https://github.com/go-gitea/gitea/issues/25368)) ([#&#8203;25371](https://github.com/go-gitea/gitea/issues/25371))
    -   Avoid polluting the config ([#&#8203;25345](https://github.com/go-gitea/gitea/issues/25345)) ([#&#8203;25354](https://github.com/go-gitea/gitea/issues/25354))
    -   Fix action runner last online state on edit page ([#&#8203;25337](https://github.com/go-gitea/gitea/issues/25337))
    -   Remove fomantic inverted variations ([#&#8203;25286](https://github.com/go-gitea/gitea/issues/25286)) ([#&#8203;25289](https://github.com/go-gitea/gitea/issues/25289))
    -   Show OAuth2 errors to end users ([#&#8203;25261](https://github.com/go-gitea/gitea/issues/25261)) ([#&#8203;25271](https://github.com/go-gitea/gitea/issues/25271))
    -   Fix profile render when the README.md size is larger than 1024 bytes ([#&#8203;25270](https://github.com/go-gitea/gitea/issues/25270))
    -   Fix strange UI behavior of cancelling dismiss review modal ([#&#8203;25172](https://github.com/go-gitea/gitea/issues/25172))
    -   Update js dependencies ([#&#8203;25137](https://github.com/go-gitea/gitea/issues/25137)) ([#&#8203;25151](https://github.com/go-gitea/gitea/issues/25151))
    -   Fix swagger documentation for multiple files API endpoint ([#&#8203;25110](https://github.com/go-gitea/gitea/issues/25110))
    -   Fix link to customizing-gitea ([#&#8203;25056](https://github.com/go-gitea/gitea/issues/25056))
    -   Add Link to Stars and Forks Page to Repo List ([#&#8203;24931](https://github.com/go-gitea/gitea/issues/24931))
    -   Improve confusable character string ([#&#8203;24911](https://github.com/go-gitea/gitea/issues/24911))
    -   Fix install page context, make the install page tests really test ([#&#8203;24858](https://github.com/go-gitea/gitea/issues/24858))
    -   Add gitea manager reload-templates command ([#&#8203;24843](https://github.com/go-gitea/gitea/issues/24843))
    -   Create pull request for base after editing file, if not enabled on fork ([#&#8203;24841](https://github.com/go-gitea/gitea/issues/24841))
    -   Fix video width overflow in markdown, and other changes to match img ([#&#8203;24834](https://github.com/go-gitea/gitea/issues/24834))
    -   Support Copy Link for video attachments ([#&#8203;24833](https://github.com/go-gitea/gitea/issues/24833))
    -   Improve accessibility when (re-)viewing files ([#&#8203;24817](https://github.com/go-gitea/gitea/issues/24817))
    -   Update JS dependencies ([#&#8203;24815](https://github.com/go-gitea/gitea/issues/24815))
    -   Bump vm2 from 3.9.17 to 3.9.18 ([#&#8203;24742](https://github.com/go-gitea/gitea/issues/24742))
    -   Add IsErrRepoFilesAlreadyExist check when fork repo ([#&#8203;24678](https://github.com/go-gitea/gitea/issues/24678))
    -   Fix typo in act-runner file ([#&#8203;24652](https://github.com/go-gitea/gitea/issues/24652))
    -   Do not send "registration success email" for external auth sources ([#&#8203;24632](https://github.com/go-gitea/gitea/issues/24632))
    -   Filter get single commit ([#&#8203;24613](https://github.com/go-gitea/gitea/issues/24613))
    -   Make diff view full width again ([#&#8203;24598](https://github.com/go-gitea/gitea/issues/24598))
    -   Add permission check for moving issue action in project view page ([#&#8203;24589](https://github.com/go-gitea/gitea/issues/24589))
    -   Revert "Prevent a user with a different email from accepting the team invite" ([#&#8203;24531](https://github.com/go-gitea/gitea/issues/24531))
    -   Temporarily disable PATs until next release ([#&#8203;24527](https://github.com/go-gitea/gitea/issues/24527))
    -   Clean up polluted styles and remove dead CSS code ([#&#8203;24497](https://github.com/go-gitea/gitea/issues/24497))
    -   Faster git.GetDivergingCommits ([#&#8203;24482](https://github.com/go-gitea/gitea/issues/24482))
    -   Fix test delivery button in repo webhook settings page ([#&#8203;24478](https://github.com/go-gitea/gitea/issues/24478))
    -   Use globally shared HTMLRender ([#&#8203;24436](https://github.com/go-gitea/gitea/issues/24436))
    -   Changelog 1.19.2 ([#&#8203;24365](https://github.com/go-gitea/gitea/issues/24365)) ([#&#8203;24403](https://github.com/go-gitea/gitea/issues/24403))
    -   Fix layouts of admin table / adapt repo / email test ([#&#8203;24370](https://github.com/go-gitea/gitea/issues/24370))
    -   Gitea Actions add `base_ref`, `head_ref`, `api_url`, `ref_type` fields ([#&#8203;24356](https://github.com/go-gitea/gitea/issues/24356))
    -   Fix 404 error when leaving the last private org team ([#&#8203;24322](https://github.com/go-gitea/gitea/issues/24322))
    -   Improve External Wiki in Repo Header ([#&#8203;24304](https://github.com/go-gitea/gitea/issues/24304))
    -   Updated upgrade script that is informing user that Gitea service has to be running in order to upgrade it ([#&#8203;24260](https://github.com/go-gitea/gitea/issues/24260))
    -   Add run status in action view page ([#&#8203;24223](https://github.com/go-gitea/gitea/issues/24223))
    -   Update JS dependencies ([#&#8203;24218](https://github.com/go-gitea/gitea/issues/24218))
    -   Bump vm2 from 3.9.15 to 3.9.16 ([#&#8203;24089](https://github.com/go-gitea/gitea/issues/24089))
    -   Update github.com/google/go-github to v51 ([#&#8203;23946](https://github.com/go-gitea/gitea/issues/23946))
    -   Show visibility status of email in own profile ([#&#8203;23900](https://github.com/go-gitea/gitea/issues/23900))
    -   Refactor authors dropdown (send get request from frontend to avoid long wait time) ([#&#8203;23890](https://github.com/go-gitea/gitea/issues/23890))
    -   Add self to maintainers ([#&#8203;23644](https://github.com/go-gitea/gitea/issues/23644))
    -   Upgrade to npm lockfile v3 and explicitely set it ([#&#8203;23561](https://github.com/go-gitea/gitea/issues/23561))
    -   Improve indices for `action` table ([#&#8203;23532](https://github.com/go-gitea/gitea/issues/23532))
    -   Update JS dependencies, Require Node.js 16 ([#&#8203;23528](https://github.com/go-gitea/gitea/issues/23528))
    -   Add init file for Ubuntu ([#&#8203;23362](https://github.com/go-gitea/gitea/issues/23362))
    -   Update go.mod dependencies ([#&#8203;23126](https://github.com/go-gitea/gitea/issues/23126))
    -   Use minio/sha256-simd for accelerated SHA256 ([#&#8203;23052](https://github.com/go-gitea/gitea/issues/23052))
    -   More detailed branch delete message ([#&#8203;22696](https://github.com/go-gitea/gitea/issues/22696))
    -   Add tooltips to `Hide comment type` settings where necessary ([#&#8203;21306](https://github.com/go-gitea/gitea/issues/21306))

### [`v1.19.4`](https://github.com/go-gitea/gitea/blob/HEAD/CHANGELOG.md#1194---2023-07-04)

[Compare Source](https://github.com/go-gitea/gitea/compare/v1.19.3...v1.19.4)

-   SECURITY
    -   Fix open redirect check for more cases ([#&#8203;25143](https://github.com/go-gitea/gitea/issues/25143)) ([#&#8203;25155](https://github.com/go-gitea/gitea/issues/25155))
-   API
    -   Return `404` in the API if the requested webhooks were not found ([#&#8203;24823](https://github.com/go-gitea/gitea/issues/24823)) ([#&#8203;24830](https://github.com/go-gitea/gitea/issues/24830))
    -   Fix `organization` field being `null` in `GET /api/v1/teams/{id}` ([#&#8203;24694](https://github.com/go-gitea/gitea/issues/24694)) ([#&#8203;24696](https://github.com/go-gitea/gitea/issues/24696))
-   ENHANCEMENTS
    -   Set `--font-weight-bold` to 600 ([#&#8203;24840](https://github.com/go-gitea/gitea/issues/24840))
    -   Make mailer SMTP check have timed context ([#&#8203;24751](https://github.com/go-gitea/gitea/issues/24751)) ([#&#8203;24759](https://github.com/go-gitea/gitea/issues/24759))
    -   Do not select line numbers when selecting text from the action run logs ([#&#8203;24594](https://github.com/go-gitea/gitea/issues/24594)) ([#&#8203;24596](https://github.com/go-gitea/gitea/issues/24596))
-   BUGFIXES
    -   Fix bug when change user name ([#&#8203;25637](https://github.com/go-gitea/gitea/issues/25637)) ([#&#8203;25645](https://github.com/go-gitea/gitea/issues/25645))
    -   Fix task list checkbox toggle to work with YAML front matter ([#&#8203;25184](https://github.com/go-gitea/gitea/issues/25184)) ([#&#8203;25236](https://github.com/go-gitea/gitea/issues/25236))
    -   Hide limited users if viewed by anonymous ghost ([#&#8203;25214](https://github.com/go-gitea/gitea/issues/25214)) ([#&#8203;25224](https://github.com/go-gitea/gitea/issues/25224))
    -   Add `WithPullRequest` for `actionsNotifier` ([#&#8203;25144](https://github.com/go-gitea/gitea/issues/25144)) ([#&#8203;25196](https://github.com/go-gitea/gitea/issues/25196))
    -   Fix parallelly generating index failure with Mysql ([#&#8203;24567](https://github.com/go-gitea/gitea/issues/24567)) ([#&#8203;25081](https://github.com/go-gitea/gitea/issues/25081))
    -   GitLab migration: Sanitize response for reaction list ([#&#8203;25054](https://github.com/go-gitea/gitea/issues/25054)) ([#&#8203;25059](https://github.com/go-gitea/gitea/issues/25059))
    -   Fix users cannot visit issue attachment bug ([#&#8203;25019](https://github.com/go-gitea/gitea/issues/25019)) ([#&#8203;25027](https://github.com/go-gitea/gitea/issues/25027))
    -   Fix missing reference prefix of commits when sync mirror repository ([#&#8203;24994](https://github.com/go-gitea/gitea/issues/24994))
    -   Only validate changed columns when update user ([#&#8203;24867](https://github.com/go-gitea/gitea/issues/24867)) ([#&#8203;24903](https://github.com/go-gitea/gitea/issues/24903))
    -   Make DeleteIssue use correct context ([#&#8203;24885](https://github.com/go-gitea/gitea/issues/24885))
    -   Fix topics deleted via API not being deleted in org page ([#&#8203;24825](https://github.com/go-gitea/gitea/issues/24825)) ([#&#8203;24829](https://github.com/go-gitea/gitea/issues/24829))
    -   Fix Actions being enabled accidentally ([#&#8203;24802](https://github.com/go-gitea/gitea/issues/24802)) ([#&#8203;24810](https://github.com/go-gitea/gitea/issues/24810))
    -   Fix missed table name on iterate lfs meta objects ([#&#8203;24768](https://github.com/go-gitea/gitea/issues/24768)) ([#&#8203;24774](https://github.com/go-gitea/gitea/issues/24774))
    -   Fix safari cookie session bug ([#&#8203;24772](https://github.com/go-gitea/gitea/issues/24772))
    -   Respect original content when creating secrets ([#&#8203;24745](https://github.com/go-gitea/gitea/issues/24745)) ([#&#8203;24746](https://github.com/go-gitea/gitea/issues/24746))
    -   Fix Pull Mirror out-of-sync bugs ([#&#8203;24732](https://github.com/go-gitea/gitea/issues/24732)) ([#&#8203;24733](https://github.com/go-gitea/gitea/issues/24733))
    -   Fix run list broken when trigger user deleted ([#&#8203;24706](https://github.com/go-gitea/gitea/issues/24706)) ([#&#8203;24709](https://github.com/go-gitea/gitea/issues/24709))
    -   Fix issues list page multiple selection update milestones ([#&#8203;24660](https://github.com/go-gitea/gitea/issues/24660)) ([#&#8203;24663](https://github.com/go-gitea/gitea/issues/24663))
    -   Fix: release page for empty or non-existing target ([#&#8203;24659](https://github.com/go-gitea/gitea/issues/24659))
    -   Fix close org projects ([#&#8203;24588](https://github.com/go-gitea/gitea/issues/24588)) ([#&#8203;24591](https://github.com/go-gitea/gitea/issues/24591))
    -   Refresh the refernce of the closed PR when reopening ([#&#8203;24231](https://github.com/go-gitea/gitea/issues/24231)) ([#&#8203;24587](https://github.com/go-gitea/gitea/issues/24587))
    -   Fix the permission of team's `Actions` unit issue ([#&#8203;24536](https://github.com/go-gitea/gitea/issues/24536)) ([#&#8203;24545](https://github.com/go-gitea/gitea/issues/24545))
    -   Bump go.etcd.io/bbolt and blevesearch deps ([#&#8203;23062](https://github.com/go-gitea/gitea/issues/23062)) ([#&#8203;24519](https://github.com/go-gitea/gitea/issues/24519))
    -   Fix new wiki page mirror ([#&#8203;24518](https://github.com/go-gitea/gitea/issues/24518))
    -   Match unqualified references when syncing pulls as well ([#&#8203;23070](https://github.com/go-gitea/gitea/issues/23070))
-   DOCS
    -   Change branch name from master to main in some documents' links ([#&#8203;25126](https://github.com/go-gitea/gitea/issues/25126)) ([#&#8203;25139](https://github.com/go-gitea/gitea/issues/25139))
    -   Remove unnecessary content on docs ([#&#8203;24976](https://github.com/go-gitea/gitea/issues/24976)) ([#&#8203;25001](https://github.com/go-gitea/gitea/issues/25001))
    -   Unify doc links to use paths relative to doc folder ([#&#8203;24979](https://github.com/go-gitea/gitea/issues/24979)) ([#&#8203;25000](https://github.com/go-gitea/gitea/issues/25000))
    -   Fix docs documenting invalid `@every` for `OLDER_THAN` cron settings ([#&#8203;24695](https://github.com/go-gitea/gitea/issues/24695)) ([#&#8203;24698](https://github.com/go-gitea/gitea/issues/24698))
-   MISC
    -   Merge different languages for language stats ([#&#8203;24900](https://github.com/go-gitea/gitea/issues/24900)) ([#&#8203;24921](https://github.com/go-gitea/gitea/issues/24921))
    -   Hiding Secrets options when Actions feature is disabled ([#&#8203;24792](https://github.com/go-gitea/gitea/issues/24792))
    -   Improve decryption failure message ([#&#8203;24573](https://github.com/go-gitea/gitea/issues/24573)) ([#&#8203;24575](https://github.com/go-gitea/gitea/issues/24575))
    -   Makefile: Use portable !, not GNUish -not, with find(1). ([#&#8203;24565](https://github.com/go-gitea/gitea/issues/24565)) ([#&#8203;24572](https://github.com/go-gitea/gitea/issues/24572))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **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:eyJjcmVhdGVkSW5WZXIiOiIzNi43OS4xIiwidXBkYXRlZEluVmVyIjoiMzYuNzkuMSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Reviewed-on: https://gitea.com/gitea/terraform-provider-gitea/pulls/21
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2023-09-07 22:53:40 +00:00
Renovate Bot
cdc2685623 fix(deps): update module github.com/hashicorp/terraform-plugin-sdk/v2 to v2.29.0 (#17)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [github.com/hashicorp/terraform-plugin-sdk/v2](https://github.com/hashicorp/terraform-plugin-sdk) | require | minor | `v2.27.0` -> `v2.29.0` |

---

### Release Notes

<details>
<summary>hashicorp/terraform-plugin-sdk (github.com/hashicorp/terraform-plugin-sdk/v2)</summary>

### [`v2.29.0`](https://github.com/hashicorp/terraform-plugin-sdk/releases/tag/v2.29.0)

[Compare Source](https://github.com/hashicorp/terraform-plugin-sdk/compare/v2.28.0...v2.29.0)

NOTES:

-   all: This Go module has been updated to Go 1.20 per the [Go support policy](https://go.dev/doc/devel/release#policy). It is recommended to review the [Go 1.20 release notes](https://go.dev/doc/go1.20) before upgrading. Any consumers building on earlier Go versions may experience errors. ([#&#8203;1245](https://github.com/hashicorp/terraform-plugin-sdk/issues/1245))

FEATURES:

-   helper/schema: Upgrade to protocol version 5.4, which can significantly reduce memory usage with Terraform 1.6 and later when a configuration includes multiple instances of the same provider ([#&#8203;1234](https://github.com/hashicorp/terraform-plugin-sdk/issues/1234))

ENHANCEMENTS:

-   helper/validation: Added `AllDiag` and `AnyDiag`, which are `SchemaValidateDiagFunc` variants of `All` and `Any` ([#&#8203;1155](https://github.com/hashicorp/terraform-plugin-sdk/issues/1155))
-   helper/validation: Added quoting in `StringInSlice` error diagnostic output to prevent confusion with values that contain spaces ([#&#8203;464](https://github.com/hashicorp/terraform-plugin-sdk/issues/464))

### [`v2.28.0`](https://github.com/hashicorp/terraform-plugin-sdk/releases/tag/v2.28.0)

[Compare Source](https://github.com/hashicorp/terraform-plugin-sdk/compare/v2.27.0...v2.28.0)

NOTES:

-   helper/schema: The `Resource` type `EnableApplyLegacyTypeSystemErrors` and `EnablePlanLegacyTypeSystemErrors` fields can be enabled to more easily discover resource data consistency errors which Terraform would normally demote to warning logs. Before enabling the flag in a production release for a resource, the resource should be exhaustively acceptance tested as there may be unrecoverable error situations for practitioners. It is recommended to first enable and test in environments where it is easy to clean up resources, potentially outside of Terraform. ([#&#8203;1227](https://github.com/hashicorp/terraform-plugin-sdk/issues/1227))

ENHANCEMENTS:

-   helper/schema: Added `Resource` type `EnableLegacyTypeSystemApplyErrors` field, which will prevent Terraform from demoting data consistency errors to warning logs during `ApplyResourceChange` (`Create`, `Update`, and `Delete`) operations with the resource ([#&#8203;1227](https://github.com/hashicorp/terraform-plugin-sdk/issues/1227))
-   helper/schema: Added `Resource` type `EnableLegacyTypeSystemPlanErrors` field, which can be used to prevent Terraform from demoting data consistency errors to warning logs during `PlanResourceChange` operations with the resource ([#&#8203;1227](https://github.com/hashicorp/terraform-plugin-sdk/issues/1227))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **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:eyJjcmVhdGVkSW5WZXIiOiIzNi43OS4xIiwidXBkYXRlZEluVmVyIjoiMzYuNzkuMSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Reviewed-on: https://gitea.com/gitea/terraform-provider-gitea/pulls/17
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2023-09-07 21:50:38 +00:00
Renovate Bot
2c1b4fdc0d chore(deps): update actions/checkout action to v4 (#19)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [actions/checkout](https://github.com/actions/checkout) | action | major | `v3` -> `v4` |

---

### Release Notes

<details>
<summary>actions/checkout (actions/checkout)</summary>

### [`v4`](https://github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v400)

[Compare Source](https://github.com/actions/checkout/compare/v3...v4)

-   [Support fetching without the --progress option](https://github.com/actions/checkout/pull/1067)
-   [Update to node20](https://github.com/actions/checkout/pull/1436)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **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:eyJjcmVhdGVkSW5WZXIiOiIzNi43OS4xIiwidXBkYXRlZEluVmVyIjoiMzYuNzkuMSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Reviewed-on: https://gitea.com/gitea/terraform-provider-gitea/pulls/19
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2023-09-07 21:50:19 +00:00
Tobias Trabelsi
9aabc45e0b readding install command (#14)
I see that you removed it explicitly in the PR, but i would kindly ask to get it back. helped me a lot with local testing

Reviewed-on: https://gitea.com/gitea/terraform-provider-gitea/pulls/14
Co-authored-by: Tobias Trabelsi <lerentis@uploadfilter24.eu>
Co-committed-by: Tobias Trabelsi <lerentis@uploadfilter24.eu>
2023-09-07 21:47:00 +00:00
Renovate Bot
39b6dc1a2e fix(deps): update module code.gitea.io/sdk/gitea to v0.16.0 (#16)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| code.gitea.io/sdk/gitea | require | minor | `v0.15.1` -> `v0.16.0` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **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:eyJjcmVhdGVkSW5WZXIiOiIzNi43OS4xIiwidXBkYXRlZEluVmVyIjoiMzYuNzkuMSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Reviewed-on: https://gitea.com/gitea/terraform-provider-gitea/pulls/16
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2023-09-07 21:44:43 +00:00
Renovate Bot
f947033ba4 Configure Renovate (#15)
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

 * `.github/workflows/release.yml` (github-actions)
 * `go.mod` (gomod)

### 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.
  - Pin Docker digests.

🔡 Would you like to change the way Renovate is upgrading your dependencies? Simply edit the `renovate.json5` 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 3 Pull Requests:

<details>
<summary>fix(deps): update module code.gitea.io/sdk/gitea to v0.16.0</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/code.gitea.io-sdk-gitea-0.x`
  - Merge into: `main`
  - Upgrade code.gitea.io/sdk/gitea to `v0.16.0`

</details>

<details>
<summary>fix(deps): update module github.com/hashicorp/terraform-plugin-sdk/v2 to v2.29.0</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/github.com-hashicorp-terraform-plugin-sdk-v2-2.x`
  - Merge into: `main`
  - Upgrade [github.com/hashicorp/terraform-plugin-sdk/v2](https://github.com/hashicorp/terraform-plugin-sdk) to `v2.29.0`

</details>

<details>
<summary>chore(deps): update actions/checkout action to v4</summary>

  - Schedule: ["at any time"]
  - Branch name: `renovate/actions-checkout-4.x`
  - Merge into: `main`
  - Upgrade [actions/checkout](https://github.com/actions/checkout) to `v4`

</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:b0e8c3aba9246cf9ec209c46e593f123f2daeea739622a97656e285413290a78-->

Reviewed-on: https://gitea.com/gitea/terraform-provider-gitea/pulls/15
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Co-committed-by: Renovate Bot <renovate-bot@gitea.com>
2023-09-07 21:40:26 +00:00
46 changed files with 2289 additions and 150 deletions

View File

@ -11,8 +11,8 @@ jobs:
name: 'Terraform Versions'
runs-on: ubuntu-latest
steps:
- uses: https://github.com/actions/checkout@v3
- uses: https://github.com/hashicorp/setup-terraform@v2
- uses: actions/checkout@v4
- uses: hashicorp/setup-terraform@v3
- name: Terraform fmt
id: fmt
@ -22,7 +22,9 @@ jobs:
- name: Terraform Init
id: init
run: terraform init
working-directory: examples
- name: Terraform Validate
id: validate
run: terraform validate -no-color
run: terraform validate -no-color
working-directory: examples

View File

@ -15,28 +15,28 @@ jobs:
steps:
-
name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
-
name: Unshallow
run: git fetch --prune --unshallow
-
name: Set up Go
uses: actions/setup-go@v4
uses: actions/setup-go@v5
with:
go-version-file: 'go.mod'
cache: true
-
name: Import GPG key
uses: crazy-max/ghaction-import-gpg@v5
uses: crazy-max/ghaction-import-gpg@v6
id: import_gpg
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.PASSPHRASE }}
-
name: Run GoReleaser
uses: goreleaser/goreleaser-action@v4
uses: goreleaser/goreleaser-action@v6
with:
version: latest
version: '~> v1'
args: release --rm-dist
env:
GPG_FINGERPRINT: ${{ steps.import_gpg.outputs.fingerprint }}

6
.gitignore vendored
View File

@ -1,2 +1,6 @@
.vscode
dist/
.idea/
dist/
tests/terraform.tfvars
tests/.terraform
tests/.terraform.lock.hcl

View File

@ -1,6 +1,8 @@
TEST?=./gitea
GOFMT_FILES?=$$(find . -name '*.go' |grep -v vendor)
GOFMT ?= gofmt -s
ARCH?=$$(uname -m | sed 's/x86_64/amd64/g')
KERNEL?=$$(uname -s | tr '[:upper:]' '[:lower:]')
VERSION = 0.2.0
@ -33,3 +35,8 @@ build:
go build -ldflags="-X 'main.Version=${VERSION}'" -o terraform-provider-gitea_${VERSION}
doc:
tfplugindocs
install: build
@echo installing to
@echo ~/.terraform.d/plugins/terraform.local/go-gitea/gitea/${VERSION}/${KERNEL}_${ARCH}/terraform-provider-gitea_${VERSION}
@mkdir -p ~/.terraform.d/plugins/terraform.local/go-gitea/gitea/${VERSION}/${KERNEL}_${ARCH}
@mv terraform-provider-gitea_${VERSION} ~/.terraform.d/plugins/terraform.local/go-gitea/gitea/${VERSION}/${KERNEL}_${ARCH}/terraform-provider-gitea_${VERSION}

View File

@ -13,7 +13,7 @@ terraform {
required_providers {
gitea = {
source = "go-gitea/gitea"
version = "0.2.0"
version = "0.3.0"
}
}
}
@ -71,4 +71,3 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
## History
This codebase was created at https://gitea.com/gitea/terraform-provider-gitea, was forked by @lerentis, and then their changes were merged back into the original repo. Thank you to everyone who contributed!

View File

@ -28,5 +28,3 @@ description: |-
- `location` (String)
- `visibility` (String)
- `website` (String)

View File

@ -43,5 +43,3 @@ description: |-
- `updated` (String)
- `watchers` (Number)
- `website` (String)

View File

@ -29,5 +29,3 @@ description: |-
- `is_admin` (Boolean)
- `language` (String)
- `last_login` (String)

View File

@ -57,5 +57,3 @@ resource "gitea_fork" "org2_fork_of_repo1_in_org1" {
### Read-Only
- `id` (String) The ID of this resource.

View File

@ -51,5 +51,3 @@ resource "gitea_git_hook" "org_repo_post_receive" {
### Read-Only
- `id` (String) The ID of this resource.

View File

@ -29,5 +29,3 @@ Handling [gitea oauth application](https://docs.gitea.io/en-us/oauth2-provider/)
- `client_id` (String) OAuth2 Application client id
- `client_secret` (String, Sensitive) Oauth2 Application client secret
- `id` (String) The ID of this resource.

View File

@ -47,5 +47,3 @@ resource "gitea_repository" "org_repo" {
- `avatar_url` (String)
- `id` (String) The ID of this resource.
- `repos` (List of String) List of all Repositories that are part of this organisation

View File

@ -48,5 +48,3 @@ resource "gitea_public_key" "test_user_key" {
- `fingerprint` (String)
- `id` (String) The ID of this resource.
- `type` (String)

View File

@ -111,5 +111,3 @@ Need to exist in the gitea instance
- `permission_push` (Boolean)
- `ssh_url` (String)
- `updated` (String)

View File

@ -0,0 +1,68 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "gitea_repository_branch_protection Resource - terraform-provider-gitea"
subcategory: ""
description: |-
This resource allows you to create and manage branch protections for repositories.
---
# gitea_repository_branch_protection (Resource)
This resource allows you to create and manage branch protections for repositories.
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `name` (String) Repository name
- `rule_name` (String) Protected Branch Name Pattern
- `username` (String) User name or organization name
### Optional
- `approval_whitelist_teams` (List of String) Only reviews from allowlisted teams will count to the required
approvals. Without approval allowlist, reviews from anyone with
write access count to the required approvals.
- `approval_whitelist_users` (List of String) Only reviews from allowlisted users will count to the required
approvals. Without approval allowlist, reviews from anyone with
write access count to the required approvals.
- `block_merge_on_official_review_requests` (Boolean) Merging will not be possible when it has official
review requests, even if there are enough approvals.
- `block_merge_on_outdated_branch` (Boolean) Merging will not be possible when head branch is behind base branch.
- `block_merge_on_rejected_reviews` (Boolean) Merging will not be possible when changes are
requested by official reviewers, even if there are enough
approvals.
- `dismiss_stale_approvals` (Boolean) When new commits that change the content of the pull request
are pushed to the branch, old approvals will be dismissed.
- `enable_push` (Boolean) Anyone with write access will be allowed to push to this branch
(but not force push), add a whitelist users or teams to limit
access.
- `merge_whitelist_teams` (List of String) Allow only allowlisted teams to merge pull requests into this branch.
- `merge_whitelist_users` (List of String) Allow only allowlisted users to merge pull requests into this branch.
- `protected_file_patterns` (String) Protected file patterns (separated using semicolon ';')
- `push_whitelist_deploy_keys` (Boolean) Allow deploy keys with write access to push. Requires enable_push to be set to true.
- `push_whitelist_teams` (List of String) Allowlisted teams for pushing. Requires enable_push to be set to true.
- `push_whitelist_users` (List of String) Allowlisted users for pushing. Requires enable_push to be set to true.
- `require_signed_commits` (Boolean) Reject pushes to this branch if they are unsigned or unverifiable.
- `required_approvals` (Number) Allow only to merge pull request with enough positive reviews.
- `status_check_patterns` (List of String) Enter patterns to specify which status checks must pass before
branches can be merged into a branch that matches this rule.
Each line specifies a pattern. Patterns cannot be empty.
- `unprotected_file_patterns` (String) Unprotected file patterns (separated using semicolon ';')
### Read-Only
- `created_at` (String) Webhook creation timestamp
- `enable_approval_whitelist` (Boolean) True if a approval whitelist is used.
- `enable_merge_whitelist` (Boolean) True if a merge whitelist is used.
- `enable_push_whitelist` (Boolean) True if a push whitelist is used.
- `enable_status_check` (Boolean) Require status checks to pass before merging. When enabled,
commits must first be pushed to another branch, then merged
or pushed directly to a branch that matches this rule after
status checks have passed. If no contexts are matched, the
last commit must be successful regardless of context
- `id` (String) The ID of this resource.
- `updated_at` (String) Webhook creation timestamp

View File

@ -59,5 +59,3 @@ resource "gitea_repository_key" "example" {
### Read-Only
- `id` (String) The ID of this resource.

View File

@ -0,0 +1,37 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "gitea_repository_webhook Resource - terraform-provider-gitea"
subcategory: ""
description: |-
This resource allows you to create and manage webhooks for repositories.
---
# gitea_repository_webhook (Resource)
This resource allows you to create and manage webhooks for repositories.
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `active` (Boolean) Set webhook to active, e.g. `true`
- `branch_filter` (String) Set branch filter on the webhook, e.g. `"*"`
- `content_type` (String) The content type of the payload. It can be `json`, or `form`
- `events` (List of String) A list of events that will trigger the webhool, e.g. `["push"]`
- `name` (String) Repository name
- `type` (String) Webhook type, e.g. `gitea`
- `url` (String) Target URL of the webhook
- `username` (String) User name or organization name
### Optional
- `authorization_header` (String) Webhook authorization header
- `secret` (String) Webhook secret
### Read-Only
- `created_at` (String) Webhook creation timestamp
- `id` (String) The ID of this resource.

View File

@ -69,7 +69,6 @@ resource "gitea_team" "test_team_restricted" {
- `can_create_repos` (Boolean) Flag if the Teams members should be able to create Rpositories in the Organisation
- `description` (String) Description of the Team
- `include_all_repositories` (Boolean) Flag if the Teams members should have access to all Repositories in the Organisation
- `members` (List of String) List of Users that should be part of this team
- `permission` (String) Permissions associated with this Team
Can be `none`, `read`, `write`, `admin` or `owner`
- `repositories` (List of String) List of Repositories that should be part of this team
@ -79,5 +78,3 @@ Can be `repo.code`, `repo.issues`, `repo.ext_issues`, `repo.wiki`, `repo.pulls`,
### Read-Only
- `id` (String) The ID of this resource.

View File

@ -0,0 +1,51 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "gitea_team_members Resource - terraform-provider-gitea"
subcategory: ""
description: |-
gitea_team_members manages all members of a single team. This resource will be recreated on member changes.
---
# gitea_team_members (Resource)
`gitea_team_members` manages all members of a single team. This resource will be recreated on member changes.
## Example Usage
```terraform
resource "gitea_org" "example_org" {
name = "m_example_org"
}
resource "gitea_user" "example_users" {
count = 5
username = "m_example_user_${count.index}"
login_name = "m_example_user_${count.index}"
password = "Geheim1!"
email = "m_example_user_${count.index}@user.dev"
}
resource "gitea_team" "example_team" {
name = "m_example_team"
organisation = gitea_org.example_org.name
description = "An example of team membership"
permission = "read"
}
resource "gitea_team_members" "example_members" {
team_id = gitea_team.example_team.id
members = [for user in gitea_user.example_users : user.username]
}
```
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `members` (Set of String) The user names of the members of the team.
- `team_id` (Number) The ID of the team.
### Read-Only
- `id` (String) The ID of this resource.

View File

@ -0,0 +1,52 @@
---
# generated by https://github.com/hashicorp/terraform-plugin-docs
page_title: "gitea_team_membership Resource - terraform-provider-gitea"
subcategory: ""
description: |-
gitea_team_membership manages a single user's membership of a single team.
---
# gitea_team_membership (Resource)
`gitea_team_membership` manages a single user's membership of a single team.
## Example Usage
```terraform
resource "gitea_org" "example_org" {
name = "m_example_org"
}
resource "gitea_user" "example_users" {
count = 5
username = "m_example_user_${count.index}"
login_name = "m_example_user_${count.index}"
password = "Geheim1!"
email = "m_example_user_${count.index}@user.dev"
}
resource "gitea_team" "example_team" {
name = "m_example_team"
organisation = gitea_org.example_org.name
description = "An example team for membership testing"
permission = "read"
}
resource "gitea_team_membership" "example_team_memberships" {
for_each = { for user in gitea_user.example_users : user.username => user }
team_id = gitea_team.example_team.id
username = each.value["username"]
}
```
<!-- schema generated by tfplugindocs -->
## Schema
### Required
- `team_id` (Number) The ID of the team.
- `username` (String) The username of the team member.
### Read-Only
- `id` (String) The ID of this resource.

View File

@ -30,18 +30,10 @@ provider "gitea" {
password = var.gitea_password
}
resource "gitea_user" "test" {
username = "test"
login_name = "test"
password = "Geheim1!"
email = "test@user.dev"
must_change_password = false
admin = true
}
// The token owner is the creator of the token
resource "gitea_token" "test_token" {
username = resource.gitea_user.test.username
name = "test-token"
name = "test_token"
scopes = ["all"]
}
output "token" {
@ -56,12 +48,10 @@ output "token" {
### Required
- `name` (String) The name of the Access Token
- `username` (String) The owner of the Access Token
- `scopes` (Set of String) List of string representations of scopes for the token
### Read-Only
- `id` (String) The ID of this resource.
- `last_eight` (String)
- `token` (String, Sensitive) The actual Access Token

View File

@ -56,5 +56,3 @@ resource "gitea_user" "test" {
### Read-Only
- `id` (String) The ID of this resource.

View File

@ -2,7 +2,7 @@ terraform {
required_providers {
gitea = {
source = "go-gitea/gitea"
version = "0.1.0"
version = "0.3.0"
}
}
}
@ -12,4 +12,4 @@ provider "gitea" {
username = "lerentis"
password = var.gitea_password
#token = var.gitea_token
}
}

View File

@ -0,0 +1,14 @@
resource "gitea_repository" "repo" {
username = var.username
name = var.name
auto_init = false
}
resource "gitea_repository_branch_protection" "main" {
username = gitea_repository.repo.username
name = gitea_repository.repo.name
rule_name = "main"
enable_push = true
status_check_patterns = var.branch_protection_patterns
}

View File

@ -0,0 +1,23 @@
resource "gitea_org" "example_org" {
name = "m_example_org"
}
resource "gitea_user" "example_users" {
count = 5
username = "m_example_user_${count.index}"
login_name = "m_example_user_${count.index}"
password = "Geheim1!"
email = "m_example_user_${count.index}@user.dev"
}
resource "gitea_team" "example_team" {
name = "m_example_team"
organisation = gitea_org.example_org.name
description = "An example of team membership"
permission = "read"
}
resource "gitea_team_members" "example_members" {
team_id = gitea_team.example_team.id
members = [for user in gitea_user.example_users : user.username]
}

View File

@ -0,0 +1,24 @@
resource "gitea_org" "example_org" {
name = "m_example_org"
}
resource "gitea_user" "example_users" {
count = 5
username = "m_example_user_${count.index}"
login_name = "m_example_user_${count.index}"
password = "Geheim1!"
email = "m_example_user_${count.index}@user.dev"
}
resource "gitea_team" "example_team" {
name = "m_example_team"
organisation = gitea_org.example_org.name
description = "An example team for membership testing"
permission = "read"
}
resource "gitea_team_membership" "example_team_memberships" {
for_each = { for user in gitea_user.example_users : user.username => user }
team_id = gitea_team.example_team.id
username = each.value["username"]
}

View File

@ -5,18 +5,10 @@ provider "gitea" {
password = var.gitea_password
}
resource "gitea_user" "test" {
username = "test"
login_name = "test"
password = "Geheim1!"
email = "test@user.dev"
must_change_password = false
admin = true
}
// The token owner is the creator of the token
resource "gitea_token" "test_token" {
username = resource.gitea_user.test.username
name = "test-token"
name = "test_token"
scopes = ["all"]
}
output "token" {

View File

@ -75,15 +75,19 @@ func Provider() *schema.Provider {
"gitea_org": resourceGiteaOrg(),
// "gitea_team": resourceGiteaTeam(),
// "gitea_repo": resourceGiteaRepo(),
"gitea_user": resourceGiteaUser(),
"gitea_oauth2_app": resourceGiteaOauthApp(),
"gitea_repository": resourceGiteaRepository(),
"gitea_fork": resourceGiteaFork(),
"gitea_public_key": resourceGiteaPublicKey(),
"gitea_team": resourceGiteaTeam(),
"gitea_git_hook": resourceGiteaGitHook(),
"gitea_token": resourceGiteaToken(),
"gitea_repository_key": resourceGiteaRepositoryKey(),
"gitea_user": resourceGiteaUser(),
"gitea_oauth2_app": resourceGiteaOauthApp(),
"gitea_repository": resourceGiteaRepository(),
"gitea_fork": resourceGiteaFork(),
"gitea_public_key": resourceGiteaPublicKey(),
"gitea_team": resourceGiteaTeam(),
"gitea_team_membership": resourceGiteaTeamMembership(),
"gitea_team_members": resourceGiteaTeamMembers(),
"gitea_git_hook": resourceGiteaGitHook(),
"gitea_token": resourceGiteaToken(),
"gitea_repository_key": resourceGiteaRepositoryKey(),
"gitea_repository_webhook": resourceGiteaRepositoryWebhook(),
"gitea_repository_branch_protection": resourceGiteaRepositoryBranchProtection(),
},
ConfigureFunc: providerConfigure,

View File

@ -0,0 +1,495 @@
package gitea
import (
"log"
"code.gitea.io/sdk/gitea"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
const (
repoBPUsername string = "username"
repoBPName string = "name"
repoBPRuleName string = "rule_name"
repoBPProtectedFilePatterns string = "protected_file_patterns"
repoBPUnprotectedFilePatterns string = "unprotected_file_patterns"
repoBPEnablePush string = "enable_push"
repoBPEnablePushWhitelist string = "enable_push_whitelist"
repoBPPushWhitelistUsers string = "push_whitelist_users"
repoBPPushWhitelistTeams string = "push_whitelist_teams"
repoBPPushWhitelistDeployKeys string = "push_whitelist_deploy_keys"
repoBPRequireSignedCommits string = "require_signed_commits"
repoBPRequiredApprovals string = "required_approvals"
repoBPEnableApprovalWhitelist string = "enable_approval_whitelist"
repoBPApprovalWhitelistUsers string = "approval_whitelist_users"
repoBPApprovalWhitelistTeams string = "approval_whitelist_teams"
repoBPDismissStaleApprovals string = "dismiss_stale_approvals"
// not implemented in go-gitea-sdk
// repoBPIgnoreStaleApprovals string = "ignore_stale_approvals"
repoBPEnableStatusCheck string = "enable_status_check"
repoBPStatusCheckPatterns string = "status_check_patterns"
repoBPEnableMergeWhitelist string = "enable_merge_whitelist"
repoBPMergeWhitelistUsers string = "merge_whitelist_users"
repoBPMergeWhitelistTeams string = "merge_whitelist_teams"
repoBPBlockMergeOnRejectedReviews string = "block_merge_on_rejected_reviews"
repoBPBlockMergeOnOfficialReviewRequests string = "block_merge_on_official_review_requests"
repoBPBlockMergeOnOutdatedBranch string = "block_merge_on_outdated_branch"
repoBPUpdatedAt string = "updated_at"
repoBPCreatedAt string = "created_at"
)
func resourceRepositoryBranchProtectionRead(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client)
user := d.Get(repoBPUsername).(string)
repo := d.Get(repoBPName).(string)
rule_name := d.Get(repoBPRuleName).(string)
bp, resp, err := client.GetBranchProtection(user, repo, rule_name)
if err != nil {
if resp.StatusCode == 404 {
d.SetId("")
return
} else {
return err
}
}
err = setRepositoryBranchProtectionData(bp, user, repo, d)
return err
}
func generateWhitelist(d *schema.ResourceData, listname string) (enabled bool, users []string, teams []string) {
u := d.Get(listname + "_users")
users = make([]string, 0)
if u != nil {
for _, element := range u.([]interface{}) {
users = append(users, element.(string))
}
}
t := d.Get(listname + "_teams")
teams = make([]string, 0)
if u != nil {
for _, element := range t.([]interface{}) {
teams = append(teams, element.(string))
}
}
if c := len(users) + len(teams); c > 0 {
enabled = true
}
if listname == "push_whitelist" && d.Get(repoBPPushWhitelistDeployKeys).(bool) {
enabled = true
}
log.Println("enabled?:", enabled, listname)
return enabled, users, teams
}
func resourceRepositoryBranchProtectionCreate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client)
user := d.Get(repoBPUsername).(string)
repo := d.Get(repoBPName).(string)
enablePushWhitelist, pushWhitelistUsernames, pushWhitelistTeams := generateWhitelist(d, "push_whitelist")
enableMergeWhitelist, mergeWhitelistUsernames, mergeWhitelistTeams := generateWhitelist(d, "merge_whitelist")
enableApprovalsWhitelist, approvalsWhitelistUsernames, approvalsWhitelistTeams := generateWhitelist(d, "approval_whitelist")
statusCheckContexts := make([]string, 0)
for _, element := range d.Get(repoBPStatusCheckPatterns).([]interface{}) {
statusCheckContexts = append(statusCheckContexts, element.(string))
}
log.Println("create_ulist:", pushWhitelistUsernames)
enableStatusCheck := false
if len(statusCheckContexts) > 0 {
enableStatusCheck = true
}
bpOption := gitea.CreateBranchProtectionOption{
// BranchName is deprecated in gitea, but still required in go-gitea-sdk, therefore using RuleName
BranchName: d.Get(repoBPRuleName).(string),
RuleName: d.Get(repoBPRuleName).(string),
EnablePush: d.Get(repoBPEnablePush).(bool),
EnablePushWhitelist: enablePushWhitelist,
PushWhitelistUsernames: pushWhitelistUsernames,
PushWhitelistTeams: pushWhitelistTeams,
PushWhitelistDeployKeys: d.Get(repoBPPushWhitelistDeployKeys).(bool),
EnableMergeWhitelist: enableMergeWhitelist,
MergeWhitelistUsernames: mergeWhitelistUsernames,
MergeWhitelistTeams: mergeWhitelistTeams,
EnableStatusCheck: enableStatusCheck,
StatusCheckContexts: statusCheckContexts,
RequiredApprovals: int64(d.Get(repoBPRequiredApprovals).(int)),
EnableApprovalsWhitelist: enableApprovalsWhitelist,
ApprovalsWhitelistUsernames: approvalsWhitelistUsernames,
ApprovalsWhitelistTeams: approvalsWhitelistTeams,
BlockOnRejectedReviews: d.Get(repoBPBlockMergeOnRejectedReviews).(bool),
BlockOnOfficialReviewRequests: d.Get(repoBPBlockMergeOnOfficialReviewRequests).(bool),
BlockOnOutdatedBranch: d.Get(repoBPBlockMergeOnOutdatedBranch).(bool),
DismissStaleApprovals: d.Get(repoBPDismissStaleApprovals).(bool),
// IgnoreStaleApprovals: d.Get(repoBPIgnoreStaleApprovals).(bool),
RequireSignedCommits: d.Get(repoBPRequireSignedCommits).(bool),
ProtectedFilePatterns: d.Get(repoBPProtectedFilePatterns).(string),
UnprotectedFilePatterns: d.Get(repoBPUnprotectedFilePatterns).(string),
}
bp, _, err := client.CreateBranchProtection(user, repo, bpOption)
if err != nil {
return err
}
err = setRepositoryBranchProtectionData(bp, user, repo, d)
return err
}
func resourceRepositoryBranchProtectionUpdate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client)
user := d.Get(repoBPUsername).(string)
repo := d.Get(repoBPName).(string)
rule_name := d.Id()
enablePushWhitelist, pushWhitelistUsernames, pushWhitelistTeams := generateWhitelist(d, "push_whitelist")
enableMergeWhitelist, mergeWhitelistUsernames, mergeWhitelistTeams := generateWhitelist(d, "merge_whitelist")
enableApprovalsWhitelist, approvalsWhitelistUsernames, approvalsWhitelistTeams := generateWhitelist(d, "approval_whitelist")
statusCheckContexts := make([]string, 0)
for _, element := range d.Get(repoBPStatusCheckPatterns).([]interface{}) {
statusCheckContexts = append(statusCheckContexts, element.(string))
}
enablePush := false
if enablePushWhitelist == true || d.Get(repoBPEnablePush).(bool) == true {
enablePush = true
}
pushWhitelistDeployKeys := d.Get(repoBPPushWhitelistDeployKeys).(bool)
enableStatusCheck := false
if len(statusCheckContexts) > 0 {
enableStatusCheck = true
}
requiredApprovals := int64(d.Get(repoBPRequiredApprovals).(int))
blockOnRejectedReviews := d.Get(repoBPBlockMergeOnRejectedReviews).(bool)
blockOnOfficialReviewRequests := d.Get(repoBPBlockMergeOnOfficialReviewRequests).(bool)
blockOnOutdatedBranch := d.Get(repoBPBlockMergeOnOutdatedBranch).(bool)
dismissStaleApprovals := d.Get(repoBPDismissStaleApprovals).(bool)
// ignoreStaleApprovals := d.Get(repoBPIgnoreStaleApprovals).(bool)
requireSignedCommits := d.Get(repoBPRequireSignedCommits).(bool)
protectedFilePatterns := d.Get(repoBPProtectedFilePatterns).(string)
unprotectedFilePatterns := d.Get(repoBPUnprotectedFilePatterns).(string)
bpOption := gitea.EditBranchProtectionOption{
EnablePush: &enablePush,
EnablePushWhitelist: &enablePushWhitelist,
PushWhitelistUsernames: pushWhitelistUsernames,
PushWhitelistTeams: pushWhitelistTeams,
PushWhitelistDeployKeys: &pushWhitelistDeployKeys,
EnableMergeWhitelist: &enableMergeWhitelist,
MergeWhitelistUsernames: mergeWhitelistUsernames,
MergeWhitelistTeams: mergeWhitelistTeams,
EnableStatusCheck: &enableStatusCheck,
StatusCheckContexts: statusCheckContexts,
RequiredApprovals: &requiredApprovals,
EnableApprovalsWhitelist: &enableApprovalsWhitelist,
ApprovalsWhitelistUsernames: approvalsWhitelistUsernames,
ApprovalsWhitelistTeams: approvalsWhitelistTeams,
BlockOnRejectedReviews: &blockOnRejectedReviews,
BlockOnOfficialReviewRequests: &blockOnOfficialReviewRequests,
BlockOnOutdatedBranch: &blockOnOutdatedBranch,
DismissStaleApprovals: &dismissStaleApprovals,
// IgnoreStaleApprovals: &ignoreStaleApprovals,
RequireSignedCommits: &requireSignedCommits,
ProtectedFilePatterns: &protectedFilePatterns,
UnprotectedFilePatterns: &unprotectedFilePatterns,
}
bp, _, err := client.EditBranchProtection(user, repo, rule_name, bpOption)
if err != nil {
return err
}
err = setRepositoryBranchProtectionData(bp, user, repo, d)
return err
}
func resourceRepositoryBranchProtectionDelete(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client)
user := d.Get(repoBPUsername).(string)
repo := d.Get(repoBPName).(string)
rule_name := d.Id()
_, err = client.DeleteBranchProtection(user, repo, rule_name)
if err != nil {
return err
}
return err
}
func setRepositoryBranchProtectionData(bp *gitea.BranchProtection, user string, repo string, d *schema.ResourceData) (err error) {
d.SetId(bp.RuleName)
d.Set(repoBPUsername, user)
d.Set(repoBPName, repo)
d.Set(repoBPProtectedFilePatterns, bp.ProtectedFilePatterns)
d.Set(repoBPUnprotectedFilePatterns, bp.UnprotectedFilePatterns)
d.Set(repoBPEnablePush, bp.EnablePush)
d.Set(repoBPEnablePushWhitelist, bp.EnablePushWhitelist)
d.Set(repoBPPushWhitelistUsers, bp.PushWhitelistUsernames)
d.Set(repoBPPushWhitelistTeams, bp.PushWhitelistTeams)
d.Set(repoBPPushWhitelistDeployKeys, bp.PushWhitelistDeployKeys)
d.Set(repoBPRequireSignedCommits, bp.RequireSignedCommits)
d.Set(repoBPRequiredApprovals, bp.RequiredApprovals)
d.Set(repoBPEnableApprovalWhitelist, bp.EnableApprovalsWhitelist)
d.Set(repoBPApprovalWhitelistUsers, bp.ApprovalsWhitelistUsernames)
d.Set(repoBPApprovalWhitelistTeams, bp.ApprovalsWhitelistTeams)
d.Set(repoBPDismissStaleApprovals, bp.DismissStaleApprovals)
// d.Set(repoBPIgnoreStaleApprovals, bp.IgnoreStaleApprovals)
d.Set(repoBPEnableStatusCheck, bp.EnableStatusCheck)
d.Set(repoBPStatusCheckPatterns, bp.StatusCheckContexts)
d.Set(repoBPEnableMergeWhitelist, bp.EnableMergeWhitelist)
d.Set(repoBPMergeWhitelistUsers, bp.MergeWhitelistUsernames)
d.Set(repoBPMergeWhitelistTeams, bp.MergeWhitelistTeams)
d.Set(repoBPBlockMergeOnRejectedReviews, bp.BlockOnRejectedReviews)
d.Set(repoBPBlockMergeOnOfficialReviewRequests, bp.BlockOnOfficialReviewRequests)
d.Set(repoBPBlockMergeOnOutdatedBranch, bp.BlockOnOutdatedBranch)
d.Set(repoBPUpdatedAt, bp.Updated)
d.Set(repoBPCreatedAt, bp.Created)
return err
}
func resourceGiteaRepositoryBranchProtection() *schema.Resource {
return &schema.Resource{
Read: resourceRepositoryBranchProtectionRead,
Create: resourceRepositoryBranchProtectionCreate,
Update: resourceRepositoryBranchProtectionUpdate,
Delete: resourceRepositoryBranchProtectionDelete,
// TODO: importer ?
Schema: map[string]*schema.Schema{
"username": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
Description: "User name or organization name",
},
"name": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
Description: "Repository name",
},
"rule_name": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
Description: "Protected Branch Name Pattern",
},
"protected_file_patterns": {
Type: schema.TypeString,
Optional: true,
ForceNew: false,
Default: "",
Description: "Protected file patterns (separated using semicolon ';')",
},
"unprotected_file_patterns": {
Type: schema.TypeString,
Optional: true,
ForceNew: false,
Default: "",
Description: "Unprotected file patterns (separated using semicolon ';')",
},
"enable_push": {
Type: schema.TypeBool,
Optional: true,
ForceNew: false,
Default: false,
Description: `Anyone with write access will be allowed to push to this branch
(but not force push), add a whitelist users or teams to limit
access.`,
},
"enable_push_whitelist": {
Type: schema.TypeBool,
Computed: true,
Description: "True if a push whitelist is used.",
},
"push_whitelist_users": {
Type: schema.TypeList,
Elem: &schema.Schema{
Type: schema.TypeString,
},
RequiredWith: []string{"enable_push"},
Optional: true,
ForceNew: false,
Description: "Allowlisted users for pushing. Requires enable_push to be set to true.",
},
"push_whitelist_teams": {
Type: schema.TypeList,
Elem: &schema.Schema{
Type: schema.TypeString,
},
RequiredWith: []string{"enable_push"},
Optional: true,
ForceNew: false,
Description: "Allowlisted teams for pushing. Requires enable_push to be set to true.",
},
"push_whitelist_deploy_keys": {
Type: schema.TypeBool,
RequiredWith: []string{"enable_push"},
Optional: true,
ForceNew: false,
Default: false,
Description: "Allow deploy keys with write access to push. Requires enable_push to be set to true.",
},
"require_signed_commits": {
Type: schema.TypeBool,
Optional: true,
ForceNew: false,
Default: false,
Description: "Reject pushes to this branch if they are unsigned or unverifiable.",
},
"required_approvals": {
Type: schema.TypeInt,
Optional: true,
ForceNew: false,
Default: 0,
Description: "Allow only to merge pull request with enough positive reviews.",
},
"enable_approval_whitelist": {
Type: schema.TypeBool,
Computed: true,
Description: "True if a approval whitelist is used.",
},
"approval_whitelist_users": {
Type: schema.TypeList,
Elem: &schema.Schema{
Type: schema.TypeString,
},
Optional: true,
ForceNew: false,
Description: `Only reviews from allowlisted users will count to the required
approvals. Without approval allowlist, reviews from anyone with
write access count to the required approvals.`,
},
"approval_whitelist_teams": {
Type: schema.TypeList,
Elem: &schema.Schema{
Type: schema.TypeString,
},
Optional: true,
ForceNew: false,
Description: `Only reviews from allowlisted teams will count to the required
approvals. Without approval allowlist, reviews from anyone with
write access count to the required approvals.`,
},
"dismiss_stale_approvals": {
Type: schema.TypeBool,
Optional: true,
ForceNew: false,
Default: false,
Description: `When new commits that change the content of the pull request
are pushed to the branch, old approvals will be dismissed.`,
},
//
// not implemented in go-gitea-sdk
//
// "ignore_stale_approvals": {
// Type: schema.TypeBool,
// Optional true,
// ForceNew: false,
// Default: false,
// Description: `Do not count approvals that were made on older commits (stale
// reviews) towards how many approvals the PR has. Irrelevant if
// stale reviews are already dismissed.`,
// },
"enable_status_check": {
Type: schema.TypeBool,
Computed: true,
Description: `Require status checks to pass before merging. When enabled,
commits must first be pushed to another branch, then merged
or pushed directly to a branch that matches this rule after
status checks have passed. If no contexts are matched, the
last commit must be successful regardless of context`,
},
"status_check_patterns": {
Type: schema.TypeList,
Elem: &schema.Schema{
Type: schema.TypeString,
},
Optional: true,
ForceNew: false,
Description: `Enter patterns to specify which status checks must pass before
branches can be merged into a branch that matches this rule.
Each line specifies a pattern. Patterns cannot be empty.`,
},
"enable_merge_whitelist": {
Type: schema.TypeBool,
Computed: true,
Description: "True if a merge whitelist is used.",
},
"merge_whitelist_users": {
Type: schema.TypeList,
Elem: &schema.Schema{
Type: schema.TypeString,
},
Optional: true,
ForceNew: false,
Description: "Allow only allowlisted users to merge pull requests into this branch.",
},
"merge_whitelist_teams": {
Type: schema.TypeList,
Elem: &schema.Schema{
Type: schema.TypeString,
},
Optional: true,
ForceNew: false,
Description: "Allow only allowlisted teams to merge pull requests into this branch.",
},
"block_merge_on_rejected_reviews": {
Type: schema.TypeBool,
Optional: true,
ForceNew: false,
Default: false,
Description: `Merging will not be possible when changes are
requested by official reviewers, even if there are enough
approvals.`,
},
"block_merge_on_official_review_requests": {
Type: schema.TypeBool,
Optional: true,
ForceNew: false,
Default: false,
Description: `Merging will not be possible when it has official
review requests, even if there are enough approvals.`,
},
"block_merge_on_outdated_branch": {
Type: schema.TypeBool,
Optional: true,
ForceNew: false,
Default: false,
Description: "Merging will not be possible when head branch is behind base branch.",
},
"updated_at": {
Type: schema.TypeString,
Computed: true,
Description: "Webhook creation timestamp",
},
"created_at": {
Type: schema.TypeString,
Computed: true,
Description: "Webhook creation timestamp",
},
},
Description: "This resource allows you to create and manage branch protections for repositories.",
}
}

View File

@ -0,0 +1,255 @@
package gitea
import (
"strconv"
"code.gitea.io/sdk/gitea"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
const (
repoWebhookUsername string = "username"
repoWebhookName string = "name"
repoWebhookType string = "type"
repoWebhookUrl string = "url"
repoWebhookContentType string = "content_type"
repoWebhookSecret string = "secret"
repoWebhookAuthorizationHeader string = "authorization_header"
repoWebhookEvents string = "events"
repoWebhookBranchFilter string = "branch_filter"
repoWebhookActive string = "active"
repoWebhookCreatedAt string = "created_at"
)
func resourceRepositoryWebhookRead(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client)
id, err := strconv.ParseInt(d.Id(), 10, 64)
if err != nil {
return err
}
user := d.Get(repoWebhookUsername).(string)
repo := d.Get(repoWebhookName).(string)
hook, resp, err := client.GetRepoHook(user, repo, id)
if err != nil {
if resp.StatusCode == 404 {
d.SetId("")
return
} else {
return err
}
}
err = setRepositoryWebhookData(hook, d)
return
}
func resourceRepositoryWebhookCreate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client)
user := d.Get(repoWebhookUsername).(string)
repo := d.Get(repoWebhookName).(string)
config := map[string]string{
"url": d.Get(repoWebhookUrl).(string),
"content_type": d.Get(repoWebhookContentType).(string),
}
secret := d.Get(repoWebhookSecret).(string)
if secret != "" {
config["secret"] = secret
}
events := make([]string, 0)
for _, element := range d.Get(repoWebhookEvents).([]interface{}) {
events = append(events, element.(string))
}
hookOption := gitea.CreateHookOption{
Type: gitea.HookType(d.Get(repoWebhookType).(string)),
Config: config,
Events: events,
BranchFilter: d.Get(repoWebhookBranchFilter).(string),
Active: d.Get(repoWebhookActive).(bool),
AuthorizationHeader: d.Get(repoWebhookAuthorizationHeader).(string),
}
hook, _, err := client.CreateRepoHook(user, repo, hookOption)
if err != nil {
return err
}
err = setRepositoryWebhookData(hook, d)
return
}
func resourceRepositoryWebhookUpdate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client)
user := d.Get(repoWebhookUsername).(string)
repo := d.Get(repoWebhookName).(string)
id, err := strconv.ParseInt(d.Id(), 10, 64)
if err != nil {
return err
}
config := map[string]string{
"url": d.Get(repoWebhookUrl).(string),
"content_type": d.Get(repoWebhookContentType).(string),
}
secret := d.Get(repoWebhookSecret).(string)
if secret != "" {
config["secret"] = secret
}
events := make([]string, 0)
for _, element := range d.Get(repoWebhookEvents).([]interface{}) {
events = append(events, element.(string))
}
active := d.Get(repoWebhookActive).(bool)
hookOption := gitea.EditHookOption{
Config: config,
Events: events,
BranchFilter: d.Get(repoWebhookBranchFilter).(string),
Active: &active,
AuthorizationHeader: d.Get(repoWebhookAuthorizationHeader).(string),
}
_, err = client.EditRepoHook(user, repo, id, hookOption)
if err != nil {
return err
}
hook, _, err := client.GetRepoHook(user, repo, id)
if err != nil {
return err
}
err = setRepositoryWebhookData(hook, d)
return
}
func resourceRepositoryWebhookDelete(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client)
user := d.Get(repoWebhookUsername).(string)
repo := d.Get(repoWebhookName).(string)
id, err := strconv.ParseInt(d.Id(), 10, 64)
if err != nil {
return err
}
_, err = client.DeleteRepoHook(user, repo, id)
if err != nil {
return err
}
return
}
func setRepositoryWebhookData(hook *gitea.Hook, d *schema.ResourceData) (err error) {
d.SetId(strconv.FormatInt(hook.ID, 10))
d.Set(repoWebhookUsername, d.Get(repoWebhookUsername).(string))
d.Set(repoWebhookName, d.Get(repoWebhookName).(string))
d.Set(repoWebhookType, d.Get(repoWebhookType).(string))
d.Set(repoWebhookUrl, d.Get(repoWebhookUrl).(string))
d.Set(repoWebhookContentType, d.Get(repoWebhookContentType).(string))
secret := d.Get(repoWebhookSecret).(string)
if secret != "" {
d.Set(repoWebhookSecret, secret)
}
d.Set(repoWebhookEvents, d.Get(repoWebhookEvents))
d.Set(repoWebhookBranchFilter, d.Get(repoWebhookBranchFilter).(string))
d.Set(repoWebhookActive, d.Get(repoWebhookActive).(bool))
d.Set(repoWebhookCreatedAt, hook.Created)
authorizationHeader := d.Get(repoWebhookAuthorizationHeader).(string)
if authorizationHeader != "" {
d.Set(repoWebhookAuthorizationHeader, authorizationHeader)
}
return
}
func resourceGiteaRepositoryWebhook() *schema.Resource {
return &schema.Resource{
Read: resourceRepositoryWebhookRead,
Create: resourceRepositoryWebhookCreate,
Update: resourceRepositoryWebhookUpdate,
Delete: resourceRepositoryWebhookDelete,
Schema: map[string]*schema.Schema{
"username": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
Description: "User name or organization name",
},
"name": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
Description: "Repository name",
},
"type": {
Type: schema.TypeString,
Required: true,
Description: "Webhook type, e.g. `gitea`",
},
"url": {
Type: schema.TypeString,
Required: true,
Description: "Target URL of the webhook",
},
"content_type": {
Type: schema.TypeString,
Required: true,
Description: "The content type of the payload. It can be `json`, or `form`",
},
"secret": {
Type: schema.TypeString,
Optional: true,
Description: "Webhook secret",
},
"authorization_header": {
Type: schema.TypeString,
Optional: true,
Description: "Webhook authorization header",
},
"events": {
Type: schema.TypeList,
Elem: &schema.Schema{
Type: schema.TypeString,
},
Required: true,
Description: "A list of events that will trigger the webhool, e.g. `[\"push\"]`",
},
"branch_filter": {
Type: schema.TypeString,
Required: true,
Description: "Set branch filter on the webhook, e.g. `\"*\"`",
},
"active": {
Type: schema.TypeBool,
Required: true,
Description: "Set webhook to active, e.g. `true`",
},
"created_at": {
Type: schema.TypeString,
Computed: true,
Description: "Webhook creation timestamp",
},
},
Description: "This resource allows you to create and manage webhooks for repositories.",
}
}

View File

@ -18,7 +18,6 @@ const (
TeamCreateRepoFlag string = "can_create_repos"
TeamIncludeAllReposFlag string = "include_all_repositories"
TeamUnits string = "units"
TeamMembers string = "members"
TeamRepositories string = "repositories"
)
@ -94,17 +93,6 @@ func resourceTeamCreate(d *schema.ResourceData, meta interface{}) (err error) {
return
}
users := d.Get(TeamMembers).([]interface{})
for _, user := range users {
if user != "" {
_, err = client.AddTeamMember(team.ID, user.(string))
if err != nil {
return err
}
}
}
if !includeAllRepos {
err = setTeamRepositories(team, d, meta, false)
if err != nil {
@ -181,17 +169,6 @@ func resourceTeamUpdate(d *schema.ResourceData, meta interface{}) (err error) {
return err
}
users := d.Get(TeamMembers).([]interface{})
for _, user := range users {
if user != "" {
_, err = client.AddTeamMember(team.ID, user.(string))
if err != nil {
return err
}
}
}
if !includeAllRepos {
err = setTeamRepositories(team, d, meta, true)
if err != nil {
@ -240,8 +217,8 @@ func setTeamResourceData(team *gitea.Team, d *schema.ResourceData, meta interfac
d.Set(TeamPermissions, string(team.Permission))
d.Set(TeamIncludeAllReposFlag, team.IncludesAllRepositories)
d.Set(TeamUnits, d.Get(TeamUnits).(string))
d.Set(TeamMembers, d.Get(TeamMembers))
d.Set(TeamRepositories, d.Get(TeamRepositories))
return
}
@ -304,16 +281,6 @@ func resourceGiteaTeam() *schema.Resource {
Description: "List of types of Repositories that should be allowed to be created from Team members.\n" +
"Can be `repo.code`, `repo.issues`, `repo.ext_issues`, `repo.wiki`, `repo.pulls`, `repo.releases`, `repo.projects` and/or `repo.ext_wiki`",
},
"members": {
Type: schema.TypeList,
Elem: &schema.Schema{
Type: schema.TypeString,
},
Optional: true,
Required: false,
Computed: true,
Description: "List of Users that should be part of this team",
},
"repositories": {
Type: schema.TypeList,
Elem: &schema.Schema{

View File

@ -0,0 +1,150 @@
package gitea
import (
"fmt"
"code.gitea.io/sdk/gitea"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
const (
membersTeamID string = "team_id"
membersTeamMembers string = "members"
)
func getTeamMembers(team_id int, meta interface{}) (membersNames []string, err error) {
client := meta.(*gitea.Client)
var memberNames []string
var members []*gitea.User
// Get all pages of users
page := 1
for {
// Set options for current page
opts := gitea.ListTeamMembersOptions{
ListOptions: gitea.ListOptions{Page: page, PageSize: 50},
}
// Get page of team members
members, _, err = client.ListTeamMembers(int64(team_id), opts)
if err != nil {
return nil, err
}
// If no members were returned, we are done
if len(members) == 0 {
break
}
// Update list of usernames with data from current page
for _, m := range members {
memberNames = append(memberNames, m.UserName)
}
// Next page
page += 1
}
return memberNames, nil
}
func resourceTeamMembersCreate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client)
team_id := d.Get(membersTeamID).(int)
var memberNames []string
// What if team already has member?
// What if user is already in the team?
// What if user does not exist?
// Add members to the team
for _, name := range d.Get(membersTeamMembers).(*schema.Set).List() {
_ , err = client.AddTeamMember(int64(team_id), name.(string))
if err != nil {
return err
}
// Update list of usernames of the team members
memberNames = append(memberNames, name.(string))
}
err = setTeamMembersData(team_id, memberNames, d)
return
}
func resourceTeamMembersRead(d *schema.ResourceData, meta interface{}) (err error) {
team_id := d.Get(membersTeamID).(int)
memberNames, err := getTeamMembers(team_id, meta)
if err != nil {
return err
}
err = setTeamMembersData(team_id, memberNames, d)
return
}
func resourceTeamMembersDelete(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client)
team_id := d.Get(membersTeamID).(int)
var memberNames []string
memberNames , err = getTeamMembers(team_id, meta)
if err != nil {
return err
}
// Delete all memberships
for _, username := range memberNames {
_, err = client.RemoveTeamMember(int64(team_id), username)
if err != nil {
return err
}
}
return
}
func setTeamMembersData(team_id int, memberNames []string, d *schema.ResourceData) (err error) {
d.SetId(fmt.Sprintf("%d", team_id))
d.Set(membersTeamID, team_id)
d.Set(membersTeamMembers, memberNames)
return
}
func resourceGiteaTeamMembers() *schema.Resource {
return &schema.Resource{
Read: resourceTeamMembersRead,
Create: resourceTeamMembersCreate,
Delete: resourceTeamMembersDelete,
Importer: &schema.ResourceImporter{
StateContext: schema.ImportStatePassthroughContext,
},
Schema: map[string]*schema.Schema{
"team_id": {
Type: schema.TypeInt,
Required: true,
ForceNew: true,
Description: "The ID of the team.",
},
"members": {
// TypeSet is better than TypeList because
// reordering the members will not trigger recreation
Type: schema.TypeSet,
Elem: &schema.Schema{
Type: schema.TypeString,
},
Required: true,
ForceNew: true,
Description: "The user names of the members of the team.",
},
},
Description: "`gitea_team_members` manages all members of a single team. This resource will be recreated on member changes.",
}
}

View File

@ -0,0 +1,111 @@
package gitea
import (
"fmt"
"code.gitea.io/sdk/gitea"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
const (
membershipTeamID string = "team_id"
membershipUserName string = "username"
)
func resourceTeamMembershipCreate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client)
team_id := d.Get(membershipTeamID).(int)
username := d.Get(membershipUserName).(string)
// Create the membership
_ , err = client.AddTeamMember(int64(team_id), username)
// What if the membership exists? Consider error messages
// Does this do anything? Will err not be return in the end anyway
if err != nil {
return
}
err = setTeamMembershipData(team_id, username, d)
return
}
func resourceTeamMembershipRead(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client)
var resp *gitea.Response
team_id := d.Get(membershipTeamID).(int)
username := d.Get(membershipUserName).(string)
// Attempt to get the user from the team. If the user is not a member of the team, this will return a 404
_, resp, err = client.GetTeamMember(int64(team_id), username)
if err != nil {
return err
}
// The membership does not exist in Gitea
if resp.StatusCode == 404 {
// No ID in the resource indicates that it does not exist
d.SetId("")
return nil
}
err = setTeamMembershipData(team_id, username, d)
return
}
func resourceTeamMembershipDelete(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client)
team_id := d.Get(membershipTeamID).(int)
username := d.Get(membershipUserName).(string)
// Delete the membership
_, err = client.RemoveTeamMember(int64(team_id), username)
if err != nil {
return err
}
return
}
func setTeamMembershipData(team_id int, username string, d *schema.ResourceData) (err error) {
// This can't be team or usename only as that would not be unique since the
// team can have multiple members and the user can have multiple memberships.
d.SetId(fmt.Sprintf("%d_%s", team_id, username))
d.Set(membershipTeamID, team_id)
d.Set(membershipUserName, username)
return
}
func resourceGiteaTeamMembership() *schema.Resource {
return &schema.Resource{
Read: resourceTeamMembershipRead,
Create: resourceTeamMembershipCreate,
Delete: resourceTeamMembershipDelete,
Importer: &schema.ResourceImporter{
StateContext: schema.ImportStatePassthroughContext,
},
Schema: map[string]*schema.Schema{
"team_id": {
Type: schema.TypeInt,
Required: true,
ForceNew: true,
Description: "The ID of the team.",
},
"username": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
Description: "The username of the team member.",
},
},
Description: "`gitea_team_membership` manages a single user's membership of a single team.",
}
}

View File

@ -9,12 +9,36 @@ import (
)
const (
TokenUsername string = "username"
TokenName string = "name"
TokenHash string = "token"
TokenLastEight string = "last_eight"
TokenScopes string = "scopes"
)
// validScopes contains the valid scopes for tokens as listed
// at https://docs.gitea.com/development/oauth2-provider#scopes
var validScopes = map[string]bool{
"all": true,
"read:activitypub": true,
"write:activitypub": true,
"read:admin": true,
"write:admin": true,
"read:issue": true,
"write:issue": true,
"read:misc": true,
"write:misc": true,
"read:notification": true,
"write:notification": true,
"read:organization": true,
"write:organization": true,
"read:package": true,
"write:package": true,
"read:repository": true,
"write:repository": true,
"read:user": true,
"write:user": true,
}
func searchTokenById(c *gitea.Client, id int64) (res *gitea.AccessToken, err error) {
page := 1
@ -47,10 +71,23 @@ func resourceTokenCreate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client)
var opt gitea.CreateAccessTokenOption
opt.Name = d.Get(TokenName).(string)
// Create a list of valid scopes. Thrown an error if an invalid scope is found
var scopes []gitea.AccessTokenScope
for _, s := range d.Get(TokenScopes).(*schema.Set).List() {
s := s.(string)
if validScopes[s] {
scopes = append(scopes, gitea.AccessTokenScope(s))
} else {
return fmt.Errorf("Invalid token scope: '%s'", s)
}
}
token, _, err := client.CreateAccessToken(opt)
opts := gitea.CreateAccessTokenOption{
Name: d.Get(TokenName).(string),
Scopes: scopes,
}
token, _, err := client.CreateAccessToken(opts)
if err != nil {
return err
@ -106,6 +143,7 @@ func setTokenResourceData(token *gitea.AccessToken, d *schema.ResourceData) (err
d.Set(TokenHash, token.Token)
}
d.Set(TokenLastEight, token.TokenLastEight)
d.Set(TokenScopes, token.Scopes)
return
}
@ -119,12 +157,6 @@ func resourceGiteaToken() *schema.Resource {
StateContext: schema.ImportStatePassthroughContext,
},
Schema: map[string]*schema.Schema{
"username": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
Description: "The owner of the Access Token",
},
"name": {
Type: schema.TypeString,
Required: true,
@ -141,6 +173,15 @@ func resourceGiteaToken() *schema.Resource {
Type: schema.TypeString,
Computed: true,
},
"scopes": {
Type: schema.TypeSet,
Elem: &schema.Schema{
Type: schema.TypeString,
},
Required: true,
ForceNew: true,
Description: "List of string representations of scopes for the token",
},
},
Description: "`gitea_token` manages gitea Access Tokens.\n\n" +
"Due to upstream limitations (see https://gitea.com/gitea/go-sdk/issues/610) this resource\n" +

83
go.mod
View File

@ -3,48 +3,56 @@ module code.gitea.io/terraform-provider-gitea
go 1.21
require (
code.gitea.io/sdk/gitea v0.15.1
github.com/hashicorp/terraform-plugin-docs v0.16.0
code.gitea.io/sdk/gitea v0.19.0
github.com/hashicorp/terraform-plugin-docs v0.19.4
github.com/hashicorp/terraform-plugin-log v0.9.0
github.com/hashicorp/terraform-plugin-sdk/v2 v2.27.0
github.com/hashicorp/terraform-plugin-sdk/v2 v2.34.0
)
require (
github.com/BurntSushi/toml v1.2.1 // indirect
github.com/Kunde21/markdownfmt/v3 v3.1.0 // indirect
github.com/Masterminds/goutils v1.1.1 // indirect
github.com/Masterminds/semver/v3 v3.1.1 // indirect
github.com/Masterminds/sprig/v3 v3.2.2 // indirect
github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 // indirect
github.com/Masterminds/semver/v3 v3.2.0 // indirect
github.com/Masterminds/sprig/v3 v3.2.3 // indirect
github.com/ProtonMail/go-crypto v1.1.0-alpha.2 // indirect
github.com/agext/levenshtein v1.2.2 // indirect
github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect
github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
github.com/armon/go-radix v1.0.0 // indirect
github.com/bgentry/speakeasy v0.1.0 // indirect
github.com/cloudflare/circl v1.3.3 // indirect
github.com/fatih/color v1.13.0 // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/google/go-cmp v0.5.9 // indirect
github.com/google/uuid v1.3.0 // indirect
github.com/bmatcuk/doublestar/v4 v4.6.1 // indirect
github.com/cloudflare/circl v1.3.7 // indirect
github.com/davidmz/go-pageant v1.0.2 // indirect
github.com/fatih/color v1.16.0 // indirect
github.com/go-fed/httpsig v1.1.0 // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/hashicorp/cli v1.1.6 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-checkpoint v0.5.0 // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 // indirect
github.com/hashicorp/go-hclog v1.5.0 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect
github.com/hashicorp/go-plugin v1.4.10 // indirect
github.com/hashicorp/go-plugin v1.6.0 // indirect
github.com/hashicorp/go-uuid v1.0.3 // indirect
github.com/hashicorp/go-version v1.6.0 // indirect
github.com/hashicorp/hc-install v0.5.2 // indirect
github.com/hashicorp/hcl/v2 v2.17.0 // indirect
github.com/hashicorp/go-version v1.7.0 // indirect
github.com/hashicorp/hc-install v0.7.0 // indirect
github.com/hashicorp/hcl/v2 v2.20.1 // indirect
github.com/hashicorp/logutils v1.0.0 // indirect
github.com/hashicorp/terraform-exec v0.18.1 // indirect
github.com/hashicorp/terraform-json v0.17.1 // indirect
github.com/hashicorp/terraform-plugin-go v0.16.0 // indirect
github.com/hashicorp/terraform-registry-address v0.2.1 // indirect
github.com/hashicorp/terraform-exec v0.21.0 // indirect
github.com/hashicorp/terraform-json v0.22.1 // indirect
github.com/hashicorp/terraform-plugin-go v0.23.0 // indirect
github.com/hashicorp/terraform-registry-address v0.2.3 // indirect
github.com/hashicorp/terraform-svchost v0.1.1 // indirect
github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d // indirect
github.com/huandu/xstrings v1.3.2 // indirect
github.com/imdario/mergo v0.3.13 // indirect
github.com/hashicorp/yamux v0.1.1 // indirect
github.com/huandu/xstrings v1.3.3 // indirect
github.com/imdario/mergo v0.3.15 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.16 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-runewidth v0.0.9 // indirect
github.com/mitchellh/cli v1.1.5 // indirect
github.com/mitchellh/copystructure v1.2.0 // indirect
github.com/mitchellh/go-testing-interface v1.14.1 // indirect
@ -57,17 +65,24 @@ require (
github.com/shopspring/decimal v1.3.1 // indirect
github.com/spf13/cast v1.5.0 // indirect
github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect
github.com/vmihailenco/msgpack/v5 v5.3.5 // indirect
github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect
github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect
github.com/zclconf/go-cty v1.13.2 // indirect
golang.org/x/crypto v0.10.0 // indirect
github.com/yuin/goldmark v1.7.1 // indirect
github.com/yuin/goldmark-meta v1.1.0 // indirect
github.com/zclconf/go-cty v1.14.4 // indirect
go.abhg.dev/goldmark/frontmatter v0.2.0 // indirect
golang.org/x/crypto v0.23.0 // indirect
golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df // indirect
golang.org/x/mod v0.11.0 // indirect
golang.org/x/net v0.11.0 // indirect
golang.org/x/sys v0.9.0 // indirect
golang.org/x/text v0.11.0 // indirect
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect
google.golang.org/grpc v1.56.0 // indirect
google.golang.org/protobuf v1.30.0 // indirect
golang.org/x/mod v0.17.0 // indirect
golang.org/x/net v0.23.0 // indirect
golang.org/x/sys v0.20.0 // indirect
golang.org/x/text v0.15.0 // indirect
golang.org/x/tools v0.13.0 // indirect
google.golang.org/appengine v1.6.8 // indirect
google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de // indirect
google.golang.org/grpc v1.63.2 // indirect
google.golang.org/protobuf v1.34.0 // indirect
gopkg.in/yaml.v2 v2.3.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)

299
go.sum
View File

@ -1,39 +1,78 @@
code.gitea.io/gitea-vet v0.2.1/go.mod h1:zcNbT/aJEmivCAhfmkHOlT645KNOf9W2KnkLgFjGGfE=
code.gitea.io/sdk/gitea v0.15.1 h1:WJreC7YYuxbn0UDaPuWIe/mtiNKTvLN8MLkaw71yx/M=
code.gitea.io/sdk/gitea v0.15.1/go.mod h1:klY2LVI3s3NChzIk/MzMn7G1FHrfU7qd63iSMVoHRBA=
code.gitea.io/sdk/gitea v0.16.0 h1:gAfssETO1Hv9QbE+/nhWu7EjoFQYKt6kPoyDytQgw00=
code.gitea.io/sdk/gitea v0.16.0/go.mod h1:ndkDk99BnfiUCCYEUhpNzi0lpmApXlwRFqClBlOlEBg=
code.gitea.io/sdk/gitea v0.17.0 h1:8JPBss4+Jf7AE1YcfyiGrngTXE8dFSG3si/bypsTH34=
code.gitea.io/sdk/gitea v0.17.0/go.mod h1:ndkDk99BnfiUCCYEUhpNzi0lpmApXlwRFqClBlOlEBg=
code.gitea.io/sdk/gitea v0.17.1 h1:3jCPOG2ojbl8AcfaUCRYLT5MUcBMFwS0OSK2mA5Zok8=
code.gitea.io/sdk/gitea v0.17.1/go.mod h1:aCnBqhHpoEWA180gMbaCtdX9Pl6BWBAuuP2miadoTNM=
code.gitea.io/sdk/gitea v0.18.0 h1:+zZrwVmujIrgobt6wVBWCqITz6bn1aBjnCUHmpZrerI=
code.gitea.io/sdk/gitea v0.18.0/go.mod h1:IG9xZJoltDNeDSW0qiF2Vqx5orMWa7OhVWrjvrd5NpI=
code.gitea.io/sdk/gitea v0.19.0 h1:8I6s1s4RHgzxiPHhOQdgim1RWIRcr0LVMbHBjBFXq4Y=
code.gitea.io/sdk/gitea v0.19.0/go.mod h1:IG9xZJoltDNeDSW0qiF2Vqx5orMWa7OhVWrjvrd5NpI=
github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
github.com/Kunde21/markdownfmt/v3 v3.1.0 h1:KiZu9LKs+wFFBQKhrZJrFZwtLnCCWJahL+S+E/3VnM0=
github.com/Kunde21/markdownfmt/v3 v3.1.0/go.mod h1:tPXN1RTyOzJwhfHoon9wUr4HGYmWgVxSQN6VBJDkrVc=
github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc=
github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
github.com/Masterminds/semver/v3 v3.2.0 h1:3MEsd0SM6jqZojhjLWWeBY+Kcjy9i6MQAeY7YgDP83g=
github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ=
github.com/Masterminds/sprig/v3 v3.2.1/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk=
github.com/Masterminds/sprig/v3 v3.2.2 h1:17jRggJu518dr3QaafizSXOjKYp94wKfABxUmyxvxX8=
github.com/Masterminds/sprig/v3 v3.2.2/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk=
github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA=
github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM=
github.com/Microsoft/go-winio v0.5.2 h1:a9IhgEQBCUEk6QCdml9CiJGhAws+YwffDHEMp1VMrpA=
github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 h1:wPbRQzjjwFc0ih8puEVAOFGELsn1zoIIYdxvML7mDxA=
github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g=
github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95 h1:KLq8BE0KwCL+mmXnjLWEAOYO+2l2AE4YMmqG1ZpZHBs=
github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg=
github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
github.com/ProtonMail/go-crypto v1.1.0-alpha.0 h1:nHGfwXmFvJrSR9xu8qL7BkO4DqTHXE9N5vPhgY2I+j0=
github.com/ProtonMail/go-crypto v1.1.0-alpha.0/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
github.com/ProtonMail/go-crypto v1.1.0-alpha.2 h1:bkyFVUP+ROOARdgCiJzNQo2V2kiB97LyUpzH9P6Hrlg=
github.com/ProtonMail/go-crypto v1.1.0-alpha.2/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ=
github.com/agext/levenshtein v1.2.2 h1:0S/Yg6LYmFJ5stwQeRp6EeOcCbj7xiqQSdNelsXvaqE=
github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec=
github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw=
github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo=
github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY=
github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4=
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI=
github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY=
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
github.com/bmatcuk/doublestar/v4 v4.6.1 h1:FH9SifrbvJhnlQpztAx++wlkk70QBf0iBWDwNy7PA4I=
github.com/bmatcuk/doublestar/v4 v4.6.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc=
github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I=
github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs=
github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA=
github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU=
github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
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/davidmz/go-pageant v1.0.2 h1:bPblRCh5jGU+Uptpz6LgMZGD5hJoOt7otgT454WvHn0=
github.com/davidmz/go-pageant v1.0.2/go.mod h1:P2EDDnMqIwG5Rrp05dTRITj9z2zpGcD9efWSkTNKLIE=
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE=
github.com/go-fed/httpsig v1.1.0 h1:9M+hb0jkEICD8/cAiNqEB66R87tTINszBRTjwjQzWcI=
github.com/go-fed/httpsig v1.1.0/go.mod h1:RCMrTZvN1bJYtofsG4rd5NaO5obxQ5xBkdiS7xsT7bM=
github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4=
github.com/go-git/go-billy/v5 v5.4.1 h1:Uwp5tDRkPr+l/TnbHOQzp+tmJfLceOlbVucgpTz8ix4=
github.com/go-git/go-git/v5 v5.6.1 h1:q4ZRqQl4pR/ZJHc1L5CFjGA1a10u76aV1iC+nh+bHsk=
@ -41,16 +80,29 @@ github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68=
github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4=
github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4=
github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/hashicorp/cli v1.1.6 h1:CMOV+/LJfL1tXCOKrgAX0uRKnzjj/mpmqNXloRSy2K8=
github.com/hashicorp/cli v1.1.6/go.mod h1:MPon5QYlgjjo0BSoAiN0ESeT5fRzDjVRp+uioJ0piz4=
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
@ -68,42 +120,123 @@ github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+l
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
github.com/hashicorp/go-plugin v1.4.10 h1:xUbmA4jC6Dq163/fWcp8P3JuHilrHHMLNRxzGQJ9hNk=
github.com/hashicorp/go-plugin v1.4.10/go.mod h1:6/1TEzT0eQznvI/gV2CM29DLSkAK/e58mUWKVsPaph0=
github.com/hashicorp/go-plugin v1.5.1 h1:oGm7cWBaYIp3lJpx1RUEfLWophprE2EV/KUeqBYo+6k=
github.com/hashicorp/go-plugin v1.5.1/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4=
github.com/hashicorp/go-plugin v1.6.0 h1:wgd4KxHJTVGGqWBq4QPB1i5BZNEx9BR8+OFmHDmTk8A=
github.com/hashicorp/go-plugin v1.6.0/go.mod h1:lBS5MtSSBZk0SHc66KACcjjlU6WzEVP/8pwz68aMkCI=
github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/go-version v1.5.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek=
github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY=
github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/hc-install v0.5.2 h1:SfwMFnEXVVirpwkDuSF5kymUOhrUxrTq3udEseZdOD0=
github.com/hashicorp/hc-install v0.5.2/go.mod h1:9QISwe6newMWIfEiXpzuu1k9HAGtQYgnSH8H9T8wmoI=
github.com/hashicorp/hc-install v0.6.0 h1:fDHnU7JNFNSQebVKYhHZ0va1bC6SrPQ8fpebsvNr2w4=
github.com/hashicorp/hc-install v0.6.0/go.mod h1:10I912u3nntx9Umo1VAeYPUUuehk0aRQJYpMwbX5wQA=
github.com/hashicorp/hc-install v0.6.1 h1:IGxShH7AVhPaSuSJpKtVi/EFORNjO+OYVJJrAtGG2mY=
github.com/hashicorp/hc-install v0.6.1/go.mod h1:0fW3jpg+wraYSnFDJ6Rlie3RvLf1bIqVIkzoon4KoVE=
github.com/hashicorp/hc-install v0.6.2 h1:V1k+Vraqz4olgZ9UzKiAcbman9i9scg9GgSt/U3mw/M=
github.com/hashicorp/hc-install v0.6.2/go.mod h1:2JBpd+NCFKiHiu/yYCGaPyPHhZLxXTpz8oreHa/a3Ps=
github.com/hashicorp/hc-install v0.6.3 h1:yE/r1yJvWbtrJ0STwScgEnCanb0U9v7zp0Gbkmcoxqs=
github.com/hashicorp/hc-install v0.6.3/go.mod h1:KamGdbodYzlufbWh4r9NRo8y6GLHWZP2GBtdnms1Ln0=
github.com/hashicorp/hc-install v0.6.4 h1:QLqlM56/+SIIGvGcfFiwMY3z5WGXT066suo/v9Km8e0=
github.com/hashicorp/hc-install v0.6.4/go.mod h1:05LWLy8TD842OtgcfBbOT0WMoInBMUSHjmDx10zuBIA=
github.com/hashicorp/hc-install v0.7.0 h1:Uu9edVqjKQxxuD28mR5TikkKDd/p55S8vzPC1659aBk=
github.com/hashicorp/hc-install v0.7.0/go.mod h1:ELmmzZlGnEcqoUMKUuykHaPCIR1sYLYX+KSggWSKZuA=
github.com/hashicorp/hcl/v2 v2.17.0 h1:z1XvSUyXd1HP10U4lrLg5e0JMVz6CPaJvAgxM0KNZVY=
github.com/hashicorp/hcl/v2 v2.17.0/go.mod h1:gJyW2PTShkJqQBKpAmPO3yxMxIuoXkOF2TpqXzrQyx4=
github.com/hashicorp/hcl/v2 v2.18.0 h1:wYnG7Lt31t2zYkcquwgKo6MWXzRUDIeIVU5naZwHLl8=
github.com/hashicorp/hcl/v2 v2.18.0/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE=
github.com/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI=
github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE=
github.com/hashicorp/hcl/v2 v2.20.1 h1:M6hgdyz7HYt1UN9e61j+qKJBqR3orTWbI1HKBJEdxtc=
github.com/hashicorp/hcl/v2 v2.20.1/go.mod h1:TZDqQ4kNKCbh1iJp99FdPiUaVDDUPivbqxZulxDYqL4=
github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y=
github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
github.com/hashicorp/terraform-exec v0.18.1 h1:LAbfDvNQU1l0NOQlTuudjczVhHj061fNX5H8XZxHlH4=
github.com/hashicorp/terraform-exec v0.18.1/go.mod h1:58wg4IeuAJ6LVsLUeD2DWZZoc/bYi6dzhLHzxM41980=
github.com/hashicorp/terraform-exec v0.19.0 h1:FpqZ6n50Tk95mItTSS9BjeOVUb4eg81SpgVtZNNtFSM=
github.com/hashicorp/terraform-exec v0.19.0/go.mod h1:tbxUpe3JKruE9Cuf65mycSIT8KiNPZ0FkuTE3H4urQg=
github.com/hashicorp/terraform-exec v0.20.0 h1:DIZnPsqzPGuUnq6cH8jWcPunBfY+C+M8JyYF3vpnuEo=
github.com/hashicorp/terraform-exec v0.20.0/go.mod h1:ckKGkJWbsNqFKV1itgMnE0hY9IYf1HoiekpuN0eWoDw=
github.com/hashicorp/terraform-exec v0.21.0 h1:uNkLAe95ey5Uux6KJdua6+cv8asgILFVWkd/RG0D2XQ=
github.com/hashicorp/terraform-exec v0.21.0/go.mod h1:1PPeMYou+KDUSSeRE9szMZ/oHf4fYUmB923Wzbq1ICg=
github.com/hashicorp/terraform-json v0.17.1 h1:eMfvh/uWggKmY7Pmb3T85u86E2EQg6EQHgyRwf3RkyA=
github.com/hashicorp/terraform-json v0.17.1/go.mod h1:Huy6zt6euxaY9knPAFKjUITn8QxUFIe9VuSzb4zn/0o=
github.com/hashicorp/terraform-json v0.18.0 h1:pCjgJEqqDESv4y0Tzdqfxr/edOIGkjs8keY42xfNBwU=
github.com/hashicorp/terraform-json v0.18.0/go.mod h1:qdeBs11ovMzo5puhrRibdD6d2Dq6TyE/28JiU4tIQxk=
github.com/hashicorp/terraform-json v0.20.0 h1:cJcvn4gIOTi0SD7pIy+xiofV1zFA3hza+6K+fo52IX8=
github.com/hashicorp/terraform-json v0.20.0/go.mod h1:qdeBs11ovMzo5puhrRibdD6d2Dq6TyE/28JiU4tIQxk=
github.com/hashicorp/terraform-json v0.21.0 h1:9NQxbLNqPbEMze+S6+YluEdXgJmhQykRyRNd+zTI05U=
github.com/hashicorp/terraform-json v0.21.0/go.mod h1:qdeBs11ovMzo5puhrRibdD6d2Dq6TyE/28JiU4tIQxk=
github.com/hashicorp/terraform-json v0.22.1 h1:xft84GZR0QzjPVWs4lRUwvTcPnegqlyS7orfb5Ltvec=
github.com/hashicorp/terraform-json v0.22.1/go.mod h1:JbWSQCLFSXFFhg42T7l9iJwdGXBYV8fmmD6o/ML4p3A=
github.com/hashicorp/terraform-plugin-docs v0.16.0 h1:UmxFr3AScl6Wged84jndJIfFccGyBZn52KtMNsS12dI=
github.com/hashicorp/terraform-plugin-docs v0.16.0/go.mod h1:M3ZrlKBJAbPMtNOPwHicGi1c+hZUh7/g0ifT/z7TVfA=
github.com/hashicorp/terraform-plugin-docs v0.17.0 h1:H1Yc+bgB//Geau5g7YKkhG5v9tghI3vplfIYTOl85Uw=
github.com/hashicorp/terraform-plugin-docs v0.17.0/go.mod h1:cKC8GSLE+0a0bi7LtlpXgrqnlRDCGoGDn15PTEA+Ang=
github.com/hashicorp/terraform-plugin-docs v0.18.0 h1:2bINhzXc+yDeAcafurshCrIjtdu1XHn9zZ3ISuEhgpk=
github.com/hashicorp/terraform-plugin-docs v0.18.0/go.mod h1:iIUfaJpdUmpi+rI42Kgq+63jAjI8aZVTyxp3Bvk9Hg8=
github.com/hashicorp/terraform-plugin-docs v0.19.2 h1:YjdKa1vuqt9EnPYkkrv9HnGZz175HhSJ7Vsn8yZeWus=
github.com/hashicorp/terraform-plugin-docs v0.19.2/go.mod h1:gad2aP6uObFKhgNE8DR9nsEuEQnibp7il0jZYYOunWY=
github.com/hashicorp/terraform-plugin-docs v0.19.3 h1:xoxpeIuBfnoGxXY0dTajdj4GjEv6TihZdj0lHNXbKew=
github.com/hashicorp/terraform-plugin-docs v0.19.3/go.mod h1:4pLASsatTmRynVzsjEhbXZ6s7xBlUw/2Kt0zfrq8HxA=
github.com/hashicorp/terraform-plugin-docs v0.19.4 h1:G3Bgo7J22OMtegIgn8Cd/CaSeyEljqjH3G39w28JK4c=
github.com/hashicorp/terraform-plugin-docs v0.19.4/go.mod h1:4pLASsatTmRynVzsjEhbXZ6s7xBlUw/2Kt0zfrq8HxA=
github.com/hashicorp/terraform-plugin-go v0.16.0 h1:DSOQ0rz5FUiVO4NUzMs8ln9gsPgHMTsfns7Nk+6gPuE=
github.com/hashicorp/terraform-plugin-go v0.16.0/go.mod h1:4sn8bFuDbt+2+Yztt35IbOrvZc0zyEi87gJzsTgCES8=
github.com/hashicorp/terraform-plugin-go v0.19.0 h1:BuZx/6Cp+lkmiG0cOBk6Zps0Cb2tmqQpDM3iAtnhDQU=
github.com/hashicorp/terraform-plugin-go v0.19.0/go.mod h1:EhRSkEPNoylLQntYsk5KrDHTZJh9HQoumZXbOGOXmec=
github.com/hashicorp/terraform-plugin-go v0.20.0 h1:oqvoUlL+2EUbKNsJbIt3zqqZ7wi6lzn4ufkn/UA51xQ=
github.com/hashicorp/terraform-plugin-go v0.20.0/go.mod h1:Rr8LBdMlY53a3Z/HpP+ZU3/xCDqtKNCkeI9qOyT10QE=
github.com/hashicorp/terraform-plugin-go v0.21.0 h1:VSjdVQYNDKR0l2pi3vsFK1PdMQrw6vGOshJXMNFeVc0=
github.com/hashicorp/terraform-plugin-go v0.21.0/go.mod h1:piJp8UmO1uupCvC9/H74l2C6IyKG0rW4FDedIpwW5RQ=
github.com/hashicorp/terraform-plugin-go v0.22.0 h1:1OS1Jk5mO0f5hrziWJGXXIxBrMe2j/B8E+DVGw43Xmc=
github.com/hashicorp/terraform-plugin-go v0.22.0/go.mod h1:mPULV91VKss7sik6KFEcEu7HuTogMLLO/EvWCuFkRVE=
github.com/hashicorp/terraform-plugin-go v0.23.0 h1:AALVuU1gD1kPb48aPQUjug9Ir/125t+AAurhqphJ2Co=
github.com/hashicorp/terraform-plugin-go v0.23.0/go.mod h1:1E3Cr9h2vMlahWMbsSEcNrOCxovCZhOOIXjFHbjc/lQ=
github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9TFvymaRGZED3FCV0=
github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow=
github.com/hashicorp/terraform-plugin-sdk/v2 v2.27.0 h1:I8efBnjuDrgPjNF1MEypHy48VgcTIUY4X6rOFunrR3Y=
github.com/hashicorp/terraform-plugin-sdk/v2 v2.27.0/go.mod h1:cUEP4ly/nxlHy5HzD6YRrHydtlheGvGRJDhiWqqVik4=
github.com/hashicorp/terraform-plugin-sdk/v2 v2.29.0 h1:wcOKYwPI9IorAJEBLzgclh3xVolO7ZorYd6U1vnok14=
github.com/hashicorp/terraform-plugin-sdk/v2 v2.29.0/go.mod h1:qH/34G25Ugdj5FcM95cSoXzUgIbgfhVLXCcEcYaMwq8=
github.com/hashicorp/terraform-plugin-sdk/v2 v2.30.0 h1:X7vB6vn5tON2b49ILa4W7mFAsndeqJ7bZFOGbVO+0Cc=
github.com/hashicorp/terraform-plugin-sdk/v2 v2.30.0/go.mod h1:ydFcxbdj6klCqYEPkPvdvFKiNGKZLUs+896ODUXCyao=
github.com/hashicorp/terraform-plugin-sdk/v2 v2.31.0 h1:Bl3e2ei2j/Z3Hc2HIS15Gal2KMKyLAZ2om1HCEvK6es=
github.com/hashicorp/terraform-plugin-sdk/v2 v2.31.0/go.mod h1:i2C41tszDjiWfziPQDL5R/f3Zp0gahXe5No/MIO9rCE=
github.com/hashicorp/terraform-plugin-sdk/v2 v2.32.0 h1:7xdO9aOXVmhvMxNAq8UloyyqW0EEzyAY37llSTHJgjo=
github.com/hashicorp/terraform-plugin-sdk/v2 v2.32.0/go.mod h1:LxQzs7AQl/5JE1IGFd6LX8E4A0InRJ/7s245gOmsejA=
github.com/hashicorp/terraform-plugin-sdk/v2 v2.33.0 h1:qHprzXy/As0rxedphECBEQAh3R4yp6pKksKHcqZx5G8=
github.com/hashicorp/terraform-plugin-sdk/v2 v2.33.0/go.mod h1:H+8tjs9TjV2w57QFVSMBQacf8k/E1XwLXGCARgViC6A=
github.com/hashicorp/terraform-plugin-sdk/v2 v2.34.0 h1:kJiWGx2kiQVo97Y5IOGR4EMcZ8DtMswHhUuFibsCQQE=
github.com/hashicorp/terraform-plugin-sdk/v2 v2.34.0/go.mod h1:sl/UoabMc37HA6ICVMmGO+/0wofkVIRxf+BMb/dnoIg=
github.com/hashicorp/terraform-registry-address v0.2.1 h1:QuTf6oJ1+WSflJw6WYOHhLgwUiQ0FrROpHPYFtwTYWM=
github.com/hashicorp/terraform-registry-address v0.2.1/go.mod h1:BSE9fIFzp0qWsJUUyGquo4ldV9k2n+psif6NYkBRS3Y=
github.com/hashicorp/terraform-registry-address v0.2.2 h1:lPQBg403El8PPicg/qONZJDC6YlgCVbWDtNmmZKtBno=
github.com/hashicorp/terraform-registry-address v0.2.2/go.mod h1:LtwNbCihUoUZ3RYriyS2wF/lGPB6gF9ICLRtuDk7hSo=
github.com/hashicorp/terraform-registry-address v0.2.3 h1:2TAiKJ1A3MAkZlH1YI/aTVcLZRu7JseiXNRHbOAyoTI=
github.com/hashicorp/terraform-registry-address v0.2.3/go.mod h1:lFHA76T8jfQteVfT7caREqguFrW3c4MFSPhZB7HHgUM=
github.com/hashicorp/terraform-svchost v0.1.1 h1:EZZimZ1GxdqFRinZ1tpJwVxxt49xc/S52uzrw4x0jKQ=
github.com/hashicorp/terraform-svchost v0.1.1/go.mod h1:mNsjQfZyf/Jhz35v6/0LWcv26+X7JPS+buii2c9/ctc=
github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d h1:kJCB4vdITiW1eC1vq2e6IsrXKrZit1bv/TDYFGMp4BQ=
github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE=
github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ=
github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw=
github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
github.com/huandu/xstrings v1.3.3 h1:/Gcsuc1x8JVbJ9/rlye4xZnVAbEkGauT8lbebqcQws4=
github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk=
github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg=
github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM=
github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
github.com/jhump/protoreflect v1.6.0 h1:h5jfMVslIg6l29nsMs0D8Wj17RDVdNYti0vDN/PZZoE=
github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=
@ -123,6 +256,10 @@ github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Ky
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
github.com/mitchellh/cli v1.1.5 h1:OxRIeJXpAMztws/XHlN2vu6imG5Dpq+j61AzAX5fLng=
github.com/mitchellh/cli v1.1.5/go.mod h1:v8+iFts2sPIKUV1ltktPXMCC8fumSKFItNcD2cLtRR4=
github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
@ -161,6 +298,7 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s=
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
@ -168,75 +306,236 @@ github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaU
github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
github.com/vmihailenco/msgpack/v5 v5.3.5 h1:5gO0H1iULLWGhs2H5tbAHIZTV8/cYafcFOr9znI5mJU=
github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc=
github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8=
github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok=
github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g=
github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
github.com/yuin/goldmark v1.6.0 h1:boZcn2GTjpsynOsC0iJHnBWa4Bi0qzfJjthwauItG68=
github.com/yuin/goldmark v1.6.0/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
github.com/yuin/goldmark v1.7.1 h1:3bajkSilaCbjdKVsKdZjZCLBNPL9pYzrCakKaf4U49U=
github.com/yuin/goldmark v1.7.1/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E=
github.com/yuin/goldmark-meta v1.1.0 h1:pWw+JLHGZe8Rk0EGsMVssiNb/AaPMHfSRszZeUeiOUc=
github.com/yuin/goldmark-meta v1.1.0/go.mod h1:U4spWENafuA7Zyg+Lj5RqK/MF+ovMYtBvXi1lBb2VP0=
github.com/zclconf/go-cty v1.13.2 h1:4GvrUxe/QUDYuJKAav4EYqdM47/kZa672LwmXFmEKT0=
github.com/zclconf/go-cty v1.13.2/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0=
github.com/zclconf/go-cty v1.14.0 h1:/Xrd39K7DXbHzlisFP9c4pHao4yyf+/Ug9LEz+Y/yhc=
github.com/zclconf/go-cty v1.14.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE=
github.com/zclconf/go-cty v1.14.1 h1:t9fyA35fwjjUMcmL5hLER+e/rEPqrbCK1/OSE4SI9KA=
github.com/zclconf/go-cty v1.14.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE=
github.com/zclconf/go-cty v1.14.2 h1:kTG7lqmBou0Zkx35r6HJHUQTvaRPr5bIAf3AoHS0izI=
github.com/zclconf/go-cty v1.14.2/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE=
github.com/zclconf/go-cty v1.14.4 h1:uXXczd9QDGsgu0i/QFR/hzI5NYCHLf6NQw/atrbnhq8=
github.com/zclconf/go-cty v1.14.4/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE=
go.abhg.dev/goldmark/frontmatter v0.2.0 h1:P8kPG0YkL12+aYk2yU3xHv4tcXzeVnN+gU0tJ5JnxRw=
go.abhg.dev/goldmark/frontmatter v0.2.0/go.mod h1:XqrEkZuM57djk7zrlRUB02x8I5J0px76YjkOzhB4YlU=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM=
golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I=
golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck=
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA=
golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g=
golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY=
golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc=
golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg=
golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo=
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA=
golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df h1:UA2aFVmmsIlefxMk29Dp2juaUSth8Pyn3Tq5Y5mJGME=
golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU=
golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc=
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY=
golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0=
golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8=
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic=
golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU=
golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ=
golang.org/x/net v0.13.0 h1:Nvo8UFsZ8X3BhAC9699Z1j7XQ3rsZnUUm7jfBEk1ueY=
golang.org/x/net v0.13.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA=
golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg=
golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ=
golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c=
golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U=
golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc=
golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
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.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s=
golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q=
golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU=
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4=
golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200325010219-a49f79bcc224/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ=
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM=
google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds=
google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A=
google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU=
google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54 h1:9NWlQfY2ePejTmfwUH1OWwmznFa+0kKcHGPDvcPza9M=
google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54/go.mod h1:zqTuNwFlFRsw5zIts5VnzLQxSRqh+CGOTVMlYbY0Eyk=
google.golang.org/genproto v0.0.0-20231002182017-d307bd883b97 h1:SeZZZx0cP0fqUyA+oRzP9k7cSwJlvDFiROO72uwD6i0=
google.golang.org/genproto v0.0.0-20231002182017-d307bd883b97/go.mod h1:t1VqOqqvce95G3hIDCT5FeO3YUc6Q4Oe24L/+rNMxRk=
google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 h1:wpZ8pe2x1Q3f2KyT5f8oP/fa9rHAKgFPr/HZdNuS+PQ=
google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY=
google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY=
google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo=
google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19 h1:0nDDozoAU19Qb2HwhXadU8OcsiO/09cnTqhUtq2MEOM=
google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA=
google.golang.org/genproto/googleapis/rpc v0.0.0-20231002182017-d307bd883b97 h1:6GQBEOdGkX6MMTLT9V+TjtIRZCw9VPD5Z+yHY9wMgS0=
google.golang.org/genproto/googleapis/rpc v0.0.0-20231002182017-d307bd883b97/go.mod h1:v7nGkzlmW8P3n/bKmWBn2WpBjpOEx8Q6gMueudAmKfY=
google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 h1:Jyp0Hsi0bmHXG6k9eATXoYtjd6e2UzZ1SCn/wIupY14=
google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:oQ5rr10WTTMvP4A36n8JpR1OrO1BEiV4f78CneXZxkA=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de h1:cZGRis4/ot9uVm639a+rHCUaG0JJHEsdyzSQTMX+suY=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY=
google.golang.org/grpc v1.56.0 h1:+y7Bs8rtMd07LeXmL3NxcTLn7mUkbKZqEpPhMNkwJEE=
google.golang.org/grpc v1.56.0/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s=
google.golang.org/grpc v1.57.0 h1:kfzNeI/klCGD2YPMUlaGNT3pxvYfga7smW3Vth8Zsiw=
google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo=
google.golang.org/grpc v1.57.1 h1:upNTNqv0ES+2ZOOqACwVtS3Il8M12/+Hz41RCPzAjQg=
google.golang.org/grpc v1.57.1/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo=
google.golang.org/grpc v1.60.0 h1:6FQAR0kM31P6MRdeluor2w2gPaS4SVNrD/DNTxrQ15k=
google.golang.org/grpc v1.60.0/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM=
google.golang.org/grpc v1.61.0 h1:TOvOcuXn30kRao+gfcvsebNEa5iZIiLkisYEkf7R7o0=
google.golang.org/grpc v1.61.0/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs=
google.golang.org/grpc v1.61.1 h1:kLAiWrZs7YeDM6MumDe7m3y4aM6wacLzM1Y/wiLP9XY=
google.golang.org/grpc v1.61.1/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs=
google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM=
google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng=
google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I=
google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
google.golang.org/protobuf v1.34.0 h1:Qo/qEd2RZPCf2nKuorzksSknv0d3ERwp1vFG38gSmH4=
google.golang.org/protobuf v1.34.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

6
renovate.json5 Normal file
View File

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

View File

@ -0,0 +1,23 @@
version: "3"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:1.22.1
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- DISABLE_GIT_HOOKS=false
restart: always
networks:
- gitea
volumes:
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "222:22"

View File

@ -0,0 +1,29 @@
resource "gitea_repository_branch_protection" "bp" {
username = var.repo_user_name
name = var.repo_name
rule_name = var.rule_name
protected_file_patterns = var.protected_file_patterns
unprotected_file_patterns = var.unprotected_file_patterns
enable_push = var.enable_push
push_whitelist_users = var.push_whitelist_users
push_whitelist_teams = var.push_whitelist_teams
push_whitelist_deploy_keys = var.push_whitelist_deploy_keys
require_signed_commits = var.require_signed_commits
required_approvals = var.required_approvals
approval_whitelist_users = var.approval_whitelist_users
approval_whitelist_teams = var.approval_whitelist_teams
dismiss_stale_approvals = var.dismiss_stale_approvals
status_check_patterns = var.status_check_patterns
merge_whitelist_users = var.merge_whitelist_users
merge_whitelist_teams = var.merge_whitelist_teams
block_merge_on_rejected_reviews = var.block_merge_on_rejected_reviews
block_merge_on_official_review_requests = var.block_merge_on_official_review_requests
block_merge_on_outdated_branch = var.block_merge_on_outdated_branch
}
# //
# // not implemented in go-gitea-sdk
# //
# // "ignore_stale_approvals": {
# // Description: `Do not count approvals that were made on older commits (stale reviews) towards how many approvals the PR has. Irrelevant if stale reviews are already dismissed.`,
# // },

View File

@ -0,0 +1,306 @@
# run "create_org" {
# assert {
# condition = gitea_org.test_org.name == var.org_name
# error_message = "${gitea_org.test_org.name} not eq ${var.org_name}"
# }
# }
#
# run "create_repo" {
# assert {
# condition = gitea_repository.org_repo.name == var.repo_name
# error_message = "${gitea_repository.org_repo.name} not eq ${var.repo_name}"
# }
# }
# run "create_user" {
# assert {
# condition = gitea_user.test_user.username == var.user_name
# error_message = "${gitea_user.test_user.username} not eq ${var.user_name}"
# }
# }
#
# run "create_user_repo" {
# assert {
# condition = gitea_repository.user_repo.name == var.repo_name
# error_message = "${gitea_repository.user_repo.name} not eq ${var.repo_name}"
# }
# }
run "setup" {
module {
source = "./setup"
}
}
run "apply_defaults" {
variables {
rule_name = "apply_defaults"
}
assert {
condition = gitea_repository_branch_protection.bp.name == var.repo_name
error_message = "${gitea_repository_branch_protection.bp.name} not eq ${var.repo_name}"
}
assert {
condition = gitea_repository_branch_protection.bp.username == var.user_name
error_message = "${gitea_repository_branch_protection.bp.username} not eq ${var.user_name}"
}
assert {
condition = gitea_repository_branch_protection.bp.rule_name == var.rule_name
error_message = "${gitea_repository_branch_protection.bp.rule_name} not eq ${var.rule_name}"
}
assert {
condition = gitea_repository_branch_protection.bp.protected_file_patterns == var.protected_file_patterns
error_message = "${gitea_repository_branch_protection.bp.protected_file_patterns} not eq ${var.protected_file_patterns}"
}
assert {
condition = gitea_repository_branch_protection.bp.unprotected_file_patterns == var.unprotected_file_patterns
error_message = "${gitea_repository_branch_protection.bp.unprotected_file_patterns} not eq ${var.unprotected_file_patterns}"
}
assert {
condition = gitea_repository_branch_protection.bp.enable_push == var.enable_push
error_message = "${gitea_repository_branch_protection.bp.enable_push} not eq ${var.enable_push}"
}
assert {
condition = gitea_repository_branch_protection.bp.push_whitelist_users == var.push_whitelist_users
error_message = "${join(",", gitea_repository_branch_protection.bp.push_whitelist_users)} not eq ${join(",", var.push_whitelist_users)}"
}
assert {
condition = gitea_repository_branch_protection.bp.push_whitelist_teams == var.push_whitelist_teams
error_message = "${join(",", gitea_repository_branch_protection.bp.push_whitelist_teams)} not eq ${join(",", var.push_whitelist_teams)}"
}
assert {
condition = gitea_repository_branch_protection.bp.push_whitelist_deploy_keys == var.push_whitelist_deploy_keys
error_message = "${gitea_repository_branch_protection.bp.push_whitelist_deploy_keys} not eq ${var.push_whitelist_deploy_keys}"
}
assert {
condition = gitea_repository_branch_protection.bp.require_signed_commits == var.require_signed_commits
error_message = "${gitea_repository_branch_protection.bp.require_signed_commits} not eq ${var.require_signed_commits}"
}
assert {
condition = gitea_repository_branch_protection.bp.required_approvals == var.required_approvals
error_message = "${gitea_repository_branch_protection.bp.required_approvals} not eq ${var.required_approvals}"
}
assert {
condition = gitea_repository_branch_protection.bp.approval_whitelist_users == var.approval_whitelist_users
error_message = "${join(",", gitea_repository_branch_protection.bp.approval_whitelist_users)} not eq ${join(",", var.approval_whitelist_users)}"
}
assert {
condition = gitea_repository_branch_protection.bp.approval_whitelist_teams == var.approval_whitelist_teams
error_message = "${join(",", gitea_repository_branch_protection.bp.approval_whitelist_teams)} not eq ${join(",", var.approval_whitelist_teams)}"
}
assert {
condition = gitea_repository_branch_protection.bp.dismiss_stale_approvals == var.dismiss_stale_approvals
error_message = "${gitea_repository_branch_protection.bp.dismiss_stale_approvals} not eq ${var.dismiss_stale_approvals}"
}
assert {
condition = gitea_repository_branch_protection.bp.status_check_patterns == var.status_check_patterns
error_message = "${join(",", gitea_repository_branch_protection.bp.status_check_patterns)} not eq ${join(",", var.status_check_patterns)}"
}
assert {
condition = gitea_repository_branch_protection.bp.merge_whitelist_users == var.merge_whitelist_users
error_message = "${join(",", gitea_repository_branch_protection.bp.merge_whitelist_users)} not eq ${join(",", var.merge_whitelist_users)}"
}
assert {
condition = gitea_repository_branch_protection.bp.merge_whitelist_teams == var.merge_whitelist_teams
error_message = "${join(",", gitea_repository_branch_protection.bp.merge_whitelist_teams)} not eq ${join(",", var.merge_whitelist_teams)}"
}
assert {
condition = gitea_repository_branch_protection.bp.block_merge_on_rejected_reviews == var.block_merge_on_rejected_reviews
error_message = "${gitea_repository_branch_protection.bp.block_merge_on_rejected_reviews} not eq ${var.block_merge_on_rejected_reviews}"
}
assert {
condition = gitea_repository_branch_protection.bp.block_merge_on_official_review_requests == var.block_merge_on_official_review_requests
error_message = "${gitea_repository_branch_protection.bp.block_merge_on_official_review_requests} not eq ${var.block_merge_on_official_review_requests}"
}
assert {
condition = gitea_repository_branch_protection.bp.block_merge_on_outdated_branch == var.block_merge_on_outdated_branch
error_message = "${gitea_repository_branch_protection.bp.block_merge_on_outdated_branch} not eq ${var.block_merge_on_outdated_branch}"
}
}
run "simple_params" {
variables {
rule_name = "simple_params"
protected_file_patterns = "foobar.yaml"
unprotected_file_patterns = "foobar.yaml"
require_signed_commits = true
required_approvals = 10
dismiss_stale_approvals = true
block_merge_on_rejected_reviews = true
block_merge_on_official_review_requests = true
block_merge_on_outdated_branch = true
}
assert {
condition = gitea_repository_branch_protection.bp.protected_file_patterns == var.protected_file_patterns
error_message = "${gitea_repository_branch_protection.bp.protected_file_patterns} not eq ${var.protected_file_patterns}"
}
assert {
condition = gitea_repository_branch_protection.bp.unprotected_file_patterns == var.unprotected_file_patterns
error_message = "${gitea_repository_branch_protection.bp.unprotected_file_patterns} not eq ${var.unprotected_file_patterns}"
}
assert {
condition = gitea_repository_branch_protection.bp.require_signed_commits == var.require_signed_commits
error_message = "${gitea_repository_branch_protection.bp.require_signed_commits} not eq ${var.require_signed_commits}"
}
assert {
condition = gitea_repository_branch_protection.bp.required_approvals == var.required_approvals
error_message = "${gitea_repository_branch_protection.bp.required_approvals} not eq ${var.required_approvals}"
}
assert {
condition = gitea_repository_branch_protection.bp.dismiss_stale_approvals == var.dismiss_stale_approvals
error_message = "${gitea_repository_branch_protection.bp.dismiss_stale_approvals} not eq ${var.dismiss_stale_approvals}"
}
assert {
condition = gitea_repository_branch_protection.bp.block_merge_on_rejected_reviews == var.block_merge_on_rejected_reviews
error_message = "${gitea_repository_branch_protection.bp.block_merge_on_rejected_reviews} not eq ${var.block_merge_on_rejected_reviews}"
}
assert {
condition = gitea_repository_branch_protection.bp.block_merge_on_official_review_requests == var.block_merge_on_official_review_requests
error_message = "${gitea_repository_branch_protection.bp.block_merge_on_official_review_requests} not eq ${var.block_merge_on_official_review_requests}"
}
assert {
condition = gitea_repository_branch_protection.bp.block_merge_on_outdated_branch == var.block_merge_on_outdated_branch
error_message = "${gitea_repository_branch_protection.bp.block_merge_on_outdated_branch} not eq ${var.block_merge_on_outdated_branch}"
}
}
run "enable_push" {
variables {
rule_name = "enable_push"
enable_push = true
}
assert {
condition = gitea_repository_branch_protection.bp.enable_push == var.enable_push
error_message = "${gitea_repository_branch_protection.bp.enable_push} not eq ${var.enable_push}"
}
assert {
condition = gitea_repository_branch_protection.bp.enable_push_whitelist == false
error_message = "${gitea_repository_branch_protection.bp.enable_push_whitelist} not eq `false`"
}
}
run "implicit_push_whitelist_with_users" {
variables {
enable_push = true
rule_name = "implicit_and_push_whitelist_with_users"
push_whitelist_users = ["test_user"]
}
assert {
condition = gitea_repository_branch_protection.bp.enable_push_whitelist == true
error_message = "${gitea_repository_branch_protection.bp.enable_push_whitelist} not eq `true`"
}
assert {
condition = gitea_repository_branch_protection.bp.push_whitelist_users == tolist(var.push_whitelist_users)
error_message = "${join(",", gitea_repository_branch_protection.bp.push_whitelist_users)} not eq ${join(",", var.push_whitelist_users)}"
}
}
run "implicit_push_whitelist_with_teams" {
variables {
rule_name = "implicit_and_push_whitelist_with_teams"
repo_user_name = "test-org"
enable_push = true
push_whitelist_teams = ["Owners"]
}
assert {
condition = gitea_repository_branch_protection.bp.enable_push_whitelist == true
error_message = "${gitea_repository_branch_protection.bp.enable_push_whitelist} not eq `true`"
}
assert {
condition = gitea_repository_branch_protection.bp.push_whitelist_teams == tolist(var.push_whitelist_teams)
error_message = "${join(",", gitea_repository_branch_protection.bp.push_whitelist_teams)} not eq ${join(",", var.push_whitelist_teams)}"
}
}
run "implicit_push_whitelist_with_deploy_keys" {
variables {
rule_name = "implicit_push_whitelist_with_deploy_keys"
enable_push = true
push_whitelist_deploy_keys = true
}
assert {
condition = gitea_repository_branch_protection.bp.enable_push_whitelist == true
error_message = "${gitea_repository_branch_protection.bp.enable_push_whitelist} not eq `true`"
}
assert {
condition = gitea_repository_branch_protection.bp.push_whitelist_deploy_keys == var.push_whitelist_deploy_keys
error_message = "${gitea_repository_branch_protection.bp.push_whitelist_deploy_keys} not eq ${var.push_whitelist_deploy_keys}"
}
}
run "implicit_enable_approve_whitelist_with_users" {
variables {
rule_name = "implicit_enable_approve_whitelist_with_users"
approval_whitelist_users = ["test_user"]
}
assert {
condition = gitea_repository_branch_protection.bp.enable_approval_whitelist == true
error_message = "${gitea_repository_branch_protection.bp.enable_approval_whitelist} not eq `true`"
}
assert {
condition = gitea_repository_branch_protection.bp.approval_whitelist_users == tolist(var.approval_whitelist_users)
error_message = "${join(",", gitea_repository_branch_protection.bp.approval_whitelist_users)} not eq ${join(",", var.approval_whitelist_users)}"
}
}
run "implicit_enable_approve_whitelist_with_teams" {
variables {
rule_name = "implicit_enable_approve_whitelist_with_teams"
repo_user_name = "test-org"
approval_whitelist_teams = ["Owners"]
}
assert {
condition = gitea_repository_branch_protection.bp.enable_approval_whitelist == true
error_message = "${gitea_repository_branch_protection.bp.enable_approval_whitelist} not eq `true`"
}
assert {
condition = gitea_repository_branch_protection.bp.approval_whitelist_teams == tolist(var.approval_whitelist_teams)
error_message = "${join(",", gitea_repository_branch_protection.bp.approval_whitelist_teams)} not eq ${join(",", var.approval_whitelist_teams)}"
}
}
run "implicit_enable_merge_whitelist_with_users" {
variables {
rule_name = "implicit_enable_merge_whitelist_with_users"
merge_whitelist_users = ["test_user"]
}
assert {
condition = gitea_repository_branch_protection.bp.enable_merge_whitelist == true
error_message = "${gitea_repository_branch_protection.bp.enable_merge_whitelist} not eq `true`"
}
assert {
condition = gitea_repository_branch_protection.bp.merge_whitelist_users == tolist(var.merge_whitelist_users)
error_message = "${join(",", gitea_repository_branch_protection.bp.merge_whitelist_users)} not eq ${join(",", var.merge_whitelist_users)}"
}
}
run "implicit_enable_merge_whitelist_with_teams" {
variables {
rule_name = "implicit_enable_merge_whitelist_with_teams"
repo_user_name = "test-org"
merge_whitelist_teams = ["Owners"]
}
assert {
condition = gitea_repository_branch_protection.bp.enable_merge_whitelist == true
error_message = "${gitea_repository_branch_protection.bp.enable_merge_whitelist} not eq `true`"
}
assert {
condition = gitea_repository_branch_protection.bp.merge_whitelist_teams == tolist(var.merge_whitelist_teams)
error_message = "${join(",", gitea_repository_branch_protection.bp.merge_whitelist_teams)} not eq ${join(",", var.merge_whitelist_teams)}"
}
}
run "implicit_enable_status_check" {
variables {
rule_name = "implicit_enable_status_check"
status_check_patterns = ["terraform-tests", "tf fmt"]
}
assert {
condition = gitea_repository_branch_protection.bp.enable_status_check == true
error_message = "${gitea_repository_branch_protection.bp.enable_status_check} not eq `true`"
}
assert {
condition = gitea_repository_branch_protection.bp.status_check_patterns == tolist(var.status_check_patterns)
error_message = "${join(",", gitea_repository_branch_protection.bp.status_check_patterns)} not eq ${join(",", var.status_check_patterns)}"
}
}

14
tests/readme.md Normal file
View File

@ -0,0 +1,14 @@
# How to run tests
```bash
docker run -p 3000:3000 gitea/gitea:latest-rootless
```
1. Setup gitea under http://localhost:3000
2. Username: gitea_admin
3. Password: gitea_admin
4. Email: admin@gitea.local
```bash
terraform test
```

22
tests/setup/main.tf Normal file
View File

@ -0,0 +1,22 @@
resource "gitea_org" "test_org" {
name = var.org_name
}
resource "gitea_repository" "org_repo" {
username = gitea_org.test_org.name
name = var.repo_name
}
resource "gitea_user" "test_user" {
password = "Geheim1!"
email = "terraform@local.host"
username = var.user_name
login_name = var.user_name
must_change_password = false
}
resource "gitea_repository" "user_repo" {
username = gitea_user.test_user.username
name = var.repo_name
}

15
tests/setup/variables.tf Normal file
View File

@ -0,0 +1,15 @@
variable "repo_name" {
type = string
default = "test-repo"
}
variable "org_name" {
type = string
default = "test-org"
}
variable "user_name" {
type = string
default = "test_user"
}

16
tests/setup/versions.tf Normal file
View File

@ -0,0 +1,16 @@
terraform {
required_providers {
gitea = {
source = "go-gitea/gitea"
version = "0.3.0"
}
}
required_version = ">= 0.13"
}
provider "gitea" {
base_url = "http://localhost:3000"
username = "gitea_admin"
password = "gitea_admin"
insecure = true
}

117
tests/variables.tf Normal file
View File

@ -0,0 +1,117 @@
variable "repo_name" {
type = string
default = "test-repo"
}
variable "org_name" {
type = string
default = "test-org"
}
variable "repo_user_name" {
type = string
default = "test_user"
}
variable "user_name" {
type = string
default = "test_user"
}
variable "rule_name" {
type = string
default = "branch-protection"
}
variable "protected_file_patterns" {
type = string
default = ""
}
variable "unprotected_file_patterns" {
type = string
default = ""
}
variable "enable_push" {
type = bool
default = true
}
variable "push_whitelist_users" {
type = list(string)
default = []
}
variable "push_whitelist_teams" {
type = list(string)
default = []
}
variable "push_whitelist_deploy_keys" {
type = bool
default = false
}
variable "require_signed_commits" {
type = bool
default = false
}
variable "required_approvals" {
type = number
default = 0
}
variable "approval_whitelist_users" {
type = list(string)
default = []
}
variable "approval_whitelist_teams" {
type = list(string)
default = []
}
variable "dismiss_stale_approvals" {
type = bool
default = false
}
variable "status_check_patterns" {
type = list(string)
default = []
}
variable "merge_whitelist_users" {
type = list(string)
default = []
}
variable "merge_whitelist_teams" {
type = list(string)
default = []
}
variable "block_merge_on_rejected_reviews" {
type = bool
default = false
}
variable "block_merge_on_official_review_requests" {
type = bool
default = false
}
variable "block_merge_on_outdated_branch" {
type = bool
default = false
}
# // not implemented in go-gitea-sdk
//
# //
# // "ignore_stale_approvals": {
# // Description: `Do not count approvals that were made on older commits (stale reviews) towards how many approvals the PR has. Irrelevant if stale reviews are already dismissed.`,
# // },

16
tests/versions.tf Normal file
View File

@ -0,0 +1,16 @@
terraform {
required_providers {
gitea = {
source = "go-gitea/gitea"
version = "0.3.0"
}
}
required_version = ">= 0.13"
}
provider "gitea" {
base_url = "http://localhost:3000"
username = "gitea_admin"
password = "gitea_admin"
insecure = true
}