feat: move to forgejo sdk
This commit is contained in:
parent
d9bf396917
commit
9e053a1c5c
35 changed files with 316 additions and 714 deletions
2
Makefile
2
Makefile
|
@ -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:]')
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
|
@ -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")
|
|
@ -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 {
|
1
forgejo/data_source_gitea_repos.go
Normal file
1
forgejo/data_source_gitea_repos.go
Normal file
|
@ -0,0 +1 @@
|
||||||
|
package forgejo
|
1
forgejo/data_source_gitea_team.go
Normal file
1
forgejo/data_source_gitea_team.go
Normal file
|
@ -0,0 +1 @@
|
||||||
|
package forgejo
|
1
forgejo/data_source_gitea_teams.go
Normal file
1
forgejo/data_source_gitea_teams.go
Normal file
|
@ -0,0 +1 @@
|
||||||
|
package forgejo
|
|
@ -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")
|
|
@ -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" {
|
||||||
}
|
}
|
||||||
`)
|
`)
|
||||||
}
|
}
|
1
forgejo/data_source_team_members.go
Normal file
1
forgejo/data_source_team_members.go
Normal file
|
@ -0,0 +1 @@
|
||||||
|
package forgejo
|
|
@ -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
|
||||||
}
|
}
|
|
@ -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,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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",
|
||||||
}
|
}
|
|
@ -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)",
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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{}{
|
|
@ -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.",
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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.",
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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" +
|
|
@ -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,
|
|
@ -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",
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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,
|
|
@ -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,
|
||||||
},
|
},
|
|
@ -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.",
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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.",
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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!",
|
|
@ -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",
|
||||||
}
|
}
|
|
@ -1 +0,0 @@
|
||||||
package gitea
|
|
|
@ -1 +0,0 @@
|
||||||
package gitea
|
|
|
@ -1 +0,0 @@
|
||||||
package gitea
|
|
|
@ -1 +0,0 @@
|
||||||
package gitea
|
|
|
@ -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
|
|
||||||
}
|
|
|
@ -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
4
go.mod
|
@ -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
9
go.sum
|
@ -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=
|
||||||
|
|
4
main.go
4
main.go
|
@ -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})
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue