feat: move to forgejo sdk

This commit is contained in:
sinavir 2025-03-08 23:34:32 +01:00
parent d9bf396917
commit 9e053a1c5c
No known key found for this signature in database
35 changed files with 316 additions and 714 deletions

View file

@ -1,5 +1,5 @@
TEST?=./gitea
GOFMT_FILES?=$$(find . -name '*.go' |grep -v vendor) GOFMT_FILES?=$$(find . -name '*.go' |grep -v vendor)
TEST?=./forgejo
GOFMT ?= gofmt -s GOFMT ?= gofmt -s
ARCH?=$$(uname -m | sed 's/x86_64/amd64/g') ARCH?=$$(uname -m | sed 's/x86_64/amd64/g')
KERNEL?=$$(uname -s | tr '[:upper:]' '[:lower:]') KERNEL?=$$(uname -s | tr '[:upper:]' '[:lower:]')

View file

@ -1,4 +1,4 @@
package gitea package forgejo
import ( import (
"crypto/tls" "crypto/tls"
@ -8,11 +8,11 @@ import (
"net/http" "net/http"
"time" "time"
"code.gitea.io/sdk/gitea" "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/logging" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/logging"
) )
// Config is per-provider, specifies where to connect to gitea // Config is per-provider, specifies where to connect to forgejo
type Config struct { type Config struct {
Token string Token string
Username string Username string
@ -22,7 +22,7 @@ type Config struct {
CACertFile string CACertFile string
} }
// Client returns a *gitea.Client to interact with the configured gitea instance // Client returns a *forgejo.Client to interact with the configured forgejo instance
func (c *Config) Client() (interface{}, error) { func (c *Config) Client() (interface{}, error) {
if c.Token == "" && c.Username == "" { if c.Token == "" && c.Username == "" {
@ -55,20 +55,20 @@ func (c *Config) Client() (interface{}, error) {
} }
if c.BaseURL == "" { if c.BaseURL == "" {
c.BaseURL = "https://gitea.com" c.BaseURL = "https://forgejo.com"
} }
var client *gitea.Client var client *forgejo.Client
var err error var err error
if c.Token != "" { if c.Token != "" {
client, err = gitea.NewClient(c.BaseURL, gitea.SetToken(c.Token), gitea.SetHTTPClient(httpClient)) client, err = forgejo.NewClient(c.BaseURL, forgejo.SetToken(c.Token), forgejo.SetHTTPClient(httpClient))
if err != nil { if err != nil {
return nil, err return nil, err
} }
} }
if c.Username != "" { if c.Username != "" {
client, err = gitea.NewClient(c.BaseURL, gitea.SetBasicAuth(c.Username, c.Password), gitea.SetHTTPClient(httpClient)) client, err = forgejo.NewClient(c.BaseURL, forgejo.SetBasicAuth(c.Username, c.Password), forgejo.SetHTTPClient(httpClient))
if err != nil { if err != nil {
return nil, err return nil, err
} }

View file

@ -1,11 +1,11 @@
package gitea package forgejo
import ( import (
"fmt" "fmt"
"log" "log"
"strings" "strings"
"code.gitea.io/sdk/gitea" "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
) )
@ -51,9 +51,9 @@ func dataSourceGiteaOrg() *schema.Resource {
} }
func dataSourceGiteaOrgRead(d *schema.ResourceData, meta interface{}) error { func dataSourceGiteaOrgRead(d *schema.ResourceData, meta interface{}) error {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
var org *gitea.Organization var org *forgejo.Organization
var err error var err error
log.Printf("[INFO] Reading Gitea Org") log.Printf("[INFO] Reading Gitea Org")

View file

@ -1,10 +1,10 @@
package gitea package forgejo
import ( import (
"fmt" "fmt"
"strings" "strings"
"code.gitea.io/sdk/gitea" "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
) )
@ -108,7 +108,7 @@ func dataSourceGiteaRepo() *schema.Resource {
} }
func dataSourceGiteaRepoRead(d *schema.ResourceData, meta interface{}) error { func dataSourceGiteaRepoRead(d *schema.ResourceData, meta interface{}) error {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
usernameData, usernameOk := d.GetOk("username") usernameData, usernameOk := d.GetOk("username")
if !usernameOk { if !usernameOk {

View file

@ -0,0 +1 @@
package forgejo

View file

@ -0,0 +1 @@
package forgejo

View file

@ -0,0 +1 @@
package forgejo

View file

@ -1,11 +1,11 @@
package gitea package forgejo
import ( import (
"fmt" "fmt"
"log" "log"
"strings" "strings"
"code.gitea.io/sdk/gitea" "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
) )
@ -55,9 +55,9 @@ func dataSourceGiteaUser() *schema.Resource {
} }
func dataSourceGiteaUserRead(d *schema.ResourceData, meta interface{}) error { func dataSourceGiteaUserRead(d *schema.ResourceData, meta interface{}) error {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
var user *gitea.User var user *forgejo.User
var err error var err error
log.Printf("[INFO] Reading Gitea user") log.Printf("[INFO] Reading Gitea user")

View file

@ -1,4 +1,4 @@
package gitea package forgejo
import ( import (
"fmt" "fmt"
@ -18,13 +18,13 @@ func TestAccDataSourceGiteaUser_basic(t *testing.T) {
{ {
Config: testAccDataGiteaUserConfigUsername(), Config: testAccDataGiteaUserConfigUsername(),
Check: resource.ComposeTestCheckFunc( Check: resource.ComposeTestCheckFunc(
testAccDataSourceGiteaUser("data.gitea_user.foo"), testAccDataSourceGiteaUser("data.forgejo_user.foo"),
), ),
}, },
{ {
Config: testAccDataGiteaUserConfigUsername(), Config: testAccDataGiteaUserConfigUsername(),
Check: resource.ComposeTestCheckFunc( Check: resource.ComposeTestCheckFunc(
testAccDataSourceGiteaUser("data.gitea_user.self"), testAccDataSourceGiteaUser("data.forgejo_user.self"),
), ),
}, },
}, },
@ -53,10 +53,10 @@ func testAccDataSourceGiteaUser(src string) resource.TestCheckFunc {
func testAccDataGiteaUserConfigUsername() string { func testAccDataGiteaUserConfigUsername() string {
return fmt.Sprintf(` return fmt.Sprintf(`
data "gitea_user" "foo" { data "forgejo_user" "foo" {
username = "test01" username = "test01"
} }
data "gitea_user" "self" { data "forgejo_user" "self" {
} }
`) `)
} }

View file

@ -0,0 +1 @@
package forgejo

View file

@ -1,4 +1,4 @@
package gitea package forgejo
import ( import (
"fmt" "fmt"
@ -62,34 +62,32 @@ func Provider() *schema.Provider {
}, },
DataSourcesMap: map[string]*schema.Resource{ DataSourcesMap: map[string]*schema.Resource{
"gitea_user": dataSourceGiteaUser(), "forgejo_user": dataSourceGiteaUser(),
"gitea_org": dataSourceGiteaOrg(), "forgejo_org": dataSourceGiteaOrg(),
// "gitea_team": dataSourceGiteaTeam(), // "forgejo_team": dataSourceGiteaTeam(),
// "gitea_teams": dataSourceGiteaTeams(), // "forgejo_teams": dataSourceGiteaTeams(),
// "gitea_team_members": dataSourceGiteaTeamMembers(), // "forgejo_team_members": dataSourceGiteaTeamMembers(),
"gitea_repo": dataSourceGiteaRepo(), "forgejo_repo": dataSourceGiteaRepo(),
// "gitea_repos": dataSourceGiteaRepos(), // "forgejo_repos": dataSourceGiteaRepos(),
}, },
ResourcesMap: map[string]*schema.Resource{ ResourcesMap: map[string]*schema.Resource{
"gitea_org": resourceGiteaOrg(), "forgejo_org": resourceGiteaOrg(),
// "gitea_team": resourceGiteaTeam(), // "forgejo_team": resourceGiteaTeam(),
// "gitea_repo": resourceGiteaRepo(), // "forgejo_repo": resourceGiteaRepo(),
"gitea_user": resourceGiteaUser(), "forgejo_user": resourceGiteaUser(),
"gitea_oauth2_app": resourceGiteaOauthApp(), "forgejo_oauth2_app": resourceGiteaOauthApp(),
"gitea_repository": resourceGiteaRepository(), "forgejo_repository": resourceGiteaRepository(),
"gitea_fork": resourceGiteaFork(), "forgejo_fork": resourceGiteaFork(),
"gitea_public_key": resourceGiteaPublicKey(), "forgejo_public_key": resourceGiteaPublicKey(),
"gitea_team": resourceGiteaTeam(), "forgejo_team": resourceGiteaTeam(),
"gitea_team_membership": resourceGiteaTeamMembership(), "forgejo_team_membership": resourceGiteaTeamMembership(),
"gitea_team_members": resourceGiteaTeamMembers(), "forgejo_team_members": resourceGiteaTeamMembers(),
"gitea_git_hook": resourceGiteaGitHook(), "forgejo_git_hook": resourceGiteaGitHook(),
"gitea_token": resourceGiteaToken(), "forgejo_token": resourceGiteaToken(),
"gitea_repository_key": resourceGiteaRepositoryKey(), "forgejo_repository_key": resourceGiteaRepositoryKey(),
"gitea_repository_webhook": resourceGiteaRepositoryWebhook(), "forgejo_repository_webhook": resourceGiteaRepositoryWebhook(),
"gitea_repository_branch_protection": resourceGiteaRepositoryBranchProtection(), "forgejo_repository_branch_protection": resourceGiteaRepositoryBranchProtection(),
"gitea_repository_actions_variable": resourceGiteaRepositoryActionsVariable(),
"gitea_repository_actions_secret": resourceGiteaRepositoryActionsSecret(),
}, },
ConfigureFunc: providerConfigure, ConfigureFunc: providerConfigure,
@ -125,10 +123,10 @@ func providerConfigure(d *schema.ResourceData) (interface{}, error) {
func validateAPIURLVersion(value interface{}, key string) (ws []string, es []error) { func validateAPIURLVersion(value interface{}, key string) (ws []string, es []error) {
v := value.(string) v := value.(string)
if strings.HasSuffix(v, "/api/v1") || strings.HasSuffix(v, "/api/v1/") { if strings.HasSuffix(v, "/api/v1") || strings.HasSuffix(v, "/api/v1/") {
es = append(es, fmt.Errorf("terraform-gitea-provider base URL format is incorrect; Please leave out API Path %s", v)) es = append(es, fmt.Errorf("terraform-forgejo-provider base URL format is incorrect; Please leave out API Path %s", v))
} }
if strings.Contains(v, "localhost") && strings.Contains(v, ".") { if strings.Contains(v, "localhost") && strings.Contains(v, ".") {
es = append(es, fmt.Errorf("terraform-gitea-provider base URL violates RFC 2606; Please do not define a subdomain for localhost!")) es = append(es, fmt.Errorf("terraform-forgejo-provider base URL violates RFC 2606; Please do not define a subdomain for localhost!"))
} }
return return
} }

View file

@ -1,4 +1,4 @@
package gitea package forgejo
import ( import (
"os" "os"
@ -13,7 +13,7 @@ var testAccProvider *schema.Provider
func init() { func init() {
testAccProvider = Provider() testAccProvider = Provider()
testAccProviders = map[string]*schema.Provider{ testAccProviders = map[string]*schema.Provider{
"gitea": testAccProvider, "forgejo": testAccProvider,
} }
} }

View file

@ -1,10 +1,10 @@
package gitea package forgejo
import ( import (
"fmt" "fmt"
"strconv" "strconv"
"code.gitea.io/sdk/gitea" "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
) )
@ -15,9 +15,9 @@ const (
) )
func resourceForkCreate(d *schema.ResourceData, meta interface{}) (err error) { func resourceForkCreate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
var opts gitea.CreateForkOption var opts forgejo.CreateForkOption
var org string var org string
org = d.Get(forkOrganization).(string) org = d.Get(forkOrganization).(string)
if org != "" { if org != "" {
@ -34,10 +34,10 @@ func resourceForkCreate(d *schema.ResourceData, meta interface{}) (err error) {
} }
func resourceForkRead(d *schema.ResourceData, meta interface{}) (err error) { func resourceForkRead(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
id, err := strconv.ParseInt(d.Id(), 10, 64) id, err := strconv.ParseInt(d.Id(), 10, 64)
var resp *gitea.Response var resp *forgejo.Response
if err != nil { if err != nil {
return err return err
@ -60,7 +60,7 @@ func resourceForkRead(d *schema.ResourceData, meta interface{}) (err error) {
} }
func resourceForkDelete(d *schema.ResourceData, meta interface{}) (err error) { func resourceForkDelete(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
id, err := strconv.ParseInt(d.Id(), 10, 64) id, err := strconv.ParseInt(d.Id(), 10, 64)
@ -69,7 +69,7 @@ func resourceForkDelete(d *schema.ResourceData, meta interface{}) (err error) {
} }
repo, _, err := client.GetRepoByID(id) repo, _, err := client.GetRepoByID(id)
var resp *gitea.Response var resp *forgejo.Response
resp, err = client.DeleteRepo(repo.Owner.UserName, repo.Name) resp, err = client.DeleteRepo(repo.Owner.UserName, repo.Name)
@ -84,7 +84,7 @@ func resourceForkDelete(d *schema.ResourceData, meta interface{}) (err error) {
return return
} }
func setForkResourceData(repo *gitea.Repository, d *schema.ResourceData) (err error) { func setForkResourceData(repo *forgejo.Repository, d *schema.ResourceData) (err error) {
d.SetId(fmt.Sprintf("%d", repo.ID)) d.SetId(fmt.Sprintf("%d", repo.ID))
@ -120,7 +120,7 @@ func resourceGiteaFork() *schema.Resource {
Description: "The organization that owns the forked repo", Description: "The organization that owns the forked repo",
}, },
}, },
Description: "`gitea_fork` manages repository fork to the current user or an organisation\n" + Description: "`forgejo_fork` manages repository fork to the current user or an organisation\n" +
"Forking a repository to a dedicated user is currently unsupported\n" + "Forking a repository to a dedicated user is currently unsupported\n" +
"Creating a fork using this resource without an organisation will create the fork in the executors name", "Creating a fork using this resource without an organisation will create the fork in the executors name",
} }

View file

@ -1,9 +1,9 @@
package gitea package forgejo
import ( import (
"fmt" "fmt"
"code.gitea.io/sdk/gitea" "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
) )
@ -15,7 +15,7 @@ const (
) )
func resourceGitHookRead(d *schema.ResourceData, meta interface{}) (err error) { func resourceGitHookRead(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
user := d.Get(GitHookUser).(string) user := d.Get(GitHookUser).(string)
repo := d.Get(GitHookRepo).(string) repo := d.Get(GitHookRepo).(string)
@ -33,13 +33,13 @@ func resourceGitHookRead(d *schema.ResourceData, meta interface{}) (err error) {
} }
func resourceGitHookUpdate(d *schema.ResourceData, meta interface{}) (err error) { func resourceGitHookUpdate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
user := d.Get(GitHookUser).(string) user := d.Get(GitHookUser).(string)
repo := d.Get(GitHookRepo).(string) repo := d.Get(GitHookRepo).(string)
name := d.Get(GitHookName).(string) name := d.Get(GitHookName).(string)
opts := gitea.EditGitHookOption{ opts := forgejo.EditGitHookOption{
Content: d.Get(GitHookContent).(string), Content: d.Get(GitHookContent).(string),
} }
@ -62,7 +62,7 @@ func resourceGitHookUpdate(d *schema.ResourceData, meta interface{}) (err error)
} }
func resourceGitHookDelete(d *schema.ResourceData, meta interface{}) (err error) { func resourceGitHookDelete(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
user := d.Get(GitHookUser).(string) user := d.Get(GitHookUser).(string)
repo := d.Get(GitHookRepo).(string) repo := d.Get(GitHookRepo).(string)
@ -73,7 +73,7 @@ func resourceGitHookDelete(d *schema.ResourceData, meta interface{}) (err error)
return return
} }
func setGitHookResourceData(user string, repo string, gitHook *gitea.GitHook, d *schema.ResourceData) (err error) { func setGitHookResourceData(user string, repo string, gitHook *forgejo.GitHook, d *schema.ResourceData) (err error) {
d.SetId(fmt.Sprintf("%s/%s/%s", user, repo, gitHook.Name)) d.SetId(fmt.Sprintf("%s/%s/%s", user, repo, gitHook.Name))
d.Set(GitHookUser, user) d.Set(GitHookUser, user)
d.Set(GitHookRepo, repo) d.Set(GitHookRepo, repo)
@ -110,11 +110,11 @@ func resourceGiteaGitHook() *schema.Resource {
Description: "Content of the git hook", Description: "Content of the git hook",
}, },
}, },
Description: "`gitea_git_hook` manages git hooks on a repository.\n" + Description: "`forgejo_git_hook` manages git hooks on a repository.\n" +
"import is currently not supported\n\n" + "import is currently not supported\n\n" +
"WARNING: using this resource requires to enable server side hooks" + "WARNING: using this resource requires to enable server side hooks" +
"which are known to cause [security issues](https://github.com/go-gitea/gitea/pull/13058)!\n\n" + "which are known to cause [security issues](https://github.com/go-forgejo/forgejo/pull/13058)!\n\n" +
"if you want to procede, you need to enable server side hooks as stated" + "if you want to procede, you need to enable server side hooks as stated" +
" [here](https://docs.gitea.io/en-us/config-cheat-sheet/#security-security)", " [here](https://docs.forgejo.io/en-us/config-cheat-sheet/#security-security)",
} }
} }

View file

@ -1,9 +1,9 @@
package gitea package forgejo
import ( import (
"fmt" "fmt"
"code.gitea.io/sdk/gitea" "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
) )
@ -56,7 +56,7 @@ func resourceGiteaOauthApp() *schema.Resource {
Description: "Oauth2 Application client secret", Description: "Oauth2 Application client secret",
}, },
}, },
Description: "Handling [gitea oauth application](https://docs.gitea.io/en-us/oauth2-provider/) resources", Description: "Handling [forgejo oauth application](https://docs.forgejo.io/en-us/oauth2-provider/) resources",
} }
} }
@ -80,7 +80,7 @@ func CollapseStringList(strlist []string) []interface{} {
} }
func resourceOauth2AppUpcreate(d *schema.ResourceData, meta interface{}) (err error) { func resourceOauth2AppUpcreate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
redirectURIsSchema, redirectURIsSchemaOk := d.Get(oauth2KeyRedirectURIs).(*schema.Set) redirectURIsSchema, redirectURIsSchemaOk := d.Get(oauth2KeyRedirectURIs).(*schema.Set)
@ -102,13 +102,13 @@ func resourceOauth2AppUpcreate(d *schema.ResourceData, meta interface{}) (err er
return fmt.Errorf("attribute %s must be set and must be a bool", oauth2KeyConfidentialClient) return fmt.Errorf("attribute %s must be set and must be a bool", oauth2KeyConfidentialClient)
} }
opts := gitea.CreateOauth2Option{ opts := forgejo.CreateOauth2Option{
Name: name, Name: name,
ConfidentialClient: confidentialClient, ConfidentialClient: confidentialClient,
RedirectURIs: redirectURIs, RedirectURIs: redirectURIs,
} }
var oauth2 *gitea.Oauth2 var oauth2 *forgejo.Oauth2
if d.IsNewResource() { if d.IsNewResource() {
oauth2, _, err = client.CreateOauth2(opts) oauth2, _, err = client.CreateOauth2(opts)
@ -131,12 +131,12 @@ func resourceOauth2AppUpcreate(d *schema.ResourceData, meta interface{}) (err er
return return
} }
func searchOauth2AppByClientId(c *gitea.Client, id string) (res *gitea.Oauth2, err error) { func searchOauth2AppByClientId(c *forgejo.Client, id string) (res *forgejo.Oauth2, err error) {
page := 1 page := 1
for { for {
apps, _, err := c.ListOauth2(gitea.ListOauth2Option{ apps, _, err := c.ListOauth2(forgejo.ListOauth2Option{
ListOptions: gitea.ListOptions{ ListOptions: forgejo.ListOptions{
Page: page, Page: page,
PageSize: 50, PageSize: 50,
}, },
@ -159,7 +159,7 @@ func searchOauth2AppByClientId(c *gitea.Client, id string) (res *gitea.Oauth2, e
} }
func resourceOauth2AppRead(d *schema.ResourceData, meta interface{}) (err error) { func resourceOauth2AppRead(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
app, err := searchOauth2AppByClientId(client, d.Id()) app, err := searchOauth2AppByClientId(client, d.Id())
@ -173,7 +173,7 @@ func resourceOauth2AppRead(d *schema.ResourceData, meta interface{}) (err error)
} }
func resourceOauth2AppDelete(d *schema.ResourceData, meta interface{}) (err error) { func resourceOauth2AppDelete(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
app, err := searchOauth2AppByClientId(client, d.Id()) app, err := searchOauth2AppByClientId(client, d.Id())
@ -186,7 +186,7 @@ func resourceOauth2AppDelete(d *schema.ResourceData, meta interface{}) (err erro
return return
} }
func setOAuth2ResourceData(app *gitea.Oauth2, d *schema.ResourceData) (err error) { func setOAuth2ResourceData(app *forgejo.Oauth2, d *schema.ResourceData) (err error) {
d.SetId(app.ClientID) d.SetId(app.ClientID)
for k, v := range map[string]interface{}{ for k, v := range map[string]interface{}{

View file

@ -1,10 +1,10 @@
package gitea package forgejo
import ( import (
"fmt" "fmt"
"strconv" "strconv"
"code.gitea.io/sdk/gitea" "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
) )
@ -20,13 +20,13 @@ const (
) )
// might come in handy if we want to stick to numeric IDs // might come in handy if we want to stick to numeric IDs
func searchOrgByClientId(c *gitea.Client, id int64) (res *gitea.Organization, err error) { func searchOrgByClientId(c *forgejo.Client, id int64) (res *forgejo.Organization, err error) {
page := 1 page := 1
for { for {
orgs, _, err := c.AdminListOrgs(gitea.AdminListOrgsOptions{ orgs, _, err := c.AdminListOrgs(forgejo.AdminListOrgsOptions{
ListOptions: gitea.ListOptions{ ListOptions: forgejo.ListOptions{
Page: page, Page: page,
PageSize: 50, PageSize: 50,
}, },
@ -49,12 +49,12 @@ func searchOrgByClientId(c *gitea.Client, id int64) (res *gitea.Organization, er
} }
} }
func getAllOrgRepos(c *gitea.Client, orgName string) (repos []string, err error) { func getAllOrgRepos(c *forgejo.Client, orgName string) (repos []string, err error) {
page := 1 page := 1
for { for {
repoBuffer, _, err := c.ListOrgRepos(orgName, gitea.ListOrgReposOptions{ repoBuffer, _, err := c.ListOrgRepos(orgName, forgejo.ListOrgReposOptions{
ListOptions: gitea.ListOptions{ ListOptions: forgejo.ListOptions{
Page: page, Page: page,
PageSize: 50, PageSize: 50,
}, },
@ -76,9 +76,9 @@ func getAllOrgRepos(c *gitea.Client, orgName string) (repos []string, err error)
} }
func resourceOrgRead(d *schema.ResourceData, meta interface{}) (err error) { func resourceOrgRead(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
var org *gitea.Organization var org *forgejo.Organization
id, err := strconv.ParseInt(d.Id(), 10, 64) id, err := strconv.ParseInt(d.Id(), 10, 64)
@ -96,15 +96,15 @@ func resourceOrgRead(d *schema.ResourceData, meta interface{}) (err error) {
} }
func resourceOrgCreate(d *schema.ResourceData, meta interface{}) (err error) { func resourceOrgCreate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
opts := gitea.CreateOrgOption{ opts := forgejo.CreateOrgOption{
Name: d.Get(orgName).(string), Name: d.Get(orgName).(string),
FullName: d.Get(orgFullName).(string), FullName: d.Get(orgFullName).(string),
Description: d.Get(orgDescription).(string), Description: d.Get(orgDescription).(string),
Website: d.Get(orgWebsite).(string), Website: d.Get(orgWebsite).(string),
Location: d.Get(orgLocation).(string), Location: d.Get(orgLocation).(string),
Visibility: gitea.VisibleType(d.Get(orgVisibility).(string)), Visibility: forgejo.VisibleType(d.Get(orgVisibility).(string)),
RepoAdminChangeTeamAccess: d.Get(RepoAdminChangeTeamAccess).(bool), RepoAdminChangeTeamAccess: d.Get(RepoAdminChangeTeamAccess).(bool),
} }
@ -120,10 +120,10 @@ func resourceOrgCreate(d *schema.ResourceData, meta interface{}) (err error) {
} }
func resourceOrgUpdate(d *schema.ResourceData, meta interface{}) (err error) { func resourceOrgUpdate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
var org *gitea.Organization var org *forgejo.Organization
var resp *gitea.Response var resp *forgejo.Response
org, resp, err = client.GetOrg(d.Get(orgName).(string)) org, resp, err = client.GetOrg(d.Get(orgName).(string))
@ -135,12 +135,12 @@ func resourceOrgUpdate(d *schema.ResourceData, meta interface{}) (err error) {
} }
} }
opts := gitea.EditOrgOption{ opts := forgejo.EditOrgOption{
FullName: d.Get(orgFullName).(string), FullName: d.Get(orgFullName).(string),
Description: d.Get(orgDescription).(string), Description: d.Get(orgDescription).(string),
Website: d.Get(orgWebsite).(string), Website: d.Get(orgWebsite).(string),
Location: d.Get(orgLocation).(string), Location: d.Get(orgLocation).(string),
Visibility: gitea.VisibleType(d.Get(orgVisibility).(string)), Visibility: forgejo.VisibleType(d.Get(orgVisibility).(string)),
} }
client.EditOrg(d.Get(orgName).(string), opts) client.EditOrg(d.Get(orgName).(string), opts)
@ -154,9 +154,9 @@ func resourceOrgUpdate(d *schema.ResourceData, meta interface{}) (err error) {
} }
func resourceOrgDelete(d *schema.ResourceData, meta interface{}) (err error) { func resourceOrgDelete(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
var resp *gitea.Response var resp *forgejo.Response
resp, err = client.DeleteOrg(d.Get(orgName).(string)) resp, err = client.DeleteOrg(d.Get(orgName).(string))
@ -171,7 +171,7 @@ func resourceOrgDelete(d *schema.ResourceData, meta interface{}) (err error) {
return return
} }
func setOrgResourceData(org *gitea.Organization, d *schema.ResourceData, repos *[]string) (err error) { func setOrgResourceData(org *forgejo.Organization, d *schema.ResourceData, repos *[]string) (err error) {
d.SetId(fmt.Sprintf("%d", org.ID)) d.SetId(fmt.Sprintf("%d", org.ID))
d.Set("name", org.UserName) d.Set("name", org.UserName)
d.Set("full_name", org.FullName) d.Set("full_name", org.FullName)
@ -250,7 +250,7 @@ func resourceGiteaOrg() *schema.Resource {
Elem: &schema.Schema{Type: schema.TypeString}, Elem: &schema.Schema{Type: schema.TypeString},
}, },
}, },
Description: "`gitea_org` manages a gitea organisation.\n\n" + Description: "`forgejo_org` manages a forgejo organisation.\n\n" +
"Organisations are a way to group repositories and abstract permission management in a gitea instance.", "Organisations are a way to group repositories and abstract permission management in a forgejo instance.",
} }
} }

View file

@ -1,10 +1,10 @@
package gitea package forgejo
import ( import (
"fmt" "fmt"
"strconv" "strconv"
"code.gitea.io/sdk/gitea" "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
) )
@ -20,12 +20,12 @@ const (
) )
func resourcePublicKeyRead(d *schema.ResourceData, meta interface{}) (err error) { func resourcePublicKeyRead(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
id, err := strconv.ParseInt(d.Id(), 10, 64) id, err := strconv.ParseInt(d.Id(), 10, 64)
var resp *gitea.Response var resp *forgejo.Response
var pubKey *gitea.PublicKey var pubKey *forgejo.PublicKey
pubKey, resp, err = client.GetPublicKey(id) pubKey, resp, err = client.GetPublicKey(id)
@ -44,11 +44,11 @@ func resourcePublicKeyRead(d *schema.ResourceData, meta interface{}) (err error)
} }
func resourcePublicKeyCreate(d *schema.ResourceData, meta interface{}) (err error) { func resourcePublicKeyCreate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
var pubKey *gitea.PublicKey var pubKey *forgejo.PublicKey
opts := gitea.CreateKeyOption{ opts := forgejo.CreateKeyOption{
Title: d.Get(PublicKeyTitle).(string), Title: d.Get(PublicKeyTitle).(string),
Key: d.Get(PublicKey).(string), Key: d.Get(PublicKey).(string),
ReadOnly: d.Get(PublicKeyReadOnlyFlag).(bool), ReadOnly: d.Get(PublicKeyReadOnlyFlag).(bool),
@ -69,11 +69,11 @@ func resourcePublicKeyUpdate(d *schema.ResourceData, meta interface{}) (err erro
} }
func resourcePublicKeyDelete(d *schema.ResourceData, meta interface{}) (err error) { func resourcePublicKeyDelete(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
id, err := strconv.ParseInt(d.Id(), 10, 64) id, err := strconv.ParseInt(d.Id(), 10, 64)
var resp *gitea.Response var resp *forgejo.Response
resp, err = client.AdminDeleteUserPublicKey(d.Get(PublicKeyUser).(string), int(id)) resp, err = client.AdminDeleteUserPublicKey(d.Get(PublicKeyUser).(string), int(id))
@ -88,7 +88,7 @@ func resourcePublicKeyDelete(d *schema.ResourceData, meta interface{}) (err erro
return return
} }
func setPublicKeyResourceData(pubKey *gitea.PublicKey, d *schema.ResourceData) (err error) { func setPublicKeyResourceData(pubKey *forgejo.PublicKey, d *schema.ResourceData) (err error) {
d.SetId(fmt.Sprintf("%d", pubKey.ID)) d.SetId(fmt.Sprintf("%d", pubKey.ID))
d.Set(PublicKeyUser, d.Get(PublicKeyUser).(string)) d.Set(PublicKeyUser, d.Get(PublicKeyUser).(string))
d.Set(PublicKey, d.Get(PublicKey).(string)) d.Set(PublicKey, d.Get(PublicKey).(string))
@ -150,6 +150,6 @@ func resourceGiteaPublicKey() *schema.Resource {
Computed: true, Computed: true,
}, },
}, },
Description: "`gitea_public_key` manages ssh key that are associated with users.", Description: "`forgejo_public_key` manages ssh key that are associated with users.",
} }
} }

View file

@ -1,4 +1,4 @@
package gitea package forgejo
import ( import (
"context" "context"
@ -7,7 +7,7 @@ import (
"strconv" "strconv"
"strings" "strings"
"code.gitea.io/sdk/gitea" "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"github.com/hashicorp/terraform-plugin-log/tflog" "github.com/hashicorp/terraform-plugin-log/tflog"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
) )
@ -52,12 +52,12 @@ const (
migrationLFSEndpoint string = "migration_lfs_endpoint" migrationLFSEndpoint string = "migration_lfs_endpoint"
) )
func searchUserByName(c *gitea.Client, name string) (res *gitea.User, err error) { func searchUserByName(c *forgejo.Client, name string) (res *forgejo.User, err error) {
page := 1 page := 1
for { for {
users, _, err := c.AdminListUsers(gitea.AdminListUsersOptions{ users, _, err := c.AdminListUsers(forgejo.AdminListUsersOptions{
ListOptions: gitea.ListOptions{ ListOptions: forgejo.ListOptions{
Page: page, Page: page,
PageSize: 50, PageSize: 50,
}, },
@ -81,10 +81,10 @@ func searchUserByName(c *gitea.Client, name string) (res *gitea.User, err error)
} }
func resourceRepoRead(d *schema.ResourceData, meta interface{}) (err error) { func resourceRepoRead(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
id, err := strconv.ParseInt(d.Id(), 10, 64) id, err := strconv.ParseInt(d.Id(), 10, 64)
var resp *gitea.Response var resp *forgejo.Response
if err != nil { if err != nil {
return err return err
@ -107,10 +107,10 @@ func resourceRepoRead(d *schema.ResourceData, meta interface{}) (err error) {
} }
func resourceRepoCreate(d *schema.ResourceData, meta interface{}) (err error) { func resourceRepoCreate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
var repo *gitea.Repository var repo *forgejo.Repository
var resp *gitea.Response var resp *forgejo.Response
var orgRepo, hasAdmin bool var orgRepo, hasAdmin bool
_, resp, err = client.GetOrg(d.Get(repoOwner).(string)) _, resp, err = client.GetOrg(d.Get(repoOwner).(string))
@ -119,7 +119,7 @@ func resourceRepoCreate(d *schema.ResourceData, meta interface{}) (err error) {
_, err := searchUserByName(client, d.Get(repoOwner).(string)) _, err := searchUserByName(client, d.Get(repoOwner).(string))
if err != nil { if err != nil {
if strings.Contains(err.Error(), "could not be found") { if strings.Contains(err.Error(), "could not be found") {
return errors.New(fmt.Sprintf("Creation of repository cound not proceed as owner %s is not present in gitea", d.Get(repoOwner).(string))) return errors.New(fmt.Sprintf("Creation of repository cound not proceed as owner %s is not present in forgejo", d.Get(repoOwner).(string)))
} }
tflog.Warn(context.Background(), "Error query for users. Assuming missing permissions and proceding with user permissions") tflog.Warn(context.Background(), "Error query for users. Assuming missing permissions and proceding with user permissions")
hasAdmin = false hasAdmin = false
@ -140,11 +140,11 @@ func resourceRepoCreate(d *schema.ResourceData, meta interface{}) (err error) {
if cloneAddr != "" { if cloneAddr != "" {
opts := gitea.MigrateRepoOption{ opts := forgejo.MigrateRepoOption{
RepoName: d.Get(repoName).(string), RepoName: d.Get(repoName).(string),
RepoOwner: d.Get(repoOwner).(string), RepoOwner: d.Get(repoOwner).(string),
CloneAddr: cloneAddr, CloneAddr: cloneAddr,
Service: gitea.GitServiceType(d.Get(migrationService).(string)), Service: forgejo.GitServiceType(d.Get(migrationService).(string)),
Mirror: d.Get(repoMirror).(bool), Mirror: d.Get(repoMirror).(bool),
Private: d.Get(repoPrivateFlag).(bool), Private: d.Get(repoPrivateFlag).(bool),
Description: d.Get(repoDescription).(string), Description: d.Get(repoDescription).(string),
@ -172,7 +172,7 @@ func resourceRepoCreate(d *schema.ResourceData, meta interface{}) (err error) {
repo, _, err = client.MigrateRepo(opts) repo, _, err = client.MigrateRepo(opts)
} else { } else {
opts := gitea.CreateRepoOption{ opts := forgejo.CreateRepoOption{
Name: d.Get(repoName).(string), Name: d.Get(repoName).(string),
Description: d.Get(repoDescription).(string), Description: d.Get(repoDescription).(string),
Private: d.Get(repoPrivateFlag).(bool), Private: d.Get(repoPrivateFlag).(bool),
@ -207,9 +207,9 @@ func resourceRepoCreate(d *schema.ResourceData, meta interface{}) (err error) {
} }
func resourceRepoUpdate(d *schema.ResourceData, meta interface{}) (err error) { func resourceRepoUpdate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
var repo *gitea.Repository var repo *forgejo.Repository
var name string = d.Get(repoName).(string) var name string = d.Get(repoName).(string)
var description string = d.Get(repoDescription).(string) var description string = d.Get(repoDescription).(string)
@ -229,7 +229,7 @@ func resourceRepoUpdate(d *schema.ResourceData, meta interface{}) (err error) {
var allowManualMerge bool = d.Get(repoAllowManualMerge).(bool) var allowManualMerge bool = d.Get(repoAllowManualMerge).(bool)
var autodetectManualMerge bool = d.Get(repoAutodetectManualMerge).(bool) var autodetectManualMerge bool = d.Get(repoAutodetectManualMerge).(bool)
opts := gitea.EditRepoOption{ opts := forgejo.EditRepoOption{
Name: &name, Name: &name,
Description: &description, Description: &description,
Website: &website, Website: &website,
@ -269,14 +269,14 @@ func resourceRepoUpdate(d *schema.ResourceData, meta interface{}) (err error) {
} }
func respurceRepoDelete(d *schema.ResourceData, meta interface{}) (err error) { func respurceRepoDelete(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
client.DeleteRepo(d.Get(repoOwner).(string), d.Get(repoName).(string)) client.DeleteRepo(d.Get(repoOwner).(string), d.Get(repoName).(string))
return return
} }
func setRepoResourceData(repo *gitea.Repository, d *schema.ResourceData) (err error) { func setRepoResourceData(repo *forgejo.Repository, d *schema.ResourceData) (err error) {
d.SetId(fmt.Sprintf("%d", repo.ID)) d.SetId(fmt.Sprintf("%d", repo.ID))
d.Set("username", repo.Owner.UserName) d.Set("username", repo.Owner.UserName)
d.Set("name", repo.Name) d.Set("name", repo.Name)
@ -345,7 +345,7 @@ func resourceGiteaRepository() *schema.Resource {
Optional: true, Optional: true,
Default: "Default", Default: "Default",
Description: "The Issue Label configuration to be used in this repository.\n" + Description: "The Issue Label configuration to be used in this repository.\n" +
"Need to exist in the gitea instance", "Need to exist in the forgejo instance",
}, },
"gitignores": { "gitignores": {
Type: schema.TypeString, Type: schema.TypeString,
@ -354,7 +354,7 @@ func resourceGiteaRepository() *schema.Resource {
Default: "", Default: "",
Description: "A specific gitignore that should be commited to the repository" + Description: "A specific gitignore that should be commited to the repository" +
"on creation if `auto_init` is set to `true`\n" + "on creation if `auto_init` is set to `true`\n" +
"Need to exist in the gitea instance", "Need to exist in the forgejo instance",
}, },
"license": { "license": {
Type: schema.TypeString, Type: schema.TypeString,
@ -362,7 +362,7 @@ func resourceGiteaRepository() *schema.Resource {
Optional: true, Optional: true,
Default: "", Default: "",
Description: "The license under which the source code of this repository should be.\n" + Description: "The license under which the source code of this repository should be.\n" +
"Need to exist in the gitea instance", "Need to exist in the forgejo instance",
}, },
"readme": { "readme": {
Type: schema.TypeString, Type: schema.TypeString,
@ -518,7 +518,7 @@ func resourceGiteaRepository() *schema.Resource {
Required: false, Required: false,
ForceNew: true, ForceNew: true,
Optional: true, Optional: true,
Description: "git/github/gitlab/gitea/gogs", Description: "git/github/gitlab/forgejo/gogs",
}, },
"migration_service_auth_username": { "migration_service_auth_username": {
Type: schema.TypeString, Type: schema.TypeString,
@ -589,7 +589,7 @@ func resourceGiteaRepository() *schema.Resource {
Computed: true, Computed: true,
}, },
}, },
Description: "`gitea_repository` manages a gitea repository.\n\n" + Description: "`forgejo_repository` manages a forgejo repository.\n\n" +
"Per default this repository will be initializiled with the provided configuration (gitignore, License etc.).\n" + "Per default this repository will be initializiled with the provided configuration (gitignore, License etc.).\n" +
"If the `username` property is set to a organisation name, the provider will try to look if this organisation exists " + "If the `username` property is set to a organisation name, the provider will try to look if this organisation exists " +
"and create the repository under the organisation scope.\n\n" + "and create the repository under the organisation scope.\n\n" +

View file

@ -1,9 +1,9 @@
package gitea package forgejo
import ( import (
"log" "log"
"code.gitea.io/sdk/gitea" "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
) )
@ -28,7 +28,7 @@ const (
repoBPApprovalWhitelistUsers string = "approval_whitelist_users" repoBPApprovalWhitelistUsers string = "approval_whitelist_users"
repoBPApprovalWhitelistTeams string = "approval_whitelist_teams" repoBPApprovalWhitelistTeams string = "approval_whitelist_teams"
repoBPDismissStaleApprovals string = "dismiss_stale_approvals" repoBPDismissStaleApprovals string = "dismiss_stale_approvals"
// not implemented in go-gitea-sdk // not implemented in go-forgejo-sdk
// repoBPIgnoreStaleApprovals string = "ignore_stale_approvals" // repoBPIgnoreStaleApprovals string = "ignore_stale_approvals"
repoBPEnableStatusCheck string = "enable_status_check" repoBPEnableStatusCheck string = "enable_status_check"
@ -47,7 +47,7 @@ const (
) )
func resourceRepositoryBranchProtectionRead(d *schema.ResourceData, meta interface{}) (err error) { func resourceRepositoryBranchProtectionRead(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
user := d.Get(repoBPUsername).(string) user := d.Get(repoBPUsername).(string)
repo := d.Get(repoBPName).(string) repo := d.Get(repoBPName).(string)
@ -96,7 +96,7 @@ func generateWhitelist(d *schema.ResourceData, listname string) (enabled bool, u
} }
func resourceRepositoryBranchProtectionCreate(d *schema.ResourceData, meta interface{}) (err error) { func resourceRepositoryBranchProtectionCreate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
user := d.Get(repoBPUsername).(string) user := d.Get(repoBPUsername).(string)
repo := d.Get(repoBPName).(string) repo := d.Get(repoBPName).(string)
@ -117,8 +117,8 @@ func resourceRepositoryBranchProtectionCreate(d *schema.ResourceData, meta inter
enableStatusCheck = true enableStatusCheck = true
} }
bpOption := gitea.CreateBranchProtectionOption{ bpOption := forgejo.CreateBranchProtectionOption{
// BranchName is deprecated in gitea, but still required in go-gitea-sdk, therefore using RuleName // BranchName is deprecated in forgejo, but still required in go-forgejo-sdk, therefore using RuleName
BranchName: d.Get(repoBPRuleName).(string), BranchName: d.Get(repoBPRuleName).(string),
RuleName: d.Get(repoBPRuleName).(string), RuleName: d.Get(repoBPRuleName).(string),
EnablePush: d.Get(repoBPEnablePush).(bool), EnablePush: d.Get(repoBPEnablePush).(bool),
@ -155,7 +155,7 @@ func resourceRepositoryBranchProtectionCreate(d *schema.ResourceData, meta inter
} }
func resourceRepositoryBranchProtectionUpdate(d *schema.ResourceData, meta interface{}) (err error) { func resourceRepositoryBranchProtectionUpdate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
user := d.Get(repoBPUsername).(string) user := d.Get(repoBPUsername).(string)
repo := d.Get(repoBPName).(string) repo := d.Get(repoBPName).(string)
@ -189,7 +189,7 @@ func resourceRepositoryBranchProtectionUpdate(d *schema.ResourceData, meta inter
protectedFilePatterns := d.Get(repoBPProtectedFilePatterns).(string) protectedFilePatterns := d.Get(repoBPProtectedFilePatterns).(string)
unprotectedFilePatterns := d.Get(repoBPUnprotectedFilePatterns).(string) unprotectedFilePatterns := d.Get(repoBPUnprotectedFilePatterns).(string)
bpOption := gitea.EditBranchProtectionOption{ bpOption := forgejo.EditBranchProtectionOption{
EnablePush: &enablePush, EnablePush: &enablePush,
EnablePushWhitelist: &enablePushWhitelist, EnablePushWhitelist: &enablePushWhitelist,
PushWhitelistUsernames: pushWhitelistUsernames, PushWhitelistUsernames: pushWhitelistUsernames,
@ -224,7 +224,7 @@ func resourceRepositoryBranchProtectionUpdate(d *schema.ResourceData, meta inter
} }
func resourceRepositoryBranchProtectionDelete(d *schema.ResourceData, meta interface{}) (err error) { func resourceRepositoryBranchProtectionDelete(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
user := d.Get(repoBPUsername).(string) user := d.Get(repoBPUsername).(string)
repo := d.Get(repoBPName).(string) repo := d.Get(repoBPName).(string)
@ -237,7 +237,7 @@ func resourceRepositoryBranchProtectionDelete(d *schema.ResourceData, meta inter
return err return err
} }
func setRepositoryBranchProtectionData(bp *gitea.BranchProtection, user string, repo string, d *schema.ResourceData) (err error) { func setRepositoryBranchProtectionData(bp *forgejo.BranchProtection, user string, repo string, d *schema.ResourceData) (err error) {
d.SetId(bp.RuleName) d.SetId(bp.RuleName)
d.Set(repoBPUsername, user) d.Set(repoBPUsername, user)
d.Set(repoBPName, repo) d.Set(repoBPName, repo)
@ -401,7 +401,7 @@ func resourceGiteaRepositoryBranchProtection() *schema.Resource {
are pushed to the branch, old approvals will be dismissed.`, are pushed to the branch, old approvals will be dismissed.`,
}, },
// //
// not implemented in go-gitea-sdk // not implemented in go-forgejo-sdk
// //
// "ignore_stale_approvals": { // "ignore_stale_approvals": {
// Type: schema.TypeBool, // Type: schema.TypeBool,

View file

@ -1,11 +1,11 @@
package gitea package forgejo
import ( import (
"fmt" "fmt"
"strconv" "strconv"
"strings" "strings"
"code.gitea.io/sdk/gitea" "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
) )
@ -34,7 +34,7 @@ func resourceRepoKeyIdParts(d *schema.ResourceData) (bool, int64, int64, error)
} }
func resourceRepoKeyRead(d *schema.ResourceData, meta interface{}) (err error) { func resourceRepoKeyRead(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
hasId, repoId, keyId, err := resourceRepoKeyIdParts(d) hasId, repoId, keyId, err := resourceRepoKeyIdParts(d)
if err != nil { if err != nil {
@ -71,7 +71,7 @@ func resourceRepoKeyRead(d *schema.ResourceData, meta interface{}) (err error) {
} }
func resourceRepoKeyCreate(d *schema.ResourceData, meta interface{}) (err error) { func resourceRepoKeyCreate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
repo, _, err := client.GetRepoByID(int64(d.Get(deployKeyRepoId).(int))) repo, _, err := client.GetRepoByID(int64(d.Get(deployKeyRepoId).(int)))
@ -79,7 +79,7 @@ func resourceRepoKeyCreate(d *schema.ResourceData, meta interface{}) (err error)
return err return err
} }
dk, _, err := client.CreateDeployKey(repo.Owner.UserName, repo.Name, gitea.CreateKeyOption{ dk, _, err := client.CreateDeployKey(repo.Owner.UserName, repo.Name, forgejo.CreateKeyOption{
Title: d.Get(deployKeyName).(string), Title: d.Get(deployKeyName).(string),
ReadOnly: d.Get(deployKeyReadOnly).(bool), ReadOnly: d.Get(deployKeyReadOnly).(bool),
Key: d.Get(deployKeyKey).(string), Key: d.Get(deployKeyKey).(string),
@ -94,7 +94,7 @@ func resourceRepoKeyCreate(d *schema.ResourceData, meta interface{}) (err error)
} }
func respurceRepoKeyDelete(d *schema.ResourceData, meta interface{}) (err error) { func respurceRepoKeyDelete(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
hasId, repoId, keyId, err := resourceRepoKeyIdParts(d) hasId, repoId, keyId, err := resourceRepoKeyIdParts(d)
if err != nil { if err != nil {
@ -118,7 +118,7 @@ func respurceRepoKeyDelete(d *schema.ResourceData, meta interface{}) (err error)
return nil return nil
} }
func setRepoKeyResourceData(dk *gitea.DeployKey, repoId int64, d *schema.ResourceData) (err error) { func setRepoKeyResourceData(dk *forgejo.DeployKey, repoId int64, d *schema.ResourceData) (err error) {
d.SetId(fmt.Sprintf("%d/%d", repoId, dk.ID)) d.SetId(fmt.Sprintf("%d/%d", repoId, dk.ID))
d.Set(deployKeyRepoId, repoId) d.Set(deployKeyRepoId, repoId)
d.Set(deployKeyReadOnly, dk.ReadOnly) d.Set(deployKeyReadOnly, dk.ReadOnly)
@ -163,7 +163,7 @@ func resourceGiteaRepositoryKey() *schema.Resource {
Description: "Name of the deploy key", Description: "Name of the deploy key",
}, },
}, },
Description: "`gitea_repository_key` manages a deploy key for a single gitea_repository.\n\n" + Description: "`forgejo_repository_key` manages a deploy key for a single forgejo_repository.\n\n" +
"Every key needs a unique name and unique key, i.e. no key can be added twice to the same repo", "Every key needs a unique name and unique key, i.e. no key can be added twice to the same repo",
} }
} }

View file

@ -1,9 +1,9 @@
package gitea package forgejo
import ( import (
"strconv" "strconv"
"code.gitea.io/sdk/gitea" "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
) )
@ -22,7 +22,7 @@ const (
) )
func resourceRepositoryWebhookRead(d *schema.ResourceData, meta interface{}) (err error) { func resourceRepositoryWebhookRead(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
id, err := strconv.ParseInt(d.Id(), 10, 64) id, err := strconv.ParseInt(d.Id(), 10, 64)
if err != nil { if err != nil {
@ -48,7 +48,7 @@ func resourceRepositoryWebhookRead(d *schema.ResourceData, meta interface{}) (er
} }
func resourceRepositoryWebhookCreate(d *schema.ResourceData, meta interface{}) (err error) { func resourceRepositoryWebhookCreate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
user := d.Get(repoWebhookUsername).(string) user := d.Get(repoWebhookUsername).(string)
repo := d.Get(repoWebhookName).(string) repo := d.Get(repoWebhookName).(string)
@ -68,8 +68,8 @@ func resourceRepositoryWebhookCreate(d *schema.ResourceData, meta interface{}) (
events = append(events, element.(string)) events = append(events, element.(string))
} }
hookOption := gitea.CreateHookOption{ hookOption := forgejo.CreateHookOption{
Type: gitea.HookType(d.Get(repoWebhookType).(string)), Type: forgejo.HookType(d.Get(repoWebhookType).(string)),
Config: config, Config: config,
Events: events, Events: events,
BranchFilter: d.Get(repoWebhookBranchFilter).(string), BranchFilter: d.Get(repoWebhookBranchFilter).(string),
@ -88,7 +88,7 @@ func resourceRepositoryWebhookCreate(d *schema.ResourceData, meta interface{}) (
} }
func resourceRepositoryWebhookUpdate(d *schema.ResourceData, meta interface{}) (err error) { func resourceRepositoryWebhookUpdate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
user := d.Get(repoWebhookUsername).(string) user := d.Get(repoWebhookUsername).(string)
repo := d.Get(repoWebhookName).(string) repo := d.Get(repoWebhookName).(string)
@ -114,7 +114,7 @@ func resourceRepositoryWebhookUpdate(d *schema.ResourceData, meta interface{}) (
active := d.Get(repoWebhookActive).(bool) active := d.Get(repoWebhookActive).(bool)
hookOption := gitea.EditHookOption{ hookOption := forgejo.EditHookOption{
Config: config, Config: config,
Events: events, Events: events,
BranchFilter: d.Get(repoWebhookBranchFilter).(string), BranchFilter: d.Get(repoWebhookBranchFilter).(string),
@ -138,7 +138,7 @@ func resourceRepositoryWebhookUpdate(d *schema.ResourceData, meta interface{}) (
} }
func resourceRepositoryWebhookDelete(d *schema.ResourceData, meta interface{}) (err error) { func resourceRepositoryWebhookDelete(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
user := d.Get(repoWebhookUsername).(string) user := d.Get(repoWebhookUsername).(string)
repo := d.Get(repoWebhookName).(string) repo := d.Get(repoWebhookName).(string)
@ -155,7 +155,7 @@ func resourceRepositoryWebhookDelete(d *schema.ResourceData, meta interface{}) (
return return
} }
func setRepositoryWebhookData(hook *gitea.Hook, d *schema.ResourceData) (err error) { func setRepositoryWebhookData(hook *forgejo.Hook, d *schema.ResourceData) (err error) {
d.SetId(strconv.FormatInt(hook.ID, 10)) d.SetId(strconv.FormatInt(hook.ID, 10))
d.Set(repoWebhookUsername, d.Get(repoWebhookUsername).(string)) d.Set(repoWebhookUsername, d.Get(repoWebhookUsername).(string))
@ -204,7 +204,7 @@ func resourceGiteaRepositoryWebhook() *schema.Resource {
"type": { "type": {
Type: schema.TypeString, Type: schema.TypeString,
Required: true, Required: true,
Description: "Webhook type, e.g. `gitea`", Description: "Webhook type, e.g. `forgejo`",
}, },
"url": { "url": {
Type: schema.TypeString, Type: schema.TypeString,

View file

@ -1,4 +1,4 @@
package gitea package forgejo
import ( import (
"errors" "errors"
@ -6,7 +6,7 @@ import (
"strconv" "strconv"
"strings" "strings"
"code.gitea.io/sdk/gitea" "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
) )
@ -22,12 +22,12 @@ const (
) )
func resourceTeamRead(d *schema.ResourceData, meta interface{}) (err error) { func resourceTeamRead(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
id, err := strconv.ParseInt(d.Id(), 10, 64) id, err := strconv.ParseInt(d.Id(), 10, 64)
var resp *gitea.Response var resp *forgejo.Response
var team *gitea.Team var team *forgejo.Team
team, resp, err = client.GetTeam(id) team, resp, err = client.GetTeam(id)
@ -46,42 +46,42 @@ func resourceTeamRead(d *schema.ResourceData, meta interface{}) (err error) {
} }
func resourceTeamCreate(d *schema.ResourceData, meta interface{}) (err error) { func resourceTeamCreate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
var team *gitea.Team var team *forgejo.Team
var units []gitea.RepoUnitType var units []forgejo.RepoUnitType
if strings.Contains(d.Get(TeamUnits).(string), "repo.code") { if strings.Contains(d.Get(TeamUnits).(string), "repo.code") {
units = append(units, gitea.RepoUnitCode) units = append(units, forgejo.RepoUnitCode)
} }
if strings.Contains(d.Get(TeamUnits).(string), "repo.issues") { if strings.Contains(d.Get(TeamUnits).(string), "repo.issues") {
units = append(units, gitea.RepoUnitIssues) units = append(units, forgejo.RepoUnitIssues)
} }
if strings.Contains(d.Get(TeamUnits).(string), "repo.ext_issues") { if strings.Contains(d.Get(TeamUnits).(string), "repo.ext_issues") {
units = append(units, gitea.RepoUnitExtIssues) units = append(units, forgejo.RepoUnitExtIssues)
} }
if strings.Contains(d.Get(TeamUnits).(string), "repo.wiki") { if strings.Contains(d.Get(TeamUnits).(string), "repo.wiki") {
units = append(units, gitea.RepoUnitWiki) units = append(units, forgejo.RepoUnitWiki)
} }
if strings.Contains(d.Get(TeamUnits).(string), "repo.pulls") { if strings.Contains(d.Get(TeamUnits).(string), "repo.pulls") {
units = append(units, gitea.RepoUnitPulls) units = append(units, forgejo.RepoUnitPulls)
} }
if strings.Contains(d.Get(TeamUnits).(string), "repo.releases") { if strings.Contains(d.Get(TeamUnits).(string), "repo.releases") {
units = append(units, gitea.RepoUnitReleases) units = append(units, forgejo.RepoUnitReleases)
} }
if strings.Contains(d.Get(TeamUnits).(string), "repo.ext_wiki") { if strings.Contains(d.Get(TeamUnits).(string), "repo.ext_wiki") {
units = append(units, gitea.RepoUnitExtWiki) units = append(units, forgejo.RepoUnitExtWiki)
} }
if strings.Contains(d.Get(TeamUnits).(string), "repo.projects") { if strings.Contains(d.Get(TeamUnits).(string), "repo.projects") {
units = append(units, gitea.RepoUnitProjects) units = append(units, forgejo.RepoUnitProjects)
} }
includeAllRepos := d.Get(TeamIncludeAllReposFlag).(bool) includeAllRepos := d.Get(TeamIncludeAllReposFlag).(bool)
opts := gitea.CreateTeamOption{ opts := forgejo.CreateTeamOption{
Name: d.Get(TeamName).(string), Name: d.Get(TeamName).(string),
Description: d.Get(TeamDescription).(string), Description: d.Get(TeamDescription).(string),
Permission: gitea.AccessMode(d.Get(TeamPermissions).(string)), Permission: forgejo.AccessMode(d.Get(TeamPermissions).(string)),
CanCreateOrgRepo: d.Get(TeamCreateRepoFlag).(bool), CanCreateOrgRepo: d.Get(TeamCreateRepoFlag).(bool),
IncludesAllRepositories: includeAllRepos, IncludesAllRepositories: includeAllRepos,
Units: units, Units: units,
@ -106,12 +106,12 @@ func resourceTeamCreate(d *schema.ResourceData, meta interface{}) (err error) {
} }
func resourceTeamUpdate(d *schema.ResourceData, meta interface{}) (err error) { func resourceTeamUpdate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
id, err := strconv.ParseInt(d.Id(), 10, 64) id, err := strconv.ParseInt(d.Id(), 10, 64)
var resp *gitea.Response var resp *forgejo.Response
var team *gitea.Team var team *forgejo.Team
team, resp, err = client.GetTeam(id) team, resp, err = client.GetTeam(id)
@ -127,37 +127,37 @@ func resourceTeamUpdate(d *schema.ResourceData, meta interface{}) (err error) {
canCreateRepo := d.Get(TeamCreateRepoFlag).(bool) canCreateRepo := d.Get(TeamCreateRepoFlag).(bool)
includeAllRepos := d.Get(TeamIncludeAllReposFlag).(bool) includeAllRepos := d.Get(TeamIncludeAllReposFlag).(bool)
var units []gitea.RepoUnitType var units []forgejo.RepoUnitType
if strings.Contains(d.Get(TeamUnits).(string), "repo.code") { if strings.Contains(d.Get(TeamUnits).(string), "repo.code") {
units = append(units, gitea.RepoUnitCode) units = append(units, forgejo.RepoUnitCode)
} }
if strings.Contains(d.Get(TeamUnits).(string), "repo.issues") { if strings.Contains(d.Get(TeamUnits).(string), "repo.issues") {
units = append(units, gitea.RepoUnitIssues) units = append(units, forgejo.RepoUnitIssues)
} }
if strings.Contains(d.Get(TeamUnits).(string), "repo.ext_issues") { if strings.Contains(d.Get(TeamUnits).(string), "repo.ext_issues") {
units = append(units, gitea.RepoUnitExtIssues) units = append(units, forgejo.RepoUnitExtIssues)
} }
if strings.Contains(d.Get(TeamUnits).(string), "repo.wiki") { if strings.Contains(d.Get(TeamUnits).(string), "repo.wiki") {
units = append(units, gitea.RepoUnitWiki) units = append(units, forgejo.RepoUnitWiki)
} }
if strings.Contains(d.Get(TeamUnits).(string), "repo.pulls") { if strings.Contains(d.Get(TeamUnits).(string), "repo.pulls") {
units = append(units, gitea.RepoUnitPulls) units = append(units, forgejo.RepoUnitPulls)
} }
if strings.Contains(d.Get(TeamUnits).(string), "repo.releases") { if strings.Contains(d.Get(TeamUnits).(string), "repo.releases") {
units = append(units, gitea.RepoUnitReleases) units = append(units, forgejo.RepoUnitReleases)
} }
if strings.Contains(d.Get(TeamUnits).(string), "repo.ext_wiki") { if strings.Contains(d.Get(TeamUnits).(string), "repo.ext_wiki") {
units = append(units, gitea.RepoUnitExtWiki) units = append(units, forgejo.RepoUnitExtWiki)
} }
if strings.Contains(d.Get(TeamUnits).(string), "repo.projects") { if strings.Contains(d.Get(TeamUnits).(string), "repo.projects") {
units = append(units, gitea.RepoUnitProjects) units = append(units, forgejo.RepoUnitProjects)
} }
opts := gitea.EditTeamOption{ opts := forgejo.EditTeamOption{
Name: d.Get(TeamName).(string), Name: d.Get(TeamName).(string),
Description: &description, Description: &description,
Permission: gitea.AccessMode(d.Get(TeamPermissions).(string)), Permission: forgejo.AccessMode(d.Get(TeamPermissions).(string)),
CanCreateOrgRepo: &canCreateRepo, CanCreateOrgRepo: &canCreateRepo,
IncludesAllRepositories: &includeAllRepos, IncludesAllRepositories: &includeAllRepos,
Units: units, Units: units,
@ -184,11 +184,11 @@ func resourceTeamUpdate(d *schema.ResourceData, meta interface{}) (err error) {
} }
func resourceTeamDelete(d *schema.ResourceData, meta interface{}) (err error) { func resourceTeamDelete(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
id, err := strconv.ParseInt(d.Id(), 10, 64) id, err := strconv.ParseInt(d.Id(), 10, 64)
var resp *gitea.Response var resp *forgejo.Response
resp, err = client.DeleteTeam(id) resp, err = client.DeleteTeam(id)
@ -203,8 +203,8 @@ func resourceTeamDelete(d *schema.ResourceData, meta interface{}) (err error) {
return return
} }
func setTeamResourceData(team *gitea.Team, d *schema.ResourceData, meta interface{}) (err error) { func setTeamResourceData(team *forgejo.Team, d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
if err := client.CheckServerVersionConstraint(">= 1.19.4"); err != nil { if err := client.CheckServerVersionConstraint(">= 1.19.4"); err != nil {
d.Set(TeamOrg, d.Get(TeamOrg).(string)) d.Set(TeamOrg, d.Get(TeamOrg).(string))
} else { } else {
@ -292,12 +292,12 @@ func resourceGiteaTeam() *schema.Resource {
Description: "List of Repositories that should be part of this team", Description: "List of Repositories that should be part of this team",
}, },
}, },
Description: "`gitea_team` manages Team that are part of an organisation.", Description: "`forgejo_team` manages Team that are part of an organisation.",
} }
} }
func setTeamRepositories(team *gitea.Team, d *schema.ResourceData, meta interface{}, update bool) (err error) { func setTeamRepositories(team *forgejo.Team, d *schema.ResourceData, meta interface{}, update bool) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
org := d.Get(TeamOrg).(string) org := d.Get(TeamOrg).(string)
@ -312,9 +312,9 @@ func setTeamRepositories(team *gitea.Team, d *schema.ResourceData, meta interfac
page := 1 page := 1
for { for {
var existingRepositories []*gitea.Repository var existingRepositories []*forgejo.Repository
existingRepositories, _, err = client.ListTeamRepositories(team.ID, gitea.ListTeamRepositoriesOptions{ existingRepositories, _, err = client.ListTeamRepositories(team.ID, forgejo.ListTeamRepositoriesOptions{
ListOptions: gitea.ListOptions{ ListOptions: forgejo.ListOptions{
Page: page, Page: page,
PageSize: 50, PageSize: 50,
}, },

View file

@ -1,9 +1,9 @@
package gitea package forgejo
import ( import (
"fmt" "fmt"
"code.gitea.io/sdk/gitea" "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
) )
@ -13,17 +13,17 @@ const (
) )
func getTeamMembers(team_id int, meta interface{}) (membersNames []string, err error) { func getTeamMembers(team_id int, meta interface{}) (membersNames []string, err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
var memberNames []string var memberNames []string
var members []*gitea.User var members []*forgejo.User
// Get all pages of users // Get all pages of users
page := 1 page := 1
for { for {
// Set options for current page // Set options for current page
opts := gitea.ListTeamMembersOptions{ opts := forgejo.ListTeamMembersOptions{
ListOptions: gitea.ListOptions{Page: page, PageSize: 50}, ListOptions: forgejo.ListOptions{Page: page, PageSize: 50},
} }
// Get page of team members // Get page of team members
@ -50,7 +50,7 @@ func getTeamMembers(team_id int, meta interface{}) (membersNames []string, err e
} }
func resourceTeamMembersCreate(d *schema.ResourceData, meta interface{}) (err error) { func resourceTeamMembersCreate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
team_id := d.Get(membersTeamID).(int) team_id := d.Get(membersTeamID).(int)
var memberNames []string var memberNames []string
@ -61,7 +61,7 @@ func resourceTeamMembersCreate(d *schema.ResourceData, meta interface{}) (err er
// Add members to the team // Add members to the team
for _, name := range d.Get(membersTeamMembers).(*schema.Set).List() { for _, name := range d.Get(membersTeamMembers).(*schema.Set).List() {
_ , err = client.AddTeamMember(int64(team_id), name.(string)) _, err = client.AddTeamMember(int64(team_id), name.(string))
if err != nil { if err != nil {
return err return err
} }
@ -88,12 +88,12 @@ func resourceTeamMembersRead(d *schema.ResourceData, meta interface{}) (err erro
} }
func resourceTeamMembersDelete(d *schema.ResourceData, meta interface{}) (err error) { func resourceTeamMembersDelete(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
team_id := d.Get(membersTeamID).(int) team_id := d.Get(membersTeamID).(int)
var memberNames []string var memberNames []string
memberNames , err = getTeamMembers(team_id, meta) memberNames, err = getTeamMembers(team_id, meta)
if err != nil { if err != nil {
return err return err
} }
@ -143,8 +143,7 @@ func resourceGiteaTeamMembers() *schema.Resource {
ForceNew: true, ForceNew: true,
Description: "The user names of the members of the team.", 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.", Description: "`forgejo_team_members` manages all members of a single team. This resource will be recreated on member changes.",
} }
} }

View file

@ -1,9 +1,9 @@
package gitea package forgejo
import ( import (
"fmt" "fmt"
"code.gitea.io/sdk/gitea" "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
) )
@ -13,13 +13,13 @@ const (
) )
func resourceTeamMembershipCreate(d *schema.ResourceData, meta interface{}) (err error) { func resourceTeamMembershipCreate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
team_id := d.Get(membershipTeamID).(int) team_id := d.Get(membershipTeamID).(int)
username := d.Get(membershipUserName).(string) username := d.Get(membershipUserName).(string)
// Create the membership // Create the membership
_ , err = client.AddTeamMember(int64(team_id), username) _, err = client.AddTeamMember(int64(team_id), username)
// What if the membership exists? Consider error messages // What if the membership exists? Consider error messages
// Does this do anything? Will err not be return in the end anyway // Does this do anything? Will err not be return in the end anyway
@ -33,9 +33,9 @@ func resourceTeamMembershipCreate(d *schema.ResourceData, meta interface{}) (err
} }
func resourceTeamMembershipRead(d *schema.ResourceData, meta interface{}) (err error) { func resourceTeamMembershipRead(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
var resp *gitea.Response var resp *forgejo.Response
team_id := d.Get(membershipTeamID).(int) team_id := d.Get(membershipTeamID).(int)
username := d.Get(membershipUserName).(string) username := d.Get(membershipUserName).(string)
@ -59,7 +59,7 @@ func resourceTeamMembershipRead(d *schema.ResourceData, meta interface{}) (err e
} }
func resourceTeamMembershipDelete(d *schema.ResourceData, meta interface{}) (err error) { func resourceTeamMembershipDelete(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
team_id := d.Get(membershipTeamID).(int) team_id := d.Get(membershipTeamID).(int)
username := d.Get(membershipUserName).(string) username := d.Get(membershipUserName).(string)
@ -106,6 +106,6 @@ func resourceGiteaTeamMembership() *schema.Resource {
Description: "The username of the team member.", Description: "The username of the team member.",
}, },
}, },
Description: "`gitea_team_membership` manages a single user's membership of a single team.", Description: "`forgejo_team_membership` manages a single user's membership of a single team.",
} }
} }

View file

@ -1,10 +1,10 @@
package gitea package forgejo
import ( import (
"fmt" "fmt"
"strconv" "strconv"
"code.gitea.io/sdk/gitea" "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
) )
@ -16,7 +16,7 @@ const (
) )
// validScopes contains the valid scopes for tokens as listed // validScopes contains the valid scopes for tokens as listed
// at https://docs.gitea.com/development/oauth2-provider#scopes // at https://docs.forgejo.com/development/oauth2-provider#scopes
var validScopes = map[string]bool{ var validScopes = map[string]bool{
"all": true, "all": true,
"read:activitypub": true, "read:activitypub": true,
@ -39,12 +39,12 @@ var validScopes = map[string]bool{
"write:user": true, "write:user": true,
} }
func searchTokenById(c *gitea.Client, id int64) (res *gitea.AccessToken, err error) { func searchTokenById(c *forgejo.Client, id int64) (res *forgejo.AccessToken, err error) {
page := 1 page := 1
for { for {
tokens, _, err := c.ListAccessTokens(gitea.ListAccessTokensOptions{ tokens, _, err := c.ListAccessTokens(forgejo.ListAccessTokensOptions{
ListOptions: gitea.ListOptions{ ListOptions: forgejo.ListOptions{
Page: page, Page: page,
PageSize: 50, PageSize: 50,
}, },
@ -69,20 +69,20 @@ func searchTokenById(c *gitea.Client, id int64) (res *gitea.AccessToken, err err
func resourceTokenCreate(d *schema.ResourceData, meta interface{}) (err error) { func resourceTokenCreate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
// Create a list of valid scopes. Thrown an error if an invalid scope is found // Create a list of valid scopes. Thrown an error if an invalid scope is found
var scopes []gitea.AccessTokenScope var scopes []forgejo.AccessTokenScope
for _, s := range d.Get(TokenScopes).(*schema.Set).List() { for _, s := range d.Get(TokenScopes).(*schema.Set).List() {
s := s.(string) s := s.(string)
if validScopes[s] { if validScopes[s] {
scopes = append(scopes, gitea.AccessTokenScope(s)) scopes = append(scopes, forgejo.AccessTokenScope(s))
} else { } else {
return fmt.Errorf("Invalid token scope: '%s'", s) return fmt.Errorf("Invalid token scope: '%s'", s)
} }
} }
opts := gitea.CreateAccessTokenOption{ opts := forgejo.CreateAccessTokenOption{
Name: d.Get(TokenName).(string), Name: d.Get(TokenName).(string),
Scopes: scopes, Scopes: scopes,
} }
@ -100,9 +100,9 @@ func resourceTokenCreate(d *schema.ResourceData, meta interface{}) (err error) {
func resourceTokenRead(d *schema.ResourceData, meta interface{}) (err error) { func resourceTokenRead(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
var token *gitea.AccessToken var token *forgejo.AccessToken
id, err := strconv.ParseInt(d.Id(), 10, 64) id, err := strconv.ParseInt(d.Id(), 10, 64)
@ -119,8 +119,8 @@ func resourceTokenRead(d *schema.ResourceData, meta interface{}) (err error) {
func resourceTokenDelete(d *schema.ResourceData, meta interface{}) (err error) { func resourceTokenDelete(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
var resp *gitea.Response var resp *forgejo.Response
resp, err = client.DeleteAccessToken(d.Get(TokenName).(string)) resp, err = client.DeleteAccessToken(d.Get(TokenName).(string))
@ -135,7 +135,7 @@ func resourceTokenDelete(d *schema.ResourceData, meta interface{}) (err error) {
return return
} }
func setTokenResourceData(token *gitea.AccessToken, d *schema.ResourceData) (err error) { func setTokenResourceData(token *forgejo.AccessToken, d *schema.ResourceData) (err error) {
d.SetId(fmt.Sprintf("%d", token.ID)) d.SetId(fmt.Sprintf("%d", token.ID))
d.Set(TokenName, token.Name) d.Set(TokenName, token.Name)
@ -183,8 +183,8 @@ func resourceGiteaToken() *schema.Resource {
Description: "List of string representations of scopes for the token", Description: "List of string representations of scopes for the token",
}, },
}, },
Description: "`gitea_token` manages gitea Access Tokens.\n\n" + Description: "`forgejo_token` manages forgejo Access Tokens.\n\n" +
"Due to upstream limitations (see https://gitea.com/gitea/go-sdk/issues/610) this resource\n" + "Due to upstream limitations (see https://forgejo.com/forgejo/go-sdk/issues/610) this resource\n" +
"can only be used with username/password provider configuration.\n\n" + "can only be used with username/password provider configuration.\n\n" +
"WARNING:\n" + "WARNING:\n" +
"Tokens will be stored in the terraform state!", "Tokens will be stored in the terraform state!",

View file

@ -1,10 +1,10 @@
package gitea package forgejo
import ( import (
"fmt" "fmt"
"strconv" "strconv"
"code.gitea.io/sdk/gitea" "codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
) )
@ -31,12 +31,12 @@ const (
) )
func resourceUserRead(d *schema.ResourceData, meta interface{}) (err error) { func resourceUserRead(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
id, err := strconv.ParseInt(d.Id(), 10, 64) id, err := strconv.ParseInt(d.Id(), 10, 64)
var resp *gitea.Response var resp *forgejo.Response
var user *gitea.User var user *forgejo.User
user, resp, err = client.GetUserByID(id) user, resp, err = client.GetUserByID(id)
@ -55,13 +55,13 @@ func resourceUserRead(d *schema.ResourceData, meta interface{}) (err error) {
} }
func resourceUserCreate(d *schema.ResourceData, meta interface{}) (err error) { func resourceUserCreate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
var user *gitea.User var user *forgejo.User
visibility := gitea.VisibleType(d.Get(userVisibility).(string)) visibility := forgejo.VisibleType(d.Get(userVisibility).(string))
changePassword := d.Get(userMustChangePassword).(bool) changePassword := d.Get(userMustChangePassword).(bool)
opts := gitea.CreateUserOption{ opts := forgejo.CreateUserOption{
SourceID: 0, SourceID: 0,
LoginName: d.Get(userLoginName).(string), LoginName: d.Get(userLoginName).(string),
Username: d.Get(userName).(string), Username: d.Get(userName).(string),
@ -86,11 +86,11 @@ func resourceUserCreate(d *schema.ResourceData, meta interface{}) (err error) {
} }
func resourceUserUpdate(d *schema.ResourceData, meta interface{}) (err error) { func resourceUserUpdate(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
id, err := strconv.ParseInt(d.Id(), 10, 64) id, err := strconv.ParseInt(d.Id(), 10, 64)
var resp *gitea.Response var resp *forgejo.Response
var user *gitea.User var user *forgejo.User
user, resp, err = client.GetUserByID(id) user, resp, err = client.GetUserByID(id)
@ -115,10 +115,10 @@ func resourceUserUpdate(d *schema.ResourceData, meta interface{}) (err error) {
accessDenied := d.Get(userPhorbitLogin).(bool) accessDenied := d.Get(userPhorbitLogin).(bool)
allowOrgs := d.Get(userAllowCreateOrgs).(bool) allowOrgs := d.Get(userAllowCreateOrgs).(bool)
restricted := d.Get(userRestricted).(bool) restricted := d.Get(userRestricted).(bool)
visibility := gitea.VisibleType(d.Get(userVisibility).(string)) visibility := forgejo.VisibleType(d.Get(userVisibility).(string))
if d.Get(userForcePasswordChange).(bool) { if d.Get(userForcePasswordChange).(bool) {
opts := gitea.EditUserOption{ opts := forgejo.EditUserOption{
SourceID: 0, SourceID: 0,
LoginName: d.Get(userLoginName).(string), LoginName: d.Get(userLoginName).(string),
Email: &mail, Email: &mail,
@ -144,7 +144,7 @@ func resourceUserUpdate(d *schema.ResourceData, meta interface{}) (err error) {
} }
} else { } else {
opts := gitea.EditUserOption{ opts := forgejo.EditUserOption{
SourceID: 0, SourceID: 0,
LoginName: d.Get(userLoginName).(string), LoginName: d.Get(userLoginName).(string),
Email: &mail, Email: &mail,
@ -177,9 +177,9 @@ func resourceUserUpdate(d *schema.ResourceData, meta interface{}) (err error) {
} }
func resourceUserDelete(d *schema.ResourceData, meta interface{}) (err error) { func resourceUserDelete(d *schema.ResourceData, meta interface{}) (err error) {
client := meta.(*gitea.Client) client := meta.(*forgejo.Client)
var resp *gitea.Response var resp *forgejo.Response
resp, err = client.AdminDeleteUser(d.Get(userName).(string)) resp, err = client.AdminDeleteUser(d.Get(userName).(string))
@ -194,7 +194,7 @@ func resourceUserDelete(d *schema.ResourceData, meta interface{}) (err error) {
return return
} }
func setUserResourceData(user *gitea.User, d *schema.ResourceData) (err error) { func setUserResourceData(user *forgejo.User, d *schema.ResourceData) (err error) {
d.SetId(fmt.Sprintf("%d", user.ID)) d.SetId(fmt.Sprintf("%d", user.ID))
d.Set(userName, user.UserName) d.Set(userName, user.UserName)
d.Set(userEmail, user.Email) d.Set(userEmail, user.Email)
@ -357,7 +357,7 @@ func resourceGiteaUser() *schema.Resource {
Description: "Flag if the user defined password should be overwritten or not", Description: "Flag if the user defined password should be overwritten or not",
}, },
}, },
Description: "`gitea_user` manages a native gitea user.\n\n" + Description: "`forgejo_user` manages a native forgejo user.\n\n" +
"If you are using OIDC or other kinds of authentication mechanisms you can still try to manage" + "If you are using OIDC or other kinds of authentication mechanisms you can still try to manage" +
"ssh keys or other ressources this way", "ssh keys or other ressources this way",
} }

View file

@ -1 +0,0 @@
package gitea

View file

@ -1 +0,0 @@
package gitea

View file

@ -1 +0,0 @@
package gitea

View file

@ -1 +0,0 @@
package gitea

View file

@ -1,205 +0,0 @@
package gitea
import (
"fmt"
"strings"
"code.gitea.io/sdk/gitea"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
func resourceGiteaRepositoryActionsSecret() *schema.Resource {
return &schema.Resource{
Create: resourceGiteaRepositoryActionsSecretCreate,
Read: resourceGiteaRepositoryActionsSecretRead,
Update: resourceGiteaRepositoryActionsSecretUpdate,
Delete: resourceGiteaRepositoryActionsSecretDelete,
Importer: &schema.ResourceImporter{
StateContext: schema.ImportStatePassthroughContext,
},
Schema: map[string]*schema.Schema{
"repository_owner": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
Description: "Owner of the repository.",
},
"repository": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
Description: "Name of the repository.",
},
"secret_name": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
Description: "Name of the secret.",
},
"secret_value": {
Type: schema.TypeString,
Required: true,
Description: "Value of the secret.",
Sensitive: true,
},
"created_at": {
Type: schema.TypeString,
Computed: true,
Description: "Date of 'actions_secret' creation.",
},
},
}
}
func resourceGiteaRepositoryActionsSecretCreate(d *schema.ResourceData, meta interface{}) error {
client := meta.(*gitea.Client)
repoOwnerData, usernameOk := d.GetOk("repository_owner")
if !usernameOk {
return fmt.Errorf("name of repo owner must be passed")
}
repoOwner := strings.ToLower(repoOwnerData.(string))
repositoryData, nameOk := d.GetOk("repository")
if !nameOk {
return fmt.Errorf("CREATE name of repo must be passed")
}
repository := strings.ToLower(repositoryData.(string))
secretNameData, nameOk := d.GetOk("secret_name")
if !nameOk {
return fmt.Errorf("secret_name must be passed")
}
secretName := secretNameData.(string)
valueData, nameOk := d.GetOk("secret_value")
if !nameOk {
return fmt.Errorf("value must be passed")
}
value := valueData.(string)
_, err := client.CreateRepoActionSecret(repoOwner, repository, gitea.CreateSecretOption{
Name: secretName,
Data: value,
})
if err != nil {
return err
}
d.SetId(buildThreePartID(repoOwner, repository, secretName))
return resourceGiteaRepositoryActionsSecretRead(d, meta)
}
func resourceGiteaRepositoryActionsSecretUpdate(d *schema.ResourceData, meta interface{}) error {
client := meta.(*gitea.Client)
repoOwnerData, usernameOk := d.GetOk("repository_owner")
if !usernameOk {
return fmt.Errorf("name of repo owner must be passed")
}
repoOwner := strings.ToLower(repoOwnerData.(string))
repositoryData, nameOk := d.GetOk("repository")
if !nameOk {
return fmt.Errorf("name of repo must be passed")
}
repository := strings.ToLower(repositoryData.(string))
variableNameData, nameOk := d.GetOk("secret_name")
if !nameOk {
return fmt.Errorf("secret_name of repo must be passed")
}
variableName := variableNameData.(string)
valueData, nameOk := d.GetOk("secret_value")
if !nameOk {
return fmt.Errorf("secret_value must be passed")
}
value := valueData.(string)
_, err := client.CreateRepoActionSecret(repoOwner, repository, gitea.CreateSecretOption{
Name: variableName,
Data: value,
})
if err != nil {
return err
}
return resourceGiteaRepositoryActionsSecretRead(d, meta)
}
func resourceGiteaRepositoryActionsSecretRead(d *schema.ResourceData, meta interface{}) error {
client := meta.(*gitea.Client)
repoOwner, repository, secretName, _ := parseThreePartID(d.Id(), "repository_owner", "repository", "secret_name")
var requestedSecret *gitea.Secret
page := 0
for requestedSecret == nil {
page = page + 1
secrets, _, _ := client.ListRepoActionSecret(repoOwner, repository, gitea.ListRepoActionSecretOption{
ListOptions: gitea.ListOptions{
Page: page,
PageSize: 100,
},
})
if len(secrets) == 0 {
d.SetId("")
return nil
}
for _, secret := range secrets {
if secret.Name == secretName {
requestedSecret = secret
break
}
}
}
createdAtData, dateOk := d.GetOk("created_at")
if requestedSecret == nil {
d.SetId("")
return nil
}
if dateOk {
if requestedSecret.Created.String() != createdAtData.(string) {
d.SetId("")
return nil
}
}
if err := d.Set("repository_owner", repoOwner); err != nil {
return err
}
if err := d.Set("repository", repository); err != nil {
return err
}
if err := d.Set("secret_name", secretName); err != nil {
return err
}
if err := d.Set("created_at", requestedSecret.Created.String()); err != nil {
return err
}
return nil
}
func resourceGiteaRepositoryActionsSecretDelete(d *schema.ResourceData, meta interface{}) error {
client := meta.(*gitea.Client)
repoOwner, repository, secretName, _ := parseThreePartID(d.Id(), "repository_owner", "repository", "secret_name")
_, err := client.DeleteRepoActionSecret(repoOwner, repository, secretName)
return err
}

View file

@ -1,195 +0,0 @@
package gitea
import (
"fmt"
"strings"
"code.gitea.io/sdk/gitea"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
func resourceGiteaRepositoryActionsVariable() *schema.Resource {
return &schema.Resource{
Create: resourceGiteaRepositoryActionsVariableCreate,
Read: resourceGiteaRepositoryActionsVariableRead,
Update: resourceGiteaRepositoryActionsVariableUpdate,
Delete: resourceGiteaRepositoryActionsVariableDelete,
Importer: &schema.ResourceImporter{
StateContext: schema.ImportStatePassthroughContext,
},
Schema: map[string]*schema.Schema{
"repository_owner": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
Description: "Owner of the repository.",
},
"repository": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
Description: "Name of the repository.",
},
"variable_name": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
Description: "Name of the variable.",
},
"value": {
Type: schema.TypeString,
Required: true,
Description: "Value of the variable.",
},
},
}
}
func resourceGiteaRepositoryActionsVariableCreate(d *schema.ResourceData, meta interface{}) error {
client := meta.(*gitea.Client)
repoOwnerData, usernameOk := d.GetOk("repository_owner")
if !usernameOk {
return fmt.Errorf("name of repo owner must be passed")
}
repoOwner := strings.ToLower(repoOwnerData.(string))
nameData, nameOk := d.GetOk("repository")
if !nameOk {
return fmt.Errorf("CREATE name of repo must be passed")
}
name := strings.ToLower(nameData.(string))
variableNameData, nameOk := d.GetOk("variable_name")
if !nameOk {
return fmt.Errorf("variable_name of repo must be passed")
}
variableName := variableNameData.(string)
valueData, nameOk := d.GetOk("value")
if !nameOk {
return fmt.Errorf("value must be passed")
}
value := valueData.(string)
_, err := client.CreateRepoActionVariable(repoOwner, name, variableName, value)
if err != nil {
return err
}
d.SetId(buildThreePartID(repoOwner, name, variableName))
return resourceGiteaRepositoryActionsVariableRead(d, meta)
}
func resourceGiteaRepositoryActionsVariableUpdate(d *schema.ResourceData, meta interface{}) error {
client := meta.(*gitea.Client)
repoOwnerData, usernameOk := d.GetOk("repository_owner")
if !usernameOk {
return fmt.Errorf("name of repo owner must be passed")
}
repoOwner := strings.ToLower(repoOwnerData.(string))
repositoryData, nameOk := d.GetOk("repository")
if !nameOk {
return fmt.Errorf("READ name of repo must be passed")
}
repository := strings.ToLower(repositoryData.(string))
variableNameData, nameOk := d.GetOk("variable_name")
if !nameOk {
return fmt.Errorf("READ variable_name of repo must be passed")
}
variableName := variableNameData.(string)
valueData, nameOk := d.GetOk("value")
if !nameOk {
return fmt.Errorf("value must be passed")
}
value := valueData.(string)
_, err := client.UpdateRepoActionVariable(repoOwner, repository, variableName, value)
if err != nil {
return err
}
return resourceGiteaRepositoryActionsVariableRead(d, meta)
}
func resourceGiteaRepositoryActionsVariableRead(d *schema.ResourceData, meta interface{}) error {
client := meta.(*gitea.Client)
repoOwner, repository, variableName, err := parseThreePartID(d.Id(), "repository_owner", "repository", "variable_name")
if err != nil {
return err
}
variable, resp, err := client.GetRepoActionVariable(repoOwner, repository, variableName)
if err != nil {
if resp.StatusCode == 404 {
d.SetId("")
return nil
} else {
return err
}
}
if err = d.Set("repository_owner", repoOwner); err != nil {
return err
}
if err = d.Set("repository", repository); err != nil {
return err
}
if err = d.Set("variable_name", variableName); err != nil {
return err
}
if err = d.Set("value", variable.Value); err != nil {
return err
}
return nil
}
func resourceGiteaRepositoryActionsVariableDelete(d *schema.ResourceData, meta interface{}) error {
client := meta.(*gitea.Client)
repoOwnerData, usernameOk := d.GetOk("repository_owner")
if !usernameOk {
return fmt.Errorf("name of repo owner must be passed")
}
repoOwner := strings.ToLower(repoOwnerData.(string))
repositoryData, nameOk := d.GetOk("repository")
if !nameOk {
return fmt.Errorf("name of repo must be passed")
}
repository := strings.ToLower(repositoryData.(string))
variableNameData, nameOk := d.GetOk("variable_name")
if !nameOk {
return fmt.Errorf("variable_name must be passed")
}
variableName := strings.ToLower(variableNameData.(string))
_, err := client.DeleteRepoActionVariable(repoOwner, repository, variableName)
return err
}
// format the strings into an id `a:b:c`
func buildThreePartID(a, b, c string) string {
return fmt.Sprintf("%s:%s:%s", a, b, c)
}
func parseThreePartID(id, left, center, right string) (string, string, string, error) {
parts := strings.SplitN(id, ":", 3)
if len(parts) != 3 {
return "", "", "", fmt.Errorf("unexpected ID format (%q). Expected %s:%s:%s", id, left, center, right)
}
return parts[0], parts[1], parts[2], nil
}

4
go.mod
View file

@ -5,14 +5,14 @@ go 1.22.7
toolchain go1.24.1 toolchain go1.24.1
require ( require (
code.gitea.io/sdk/gitea v0.20.0 codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2 v2.0.0
github.com/hashicorp/terraform-plugin-docs v0.20.1 github.com/hashicorp/terraform-plugin-docs v0.20.1
github.com/hashicorp/terraform-plugin-log v0.9.0 github.com/hashicorp/terraform-plugin-log v0.9.0
github.com/hashicorp/terraform-plugin-sdk/v2 v2.35.0 github.com/hashicorp/terraform-plugin-sdk/v2 v2.35.0
) )
require ( require (
github.com/42wim/httpsig v1.2.1 // indirect github.com/42wim/httpsig v1.2.2 // indirect
github.com/BurntSushi/toml v1.2.1 // indirect github.com/BurntSushi/toml v1.2.1 // indirect
github.com/Kunde21/markdownfmt/v3 v3.1.0 // indirect github.com/Kunde21/markdownfmt/v3 v3.1.0 // indirect
github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/goutils v1.1.1 // indirect

9
go.sum
View file

@ -1,9 +1,13 @@
code.gitea.io/sdk/gitea v0.20.0 h1:Zm/QDwwZK1awoM4AxdjeAQbxolzx2rIP8dDfmKu+KoU= codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2 v0.20.0 h1:Zm/QDwwZK1awoM4AxdjeAQbxolzx2rIP8dDfmKu+KoU=
code.gitea.io/sdk/gitea v0.20.0/go.mod h1:faouBHC/zyx5wLgjmRKR62ydyvMzwWf3QnU0bH7Cw6U= codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2 v0.20.0/go.mod h1:faouBHC/zyx5wLgjmRKR62ydyvMzwWf3QnU0bH7Cw6U=
codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2 v2.0.0 h1:DMrDRx/7ke6+IReKtbZ1ZwfuaXQfG4P3yn9O/z9a08Y=
codeberg.org/mvdkleijn/forgejo-sdk/forgejo/v2 v2.0.0/go.mod h1:9iyacQPbTwXp9klusoNOat2ZeFsWe+mmaDdZKywK220=
dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk=
dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
github.com/42wim/httpsig v1.2.1 h1:oLBxptMe9U4ZmSGtkosT8Dlfg31P3VQnAGq6psXv82Y= github.com/42wim/httpsig v1.2.1 h1:oLBxptMe9U4ZmSGtkosT8Dlfg31P3VQnAGq6psXv82Y=
github.com/42wim/httpsig v1.2.1/go.mod h1:P/UYo7ytNBFwc+dg35IubuAUIs8zj5zzFIgUCEl55WY= github.com/42wim/httpsig v1.2.1/go.mod h1:P/UYo7ytNBFwc+dg35IubuAUIs8zj5zzFIgUCEl55WY=
github.com/42wim/httpsig v1.2.2 h1:ofAYoHUNs/MJOLqQ8hIxeyz2QxOz8qdSVvp3PX/oPgA=
github.com/42wim/httpsig v1.2.2/go.mod h1:P/UYo7ytNBFwc+dg35IubuAUIs8zj5zzFIgUCEl55WY=
github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= 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 h1:KiZu9LKs+wFFBQKhrZJrFZwtLnCCWJahL+S+E/3VnM0=
@ -189,6 +193,7 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY=
github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI= github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI=
github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=

View file

@ -1,7 +1,7 @@
package main package main
import ( import (
"git.dgnum.eu/mdebray/forgejo-terraform-provider/gitea" "git.dgnum.eu/mdebray/forgejo-terraform-provider/forgejo"
"github.com/hashicorp/terraform-plugin-sdk/v2/plugin" "github.com/hashicorp/terraform-plugin-sdk/v2/plugin"
) )
@ -9,5 +9,5 @@ var Version = "development"
func main() { func main() {
plugin.Serve(&plugin.ServeOpts{ plugin.Serve(&plugin.ServeOpts{
ProviderFunc: gitea.Provider}) ProviderFunc: forgejo.Provider})
} }