@@ -21,6 +21,8 @@ import (
2121 _ "embed"
2222 "fmt"
2323 "path/filepath"
24+ "strings"
25+ "unicode"
2426
2527 "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge/info"
2628 "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge/tokens"
@@ -164,20 +166,73 @@ func Provider() tfbridge.ProviderInfo {
164166 EnableAccurateBridgePreview : true ,
165167 EnableRawStateDelta : true ,
166168 }
167-
168169 makeToken := func (module , name string ) (string , error ) {
169170 return tokens .MakeStandard (volcengeccpkg )(module , name )
170171 }
171172 prov .MustComputeTokens (token .VolcengineToken ("volcenginecc_" , makeToken ))
172173 for k := range prov .Resources {
173- if k == "volcenginecc_waf_domain" {
174- delete (prov .Resources , k )
175- }
176- if k == "volcenginecc_natgateway_nat_ip" {
177- delete (prov .Resources , k )
174+ // 获取第二跟斜杠后面的值
175+ lastPart := extractAndConvertToCamelCase (k )
176+ //如果当前类的字段存在同名,比如domain的class下有domain字段,则domain字段 + Value
177+ if prov .P .ResourcesMap ().Get (k ).Schema ().Get (lastPart ) != nil {
178+ prov .Resources [k ].Fields = map [string ]* info.Schema {
179+ lastPart : {
180+ CSharpName : toCamelCase (lastPart ) + "Value" ,
181+ },
182+ }
178183 }
179184 }
180185 prov .MustApplyAutoAliases ()
181186
182187 return prov
183188}
189+
190+ func extractAndConvertToCamelCase (input string ) string {
191+ // 按下划线分割字符串
192+ parts := strings .Split (input , "_" )
193+ // 如果少于3个部分,返回空字符串或原字符串
194+ if len (parts ) < 3 {
195+ return input
196+ }
197+ // 获取第二根下划线后的所有部分
198+ remainingParts := parts [2 :]
199+ // 直接返回第二根下划线后的所有内容,保持下划线分隔符
200+ return strings .Join (remainingParts , "_" )
201+ }
202+
203+ // toCamelCase 将字符串转换为驼峰命名,首字母大写
204+ func toCamelCase (s string ) string {
205+ if len (s ) == 0 {
206+ return ""
207+ }
208+
209+ // 按下划线分割字符串
210+ parts := strings .Split (s , "_" )
211+ var result strings.Builder
212+
213+ for i , part := range parts {
214+ if len (part ) == 0 {
215+ continue
216+ }
217+ if i == 0 {
218+ // 首字母大写
219+ result .WriteString (capitalizeFirst (part ))
220+ } else {
221+ // 其余部分首字母大写,其余小写
222+ result .WriteString (capitalizeFirst (strings .ToLower (part )))
223+ }
224+ }
225+
226+ return result .String ()
227+ }
228+
229+ // capitalizeFirst 将字符串首字母大写
230+ func capitalizeFirst (s string ) string {
231+ if len (s ) == 0 {
232+ return ""
233+ }
234+
235+ runes := []rune (s )
236+ runes [0 ] = unicode .ToUpper (runes [0 ])
237+ return string (runes )
238+ }
0 commit comments