Skip to content

Commit 88cd53d

Browse files
committed
Add: manage Milestone
Signed-off-by: Nicolas Lamirault <nicolas.lamirault@gmail.com>
1 parent d6fe8c2 commit 88cd53d

File tree

1 file changed

+116
-0
lines changed

1 file changed

+116
-0
lines changed

gitea/resource_gitea_milestone.go

+116
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
package gitea
2+
3+
import (
4+
"log"
5+
"strconv"
6+
7+
giteaapi "code.gitea.io/sdk/gitea"
8+
"github.com/hashicorp/terraform/helper/schema"
9+
)
10+
11+
func resourceGiteaMilestone() *schema.Resource {
12+
return &schema.Resource{
13+
Create: resourceGiteaMilestoneCreate,
14+
Read: resourceGiteaMilestoneRead,
15+
Update: resourceGiteaMilestoneUpdate,
16+
Delete: resourceGiteaMilestoneDelete,
17+
Schema: map[string]*schema.Schema{
18+
"owner": &schema.Schema{
19+
Type: schema.TypeString,
20+
Required: true,
21+
ForceNew: true,
22+
},
23+
"repository": {
24+
Type: schema.TypeString,
25+
Required: true,
26+
},
27+
"title": {
28+
Type: schema.TypeString,
29+
Required: true,
30+
},
31+
"description": {
32+
Type: schema.TypeString,
33+
Required: true,
34+
},
35+
},
36+
}
37+
}
38+
39+
func resourceGiteaMilestoneSetToState(d *schema.ResourceData, milestone *giteaapi.Milestone) error {
40+
if err := d.Set("title", milestone.Title); err != nil {
41+
return err
42+
}
43+
if err := d.Set("description", milestone.Description); err != nil {
44+
return err
45+
}
46+
return nil
47+
}
48+
49+
func resourceGiteaMilestoneCreate(d *schema.ResourceData, meta interface{}) error {
50+
client := meta.(*giteaapi.Client)
51+
owner := d.Get("owner").(string)
52+
repository := d.Get("repository").(string)
53+
options := giteaapi.CreateMilestoneOption{
54+
Title: d.Get("title").(string),
55+
Description: d.Get("description").(string),
56+
}
57+
58+
log.Printf("[DEBUG] create milestone: %s %s %v", owner, repository, options)
59+
60+
milestone, err := client.CreateMilestone(owner, repository, options)
61+
if err != nil {
62+
return err
63+
}
64+
log.Printf("[DEBUG] milestone created %v", milestone)
65+
d.SetId(strconv.FormatInt(milestone.ID, 10))
66+
return resourceGiteaMilestoneRead(d, meta)
67+
}
68+
69+
func resourceGiteaMilestoneRead(d *schema.ResourceData, meta interface{}) error {
70+
client := meta.(*giteaapi.Client)
71+
log.Printf("[DEBUG] milestone informations: %s", d.Id())
72+
milestoneId, err := strconv.ParseInt(d.Id(), 10, 64)
73+
if err != nil {
74+
return unconvertibleIdErr(d.Id(), err)
75+
}
76+
owner := d.Get("owner").(string)
77+
repository := d.Get("repository").(string)
78+
log.Printf("[DEBUG] read milestone %q", milestoneId)
79+
80+
milestone, err := client.GetMilestone(owner, repository, milestoneId)
81+
if err != nil {
82+
return err
83+
}
84+
log.Printf("[DEBUG] milestone find %v", milestone)
85+
return resourceGiteaMilestoneSetToState(d, milestone)
86+
}
87+
88+
func resourceGiteaMilestoneUpdate(d *schema.ResourceData, meta interface{}) error {
89+
// client := meta.(*giteaapi.Client)
90+
// id := d.Get("id").(int64)
91+
// owner := d.Get("owner").(string)
92+
// name := d.Get("name").(string)
93+
// options := giteaapi.EditMilestoneOption{
94+
// Name: d.Get("name").(string),
95+
// Color: d.Get("color").(string),
96+
// }
97+
// log.Printf("[DEBUG] edit gitea Milestone: %q %q", id, options)
98+
// Milestone, err := client.EditMilestone(owner, name, id, options)
99+
// if err != nil {
100+
// return err
101+
// }
102+
// return resourceGiteaMilestoneSetToState(d, Milestone)
103+
return nil
104+
}
105+
106+
func resourceGiteaMilestoneDelete(d *schema.ResourceData, meta interface{}) error {
107+
client := meta.(*giteaapi.Client)
108+
id, err := strconv.ParseInt(d.Id(), 10, 64)
109+
if err != nil {
110+
return unconvertibleIdErr(d.Id(), err)
111+
}
112+
owner := d.Get("owner").(string)
113+
repository := d.Get("repository").(string)
114+
log.Printf("[DEBUG] delete milestone: %d %s %s", id, owner, repository)
115+
return client.DeleteMilestone(owner, repository, id)
116+
}

0 commit comments

Comments
 (0)