@@ -3,6 +3,7 @@ package github
33import (
44 "context"
55 "errors"
6+ "fmt"
67 "net/http"
78 "strconv"
89
@@ -22,6 +23,10 @@ func resourceGithubEnterpriseRuleset() *schema.Resource {
2223 UpdateContext : resourceGithubEnterpriseRulesetUpdate ,
2324 DeleteContext : resourceGithubEnterpriseRulesetDelete ,
2425
26+ Importer : & schema.ResourceImporter {
27+ StateContext : resourceGithubEnterpriseRulesetImport ,
28+ },
29+
2530 CustomizeDiff : resourceGithubEnterpriseRulesetCustomizeDiff ,
2631
2732 Schema : map [string ]* schema.Schema {
@@ -958,3 +963,40 @@ func resourceGithubEnterpriseRulesetDelete(ctx context.Context, d *schema.Resour
958963 return nil
959964}
960965
966+ func resourceGithubEnterpriseRulesetImport (ctx context.Context , d * schema.ResourceData , meta any ) ([]* schema.ResourceData , error ) {
967+ enterpriseSlug , rulesetIDStr , err := parseTwoPartID (d .Id (), "enterprise_slug" , "ruleset_id" )
968+ if err != nil {
969+ return []* schema.ResourceData {d }, err
970+ }
971+
972+ rulesetID , err := strconv .ParseInt (rulesetIDStr , 10 , 64 )
973+ if err != nil {
974+ return []* schema.ResourceData {d }, unconvertibleIdErr (rulesetIDStr , err )
975+ }
976+ if rulesetID == 0 {
977+ return []* schema.ResourceData {d }, fmt .Errorf ("`ruleset_id` must be present" )
978+ }
979+
980+ tflog .Debug (ctx , "Importing enterprise ruleset" , map [string ]any {
981+ "enterprise_slug" : enterpriseSlug ,
982+ "ruleset_id" : rulesetID ,
983+ })
984+
985+ client := meta .(* Owner ).v3client
986+
987+ ruleset , _ , err := client .Enterprise .GetRepositoryRuleset (ctx , enterpriseSlug , rulesetID )
988+ if ruleset == nil || err != nil {
989+ return []* schema.ResourceData {d }, err
990+ }
991+
992+ d .SetId (strconv .FormatInt (ruleset .GetID (), 10 ))
993+ _ = d .Set ("enterprise_slug" , enterpriseSlug )
994+
995+ tflog .Info (ctx , "Imported enterprise ruleset" , map [string ]any {
996+ "enterprise_slug" : enterpriseSlug ,
997+ "ruleset_id" : rulesetID ,
998+ })
999+
1000+ return []* schema.ResourceData {d }, nil
1001+ }
1002+
0 commit comments