mirror of
https://github.com/Kichiyaki/terraform-provider-woodpecker.git
synced 2024-06-01 18:28:03 +00:00
301 lines
10 KiB
Go
301 lines
10 KiB
Go
package internal
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/hashicorp/terraform-plugin-framework/diag"
|
|
"github.com/hashicorp/terraform-plugin-framework/types"
|
|
"github.com/woodpecker-ci/woodpecker/woodpecker-go/woodpecker"
|
|
)
|
|
|
|
type userModel struct {
|
|
ID types.Int64 `tfsdk:"id"`
|
|
Login types.String `tfsdk:"login"`
|
|
Email types.String `tfsdk:"email"`
|
|
AvatarURL types.String `tfsdk:"avatar_url"`
|
|
Active types.Bool `tfsdk:"is_active"`
|
|
Admin types.Bool `tfsdk:"is_admin"`
|
|
}
|
|
|
|
func (m *userModel) setValues(_ context.Context, user *woodpecker.User) diag.Diagnostics {
|
|
m.ID = types.Int64Value(user.ID)
|
|
m.Login = types.StringValue(user.Login)
|
|
m.Email = types.StringValue(user.Email)
|
|
m.AvatarURL = types.StringValue(user.Avatar)
|
|
m.Active = types.BoolValue(user.Active)
|
|
m.Admin = types.BoolValue(user.Admin)
|
|
return nil
|
|
}
|
|
|
|
func (m *userModel) toWoodpeckerModel(_ context.Context) (*woodpecker.User, diag.Diagnostics) {
|
|
return &woodpecker.User{
|
|
ID: m.ID.ValueInt64(),
|
|
Login: m.Login.ValueString(),
|
|
Email: m.Email.ValueString(),
|
|
Avatar: m.AvatarURL.ValueString(),
|
|
Active: m.Active.ValueBool(),
|
|
Admin: m.Admin.ValueBool(),
|
|
}, nil
|
|
}
|
|
|
|
type secretResourceModel struct {
|
|
ID types.Int64 `tfsdk:"id"`
|
|
Name types.String `tfsdk:"name"`
|
|
Value types.String `tfsdk:"value"`
|
|
Images types.Set `tfsdk:"images"`
|
|
PluginsOnly types.Bool `tfsdk:"plugins_only"`
|
|
Events types.Set `tfsdk:"events"`
|
|
}
|
|
|
|
func (m *secretResourceModel) setValues(ctx context.Context, secret *woodpecker.Secret) diag.Diagnostics {
|
|
var diagsRes diag.Diagnostics
|
|
var diags diag.Diagnostics
|
|
|
|
m.ID = types.Int64Value(secret.ID)
|
|
m.Name = types.StringValue(secret.Name)
|
|
m.Images, diags = types.SetValueFrom(ctx, types.StringType, secret.Images)
|
|
diagsRes.Append(diags...)
|
|
m.PluginsOnly = types.BoolValue(secret.PluginsOnly)
|
|
m.Events, diags = types.SetValueFrom(ctx, types.StringType, secret.Events)
|
|
diagsRes.Append(diags...)
|
|
|
|
return diagsRes
|
|
}
|
|
|
|
func (m *secretResourceModel) toWoodpeckerModel(ctx context.Context) (*woodpecker.Secret, diag.Diagnostics) {
|
|
var diags diag.Diagnostics
|
|
|
|
secret := &woodpecker.Secret{
|
|
ID: m.ID.ValueInt64(),
|
|
Name: m.Name.ValueString(),
|
|
Value: m.Value.ValueString(),
|
|
PluginsOnly: m.PluginsOnly.ValueBool(),
|
|
}
|
|
diags.Append(m.Images.ElementsAs(ctx, &secret.Images, false)...)
|
|
diags.Append(m.Events.ElementsAs(ctx, &secret.Events, false)...)
|
|
|
|
return secret, diags
|
|
}
|
|
|
|
type secretDataSourceModel struct {
|
|
ID types.Int64 `tfsdk:"id"`
|
|
Name types.String `tfsdk:"name"`
|
|
Images types.Set `tfsdk:"images"`
|
|
PluginsOnly types.Bool `tfsdk:"plugins_only"`
|
|
Events types.Set `tfsdk:"events"`
|
|
}
|
|
|
|
func (m *secretDataSourceModel) setValues(ctx context.Context, secret *woodpecker.Secret) diag.Diagnostics {
|
|
var diagsRes diag.Diagnostics
|
|
var diags diag.Diagnostics
|
|
|
|
m.ID = types.Int64Value(secret.ID)
|
|
m.Name = types.StringValue(secret.Name)
|
|
m.Images, diags = types.SetValueFrom(ctx, types.StringType, secret.Images)
|
|
diagsRes.Append(diags...)
|
|
m.PluginsOnly = types.BoolValue(secret.PluginsOnly)
|
|
m.Events, diags = types.SetValueFrom(ctx, types.StringType, secret.Events)
|
|
diagsRes.Append(diags...)
|
|
|
|
return diagsRes
|
|
}
|
|
|
|
type repositoryModel struct {
|
|
ID types.Int64 `tfsdk:"id"`
|
|
ForgeRemoteID types.String `tfsdk:"forge_remote_id"`
|
|
Owner types.String `tfsdk:"owner"`
|
|
Name types.String `tfsdk:"name"`
|
|
FullName types.String `tfsdk:"full_name"`
|
|
AvatarURL types.String `tfsdk:"avatar_url"`
|
|
URL types.String `tfsdk:"url"`
|
|
CloneURL types.String `tfsdk:"clone_url"`
|
|
DefaultBranch types.String `tfsdk:"default_branch"`
|
|
SCMKind types.String `tfsdk:"scm"`
|
|
Timeout types.Int64 `tfsdk:"timeout"`
|
|
Visibility types.String `tfsdk:"visibility"`
|
|
IsSCMPrivate types.Bool `tfsdk:"is_private"`
|
|
IsTrusted types.Bool `tfsdk:"is_trusted"`
|
|
IsGated types.Bool `tfsdk:"is_gated"`
|
|
AllowPullRequests types.Bool `tfsdk:"allow_pull_requests"`
|
|
ConfigFile types.String `tfsdk:"config_file"`
|
|
NetrcOnlyTrusted types.Bool `tfsdk:"netrc_only_trusted"`
|
|
}
|
|
|
|
func (m *repositoryModel) setValues(_ context.Context, repo *woodpecker.Repo) diag.Diagnostics {
|
|
m.ID = types.Int64Value(repo.ID)
|
|
m.ForgeRemoteID = types.StringValue(repo.ForgeRemoteID)
|
|
m.Owner = types.StringValue(repo.Owner)
|
|
m.Name = types.StringValue(repo.Name)
|
|
m.FullName = types.StringValue(repo.FullName)
|
|
m.AvatarURL = types.StringValue(repo.Avatar)
|
|
m.URL = types.StringValue(repo.Link)
|
|
m.CloneURL = types.StringValue(repo.Clone)
|
|
m.DefaultBranch = types.StringValue(repo.DefaultBranch)
|
|
m.SCMKind = types.StringValue(repo.SCMKind)
|
|
m.Timeout = types.Int64Value(repo.Timeout)
|
|
m.Visibility = types.StringValue(repo.Visibility)
|
|
m.IsSCMPrivate = types.BoolValue(repo.IsSCMPrivate)
|
|
m.IsTrusted = types.BoolValue(repo.IsTrusted)
|
|
m.IsGated = types.BoolValue(repo.IsGated)
|
|
m.AllowPullRequests = types.BoolValue(repo.AllowPullRequests)
|
|
m.ConfigFile = types.StringValue(repo.Config)
|
|
m.NetrcOnlyTrusted = types.BoolValue(repo.NetrcOnlyTrusted)
|
|
return nil
|
|
}
|
|
|
|
func (m *repositoryModel) toWoodpeckerPatch(_ context.Context) (*woodpecker.RepoPatch, diag.Diagnostics) {
|
|
return &woodpecker.RepoPatch{
|
|
Config: m.ConfigFile.ValueStringPointer(),
|
|
IsTrusted: m.IsTrusted.ValueBoolPointer(),
|
|
IsGated: m.IsGated.ValueBoolPointer(),
|
|
Timeout: m.Timeout.ValueInt64Pointer(),
|
|
Visibility: m.Visibility.ValueStringPointer(),
|
|
AllowPull: m.AllowPullRequests.ValueBoolPointer(),
|
|
}, nil
|
|
}
|
|
|
|
type repositorySecretResourceModel struct {
|
|
ID types.Int64 `tfsdk:"id"`
|
|
RepositoryID types.Int64 `tfsdk:"repository_id"`
|
|
Name types.String `tfsdk:"name"`
|
|
Value types.String `tfsdk:"value"`
|
|
Images types.Set `tfsdk:"images"`
|
|
PluginsOnly types.Bool `tfsdk:"plugins_only"`
|
|
Events types.Set `tfsdk:"events"`
|
|
}
|
|
|
|
func (m *repositorySecretResourceModel) setValues(ctx context.Context, secret *woodpecker.Secret) diag.Diagnostics {
|
|
var diagsRes diag.Diagnostics
|
|
var diags diag.Diagnostics
|
|
|
|
m.ID = types.Int64Value(secret.ID)
|
|
m.Name = types.StringValue(secret.Name)
|
|
m.Images, diags = types.SetValueFrom(ctx, types.StringType, secret.Images)
|
|
diagsRes.Append(diags...)
|
|
m.PluginsOnly = types.BoolValue(secret.PluginsOnly)
|
|
m.Events, diags = types.SetValueFrom(ctx, types.StringType, secret.Events)
|
|
diagsRes.Append(diags...)
|
|
|
|
return diagsRes
|
|
}
|
|
|
|
func (m *repositorySecretResourceModel) toWoodpeckerModel(ctx context.Context) (*woodpecker.Secret, diag.Diagnostics) {
|
|
var diags diag.Diagnostics
|
|
|
|
secret := &woodpecker.Secret{
|
|
ID: m.ID.ValueInt64(),
|
|
Name: m.Name.ValueString(),
|
|
Value: m.Value.ValueString(),
|
|
PluginsOnly: m.PluginsOnly.ValueBool(),
|
|
}
|
|
diags.Append(m.Images.ElementsAs(ctx, &secret.Images, false)...)
|
|
diags.Append(m.Events.ElementsAs(ctx, &secret.Events, false)...)
|
|
|
|
return secret, diags
|
|
}
|
|
|
|
type repositorySecretDataSourceModel struct {
|
|
ID types.Int64 `tfsdk:"id"`
|
|
RepositoryID types.Int64 `tfsdk:"repository_id"`
|
|
Name types.String `tfsdk:"name"`
|
|
Images types.Set `tfsdk:"images"`
|
|
PluginsOnly types.Bool `tfsdk:"plugins_only"`
|
|
Events types.Set `tfsdk:"events"`
|
|
}
|
|
|
|
func (m *repositorySecretDataSourceModel) setValues(ctx context.Context, secret *woodpecker.Secret) diag.Diagnostics {
|
|
var diagsRes diag.Diagnostics
|
|
var diags diag.Diagnostics
|
|
|
|
m.ID = types.Int64Value(secret.ID)
|
|
m.Name = types.StringValue(secret.Name)
|
|
m.Images, diags = types.SetValueFrom(ctx, types.StringType, secret.Images)
|
|
diagsRes.Append(diags...)
|
|
m.PluginsOnly = types.BoolValue(secret.PluginsOnly)
|
|
m.Events, diags = types.SetValueFrom(ctx, types.StringType, secret.Events)
|
|
diagsRes.Append(diags...)
|
|
|
|
return diagsRes
|
|
}
|
|
|
|
type repositoryCronModel struct {
|
|
ID types.Int64 `tfsdk:"id"`
|
|
Name types.String `tfsdk:"name"`
|
|
RepositoryID types.Int64 `tfsdk:"repository_id"`
|
|
CreatorID types.Int64 `tfsdk:"creator_id"`
|
|
Schedule types.String `tfsdk:"schedule"`
|
|
CreatedAt types.Int64 `tfsdk:"created_at"`
|
|
Branch types.String `tfsdk:"branch"`
|
|
}
|
|
|
|
func (m *repositoryCronModel) setValues(_ context.Context, cron *woodpecker.Cron) diag.Diagnostics {
|
|
m.ID = types.Int64Value(cron.ID)
|
|
m.Name = types.StringValue(cron.Name)
|
|
m.RepositoryID = types.Int64Value(cron.RepoID)
|
|
m.CreatorID = types.Int64Value(cron.CreatorID)
|
|
m.Schedule = types.StringValue(cron.Schedule)
|
|
m.CreatedAt = types.Int64Value(cron.Created)
|
|
m.Branch = types.StringValue(cron.Branch)
|
|
return nil
|
|
}
|
|
|
|
func (m *repositoryCronModel) toWoodpeckerModel(_ context.Context) (*woodpecker.Cron, diag.Diagnostics) {
|
|
return &woodpecker.Cron{
|
|
ID: m.ID.ValueInt64(),
|
|
Name: m.Name.ValueString(),
|
|
RepoID: m.RepositoryID.ValueInt64(),
|
|
CreatorID: m.CreatorID.ValueInt64(),
|
|
Schedule: m.Schedule.ValueString(),
|
|
Created: m.CreatedAt.ValueInt64(),
|
|
Branch: m.Branch.ValueString(),
|
|
}, nil
|
|
}
|
|
|
|
type repositoryRegistryResourceModel struct {
|
|
ID types.Int64 `tfsdk:"id"`
|
|
RepositoryID types.Int64 `tfsdk:"repository_id"`
|
|
Address types.String `tfsdk:"address"`
|
|
Username types.String `tfsdk:"username"`
|
|
Password types.String `tfsdk:"password"`
|
|
Email types.String `tfsdk:"email"`
|
|
}
|
|
|
|
func (m *repositoryRegistryResourceModel) setValues(_ context.Context, registry *woodpecker.Registry) diag.Diagnostics {
|
|
m.ID = types.Int64Value(registry.ID)
|
|
m.Address = types.StringValue(registry.Address)
|
|
m.Username = types.StringValue(registry.Username)
|
|
m.Email = types.StringValue(registry.Email)
|
|
return nil
|
|
}
|
|
|
|
func (m *repositoryRegistryResourceModel) toWoodpeckerModel(
|
|
_ context.Context,
|
|
) (*woodpecker.Registry, diag.Diagnostics) {
|
|
return &woodpecker.Registry{
|
|
ID: m.ID.ValueInt64(),
|
|
Address: m.Address.ValueString(),
|
|
Username: m.Username.ValueString(),
|
|
Password: m.Password.ValueString(),
|
|
Email: m.Email.ValueString(),
|
|
}, nil
|
|
}
|
|
|
|
type repositoryRegistryDataSourceModel struct {
|
|
ID types.Int64 `tfsdk:"id"`
|
|
RepositoryID types.Int64 `tfsdk:"repository_id"`
|
|
Address types.String `tfsdk:"address"`
|
|
Username types.String `tfsdk:"username"`
|
|
Email types.String `tfsdk:"email"`
|
|
}
|
|
|
|
func (m *repositoryRegistryDataSourceModel) setValues(
|
|
_ context.Context,
|
|
registry *woodpecker.Registry,
|
|
) diag.Diagnostics {
|
|
m.ID = types.Int64Value(registry.ID)
|
|
m.Address = types.StringValue(registry.Address)
|
|
m.Username = types.StringValue(registry.Username)
|
|
m.Email = types.StringValue(registry.Email)
|
|
return nil
|
|
}
|