github.com/tilt-dev/tilt@v0.36.0/internal/tiltfile/v1alpha1/types.go (about) 1 package v1alpha1 2 3 import ( 4 "fmt" 5 "time" 6 7 "go.starlark.net/starlark" 8 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 9 10 "github.com/tilt-dev/tilt/internal/tiltfile/starkit" 11 "github.com/tilt-dev/tilt/internal/tiltfile/value" 12 "github.com/tilt-dev/tilt/pkg/apis/core/v1alpha1" 13 ) 14 15 // AUTOGENERATED by github.com/tilt-dev/tilt-starlark-codegen 16 // DO NOT EDIT MANUALLY 17 18 func (p Plugin) registerSymbols(env *starkit.Environment) error { 19 var err error 20 21 err = env.AddBuiltin("v1alpha1.cmd", p.cmd) 22 if err != nil { 23 return err 24 } 25 err = env.AddBuiltin("v1alpha1.config_map", p.configMap) 26 if err != nil { 27 return err 28 } 29 err = env.AddBuiltin("v1alpha1.extension", p.extension) 30 if err != nil { 31 return err 32 } 33 err = env.AddBuiltin("v1alpha1.extension_repo", p.extensionRepo) 34 if err != nil { 35 return err 36 } 37 err = env.AddBuiltin("v1alpha1.file_watch", p.fileWatch) 38 if err != nil { 39 return err 40 } 41 err = env.AddBuiltin("v1alpha1.kubernetes_apply", p.kubernetesApply) 42 if err != nil { 43 return err 44 } 45 err = env.AddBuiltin("v1alpha1.kubernetes_discovery", p.kubernetesDiscovery) 46 if err != nil { 47 return err 48 } 49 err = env.AddBuiltin("v1alpha1.ui_button", p.uiButton) 50 if err != nil { 51 return err 52 } 53 err = env.AddBuiltin("v1alpha1.config_map_disable_source", p.configMapDisableSource) 54 if err != nil { 55 return err 56 } 57 err = env.AddBuiltin("v1alpha1.disable_source", p.disableSource) 58 if err != nil { 59 return err 60 } 61 err = env.AddBuiltin("v1alpha1.exec_action", p.execAction) 62 if err != nil { 63 return err 64 } 65 err = env.AddBuiltin("v1alpha1.forward", p.forward) 66 if err != nil { 67 return err 68 } 69 err = env.AddBuiltin("v1alpha1.http_get_action", p.hTTPGetAction) 70 if err != nil { 71 return err 72 } 73 err = env.AddBuiltin("v1alpha1.http_header", p.hTTPHeader) 74 if err != nil { 75 return err 76 } 77 err = env.AddBuiltin("v1alpha1.handler", p.handler) 78 if err != nil { 79 return err 80 } 81 err = env.AddBuiltin("v1alpha1.ignore_def", p.ignoreDef) 82 if err != nil { 83 return err 84 } 85 err = env.AddBuiltin("v1alpha1.kubernetes_apply_cmd", p.kubernetesApplyCmd) 86 if err != nil { 87 return err 88 } 89 err = env.AddBuiltin("v1alpha1.kubernetes_discovery_template_spec", p.kubernetesDiscoveryTemplateSpec) 90 if err != nil { 91 return err 92 } 93 err = env.AddBuiltin("v1alpha1.kubernetes_image_locator", p.kubernetesImageLocator) 94 if err != nil { 95 return err 96 } 97 err = env.AddBuiltin("v1alpha1.kubernetes_image_object_descriptor", p.kubernetesImageObjectDescriptor) 98 if err != nil { 99 return err 100 } 101 err = env.AddBuiltin("v1alpha1.kubernetes_watch_ref", p.kubernetesWatchRef) 102 if err != nil { 103 return err 104 } 105 err = env.AddBuiltin("v1alpha1.label_selector", p.labelSelector) 106 if err != nil { 107 return err 108 } 109 err = env.AddBuiltin("v1alpha1.label_selector_requirement", p.labelSelectorRequirement) 110 if err != nil { 111 return err 112 } 113 err = env.AddBuiltin("v1alpha1.object_selector", p.objectSelector) 114 if err != nil { 115 return err 116 } 117 err = env.AddBuiltin("v1alpha1.pod_log_stream_template_spec", p.podLogStreamTemplateSpec) 118 if err != nil { 119 return err 120 } 121 err = env.AddBuiltin("v1alpha1.port_forward_template_spec", p.portForwardTemplateSpec) 122 if err != nil { 123 return err 124 } 125 err = env.AddBuiltin("v1alpha1.probe", p.probe) 126 if err != nil { 127 return err 128 } 129 err = env.AddBuiltin("v1alpha1.restart_on_spec", p.restartOnSpec) 130 if err != nil { 131 return err 132 } 133 err = env.AddBuiltin("v1alpha1.start_on_spec", p.startOnSpec) 134 if err != nil { 135 return err 136 } 137 err = env.AddBuiltin("v1alpha1.tcp_socket_action", p.tCPSocketAction) 138 if err != nil { 139 return err 140 } 141 err = env.AddBuiltin("v1alpha1.ui_bool_input_spec", p.uIBoolInputSpec) 142 if err != nil { 143 return err 144 } 145 err = env.AddBuiltin("v1alpha1.ui_choice_input_spec", p.uIChoiceInputSpec) 146 if err != nil { 147 return err 148 } 149 err = env.AddBuiltin("v1alpha1.ui_component_location", p.uIComponentLocation) 150 if err != nil { 151 return err 152 } 153 err = env.AddBuiltin("v1alpha1.ui_hidden_input_spec", p.uIHiddenInputSpec) 154 if err != nil { 155 return err 156 } 157 err = env.AddBuiltin("v1alpha1.ui_input_spec", p.uIInputSpec) 158 if err != nil { 159 return err 160 } 161 err = env.AddBuiltin("v1alpha1.ui_text_input_spec", p.uITextInputSpec) 162 if err != nil { 163 return err 164 } 165 return nil 166 } 167 func (p Plugin) cmd(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 168 var err error 169 obj := &v1alpha1.Cmd{ 170 ObjectMeta: metav1.ObjectMeta{}, 171 Spec: v1alpha1.CmdSpec{}, 172 } 173 var specArgs value.StringList 174 var dir value.LocalPath = value.NewLocalPathUnpacker(t) 175 err = dir.Unpack(starlark.String("")) 176 if err != nil { 177 return nil, err 178 } 179 180 var env value.StringList 181 var readinessProbe Probe = Probe{t: t} 182 var restartOn RestartOnSpec = RestartOnSpec{t: t} 183 var startOn StartOnSpec = StartOnSpec{t: t} 184 var disableSource DisableSource = DisableSource{t: t} 185 var labels value.StringStringMap 186 var annotations value.StringStringMap 187 err = starkit.UnpackArgs(t, fn.Name(), args, kwargs, 188 "name", &obj.ObjectMeta.Name, 189 "labels?", &labels, 190 "annotations?", &annotations, 191 "args?", &specArgs, 192 "dir?", &dir, 193 "env?", &env, 194 "readiness_probe?", &readinessProbe, 195 "restart_on?", &restartOn, 196 "start_on?", &startOn, 197 "disable_source?", &disableSource, 198 ) 199 if err != nil { 200 return nil, err 201 } 202 203 obj.Spec.Args = specArgs 204 obj.Spec.Dir = dir.Value 205 obj.Spec.Env = env 206 if readinessProbe.isUnpacked { 207 obj.Spec.ReadinessProbe = (*v1alpha1.Probe)(&readinessProbe.Value) 208 } 209 if restartOn.isUnpacked { 210 obj.Spec.RestartOn = (*v1alpha1.RestartOnSpec)(&restartOn.Value) 211 } 212 if startOn.isUnpacked { 213 obj.Spec.StartOn = (*v1alpha1.StartOnSpec)(&startOn.Value) 214 } 215 if disableSource.isUnpacked { 216 obj.Spec.DisableSource = (*v1alpha1.DisableSource)(&disableSource.Value) 217 } 218 obj.ObjectMeta.Labels = labels 219 obj.ObjectMeta.Annotations = annotations 220 return p.register(t, obj) 221 } 222 223 func (p Plugin) configMap(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 224 var err error 225 obj := &v1alpha1.ConfigMap{ 226 ObjectMeta: metav1.ObjectMeta{}, 227 } 228 var data value.StringStringMap 229 var labels value.StringStringMap 230 var annotations value.StringStringMap 231 err = starkit.UnpackArgs(t, fn.Name(), args, kwargs, 232 "name", &obj.ObjectMeta.Name, 233 "labels?", &labels, 234 "annotations?", &annotations, 235 "data?", &data, 236 ) 237 if err != nil { 238 return nil, err 239 } 240 241 obj.Data = data 242 obj.ObjectMeta.Labels = labels 243 obj.ObjectMeta.Annotations = annotations 244 return p.register(t, obj) 245 } 246 247 func (p Plugin) extension(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 248 var err error 249 obj := &v1alpha1.Extension{ 250 ObjectMeta: metav1.ObjectMeta{}, 251 Spec: v1alpha1.ExtensionSpec{}, 252 } 253 var specArgs value.StringList 254 var labels value.StringStringMap 255 var annotations value.StringStringMap 256 err = starkit.UnpackArgs(t, fn.Name(), args, kwargs, 257 "name", &obj.ObjectMeta.Name, 258 "labels?", &labels, 259 "annotations?", &annotations, 260 "repo_name?", &obj.Spec.RepoName, 261 "repo_path?", &obj.Spec.RepoPath, 262 "args?", &specArgs, 263 ) 264 if err != nil { 265 return nil, err 266 } 267 268 obj.Spec.Args = specArgs 269 obj.ObjectMeta.Labels = labels 270 obj.ObjectMeta.Annotations = annotations 271 return p.register(t, obj) 272 } 273 274 func (p Plugin) extensionRepo(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 275 var err error 276 obj := &v1alpha1.ExtensionRepo{ 277 ObjectMeta: metav1.ObjectMeta{}, 278 Spec: v1alpha1.ExtensionRepoSpec{}, 279 } 280 var labels value.StringStringMap 281 var annotations value.StringStringMap 282 err = starkit.UnpackArgs(t, fn.Name(), args, kwargs, 283 "name", &obj.ObjectMeta.Name, 284 "labels?", &labels, 285 "annotations?", &annotations, 286 "url?", &obj.Spec.URL, 287 "ref?", &obj.Spec.Ref, 288 "load_host?", &obj.Spec.LoadHost, 289 "git_subpath?", &obj.Spec.GitSubpath, 290 ) 291 if err != nil { 292 return nil, err 293 } 294 295 obj.ObjectMeta.Labels = labels 296 obj.ObjectMeta.Annotations = annotations 297 return p.register(t, obj) 298 } 299 300 func (p Plugin) fileWatch(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 301 var err error 302 obj := &v1alpha1.FileWatch{ 303 ObjectMeta: metav1.ObjectMeta{}, 304 Spec: v1alpha1.FileWatchSpec{}, 305 } 306 var watchedPaths value.LocalPathList = value.NewLocalPathListUnpacker(t) 307 var ignores IgnoreDefList = IgnoreDefList{t: t} 308 var disableSource DisableSource = DisableSource{t: t} 309 var labels value.StringStringMap 310 var annotations value.StringStringMap 311 err = starkit.UnpackArgs(t, fn.Name(), args, kwargs, 312 "name", &obj.ObjectMeta.Name, 313 "labels?", &labels, 314 "annotations?", &annotations, 315 "watched_paths?", &watchedPaths, 316 "ignores?", &ignores, 317 "disable_source?", &disableSource, 318 ) 319 if err != nil { 320 return nil, err 321 } 322 323 obj.Spec.WatchedPaths = watchedPaths.Value 324 obj.Spec.Ignores = ignores.Value 325 if disableSource.isUnpacked { 326 obj.Spec.DisableSource = (*v1alpha1.DisableSource)(&disableSource.Value) 327 } 328 obj.ObjectMeta.Labels = labels 329 obj.ObjectMeta.Annotations = annotations 330 return p.register(t, obj) 331 } 332 333 func (p Plugin) kubernetesApply(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 334 var err error 335 obj := &v1alpha1.KubernetesApply{ 336 ObjectMeta: metav1.ObjectMeta{}, 337 Spec: v1alpha1.KubernetesApplySpec{}, 338 } 339 var imageMaps value.StringList 340 var imageLocators KubernetesImageLocatorList = KubernetesImageLocatorList{t: t} 341 var timeout value.Duration 342 var kubernetesDiscoveryTemplateSpec KubernetesDiscoveryTemplateSpec = KubernetesDiscoveryTemplateSpec{t: t} 343 var portForwardTemplateSpec PortForwardTemplateSpec = PortForwardTemplateSpec{t: t} 344 var podLogStreamTemplateSpec PodLogStreamTemplateSpec = PodLogStreamTemplateSpec{t: t} 345 var discoveryStrategy string 346 var disableSource DisableSource = DisableSource{t: t} 347 var applyCmd KubernetesApplyCmd = KubernetesApplyCmd{t: t} 348 var restartOn RestartOnSpec = RestartOnSpec{t: t} 349 var deleteCmd KubernetesApplyCmd = KubernetesApplyCmd{t: t} 350 var labels value.StringStringMap 351 var annotations value.StringStringMap 352 err = starkit.UnpackArgs(t, fn.Name(), args, kwargs, 353 "name", &obj.ObjectMeta.Name, 354 "labels?", &labels, 355 "annotations?", &annotations, 356 "yaml?", &obj.Spec.YAML, 357 "image_maps?", &imageMaps, 358 "image_locators?", &imageLocators, 359 "timeout?", &timeout, 360 "kubernetes_discovery_template_spec?", &kubernetesDiscoveryTemplateSpec, 361 "port_forward_template_spec?", &portForwardTemplateSpec, 362 "pod_log_stream_template_spec?", &podLogStreamTemplateSpec, 363 "discovery_strategy?", &discoveryStrategy, 364 "disable_source?", &disableSource, 365 "apply_cmd?", &applyCmd, 366 "restart_on?", &restartOn, 367 "delete_cmd?", &deleteCmd, 368 "cluster?", &obj.Spec.Cluster, 369 ) 370 if err != nil { 371 return nil, err 372 } 373 374 obj.Spec.ImageMaps = imageMaps 375 obj.Spec.ImageLocators = imageLocators.Value 376 obj.Spec.Timeout = metav1.Duration{Duration: time.Duration(timeout)} 377 if kubernetesDiscoveryTemplateSpec.isUnpacked { 378 obj.Spec.KubernetesDiscoveryTemplateSpec = (*v1alpha1.KubernetesDiscoveryTemplateSpec)(&kubernetesDiscoveryTemplateSpec.Value) 379 } 380 if portForwardTemplateSpec.isUnpacked { 381 obj.Spec.PortForwardTemplateSpec = (*v1alpha1.PortForwardTemplateSpec)(&portForwardTemplateSpec.Value) 382 } 383 if podLogStreamTemplateSpec.isUnpacked { 384 obj.Spec.PodLogStreamTemplateSpec = (*v1alpha1.PodLogStreamTemplateSpec)(&podLogStreamTemplateSpec.Value) 385 } 386 obj.Spec.DiscoveryStrategy = v1alpha1.KubernetesDiscoveryStrategy(discoveryStrategy) 387 if disableSource.isUnpacked { 388 obj.Spec.DisableSource = (*v1alpha1.DisableSource)(&disableSource.Value) 389 } 390 if applyCmd.isUnpacked { 391 obj.Spec.ApplyCmd = (*v1alpha1.KubernetesApplyCmd)(&applyCmd.Value) 392 } 393 if restartOn.isUnpacked { 394 obj.Spec.RestartOn = (*v1alpha1.RestartOnSpec)(&restartOn.Value) 395 } 396 if deleteCmd.isUnpacked { 397 obj.Spec.DeleteCmd = (*v1alpha1.KubernetesApplyCmd)(&deleteCmd.Value) 398 } 399 obj.ObjectMeta.Labels = labels 400 obj.ObjectMeta.Annotations = annotations 401 return p.register(t, obj) 402 } 403 404 func (p Plugin) kubernetesDiscovery(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 405 var err error 406 obj := &v1alpha1.KubernetesDiscovery{ 407 ObjectMeta: metav1.ObjectMeta{}, 408 Spec: v1alpha1.KubernetesDiscoverySpec{}, 409 } 410 var watches KubernetesWatchRefList = KubernetesWatchRefList{t: t} 411 var extraSelectors LabelSelectorList = LabelSelectorList{t: t} 412 var portForwardTemplateSpec PortForwardTemplateSpec = PortForwardTemplateSpec{t: t} 413 var podLogStreamTemplateSpec PodLogStreamTemplateSpec = PodLogStreamTemplateSpec{t: t} 414 var labels value.StringStringMap 415 var annotations value.StringStringMap 416 err = starkit.UnpackArgs(t, fn.Name(), args, kwargs, 417 "name", &obj.ObjectMeta.Name, 418 "labels?", &labels, 419 "annotations?", &annotations, 420 "watches?", &watches, 421 "extra_selectors?", &extraSelectors, 422 "port_forward_template_spec?", &portForwardTemplateSpec, 423 "pod_log_stream_template_spec?", &podLogStreamTemplateSpec, 424 "cluster?", &obj.Spec.Cluster, 425 ) 426 if err != nil { 427 return nil, err 428 } 429 430 obj.Spec.Watches = watches.Value 431 obj.Spec.ExtraSelectors = extraSelectors.Value 432 if portForwardTemplateSpec.isUnpacked { 433 obj.Spec.PortForwardTemplateSpec = (*v1alpha1.PortForwardTemplateSpec)(&portForwardTemplateSpec.Value) 434 } 435 if podLogStreamTemplateSpec.isUnpacked { 436 obj.Spec.PodLogStreamTemplateSpec = (*v1alpha1.PodLogStreamTemplateSpec)(&podLogStreamTemplateSpec.Value) 437 } 438 obj.ObjectMeta.Labels = labels 439 obj.ObjectMeta.Annotations = annotations 440 return p.register(t, obj) 441 } 442 443 func (p Plugin) uiButton(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 444 var err error 445 obj := &v1alpha1.UIButton{ 446 ObjectMeta: metav1.ObjectMeta{}, 447 Spec: v1alpha1.UIButtonSpec{}, 448 } 449 var location UIComponentLocation = UIComponentLocation{t: t} 450 var inputs UIInputSpecList = UIInputSpecList{t: t} 451 var labels value.StringStringMap 452 var annotations value.StringStringMap 453 err = starkit.UnpackArgs(t, fn.Name(), args, kwargs, 454 "name", &obj.ObjectMeta.Name, 455 "labels?", &labels, 456 "annotations?", &annotations, 457 "location?", &location, 458 "text?", &obj.Spec.Text, 459 "icon_name?", &obj.Spec.IconName, 460 "icon_svg?", &obj.Spec.IconSVG, 461 "disabled?", &obj.Spec.Disabled, 462 "requires_confirmation?", &obj.Spec.RequiresConfirmation, 463 "inputs?", &inputs, 464 ) 465 if err != nil { 466 return nil, err 467 } 468 469 obj.Spec.Location = v1alpha1.UIComponentLocation(location.Value) 470 obj.Spec.Inputs = inputs.Value 471 obj.ObjectMeta.Labels = labels 472 obj.ObjectMeta.Annotations = annotations 473 return p.register(t, obj) 474 } 475 476 type ConfigMapDisableSource struct { 477 *starlark.Dict 478 Value v1alpha1.ConfigMapDisableSource 479 isUnpacked bool 480 t *starlark.Thread // instantiation thread for computing abspath 481 } 482 483 func (p Plugin) configMapDisableSource(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 484 var name starlark.Value 485 var key starlark.Value 486 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 487 "name?", &name, 488 "key?", &key, 489 ) 490 if err != nil { 491 return nil, err 492 } 493 494 dict := starlark.NewDict(2) 495 496 if name != nil { 497 err := dict.SetKey(starlark.String("name"), name) 498 if err != nil { 499 return nil, err 500 } 501 } 502 if key != nil { 503 err := dict.SetKey(starlark.String("key"), key) 504 if err != nil { 505 return nil, err 506 } 507 } 508 var obj *ConfigMapDisableSource = &ConfigMapDisableSource{t: t} 509 err = obj.Unpack(dict) 510 if err != nil { 511 return nil, err 512 } 513 return obj, nil 514 } 515 516 func (o *ConfigMapDisableSource) Unpack(v starlark.Value) error { 517 obj := v1alpha1.ConfigMapDisableSource{} 518 519 starlarkObj, ok := v.(*ConfigMapDisableSource) 520 if ok { 521 *o = *starlarkObj 522 return nil 523 } 524 525 mapObj, ok := v.(*starlark.Dict) 526 if !ok { 527 return fmt.Errorf("expected dict, actual: %v", v.Type()) 528 } 529 530 for _, item := range mapObj.Items() { 531 keyV, val := item[0], item[1] 532 key, ok := starlark.AsString(keyV) 533 if !ok { 534 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 535 } 536 537 if key == "name" { 538 v, ok := starlark.AsString(val) 539 if !ok { 540 return fmt.Errorf("Expected string, actual: %s", val.Type()) 541 } 542 obj.Name = string(v) 543 continue 544 } 545 if key == "key" { 546 v, ok := starlark.AsString(val) 547 if !ok { 548 return fmt.Errorf("Expected string, actual: %s", val.Type()) 549 } 550 obj.Key = string(v) 551 continue 552 } 553 return fmt.Errorf("Unexpected attribute name: %s", key) 554 } 555 556 mapObj.Freeze() 557 o.Dict = mapObj 558 o.Value = obj 559 o.isUnpacked = true 560 561 return nil 562 } 563 564 type ConfigMapDisableSourceList struct { 565 *starlark.List 566 Value []v1alpha1.ConfigMapDisableSource 567 t *starlark.Thread 568 } 569 570 func (o *ConfigMapDisableSourceList) Unpack(v starlark.Value) error { 571 items := []v1alpha1.ConfigMapDisableSource{} 572 573 listObj, ok := v.(*starlark.List) 574 if !ok { 575 return fmt.Errorf("expected list, actual: %v", v.Type()) 576 } 577 578 for i := 0; i < listObj.Len(); i++ { 579 v := listObj.Index(i) 580 581 item := ConfigMapDisableSource{t: o.t} 582 err := item.Unpack(v) 583 if err != nil { 584 return fmt.Errorf("at index %d: %v", i, err) 585 } 586 items = append(items, v1alpha1.ConfigMapDisableSource(item.Value)) 587 } 588 589 listObj.Freeze() 590 o.List = listObj 591 o.Value = items 592 593 return nil 594 } 595 596 type DisableSource struct { 597 *starlark.Dict 598 Value v1alpha1.DisableSource 599 isUnpacked bool 600 t *starlark.Thread // instantiation thread for computing abspath 601 } 602 603 func (p Plugin) disableSource(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 604 var configMap starlark.Value 605 var everyConfigMap starlark.Value 606 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 607 "config_map?", &configMap, 608 "every_config_map?", &everyConfigMap, 609 ) 610 if err != nil { 611 return nil, err 612 } 613 614 dict := starlark.NewDict(2) 615 616 if configMap != nil { 617 err := dict.SetKey(starlark.String("config_map"), configMap) 618 if err != nil { 619 return nil, err 620 } 621 } 622 if everyConfigMap != nil { 623 err := dict.SetKey(starlark.String("every_config_map"), everyConfigMap) 624 if err != nil { 625 return nil, err 626 } 627 } 628 var obj *DisableSource = &DisableSource{t: t} 629 err = obj.Unpack(dict) 630 if err != nil { 631 return nil, err 632 } 633 return obj, nil 634 } 635 636 func (o *DisableSource) Unpack(v starlark.Value) error { 637 obj := v1alpha1.DisableSource{} 638 639 starlarkObj, ok := v.(*DisableSource) 640 if ok { 641 *o = *starlarkObj 642 return nil 643 } 644 645 mapObj, ok := v.(*starlark.Dict) 646 if !ok { 647 return fmt.Errorf("expected dict, actual: %v", v.Type()) 648 } 649 650 for _, item := range mapObj.Items() { 651 keyV, val := item[0], item[1] 652 key, ok := starlark.AsString(keyV) 653 if !ok { 654 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 655 } 656 657 if key == "config_map" { 658 v := ConfigMapDisableSource{t: o.t} 659 err := v.Unpack(val) 660 if err != nil { 661 return fmt.Errorf("unpacking %s: %v", key, err) 662 } 663 obj.ConfigMap = (*v1alpha1.ConfigMapDisableSource)(&v.Value) 664 continue 665 } 666 if key == "every_config_map" { 667 v := ConfigMapDisableSourceList{t: o.t} 668 err := v.Unpack(val) 669 if err != nil { 670 return fmt.Errorf("unpacking %s: %v", key, err) 671 } 672 obj.EveryConfigMap = v.Value 673 continue 674 } 675 return fmt.Errorf("Unexpected attribute name: %s", key) 676 } 677 678 mapObj.Freeze() 679 o.Dict = mapObj 680 o.Value = obj 681 o.isUnpacked = true 682 683 return nil 684 } 685 686 type DisableSourceList struct { 687 *starlark.List 688 Value []v1alpha1.DisableSource 689 t *starlark.Thread 690 } 691 692 func (o *DisableSourceList) Unpack(v starlark.Value) error { 693 items := []v1alpha1.DisableSource{} 694 695 listObj, ok := v.(*starlark.List) 696 if !ok { 697 return fmt.Errorf("expected list, actual: %v", v.Type()) 698 } 699 700 for i := 0; i < listObj.Len(); i++ { 701 v := listObj.Index(i) 702 703 item := DisableSource{t: o.t} 704 err := item.Unpack(v) 705 if err != nil { 706 return fmt.Errorf("at index %d: %v", i, err) 707 } 708 items = append(items, v1alpha1.DisableSource(item.Value)) 709 } 710 711 listObj.Freeze() 712 o.List = listObj 713 o.Value = items 714 715 return nil 716 } 717 718 type ExecAction struct { 719 *starlark.Dict 720 Value v1alpha1.ExecAction 721 isUnpacked bool 722 t *starlark.Thread // instantiation thread for computing abspath 723 } 724 725 func (p Plugin) execAction(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 726 var command starlark.Value 727 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 728 "command?", &command, 729 ) 730 if err != nil { 731 return nil, err 732 } 733 734 dict := starlark.NewDict(1) 735 736 if command != nil { 737 err := dict.SetKey(starlark.String("command"), command) 738 if err != nil { 739 return nil, err 740 } 741 } 742 var obj *ExecAction = &ExecAction{t: t} 743 err = obj.Unpack(dict) 744 if err != nil { 745 return nil, err 746 } 747 return obj, nil 748 } 749 750 func (o *ExecAction) Unpack(v starlark.Value) error { 751 obj := v1alpha1.ExecAction{} 752 753 starlarkObj, ok := v.(*ExecAction) 754 if ok { 755 *o = *starlarkObj 756 return nil 757 } 758 759 mapObj, ok := v.(*starlark.Dict) 760 if !ok { 761 return fmt.Errorf("expected dict, actual: %v", v.Type()) 762 } 763 764 for _, item := range mapObj.Items() { 765 keyV, val := item[0], item[1] 766 key, ok := starlark.AsString(keyV) 767 if !ok { 768 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 769 } 770 771 if key == "command" { 772 var v value.StringList 773 err := v.Unpack(val) 774 if err != nil { 775 return fmt.Errorf("unpacking %s: %v", key, err) 776 } 777 obj.Command = v 778 continue 779 } 780 return fmt.Errorf("Unexpected attribute name: %s", key) 781 } 782 783 mapObj.Freeze() 784 o.Dict = mapObj 785 o.Value = obj 786 o.isUnpacked = true 787 788 return nil 789 } 790 791 type ExecActionList struct { 792 *starlark.List 793 Value []v1alpha1.ExecAction 794 t *starlark.Thread 795 } 796 797 func (o *ExecActionList) Unpack(v starlark.Value) error { 798 items := []v1alpha1.ExecAction{} 799 800 listObj, ok := v.(*starlark.List) 801 if !ok { 802 return fmt.Errorf("expected list, actual: %v", v.Type()) 803 } 804 805 for i := 0; i < listObj.Len(); i++ { 806 v := listObj.Index(i) 807 808 item := ExecAction{t: o.t} 809 err := item.Unpack(v) 810 if err != nil { 811 return fmt.Errorf("at index %d: %v", i, err) 812 } 813 items = append(items, v1alpha1.ExecAction(item.Value)) 814 } 815 816 listObj.Freeze() 817 o.List = listObj 818 o.Value = items 819 820 return nil 821 } 822 823 type Forward struct { 824 *starlark.Dict 825 Value v1alpha1.Forward 826 isUnpacked bool 827 t *starlark.Thread // instantiation thread for computing abspath 828 } 829 830 func (p Plugin) forward(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 831 var localPort starlark.Value 832 var containerPort starlark.Value 833 var host starlark.Value 834 var name starlark.Value 835 var path starlark.Value 836 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 837 "local_port?", &localPort, 838 "container_port?", &containerPort, 839 "host?", &host, 840 "name?", &name, 841 "path?", &path, 842 ) 843 if err != nil { 844 return nil, err 845 } 846 847 dict := starlark.NewDict(5) 848 849 if localPort != nil { 850 err := dict.SetKey(starlark.String("local_port"), localPort) 851 if err != nil { 852 return nil, err 853 } 854 } 855 if containerPort != nil { 856 err := dict.SetKey(starlark.String("container_port"), containerPort) 857 if err != nil { 858 return nil, err 859 } 860 } 861 if host != nil { 862 err := dict.SetKey(starlark.String("host"), host) 863 if err != nil { 864 return nil, err 865 } 866 } 867 if name != nil { 868 err := dict.SetKey(starlark.String("name"), name) 869 if err != nil { 870 return nil, err 871 } 872 } 873 if path != nil { 874 err := dict.SetKey(starlark.String("path"), path) 875 if err != nil { 876 return nil, err 877 } 878 } 879 var obj *Forward = &Forward{t: t} 880 err = obj.Unpack(dict) 881 if err != nil { 882 return nil, err 883 } 884 return obj, nil 885 } 886 887 func (o *Forward) Unpack(v starlark.Value) error { 888 obj := v1alpha1.Forward{} 889 890 starlarkObj, ok := v.(*Forward) 891 if ok { 892 *o = *starlarkObj 893 return nil 894 } 895 896 mapObj, ok := v.(*starlark.Dict) 897 if !ok { 898 return fmt.Errorf("expected dict, actual: %v", v.Type()) 899 } 900 901 for _, item := range mapObj.Items() { 902 keyV, val := item[0], item[1] 903 key, ok := starlark.AsString(keyV) 904 if !ok { 905 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 906 } 907 908 if key == "local_port" { 909 v, err := starlark.AsInt32(val) 910 if err != nil { 911 return fmt.Errorf("Expected int, got: %v", err) 912 } 913 obj.LocalPort = int32(v) 914 continue 915 } 916 if key == "container_port" { 917 v, err := starlark.AsInt32(val) 918 if err != nil { 919 return fmt.Errorf("Expected int, got: %v", err) 920 } 921 obj.ContainerPort = int32(v) 922 continue 923 } 924 if key == "host" { 925 v, ok := starlark.AsString(val) 926 if !ok { 927 return fmt.Errorf("Expected string, actual: %s", val.Type()) 928 } 929 obj.Host = string(v) 930 continue 931 } 932 if key == "name" { 933 v, ok := starlark.AsString(val) 934 if !ok { 935 return fmt.Errorf("Expected string, actual: %s", val.Type()) 936 } 937 obj.Name = string(v) 938 continue 939 } 940 if key == "path" { 941 v, ok := starlark.AsString(val) 942 if !ok { 943 return fmt.Errorf("Expected string, actual: %s", val.Type()) 944 } 945 obj.Path = string(v) 946 continue 947 } 948 return fmt.Errorf("Unexpected attribute name: %s", key) 949 } 950 951 mapObj.Freeze() 952 o.Dict = mapObj 953 o.Value = obj 954 o.isUnpacked = true 955 956 return nil 957 } 958 959 type ForwardList struct { 960 *starlark.List 961 Value []v1alpha1.Forward 962 t *starlark.Thread 963 } 964 965 func (o *ForwardList) Unpack(v starlark.Value) error { 966 items := []v1alpha1.Forward{} 967 968 listObj, ok := v.(*starlark.List) 969 if !ok { 970 return fmt.Errorf("expected list, actual: %v", v.Type()) 971 } 972 973 for i := 0; i < listObj.Len(); i++ { 974 v := listObj.Index(i) 975 976 item := Forward{t: o.t} 977 err := item.Unpack(v) 978 if err != nil { 979 return fmt.Errorf("at index %d: %v", i, err) 980 } 981 items = append(items, v1alpha1.Forward(item.Value)) 982 } 983 984 listObj.Freeze() 985 o.List = listObj 986 o.Value = items 987 988 return nil 989 } 990 991 type HTTPGetAction struct { 992 *starlark.Dict 993 Value v1alpha1.HTTPGetAction 994 isUnpacked bool 995 t *starlark.Thread // instantiation thread for computing abspath 996 } 997 998 func (p Plugin) hTTPGetAction(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 999 var path starlark.Value 1000 var port starlark.Value 1001 var host starlark.Value 1002 var scheme starlark.Value 1003 var hTTPHeaders starlark.Value 1004 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 1005 "path?", &path, 1006 "port?", &port, 1007 "host?", &host, 1008 "scheme?", &scheme, 1009 "http_headers?", &hTTPHeaders, 1010 ) 1011 if err != nil { 1012 return nil, err 1013 } 1014 1015 dict := starlark.NewDict(5) 1016 1017 if path != nil { 1018 err := dict.SetKey(starlark.String("path"), path) 1019 if err != nil { 1020 return nil, err 1021 } 1022 } 1023 if port != nil { 1024 err := dict.SetKey(starlark.String("port"), port) 1025 if err != nil { 1026 return nil, err 1027 } 1028 } 1029 if host != nil { 1030 err := dict.SetKey(starlark.String("host"), host) 1031 if err != nil { 1032 return nil, err 1033 } 1034 } 1035 if scheme != nil { 1036 err := dict.SetKey(starlark.String("scheme"), scheme) 1037 if err != nil { 1038 return nil, err 1039 } 1040 } 1041 if hTTPHeaders != nil { 1042 err := dict.SetKey(starlark.String("http_headers"), hTTPHeaders) 1043 if err != nil { 1044 return nil, err 1045 } 1046 } 1047 var obj *HTTPGetAction = &HTTPGetAction{t: t} 1048 err = obj.Unpack(dict) 1049 if err != nil { 1050 return nil, err 1051 } 1052 return obj, nil 1053 } 1054 1055 func (o *HTTPGetAction) Unpack(v starlark.Value) error { 1056 obj := v1alpha1.HTTPGetAction{} 1057 1058 starlarkObj, ok := v.(*HTTPGetAction) 1059 if ok { 1060 *o = *starlarkObj 1061 return nil 1062 } 1063 1064 mapObj, ok := v.(*starlark.Dict) 1065 if !ok { 1066 return fmt.Errorf("expected dict, actual: %v", v.Type()) 1067 } 1068 1069 for _, item := range mapObj.Items() { 1070 keyV, val := item[0], item[1] 1071 key, ok := starlark.AsString(keyV) 1072 if !ok { 1073 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 1074 } 1075 1076 if key == "path" { 1077 v, ok := starlark.AsString(val) 1078 if !ok { 1079 return fmt.Errorf("Expected string, actual: %s", val.Type()) 1080 } 1081 obj.Path = string(v) 1082 continue 1083 } 1084 if key == "port" { 1085 v, err := starlark.AsInt32(val) 1086 if err != nil { 1087 return fmt.Errorf("Expected int, got: %v", err) 1088 } 1089 obj.Port = int32(v) 1090 continue 1091 } 1092 if key == "host" { 1093 v, ok := starlark.AsString(val) 1094 if !ok { 1095 return fmt.Errorf("Expected string, actual: %s", val.Type()) 1096 } 1097 obj.Host = string(v) 1098 continue 1099 } 1100 if key == "scheme" { 1101 v, ok := starlark.AsString(val) 1102 if !ok { 1103 return fmt.Errorf("Expected string, actual: %s", val.Type()) 1104 } 1105 obj.Scheme = v1alpha1.URIScheme(v) 1106 continue 1107 } 1108 if key == "http_headers" { 1109 v := HTTPHeaderList{t: o.t} 1110 err := v.Unpack(val) 1111 if err != nil { 1112 return fmt.Errorf("unpacking %s: %v", key, err) 1113 } 1114 obj.HTTPHeaders = v.Value 1115 continue 1116 } 1117 return fmt.Errorf("Unexpected attribute name: %s", key) 1118 } 1119 1120 mapObj.Freeze() 1121 o.Dict = mapObj 1122 o.Value = obj 1123 o.isUnpacked = true 1124 1125 return nil 1126 } 1127 1128 type HTTPGetActionList struct { 1129 *starlark.List 1130 Value []v1alpha1.HTTPGetAction 1131 t *starlark.Thread 1132 } 1133 1134 func (o *HTTPGetActionList) Unpack(v starlark.Value) error { 1135 items := []v1alpha1.HTTPGetAction{} 1136 1137 listObj, ok := v.(*starlark.List) 1138 if !ok { 1139 return fmt.Errorf("expected list, actual: %v", v.Type()) 1140 } 1141 1142 for i := 0; i < listObj.Len(); i++ { 1143 v := listObj.Index(i) 1144 1145 item := HTTPGetAction{t: o.t} 1146 err := item.Unpack(v) 1147 if err != nil { 1148 return fmt.Errorf("at index %d: %v", i, err) 1149 } 1150 items = append(items, v1alpha1.HTTPGetAction(item.Value)) 1151 } 1152 1153 listObj.Freeze() 1154 o.List = listObj 1155 o.Value = items 1156 1157 return nil 1158 } 1159 1160 type HTTPHeader struct { 1161 *starlark.Dict 1162 Value v1alpha1.HTTPHeader 1163 isUnpacked bool 1164 t *starlark.Thread // instantiation thread for computing abspath 1165 } 1166 1167 func (p Plugin) hTTPHeader(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 1168 var name starlark.Value 1169 var value starlark.Value 1170 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 1171 "name?", &name, 1172 "value?", &value, 1173 ) 1174 if err != nil { 1175 return nil, err 1176 } 1177 1178 dict := starlark.NewDict(2) 1179 1180 if name != nil { 1181 err := dict.SetKey(starlark.String("name"), name) 1182 if err != nil { 1183 return nil, err 1184 } 1185 } 1186 if value != nil { 1187 err := dict.SetKey(starlark.String("value"), value) 1188 if err != nil { 1189 return nil, err 1190 } 1191 } 1192 var obj *HTTPHeader = &HTTPHeader{t: t} 1193 err = obj.Unpack(dict) 1194 if err != nil { 1195 return nil, err 1196 } 1197 return obj, nil 1198 } 1199 1200 func (o *HTTPHeader) Unpack(v starlark.Value) error { 1201 obj := v1alpha1.HTTPHeader{} 1202 1203 starlarkObj, ok := v.(*HTTPHeader) 1204 if ok { 1205 *o = *starlarkObj 1206 return nil 1207 } 1208 1209 mapObj, ok := v.(*starlark.Dict) 1210 if !ok { 1211 return fmt.Errorf("expected dict, actual: %v", v.Type()) 1212 } 1213 1214 for _, item := range mapObj.Items() { 1215 keyV, val := item[0], item[1] 1216 key, ok := starlark.AsString(keyV) 1217 if !ok { 1218 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 1219 } 1220 1221 if key == "name" { 1222 v, ok := starlark.AsString(val) 1223 if !ok { 1224 return fmt.Errorf("Expected string, actual: %s", val.Type()) 1225 } 1226 obj.Name = string(v) 1227 continue 1228 } 1229 if key == "value" { 1230 v, ok := starlark.AsString(val) 1231 if !ok { 1232 return fmt.Errorf("Expected string, actual: %s", val.Type()) 1233 } 1234 obj.Value = string(v) 1235 continue 1236 } 1237 return fmt.Errorf("Unexpected attribute name: %s", key) 1238 } 1239 1240 mapObj.Freeze() 1241 o.Dict = mapObj 1242 o.Value = obj 1243 o.isUnpacked = true 1244 1245 return nil 1246 } 1247 1248 type HTTPHeaderList struct { 1249 *starlark.List 1250 Value []v1alpha1.HTTPHeader 1251 t *starlark.Thread 1252 } 1253 1254 func (o *HTTPHeaderList) Unpack(v starlark.Value) error { 1255 items := []v1alpha1.HTTPHeader{} 1256 1257 listObj, ok := v.(*starlark.List) 1258 if !ok { 1259 return fmt.Errorf("expected list, actual: %v", v.Type()) 1260 } 1261 1262 for i := 0; i < listObj.Len(); i++ { 1263 v := listObj.Index(i) 1264 1265 item := HTTPHeader{t: o.t} 1266 err := item.Unpack(v) 1267 if err != nil { 1268 return fmt.Errorf("at index %d: %v", i, err) 1269 } 1270 items = append(items, v1alpha1.HTTPHeader(item.Value)) 1271 } 1272 1273 listObj.Freeze() 1274 o.List = listObj 1275 o.Value = items 1276 1277 return nil 1278 } 1279 1280 type Handler struct { 1281 *starlark.Dict 1282 Value v1alpha1.Handler 1283 isUnpacked bool 1284 t *starlark.Thread // instantiation thread for computing abspath 1285 } 1286 1287 func (p Plugin) handler(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 1288 var exec starlark.Value 1289 var hTTPGet starlark.Value 1290 var tCPSocket starlark.Value 1291 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 1292 "exec?", &exec, 1293 "http_get?", &hTTPGet, 1294 "tcp_socket?", &tCPSocket, 1295 ) 1296 if err != nil { 1297 return nil, err 1298 } 1299 1300 dict := starlark.NewDict(3) 1301 1302 if exec != nil { 1303 err := dict.SetKey(starlark.String("exec"), exec) 1304 if err != nil { 1305 return nil, err 1306 } 1307 } 1308 if hTTPGet != nil { 1309 err := dict.SetKey(starlark.String("http_get"), hTTPGet) 1310 if err != nil { 1311 return nil, err 1312 } 1313 } 1314 if tCPSocket != nil { 1315 err := dict.SetKey(starlark.String("tcp_socket"), tCPSocket) 1316 if err != nil { 1317 return nil, err 1318 } 1319 } 1320 var obj *Handler = &Handler{t: t} 1321 err = obj.Unpack(dict) 1322 if err != nil { 1323 return nil, err 1324 } 1325 return obj, nil 1326 } 1327 1328 func (o *Handler) Unpack(v starlark.Value) error { 1329 obj := v1alpha1.Handler{} 1330 1331 starlarkObj, ok := v.(*Handler) 1332 if ok { 1333 *o = *starlarkObj 1334 return nil 1335 } 1336 1337 mapObj, ok := v.(*starlark.Dict) 1338 if !ok { 1339 return fmt.Errorf("expected dict, actual: %v", v.Type()) 1340 } 1341 1342 for _, item := range mapObj.Items() { 1343 keyV, val := item[0], item[1] 1344 key, ok := starlark.AsString(keyV) 1345 if !ok { 1346 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 1347 } 1348 1349 if key == "exec" { 1350 v := ExecAction{t: o.t} 1351 err := v.Unpack(val) 1352 if err != nil { 1353 return fmt.Errorf("unpacking %s: %v", key, err) 1354 } 1355 obj.Exec = (*v1alpha1.ExecAction)(&v.Value) 1356 continue 1357 } 1358 if key == "http_get" { 1359 v := HTTPGetAction{t: o.t} 1360 err := v.Unpack(val) 1361 if err != nil { 1362 return fmt.Errorf("unpacking %s: %v", key, err) 1363 } 1364 obj.HTTPGet = (*v1alpha1.HTTPGetAction)(&v.Value) 1365 continue 1366 } 1367 if key == "tcp_socket" { 1368 v := TCPSocketAction{t: o.t} 1369 err := v.Unpack(val) 1370 if err != nil { 1371 return fmt.Errorf("unpacking %s: %v", key, err) 1372 } 1373 obj.TCPSocket = (*v1alpha1.TCPSocketAction)(&v.Value) 1374 continue 1375 } 1376 return fmt.Errorf("Unexpected attribute name: %s", key) 1377 } 1378 1379 mapObj.Freeze() 1380 o.Dict = mapObj 1381 o.Value = obj 1382 o.isUnpacked = true 1383 1384 return nil 1385 } 1386 1387 type HandlerList struct { 1388 *starlark.List 1389 Value []v1alpha1.Handler 1390 t *starlark.Thread 1391 } 1392 1393 func (o *HandlerList) Unpack(v starlark.Value) error { 1394 items := []v1alpha1.Handler{} 1395 1396 listObj, ok := v.(*starlark.List) 1397 if !ok { 1398 return fmt.Errorf("expected list, actual: %v", v.Type()) 1399 } 1400 1401 for i := 0; i < listObj.Len(); i++ { 1402 v := listObj.Index(i) 1403 1404 item := Handler{t: o.t} 1405 err := item.Unpack(v) 1406 if err != nil { 1407 return fmt.Errorf("at index %d: %v", i, err) 1408 } 1409 items = append(items, v1alpha1.Handler(item.Value)) 1410 } 1411 1412 listObj.Freeze() 1413 o.List = listObj 1414 o.Value = items 1415 1416 return nil 1417 } 1418 1419 type IgnoreDef struct { 1420 *starlark.Dict 1421 Value v1alpha1.IgnoreDef 1422 isUnpacked bool 1423 t *starlark.Thread // instantiation thread for computing abspath 1424 } 1425 1426 func (p Plugin) ignoreDef(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 1427 var basePath starlark.Value 1428 var patterns starlark.Value 1429 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 1430 "base_path?", &basePath, 1431 "patterns?", &patterns, 1432 ) 1433 if err != nil { 1434 return nil, err 1435 } 1436 1437 dict := starlark.NewDict(2) 1438 1439 if basePath != nil { 1440 err := dict.SetKey(starlark.String("base_path"), basePath) 1441 if err != nil { 1442 return nil, err 1443 } 1444 } 1445 if patterns != nil { 1446 err := dict.SetKey(starlark.String("patterns"), patterns) 1447 if err != nil { 1448 return nil, err 1449 } 1450 } 1451 var obj *IgnoreDef = &IgnoreDef{t: t} 1452 err = obj.Unpack(dict) 1453 if err != nil { 1454 return nil, err 1455 } 1456 return obj, nil 1457 } 1458 1459 func (o *IgnoreDef) Unpack(v starlark.Value) error { 1460 obj := v1alpha1.IgnoreDef{} 1461 1462 starlarkObj, ok := v.(*IgnoreDef) 1463 if ok { 1464 *o = *starlarkObj 1465 return nil 1466 } 1467 1468 mapObj, ok := v.(*starlark.Dict) 1469 if !ok { 1470 return fmt.Errorf("expected dict, actual: %v", v.Type()) 1471 } 1472 1473 for _, item := range mapObj.Items() { 1474 keyV, val := item[0], item[1] 1475 key, ok := starlark.AsString(keyV) 1476 if !ok { 1477 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 1478 } 1479 1480 if key == "base_path" { 1481 v := value.NewLocalPathUnpacker(o.t) 1482 err := v.Unpack(val) 1483 if err != nil { 1484 return fmt.Errorf("unpacking %s: %v", key, err) 1485 } 1486 obj.BasePath = v.Value 1487 continue 1488 } 1489 if key == "patterns" { 1490 var v value.StringList 1491 err := v.Unpack(val) 1492 if err != nil { 1493 return fmt.Errorf("unpacking %s: %v", key, err) 1494 } 1495 obj.Patterns = v 1496 continue 1497 } 1498 return fmt.Errorf("Unexpected attribute name: %s", key) 1499 } 1500 1501 mapObj.Freeze() 1502 o.Dict = mapObj 1503 o.Value = obj 1504 o.isUnpacked = true 1505 1506 return nil 1507 } 1508 1509 type IgnoreDefList struct { 1510 *starlark.List 1511 Value []v1alpha1.IgnoreDef 1512 t *starlark.Thread 1513 } 1514 1515 func (o *IgnoreDefList) Unpack(v starlark.Value) error { 1516 items := []v1alpha1.IgnoreDef{} 1517 1518 listObj, ok := v.(*starlark.List) 1519 if !ok { 1520 return fmt.Errorf("expected list, actual: %v", v.Type()) 1521 } 1522 1523 for i := 0; i < listObj.Len(); i++ { 1524 v := listObj.Index(i) 1525 1526 item := IgnoreDef{t: o.t} 1527 err := item.Unpack(v) 1528 if err != nil { 1529 return fmt.Errorf("at index %d: %v", i, err) 1530 } 1531 items = append(items, v1alpha1.IgnoreDef(item.Value)) 1532 } 1533 1534 listObj.Freeze() 1535 o.List = listObj 1536 o.Value = items 1537 1538 return nil 1539 } 1540 1541 type KubernetesApplyCmd struct { 1542 *starlark.Dict 1543 Value v1alpha1.KubernetesApplyCmd 1544 isUnpacked bool 1545 t *starlark.Thread // instantiation thread for computing abspath 1546 } 1547 1548 func (p Plugin) kubernetesApplyCmd(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 1549 var specArgs starlark.Value 1550 var dir starlark.Value 1551 var env starlark.Value 1552 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 1553 "args?", &specArgs, 1554 "dir?", &dir, 1555 "env?", &env, 1556 ) 1557 if err != nil { 1558 return nil, err 1559 } 1560 1561 dict := starlark.NewDict(3) 1562 1563 if specArgs != nil { 1564 err := dict.SetKey(starlark.String("args"), specArgs) 1565 if err != nil { 1566 return nil, err 1567 } 1568 } 1569 if dir != nil { 1570 err := dict.SetKey(starlark.String("dir"), dir) 1571 if err != nil { 1572 return nil, err 1573 } 1574 } 1575 if env != nil { 1576 err := dict.SetKey(starlark.String("env"), env) 1577 if err != nil { 1578 return nil, err 1579 } 1580 } 1581 var obj *KubernetesApplyCmd = &KubernetesApplyCmd{t: t} 1582 err = obj.Unpack(dict) 1583 if err != nil { 1584 return nil, err 1585 } 1586 return obj, nil 1587 } 1588 1589 func (o *KubernetesApplyCmd) Unpack(v starlark.Value) error { 1590 obj := v1alpha1.KubernetesApplyCmd{} 1591 1592 starlarkObj, ok := v.(*KubernetesApplyCmd) 1593 if ok { 1594 *o = *starlarkObj 1595 return nil 1596 } 1597 1598 mapObj, ok := v.(*starlark.Dict) 1599 if !ok { 1600 return fmt.Errorf("expected dict, actual: %v", v.Type()) 1601 } 1602 1603 for _, item := range mapObj.Items() { 1604 keyV, val := item[0], item[1] 1605 key, ok := starlark.AsString(keyV) 1606 if !ok { 1607 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 1608 } 1609 1610 if key == "args" { 1611 var v value.StringList 1612 err := v.Unpack(val) 1613 if err != nil { 1614 return fmt.Errorf("unpacking %s: %v", key, err) 1615 } 1616 obj.Args = v 1617 continue 1618 } 1619 if key == "dir" { 1620 v := value.NewLocalPathUnpacker(o.t) 1621 err := v.Unpack(val) 1622 if err != nil { 1623 return fmt.Errorf("unpacking %s: %v", key, err) 1624 } 1625 obj.Dir = v.Value 1626 continue 1627 } 1628 if key == "env" { 1629 var v value.StringList 1630 err := v.Unpack(val) 1631 if err != nil { 1632 return fmt.Errorf("unpacking %s: %v", key, err) 1633 } 1634 obj.Env = v 1635 continue 1636 } 1637 return fmt.Errorf("Unexpected attribute name: %s", key) 1638 } 1639 1640 mapObj.Freeze() 1641 o.Dict = mapObj 1642 o.Value = obj 1643 o.isUnpacked = true 1644 1645 return nil 1646 } 1647 1648 type KubernetesApplyCmdList struct { 1649 *starlark.List 1650 Value []v1alpha1.KubernetesApplyCmd 1651 t *starlark.Thread 1652 } 1653 1654 func (o *KubernetesApplyCmdList) Unpack(v starlark.Value) error { 1655 items := []v1alpha1.KubernetesApplyCmd{} 1656 1657 listObj, ok := v.(*starlark.List) 1658 if !ok { 1659 return fmt.Errorf("expected list, actual: %v", v.Type()) 1660 } 1661 1662 for i := 0; i < listObj.Len(); i++ { 1663 v := listObj.Index(i) 1664 1665 item := KubernetesApplyCmd{t: o.t} 1666 err := item.Unpack(v) 1667 if err != nil { 1668 return fmt.Errorf("at index %d: %v", i, err) 1669 } 1670 items = append(items, v1alpha1.KubernetesApplyCmd(item.Value)) 1671 } 1672 1673 listObj.Freeze() 1674 o.List = listObj 1675 o.Value = items 1676 1677 return nil 1678 } 1679 1680 type KubernetesDiscoveryTemplateSpec struct { 1681 *starlark.Dict 1682 Value v1alpha1.KubernetesDiscoveryTemplateSpec 1683 isUnpacked bool 1684 t *starlark.Thread // instantiation thread for computing abspath 1685 } 1686 1687 func (p Plugin) kubernetesDiscoveryTemplateSpec(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 1688 var extraSelectors starlark.Value 1689 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 1690 "extra_selectors?", &extraSelectors, 1691 ) 1692 if err != nil { 1693 return nil, err 1694 } 1695 1696 dict := starlark.NewDict(1) 1697 1698 if extraSelectors != nil { 1699 err := dict.SetKey(starlark.String("extra_selectors"), extraSelectors) 1700 if err != nil { 1701 return nil, err 1702 } 1703 } 1704 var obj *KubernetesDiscoveryTemplateSpec = &KubernetesDiscoveryTemplateSpec{t: t} 1705 err = obj.Unpack(dict) 1706 if err != nil { 1707 return nil, err 1708 } 1709 return obj, nil 1710 } 1711 1712 func (o *KubernetesDiscoveryTemplateSpec) Unpack(v starlark.Value) error { 1713 obj := v1alpha1.KubernetesDiscoveryTemplateSpec{} 1714 1715 starlarkObj, ok := v.(*KubernetesDiscoveryTemplateSpec) 1716 if ok { 1717 *o = *starlarkObj 1718 return nil 1719 } 1720 1721 mapObj, ok := v.(*starlark.Dict) 1722 if !ok { 1723 return fmt.Errorf("expected dict, actual: %v", v.Type()) 1724 } 1725 1726 for _, item := range mapObj.Items() { 1727 keyV, val := item[0], item[1] 1728 key, ok := starlark.AsString(keyV) 1729 if !ok { 1730 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 1731 } 1732 1733 if key == "extra_selectors" { 1734 v := LabelSelectorList{t: o.t} 1735 err := v.Unpack(val) 1736 if err != nil { 1737 return fmt.Errorf("unpacking %s: %v", key, err) 1738 } 1739 obj.ExtraSelectors = v.Value 1740 continue 1741 } 1742 return fmt.Errorf("Unexpected attribute name: %s", key) 1743 } 1744 1745 mapObj.Freeze() 1746 o.Dict = mapObj 1747 o.Value = obj 1748 o.isUnpacked = true 1749 1750 return nil 1751 } 1752 1753 type KubernetesDiscoveryTemplateSpecList struct { 1754 *starlark.List 1755 Value []v1alpha1.KubernetesDiscoveryTemplateSpec 1756 t *starlark.Thread 1757 } 1758 1759 func (o *KubernetesDiscoveryTemplateSpecList) Unpack(v starlark.Value) error { 1760 items := []v1alpha1.KubernetesDiscoveryTemplateSpec{} 1761 1762 listObj, ok := v.(*starlark.List) 1763 if !ok { 1764 return fmt.Errorf("expected list, actual: %v", v.Type()) 1765 } 1766 1767 for i := 0; i < listObj.Len(); i++ { 1768 v := listObj.Index(i) 1769 1770 item := KubernetesDiscoveryTemplateSpec{t: o.t} 1771 err := item.Unpack(v) 1772 if err != nil { 1773 return fmt.Errorf("at index %d: %v", i, err) 1774 } 1775 items = append(items, v1alpha1.KubernetesDiscoveryTemplateSpec(item.Value)) 1776 } 1777 1778 listObj.Freeze() 1779 o.List = listObj 1780 o.Value = items 1781 1782 return nil 1783 } 1784 1785 type KubernetesImageLocator struct { 1786 *starlark.Dict 1787 Value v1alpha1.KubernetesImageLocator 1788 isUnpacked bool 1789 t *starlark.Thread // instantiation thread for computing abspath 1790 } 1791 1792 func (p Plugin) kubernetesImageLocator(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 1793 var objectSelector starlark.Value 1794 var path starlark.Value 1795 var object starlark.Value 1796 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 1797 "object_selector?", &objectSelector, 1798 "path?", &path, 1799 "object?", &object, 1800 ) 1801 if err != nil { 1802 return nil, err 1803 } 1804 1805 dict := starlark.NewDict(3) 1806 1807 if objectSelector != nil { 1808 err := dict.SetKey(starlark.String("object_selector"), objectSelector) 1809 if err != nil { 1810 return nil, err 1811 } 1812 } 1813 if path != nil { 1814 err := dict.SetKey(starlark.String("path"), path) 1815 if err != nil { 1816 return nil, err 1817 } 1818 } 1819 if object != nil { 1820 err := dict.SetKey(starlark.String("object"), object) 1821 if err != nil { 1822 return nil, err 1823 } 1824 } 1825 var obj *KubernetesImageLocator = &KubernetesImageLocator{t: t} 1826 err = obj.Unpack(dict) 1827 if err != nil { 1828 return nil, err 1829 } 1830 return obj, nil 1831 } 1832 1833 func (o *KubernetesImageLocator) Unpack(v starlark.Value) error { 1834 obj := v1alpha1.KubernetesImageLocator{} 1835 1836 starlarkObj, ok := v.(*KubernetesImageLocator) 1837 if ok { 1838 *o = *starlarkObj 1839 return nil 1840 } 1841 1842 mapObj, ok := v.(*starlark.Dict) 1843 if !ok { 1844 return fmt.Errorf("expected dict, actual: %v", v.Type()) 1845 } 1846 1847 for _, item := range mapObj.Items() { 1848 keyV, val := item[0], item[1] 1849 key, ok := starlark.AsString(keyV) 1850 if !ok { 1851 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 1852 } 1853 1854 if key == "object_selector" { 1855 v := ObjectSelector{t: o.t} 1856 err := v.Unpack(val) 1857 if err != nil { 1858 return fmt.Errorf("unpacking %s: %v", key, err) 1859 } 1860 obj.ObjectSelector = v.Value 1861 continue 1862 } 1863 if key == "path" { 1864 v, ok := starlark.AsString(val) 1865 if !ok { 1866 return fmt.Errorf("Expected string, actual: %s", val.Type()) 1867 } 1868 obj.Path = string(v) 1869 continue 1870 } 1871 if key == "object" { 1872 v := KubernetesImageObjectDescriptor{t: o.t} 1873 err := v.Unpack(val) 1874 if err != nil { 1875 return fmt.Errorf("unpacking %s: %v", key, err) 1876 } 1877 obj.Object = (*v1alpha1.KubernetesImageObjectDescriptor)(&v.Value) 1878 continue 1879 } 1880 return fmt.Errorf("Unexpected attribute name: %s", key) 1881 } 1882 1883 mapObj.Freeze() 1884 o.Dict = mapObj 1885 o.Value = obj 1886 o.isUnpacked = true 1887 1888 return nil 1889 } 1890 1891 type KubernetesImageLocatorList struct { 1892 *starlark.List 1893 Value []v1alpha1.KubernetesImageLocator 1894 t *starlark.Thread 1895 } 1896 1897 func (o *KubernetesImageLocatorList) Unpack(v starlark.Value) error { 1898 items := []v1alpha1.KubernetesImageLocator{} 1899 1900 listObj, ok := v.(*starlark.List) 1901 if !ok { 1902 return fmt.Errorf("expected list, actual: %v", v.Type()) 1903 } 1904 1905 for i := 0; i < listObj.Len(); i++ { 1906 v := listObj.Index(i) 1907 1908 item := KubernetesImageLocator{t: o.t} 1909 err := item.Unpack(v) 1910 if err != nil { 1911 return fmt.Errorf("at index %d: %v", i, err) 1912 } 1913 items = append(items, v1alpha1.KubernetesImageLocator(item.Value)) 1914 } 1915 1916 listObj.Freeze() 1917 o.List = listObj 1918 o.Value = items 1919 1920 return nil 1921 } 1922 1923 type KubernetesImageObjectDescriptor struct { 1924 *starlark.Dict 1925 Value v1alpha1.KubernetesImageObjectDescriptor 1926 isUnpacked bool 1927 t *starlark.Thread // instantiation thread for computing abspath 1928 } 1929 1930 func (p Plugin) kubernetesImageObjectDescriptor(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 1931 var repoField starlark.Value 1932 var tagField starlark.Value 1933 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 1934 "repo_field?", &repoField, 1935 "tag_field?", &tagField, 1936 ) 1937 if err != nil { 1938 return nil, err 1939 } 1940 1941 dict := starlark.NewDict(2) 1942 1943 if repoField != nil { 1944 err := dict.SetKey(starlark.String("repo_field"), repoField) 1945 if err != nil { 1946 return nil, err 1947 } 1948 } 1949 if tagField != nil { 1950 err := dict.SetKey(starlark.String("tag_field"), tagField) 1951 if err != nil { 1952 return nil, err 1953 } 1954 } 1955 var obj *KubernetesImageObjectDescriptor = &KubernetesImageObjectDescriptor{t: t} 1956 err = obj.Unpack(dict) 1957 if err != nil { 1958 return nil, err 1959 } 1960 return obj, nil 1961 } 1962 1963 func (o *KubernetesImageObjectDescriptor) Unpack(v starlark.Value) error { 1964 obj := v1alpha1.KubernetesImageObjectDescriptor{} 1965 1966 starlarkObj, ok := v.(*KubernetesImageObjectDescriptor) 1967 if ok { 1968 *o = *starlarkObj 1969 return nil 1970 } 1971 1972 mapObj, ok := v.(*starlark.Dict) 1973 if !ok { 1974 return fmt.Errorf("expected dict, actual: %v", v.Type()) 1975 } 1976 1977 for _, item := range mapObj.Items() { 1978 keyV, val := item[0], item[1] 1979 key, ok := starlark.AsString(keyV) 1980 if !ok { 1981 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 1982 } 1983 1984 if key == "repo_field" { 1985 v, ok := starlark.AsString(val) 1986 if !ok { 1987 return fmt.Errorf("Expected string, actual: %s", val.Type()) 1988 } 1989 obj.RepoField = string(v) 1990 continue 1991 } 1992 if key == "tag_field" { 1993 v, ok := starlark.AsString(val) 1994 if !ok { 1995 return fmt.Errorf("Expected string, actual: %s", val.Type()) 1996 } 1997 obj.TagField = string(v) 1998 continue 1999 } 2000 return fmt.Errorf("Unexpected attribute name: %s", key) 2001 } 2002 2003 mapObj.Freeze() 2004 o.Dict = mapObj 2005 o.Value = obj 2006 o.isUnpacked = true 2007 2008 return nil 2009 } 2010 2011 type KubernetesImageObjectDescriptorList struct { 2012 *starlark.List 2013 Value []v1alpha1.KubernetesImageObjectDescriptor 2014 t *starlark.Thread 2015 } 2016 2017 func (o *KubernetesImageObjectDescriptorList) Unpack(v starlark.Value) error { 2018 items := []v1alpha1.KubernetesImageObjectDescriptor{} 2019 2020 listObj, ok := v.(*starlark.List) 2021 if !ok { 2022 return fmt.Errorf("expected list, actual: %v", v.Type()) 2023 } 2024 2025 for i := 0; i < listObj.Len(); i++ { 2026 v := listObj.Index(i) 2027 2028 item := KubernetesImageObjectDescriptor{t: o.t} 2029 err := item.Unpack(v) 2030 if err != nil { 2031 return fmt.Errorf("at index %d: %v", i, err) 2032 } 2033 items = append(items, v1alpha1.KubernetesImageObjectDescriptor(item.Value)) 2034 } 2035 2036 listObj.Freeze() 2037 o.List = listObj 2038 o.Value = items 2039 2040 return nil 2041 } 2042 2043 type KubernetesWatchRef struct { 2044 *starlark.Dict 2045 Value v1alpha1.KubernetesWatchRef 2046 isUnpacked bool 2047 t *starlark.Thread // instantiation thread for computing abspath 2048 } 2049 2050 func (p Plugin) kubernetesWatchRef(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 2051 var uID starlark.Value 2052 var namespace starlark.Value 2053 var name starlark.Value 2054 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 2055 "uid?", &uID, 2056 "namespace?", &namespace, 2057 "name?", &name, 2058 ) 2059 if err != nil { 2060 return nil, err 2061 } 2062 2063 dict := starlark.NewDict(3) 2064 2065 if uID != nil { 2066 err := dict.SetKey(starlark.String("uid"), uID) 2067 if err != nil { 2068 return nil, err 2069 } 2070 } 2071 if namespace != nil { 2072 err := dict.SetKey(starlark.String("namespace"), namespace) 2073 if err != nil { 2074 return nil, err 2075 } 2076 } 2077 if name != nil { 2078 err := dict.SetKey(starlark.String("name"), name) 2079 if err != nil { 2080 return nil, err 2081 } 2082 } 2083 var obj *KubernetesWatchRef = &KubernetesWatchRef{t: t} 2084 err = obj.Unpack(dict) 2085 if err != nil { 2086 return nil, err 2087 } 2088 return obj, nil 2089 } 2090 2091 func (o *KubernetesWatchRef) Unpack(v starlark.Value) error { 2092 obj := v1alpha1.KubernetesWatchRef{} 2093 2094 starlarkObj, ok := v.(*KubernetesWatchRef) 2095 if ok { 2096 *o = *starlarkObj 2097 return nil 2098 } 2099 2100 mapObj, ok := v.(*starlark.Dict) 2101 if !ok { 2102 return fmt.Errorf("expected dict, actual: %v", v.Type()) 2103 } 2104 2105 for _, item := range mapObj.Items() { 2106 keyV, val := item[0], item[1] 2107 key, ok := starlark.AsString(keyV) 2108 if !ok { 2109 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 2110 } 2111 2112 if key == "uid" { 2113 v, ok := starlark.AsString(val) 2114 if !ok { 2115 return fmt.Errorf("Expected string, actual: %s", val.Type()) 2116 } 2117 obj.UID = string(v) 2118 continue 2119 } 2120 if key == "namespace" { 2121 v, ok := starlark.AsString(val) 2122 if !ok { 2123 return fmt.Errorf("Expected string, actual: %s", val.Type()) 2124 } 2125 obj.Namespace = string(v) 2126 continue 2127 } 2128 if key == "name" { 2129 v, ok := starlark.AsString(val) 2130 if !ok { 2131 return fmt.Errorf("Expected string, actual: %s", val.Type()) 2132 } 2133 obj.Name = string(v) 2134 continue 2135 } 2136 return fmt.Errorf("Unexpected attribute name: %s", key) 2137 } 2138 2139 mapObj.Freeze() 2140 o.Dict = mapObj 2141 o.Value = obj 2142 o.isUnpacked = true 2143 2144 return nil 2145 } 2146 2147 type KubernetesWatchRefList struct { 2148 *starlark.List 2149 Value []v1alpha1.KubernetesWatchRef 2150 t *starlark.Thread 2151 } 2152 2153 func (o *KubernetesWatchRefList) Unpack(v starlark.Value) error { 2154 items := []v1alpha1.KubernetesWatchRef{} 2155 2156 listObj, ok := v.(*starlark.List) 2157 if !ok { 2158 return fmt.Errorf("expected list, actual: %v", v.Type()) 2159 } 2160 2161 for i := 0; i < listObj.Len(); i++ { 2162 v := listObj.Index(i) 2163 2164 item := KubernetesWatchRef{t: o.t} 2165 err := item.Unpack(v) 2166 if err != nil { 2167 return fmt.Errorf("at index %d: %v", i, err) 2168 } 2169 items = append(items, v1alpha1.KubernetesWatchRef(item.Value)) 2170 } 2171 2172 listObj.Freeze() 2173 o.List = listObj 2174 o.Value = items 2175 2176 return nil 2177 } 2178 2179 type LabelSelector struct { 2180 *starlark.Dict 2181 Value metav1.LabelSelector 2182 isUnpacked bool 2183 t *starlark.Thread // instantiation thread for computing abspath 2184 } 2185 2186 func (p Plugin) labelSelector(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 2187 var matchLabels starlark.Value 2188 var matchExpressions starlark.Value 2189 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 2190 "match_labels?", &matchLabels, 2191 "match_expressions?", &matchExpressions, 2192 ) 2193 if err != nil { 2194 return nil, err 2195 } 2196 2197 dict := starlark.NewDict(2) 2198 2199 if matchLabels != nil { 2200 err := dict.SetKey(starlark.String("match_labels"), matchLabels) 2201 if err != nil { 2202 return nil, err 2203 } 2204 } 2205 if matchExpressions != nil { 2206 err := dict.SetKey(starlark.String("match_expressions"), matchExpressions) 2207 if err != nil { 2208 return nil, err 2209 } 2210 } 2211 var obj *LabelSelector = &LabelSelector{t: t} 2212 err = obj.Unpack(dict) 2213 if err != nil { 2214 return nil, err 2215 } 2216 return obj, nil 2217 } 2218 2219 func (o *LabelSelector) Unpack(v starlark.Value) error { 2220 obj := metav1.LabelSelector{} 2221 2222 starlarkObj, ok := v.(*LabelSelector) 2223 if ok { 2224 *o = *starlarkObj 2225 return nil 2226 } 2227 2228 mapObj, ok := v.(*starlark.Dict) 2229 if !ok { 2230 return fmt.Errorf("expected dict, actual: %v", v.Type()) 2231 } 2232 2233 for _, item := range mapObj.Items() { 2234 keyV, val := item[0], item[1] 2235 key, ok := starlark.AsString(keyV) 2236 if !ok { 2237 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 2238 } 2239 2240 if key == "match_labels" { 2241 var v value.StringStringMap 2242 err := v.Unpack(val) 2243 if err != nil { 2244 return fmt.Errorf("unpacking %s: %v", key, err) 2245 } 2246 obj.MatchLabels = (map[string]string)(v) 2247 continue 2248 } 2249 if key == "match_expressions" { 2250 v := LabelSelectorRequirementList{t: o.t} 2251 err := v.Unpack(val) 2252 if err != nil { 2253 return fmt.Errorf("unpacking %s: %v", key, err) 2254 } 2255 obj.MatchExpressions = v.Value 2256 continue 2257 } 2258 return fmt.Errorf("Unexpected attribute name: %s", key) 2259 } 2260 2261 mapObj.Freeze() 2262 o.Dict = mapObj 2263 o.Value = obj 2264 o.isUnpacked = true 2265 2266 return nil 2267 } 2268 2269 type LabelSelectorList struct { 2270 *starlark.List 2271 Value []metav1.LabelSelector 2272 t *starlark.Thread 2273 } 2274 2275 func (o *LabelSelectorList) Unpack(v starlark.Value) error { 2276 items := []metav1.LabelSelector{} 2277 2278 listObj, ok := v.(*starlark.List) 2279 if !ok { 2280 return fmt.Errorf("expected list, actual: %v", v.Type()) 2281 } 2282 2283 for i := 0; i < listObj.Len(); i++ { 2284 v := listObj.Index(i) 2285 2286 item := LabelSelector{t: o.t} 2287 err := item.Unpack(v) 2288 if err != nil { 2289 return fmt.Errorf("at index %d: %v", i, err) 2290 } 2291 items = append(items, metav1.LabelSelector(item.Value)) 2292 } 2293 2294 listObj.Freeze() 2295 o.List = listObj 2296 o.Value = items 2297 2298 return nil 2299 } 2300 2301 type LabelSelectorRequirement struct { 2302 *starlark.Dict 2303 Value metav1.LabelSelectorRequirement 2304 isUnpacked bool 2305 t *starlark.Thread // instantiation thread for computing abspath 2306 } 2307 2308 func (p Plugin) labelSelectorRequirement(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 2309 var key starlark.Value 2310 var operator starlark.Value 2311 var values starlark.Value 2312 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 2313 "key?", &key, 2314 "operator?", &operator, 2315 "values?", &values, 2316 ) 2317 if err != nil { 2318 return nil, err 2319 } 2320 2321 dict := starlark.NewDict(3) 2322 2323 if key != nil { 2324 err := dict.SetKey(starlark.String("key"), key) 2325 if err != nil { 2326 return nil, err 2327 } 2328 } 2329 if operator != nil { 2330 err := dict.SetKey(starlark.String("operator"), operator) 2331 if err != nil { 2332 return nil, err 2333 } 2334 } 2335 if values != nil { 2336 err := dict.SetKey(starlark.String("values"), values) 2337 if err != nil { 2338 return nil, err 2339 } 2340 } 2341 var obj *LabelSelectorRequirement = &LabelSelectorRequirement{t: t} 2342 err = obj.Unpack(dict) 2343 if err != nil { 2344 return nil, err 2345 } 2346 return obj, nil 2347 } 2348 2349 func (o *LabelSelectorRequirement) Unpack(v starlark.Value) error { 2350 obj := metav1.LabelSelectorRequirement{} 2351 2352 starlarkObj, ok := v.(*LabelSelectorRequirement) 2353 if ok { 2354 *o = *starlarkObj 2355 return nil 2356 } 2357 2358 mapObj, ok := v.(*starlark.Dict) 2359 if !ok { 2360 return fmt.Errorf("expected dict, actual: %v", v.Type()) 2361 } 2362 2363 for _, item := range mapObj.Items() { 2364 keyV, val := item[0], item[1] 2365 key, ok := starlark.AsString(keyV) 2366 if !ok { 2367 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 2368 } 2369 2370 if key == "key" { 2371 v, ok := starlark.AsString(val) 2372 if !ok { 2373 return fmt.Errorf("Expected string, actual: %s", val.Type()) 2374 } 2375 obj.Key = string(v) 2376 continue 2377 } 2378 if key == "operator" { 2379 v, ok := starlark.AsString(val) 2380 if !ok { 2381 return fmt.Errorf("Expected string, actual: %s", val.Type()) 2382 } 2383 obj.Operator = metav1.LabelSelectorOperator(v) 2384 continue 2385 } 2386 if key == "values" { 2387 var v value.StringList 2388 err := v.Unpack(val) 2389 if err != nil { 2390 return fmt.Errorf("unpacking %s: %v", key, err) 2391 } 2392 obj.Values = v 2393 continue 2394 } 2395 return fmt.Errorf("Unexpected attribute name: %s", key) 2396 } 2397 2398 mapObj.Freeze() 2399 o.Dict = mapObj 2400 o.Value = obj 2401 o.isUnpacked = true 2402 2403 return nil 2404 } 2405 2406 type LabelSelectorRequirementList struct { 2407 *starlark.List 2408 Value []metav1.LabelSelectorRequirement 2409 t *starlark.Thread 2410 } 2411 2412 func (o *LabelSelectorRequirementList) Unpack(v starlark.Value) error { 2413 items := []metav1.LabelSelectorRequirement{} 2414 2415 listObj, ok := v.(*starlark.List) 2416 if !ok { 2417 return fmt.Errorf("expected list, actual: %v", v.Type()) 2418 } 2419 2420 for i := 0; i < listObj.Len(); i++ { 2421 v := listObj.Index(i) 2422 2423 item := LabelSelectorRequirement{t: o.t} 2424 err := item.Unpack(v) 2425 if err != nil { 2426 return fmt.Errorf("at index %d: %v", i, err) 2427 } 2428 items = append(items, metav1.LabelSelectorRequirement(item.Value)) 2429 } 2430 2431 listObj.Freeze() 2432 o.List = listObj 2433 o.Value = items 2434 2435 return nil 2436 } 2437 2438 type ObjectSelector struct { 2439 *starlark.Dict 2440 Value v1alpha1.ObjectSelector 2441 isUnpacked bool 2442 t *starlark.Thread // instantiation thread for computing abspath 2443 } 2444 2445 func (p Plugin) objectSelector(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 2446 var aPIVersionRegexp starlark.Value 2447 var kindRegexp starlark.Value 2448 var nameRegexp starlark.Value 2449 var namespaceRegexp starlark.Value 2450 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 2451 "api_version_regexp?", &aPIVersionRegexp, 2452 "kind_regexp?", &kindRegexp, 2453 "name_regexp?", &nameRegexp, 2454 "namespace_regexp?", &namespaceRegexp, 2455 ) 2456 if err != nil { 2457 return nil, err 2458 } 2459 2460 dict := starlark.NewDict(4) 2461 2462 if aPIVersionRegexp != nil { 2463 err := dict.SetKey(starlark.String("api_version_regexp"), aPIVersionRegexp) 2464 if err != nil { 2465 return nil, err 2466 } 2467 } 2468 if kindRegexp != nil { 2469 err := dict.SetKey(starlark.String("kind_regexp"), kindRegexp) 2470 if err != nil { 2471 return nil, err 2472 } 2473 } 2474 if nameRegexp != nil { 2475 err := dict.SetKey(starlark.String("name_regexp"), nameRegexp) 2476 if err != nil { 2477 return nil, err 2478 } 2479 } 2480 if namespaceRegexp != nil { 2481 err := dict.SetKey(starlark.String("namespace_regexp"), namespaceRegexp) 2482 if err != nil { 2483 return nil, err 2484 } 2485 } 2486 var obj *ObjectSelector = &ObjectSelector{t: t} 2487 err = obj.Unpack(dict) 2488 if err != nil { 2489 return nil, err 2490 } 2491 return obj, nil 2492 } 2493 2494 func (o *ObjectSelector) Unpack(v starlark.Value) error { 2495 obj := v1alpha1.ObjectSelector{} 2496 2497 starlarkObj, ok := v.(*ObjectSelector) 2498 if ok { 2499 *o = *starlarkObj 2500 return nil 2501 } 2502 2503 mapObj, ok := v.(*starlark.Dict) 2504 if !ok { 2505 return fmt.Errorf("expected dict, actual: %v", v.Type()) 2506 } 2507 2508 for _, item := range mapObj.Items() { 2509 keyV, val := item[0], item[1] 2510 key, ok := starlark.AsString(keyV) 2511 if !ok { 2512 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 2513 } 2514 2515 if key == "api_version_regexp" { 2516 v, ok := starlark.AsString(val) 2517 if !ok { 2518 return fmt.Errorf("Expected string, actual: %s", val.Type()) 2519 } 2520 obj.APIVersionRegexp = string(v) 2521 continue 2522 } 2523 if key == "kind_regexp" { 2524 v, ok := starlark.AsString(val) 2525 if !ok { 2526 return fmt.Errorf("Expected string, actual: %s", val.Type()) 2527 } 2528 obj.KindRegexp = string(v) 2529 continue 2530 } 2531 if key == "name_regexp" { 2532 v, ok := starlark.AsString(val) 2533 if !ok { 2534 return fmt.Errorf("Expected string, actual: %s", val.Type()) 2535 } 2536 obj.NameRegexp = string(v) 2537 continue 2538 } 2539 if key == "namespace_regexp" { 2540 v, ok := starlark.AsString(val) 2541 if !ok { 2542 return fmt.Errorf("Expected string, actual: %s", val.Type()) 2543 } 2544 obj.NamespaceRegexp = string(v) 2545 continue 2546 } 2547 return fmt.Errorf("Unexpected attribute name: %s", key) 2548 } 2549 2550 mapObj.Freeze() 2551 o.Dict = mapObj 2552 o.Value = obj 2553 o.isUnpacked = true 2554 2555 return nil 2556 } 2557 2558 type ObjectSelectorList struct { 2559 *starlark.List 2560 Value []v1alpha1.ObjectSelector 2561 t *starlark.Thread 2562 } 2563 2564 func (o *ObjectSelectorList) Unpack(v starlark.Value) error { 2565 items := []v1alpha1.ObjectSelector{} 2566 2567 listObj, ok := v.(*starlark.List) 2568 if !ok { 2569 return fmt.Errorf("expected list, actual: %v", v.Type()) 2570 } 2571 2572 for i := 0; i < listObj.Len(); i++ { 2573 v := listObj.Index(i) 2574 2575 item := ObjectSelector{t: o.t} 2576 err := item.Unpack(v) 2577 if err != nil { 2578 return fmt.Errorf("at index %d: %v", i, err) 2579 } 2580 items = append(items, v1alpha1.ObjectSelector(item.Value)) 2581 } 2582 2583 listObj.Freeze() 2584 o.List = listObj 2585 o.Value = items 2586 2587 return nil 2588 } 2589 2590 type PodLogStreamTemplateSpec struct { 2591 *starlark.Dict 2592 Value v1alpha1.PodLogStreamTemplateSpec 2593 isUnpacked bool 2594 t *starlark.Thread // instantiation thread for computing abspath 2595 } 2596 2597 func (p Plugin) podLogStreamTemplateSpec(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 2598 var sinceTime starlark.Value 2599 var onlyContainers starlark.Value 2600 var ignoreContainers starlark.Value 2601 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 2602 "since_time?", &sinceTime, 2603 "only_containers?", &onlyContainers, 2604 "ignore_containers?", &ignoreContainers, 2605 ) 2606 if err != nil { 2607 return nil, err 2608 } 2609 2610 dict := starlark.NewDict(3) 2611 2612 if sinceTime != nil { 2613 err := dict.SetKey(starlark.String("since_time"), sinceTime) 2614 if err != nil { 2615 return nil, err 2616 } 2617 } 2618 if onlyContainers != nil { 2619 err := dict.SetKey(starlark.String("only_containers"), onlyContainers) 2620 if err != nil { 2621 return nil, err 2622 } 2623 } 2624 if ignoreContainers != nil { 2625 err := dict.SetKey(starlark.String("ignore_containers"), ignoreContainers) 2626 if err != nil { 2627 return nil, err 2628 } 2629 } 2630 var obj *PodLogStreamTemplateSpec = &PodLogStreamTemplateSpec{t: t} 2631 err = obj.Unpack(dict) 2632 if err != nil { 2633 return nil, err 2634 } 2635 return obj, nil 2636 } 2637 2638 func (o *PodLogStreamTemplateSpec) Unpack(v starlark.Value) error { 2639 obj := v1alpha1.PodLogStreamTemplateSpec{} 2640 2641 starlarkObj, ok := v.(*PodLogStreamTemplateSpec) 2642 if ok { 2643 *o = *starlarkObj 2644 return nil 2645 } 2646 2647 mapObj, ok := v.(*starlark.Dict) 2648 if !ok { 2649 return fmt.Errorf("expected dict, actual: %v", v.Type()) 2650 } 2651 2652 for _, item := range mapObj.Items() { 2653 keyV, val := item[0], item[1] 2654 key, ok := starlark.AsString(keyV) 2655 if !ok { 2656 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 2657 } 2658 2659 if key == "only_containers" { 2660 var v value.StringList 2661 err := v.Unpack(val) 2662 if err != nil { 2663 return fmt.Errorf("unpacking %s: %v", key, err) 2664 } 2665 obj.OnlyContainers = v 2666 continue 2667 } 2668 if key == "ignore_containers" { 2669 var v value.StringList 2670 err := v.Unpack(val) 2671 if err != nil { 2672 return fmt.Errorf("unpacking %s: %v", key, err) 2673 } 2674 obj.IgnoreContainers = v 2675 continue 2676 } 2677 return fmt.Errorf("Unexpected attribute name: %s", key) 2678 } 2679 2680 mapObj.Freeze() 2681 o.Dict = mapObj 2682 o.Value = obj 2683 o.isUnpacked = true 2684 2685 return nil 2686 } 2687 2688 type PodLogStreamTemplateSpecList struct { 2689 *starlark.List 2690 Value []v1alpha1.PodLogStreamTemplateSpec 2691 t *starlark.Thread 2692 } 2693 2694 func (o *PodLogStreamTemplateSpecList) Unpack(v starlark.Value) error { 2695 items := []v1alpha1.PodLogStreamTemplateSpec{} 2696 2697 listObj, ok := v.(*starlark.List) 2698 if !ok { 2699 return fmt.Errorf("expected list, actual: %v", v.Type()) 2700 } 2701 2702 for i := 0; i < listObj.Len(); i++ { 2703 v := listObj.Index(i) 2704 2705 item := PodLogStreamTemplateSpec{t: o.t} 2706 err := item.Unpack(v) 2707 if err != nil { 2708 return fmt.Errorf("at index %d: %v", i, err) 2709 } 2710 items = append(items, v1alpha1.PodLogStreamTemplateSpec(item.Value)) 2711 } 2712 2713 listObj.Freeze() 2714 o.List = listObj 2715 o.Value = items 2716 2717 return nil 2718 } 2719 2720 type PortForwardTemplateSpec struct { 2721 *starlark.Dict 2722 Value v1alpha1.PortForwardTemplateSpec 2723 isUnpacked bool 2724 t *starlark.Thread // instantiation thread for computing abspath 2725 } 2726 2727 func (p Plugin) portForwardTemplateSpec(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 2728 var forwards starlark.Value 2729 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 2730 "forwards?", &forwards, 2731 ) 2732 if err != nil { 2733 return nil, err 2734 } 2735 2736 dict := starlark.NewDict(1) 2737 2738 if forwards != nil { 2739 err := dict.SetKey(starlark.String("forwards"), forwards) 2740 if err != nil { 2741 return nil, err 2742 } 2743 } 2744 var obj *PortForwardTemplateSpec = &PortForwardTemplateSpec{t: t} 2745 err = obj.Unpack(dict) 2746 if err != nil { 2747 return nil, err 2748 } 2749 return obj, nil 2750 } 2751 2752 func (o *PortForwardTemplateSpec) Unpack(v starlark.Value) error { 2753 obj := v1alpha1.PortForwardTemplateSpec{} 2754 2755 starlarkObj, ok := v.(*PortForwardTemplateSpec) 2756 if ok { 2757 *o = *starlarkObj 2758 return nil 2759 } 2760 2761 mapObj, ok := v.(*starlark.Dict) 2762 if !ok { 2763 return fmt.Errorf("expected dict, actual: %v", v.Type()) 2764 } 2765 2766 for _, item := range mapObj.Items() { 2767 keyV, val := item[0], item[1] 2768 key, ok := starlark.AsString(keyV) 2769 if !ok { 2770 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 2771 } 2772 2773 if key == "forwards" { 2774 v := ForwardList{t: o.t} 2775 err := v.Unpack(val) 2776 if err != nil { 2777 return fmt.Errorf("unpacking %s: %v", key, err) 2778 } 2779 obj.Forwards = v.Value 2780 continue 2781 } 2782 return fmt.Errorf("Unexpected attribute name: %s", key) 2783 } 2784 2785 mapObj.Freeze() 2786 o.Dict = mapObj 2787 o.Value = obj 2788 o.isUnpacked = true 2789 2790 return nil 2791 } 2792 2793 type PortForwardTemplateSpecList struct { 2794 *starlark.List 2795 Value []v1alpha1.PortForwardTemplateSpec 2796 t *starlark.Thread 2797 } 2798 2799 func (o *PortForwardTemplateSpecList) Unpack(v starlark.Value) error { 2800 items := []v1alpha1.PortForwardTemplateSpec{} 2801 2802 listObj, ok := v.(*starlark.List) 2803 if !ok { 2804 return fmt.Errorf("expected list, actual: %v", v.Type()) 2805 } 2806 2807 for i := 0; i < listObj.Len(); i++ { 2808 v := listObj.Index(i) 2809 2810 item := PortForwardTemplateSpec{t: o.t} 2811 err := item.Unpack(v) 2812 if err != nil { 2813 return fmt.Errorf("at index %d: %v", i, err) 2814 } 2815 items = append(items, v1alpha1.PortForwardTemplateSpec(item.Value)) 2816 } 2817 2818 listObj.Freeze() 2819 o.List = listObj 2820 o.Value = items 2821 2822 return nil 2823 } 2824 2825 type Probe struct { 2826 *starlark.Dict 2827 Value v1alpha1.Probe 2828 isUnpacked bool 2829 t *starlark.Thread // instantiation thread for computing abspath 2830 } 2831 2832 func (p Plugin) probe(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 2833 var handler starlark.Value 2834 var initialDelaySeconds starlark.Value 2835 var timeoutSeconds starlark.Value 2836 var periodSeconds starlark.Value 2837 var successThreshold starlark.Value 2838 var failureThreshold starlark.Value 2839 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 2840 "handler?", &handler, 2841 "initial_delay_seconds?", &initialDelaySeconds, 2842 "timeout_seconds?", &timeoutSeconds, 2843 "period_seconds?", &periodSeconds, 2844 "success_threshold?", &successThreshold, 2845 "failure_threshold?", &failureThreshold, 2846 ) 2847 if err != nil { 2848 return nil, err 2849 } 2850 2851 dict := starlark.NewDict(6) 2852 2853 if handler != nil { 2854 err := dict.SetKey(starlark.String("handler"), handler) 2855 if err != nil { 2856 return nil, err 2857 } 2858 } 2859 if initialDelaySeconds != nil { 2860 err := dict.SetKey(starlark.String("initial_delay_seconds"), initialDelaySeconds) 2861 if err != nil { 2862 return nil, err 2863 } 2864 } 2865 if timeoutSeconds != nil { 2866 err := dict.SetKey(starlark.String("timeout_seconds"), timeoutSeconds) 2867 if err != nil { 2868 return nil, err 2869 } 2870 } 2871 if periodSeconds != nil { 2872 err := dict.SetKey(starlark.String("period_seconds"), periodSeconds) 2873 if err != nil { 2874 return nil, err 2875 } 2876 } 2877 if successThreshold != nil { 2878 err := dict.SetKey(starlark.String("success_threshold"), successThreshold) 2879 if err != nil { 2880 return nil, err 2881 } 2882 } 2883 if failureThreshold != nil { 2884 err := dict.SetKey(starlark.String("failure_threshold"), failureThreshold) 2885 if err != nil { 2886 return nil, err 2887 } 2888 } 2889 var obj *Probe = &Probe{t: t} 2890 err = obj.Unpack(dict) 2891 if err != nil { 2892 return nil, err 2893 } 2894 return obj, nil 2895 } 2896 2897 func (o *Probe) Unpack(v starlark.Value) error { 2898 obj := v1alpha1.Probe{} 2899 2900 starlarkObj, ok := v.(*Probe) 2901 if ok { 2902 *o = *starlarkObj 2903 return nil 2904 } 2905 2906 mapObj, ok := v.(*starlark.Dict) 2907 if !ok { 2908 return fmt.Errorf("expected dict, actual: %v", v.Type()) 2909 } 2910 2911 for _, item := range mapObj.Items() { 2912 keyV, val := item[0], item[1] 2913 key, ok := starlark.AsString(keyV) 2914 if !ok { 2915 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 2916 } 2917 2918 if key == "exec" { 2919 v := ExecAction{t: o.t} 2920 err := v.Unpack(val) 2921 if err != nil { 2922 return fmt.Errorf("unpacking %s: %v", key, err) 2923 } 2924 obj.Exec = (*v1alpha1.ExecAction)(&v.Value) 2925 continue 2926 } 2927 if key == "http_get" { 2928 v := HTTPGetAction{t: o.t} 2929 err := v.Unpack(val) 2930 if err != nil { 2931 return fmt.Errorf("unpacking %s: %v", key, err) 2932 } 2933 obj.HTTPGet = (*v1alpha1.HTTPGetAction)(&v.Value) 2934 continue 2935 } 2936 if key == "tcp_socket" { 2937 v := TCPSocketAction{t: o.t} 2938 err := v.Unpack(val) 2939 if err != nil { 2940 return fmt.Errorf("unpacking %s: %v", key, err) 2941 } 2942 obj.TCPSocket = (*v1alpha1.TCPSocketAction)(&v.Value) 2943 continue 2944 } 2945 if key == "initial_delay_seconds" { 2946 v, err := starlark.AsInt32(val) 2947 if err != nil { 2948 return fmt.Errorf("Expected int, got: %v", err) 2949 } 2950 obj.InitialDelaySeconds = int32(v) 2951 continue 2952 } 2953 if key == "timeout_seconds" { 2954 v, err := starlark.AsInt32(val) 2955 if err != nil { 2956 return fmt.Errorf("Expected int, got: %v", err) 2957 } 2958 obj.TimeoutSeconds = int32(v) 2959 continue 2960 } 2961 if key == "period_seconds" { 2962 v, err := starlark.AsInt32(val) 2963 if err != nil { 2964 return fmt.Errorf("Expected int, got: %v", err) 2965 } 2966 obj.PeriodSeconds = int32(v) 2967 continue 2968 } 2969 if key == "success_threshold" { 2970 v, err := starlark.AsInt32(val) 2971 if err != nil { 2972 return fmt.Errorf("Expected int, got: %v", err) 2973 } 2974 obj.SuccessThreshold = int32(v) 2975 continue 2976 } 2977 if key == "failure_threshold" { 2978 v, err := starlark.AsInt32(val) 2979 if err != nil { 2980 return fmt.Errorf("Expected int, got: %v", err) 2981 } 2982 obj.FailureThreshold = int32(v) 2983 continue 2984 } 2985 return fmt.Errorf("Unexpected attribute name: %s", key) 2986 } 2987 2988 mapObj.Freeze() 2989 o.Dict = mapObj 2990 o.Value = obj 2991 o.isUnpacked = true 2992 2993 return nil 2994 } 2995 2996 type ProbeList struct { 2997 *starlark.List 2998 Value []v1alpha1.Probe 2999 t *starlark.Thread 3000 } 3001 3002 func (o *ProbeList) Unpack(v starlark.Value) error { 3003 items := []v1alpha1.Probe{} 3004 3005 listObj, ok := v.(*starlark.List) 3006 if !ok { 3007 return fmt.Errorf("expected list, actual: %v", v.Type()) 3008 } 3009 3010 for i := 0; i < listObj.Len(); i++ { 3011 v := listObj.Index(i) 3012 3013 item := Probe{t: o.t} 3014 err := item.Unpack(v) 3015 if err != nil { 3016 return fmt.Errorf("at index %d: %v", i, err) 3017 } 3018 items = append(items, v1alpha1.Probe(item.Value)) 3019 } 3020 3021 listObj.Freeze() 3022 o.List = listObj 3023 o.Value = items 3024 3025 return nil 3026 } 3027 3028 type RestartOnSpec struct { 3029 *starlark.Dict 3030 Value v1alpha1.RestartOnSpec 3031 isUnpacked bool 3032 t *starlark.Thread // instantiation thread for computing abspath 3033 } 3034 3035 func (p Plugin) restartOnSpec(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 3036 var fileWatches starlark.Value 3037 var uiButtons starlark.Value 3038 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 3039 "file_watches?", &fileWatches, 3040 "ui_buttons?", &uiButtons, 3041 ) 3042 if err != nil { 3043 return nil, err 3044 } 3045 3046 dict := starlark.NewDict(2) 3047 3048 if fileWatches != nil { 3049 err := dict.SetKey(starlark.String("file_watches"), fileWatches) 3050 if err != nil { 3051 return nil, err 3052 } 3053 } 3054 if uiButtons != nil { 3055 err := dict.SetKey(starlark.String("ui_buttons"), uiButtons) 3056 if err != nil { 3057 return nil, err 3058 } 3059 } 3060 var obj *RestartOnSpec = &RestartOnSpec{t: t} 3061 err = obj.Unpack(dict) 3062 if err != nil { 3063 return nil, err 3064 } 3065 return obj, nil 3066 } 3067 3068 func (o *RestartOnSpec) Unpack(v starlark.Value) error { 3069 obj := v1alpha1.RestartOnSpec{} 3070 3071 starlarkObj, ok := v.(*RestartOnSpec) 3072 if ok { 3073 *o = *starlarkObj 3074 return nil 3075 } 3076 3077 mapObj, ok := v.(*starlark.Dict) 3078 if !ok { 3079 return fmt.Errorf("expected dict, actual: %v", v.Type()) 3080 } 3081 3082 for _, item := range mapObj.Items() { 3083 keyV, val := item[0], item[1] 3084 key, ok := starlark.AsString(keyV) 3085 if !ok { 3086 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 3087 } 3088 3089 if key == "file_watches" { 3090 var v value.StringList 3091 err := v.Unpack(val) 3092 if err != nil { 3093 return fmt.Errorf("unpacking %s: %v", key, err) 3094 } 3095 obj.FileWatches = v 3096 continue 3097 } 3098 if key == "ui_buttons" { 3099 var v value.StringList 3100 err := v.Unpack(val) 3101 if err != nil { 3102 return fmt.Errorf("unpacking %s: %v", key, err) 3103 } 3104 obj.UIButtons = v 3105 continue 3106 } 3107 return fmt.Errorf("Unexpected attribute name: %s", key) 3108 } 3109 3110 mapObj.Freeze() 3111 o.Dict = mapObj 3112 o.Value = obj 3113 o.isUnpacked = true 3114 3115 return nil 3116 } 3117 3118 type RestartOnSpecList struct { 3119 *starlark.List 3120 Value []v1alpha1.RestartOnSpec 3121 t *starlark.Thread 3122 } 3123 3124 func (o *RestartOnSpecList) Unpack(v starlark.Value) error { 3125 items := []v1alpha1.RestartOnSpec{} 3126 3127 listObj, ok := v.(*starlark.List) 3128 if !ok { 3129 return fmt.Errorf("expected list, actual: %v", v.Type()) 3130 } 3131 3132 for i := 0; i < listObj.Len(); i++ { 3133 v := listObj.Index(i) 3134 3135 item := RestartOnSpec{t: o.t} 3136 err := item.Unpack(v) 3137 if err != nil { 3138 return fmt.Errorf("at index %d: %v", i, err) 3139 } 3140 items = append(items, v1alpha1.RestartOnSpec(item.Value)) 3141 } 3142 3143 listObj.Freeze() 3144 o.List = listObj 3145 o.Value = items 3146 3147 return nil 3148 } 3149 3150 type StartOnSpec struct { 3151 *starlark.Dict 3152 Value v1alpha1.StartOnSpec 3153 isUnpacked bool 3154 t *starlark.Thread // instantiation thread for computing abspath 3155 } 3156 3157 func (p Plugin) startOnSpec(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 3158 var startAfter starlark.Value 3159 var uiButtons starlark.Value 3160 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 3161 "start_after?", &startAfter, 3162 "ui_buttons?", &uiButtons, 3163 ) 3164 if err != nil { 3165 return nil, err 3166 } 3167 3168 dict := starlark.NewDict(2) 3169 3170 if startAfter != nil { 3171 err := dict.SetKey(starlark.String("start_after"), startAfter) 3172 if err != nil { 3173 return nil, err 3174 } 3175 } 3176 if uiButtons != nil { 3177 err := dict.SetKey(starlark.String("ui_buttons"), uiButtons) 3178 if err != nil { 3179 return nil, err 3180 } 3181 } 3182 var obj *StartOnSpec = &StartOnSpec{t: t} 3183 err = obj.Unpack(dict) 3184 if err != nil { 3185 return nil, err 3186 } 3187 return obj, nil 3188 } 3189 3190 func (o *StartOnSpec) Unpack(v starlark.Value) error { 3191 obj := v1alpha1.StartOnSpec{} 3192 3193 starlarkObj, ok := v.(*StartOnSpec) 3194 if ok { 3195 *o = *starlarkObj 3196 return nil 3197 } 3198 3199 mapObj, ok := v.(*starlark.Dict) 3200 if !ok { 3201 return fmt.Errorf("expected dict, actual: %v", v.Type()) 3202 } 3203 3204 for _, item := range mapObj.Items() { 3205 keyV, val := item[0], item[1] 3206 key, ok := starlark.AsString(keyV) 3207 if !ok { 3208 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 3209 } 3210 3211 if key == "ui_buttons" { 3212 var v value.StringList 3213 err := v.Unpack(val) 3214 if err != nil { 3215 return fmt.Errorf("unpacking %s: %v", key, err) 3216 } 3217 obj.UIButtons = v 3218 continue 3219 } 3220 return fmt.Errorf("Unexpected attribute name: %s", key) 3221 } 3222 3223 mapObj.Freeze() 3224 o.Dict = mapObj 3225 o.Value = obj 3226 o.isUnpacked = true 3227 3228 return nil 3229 } 3230 3231 type StartOnSpecList struct { 3232 *starlark.List 3233 Value []v1alpha1.StartOnSpec 3234 t *starlark.Thread 3235 } 3236 3237 func (o *StartOnSpecList) Unpack(v starlark.Value) error { 3238 items := []v1alpha1.StartOnSpec{} 3239 3240 listObj, ok := v.(*starlark.List) 3241 if !ok { 3242 return fmt.Errorf("expected list, actual: %v", v.Type()) 3243 } 3244 3245 for i := 0; i < listObj.Len(); i++ { 3246 v := listObj.Index(i) 3247 3248 item := StartOnSpec{t: o.t} 3249 err := item.Unpack(v) 3250 if err != nil { 3251 return fmt.Errorf("at index %d: %v", i, err) 3252 } 3253 items = append(items, v1alpha1.StartOnSpec(item.Value)) 3254 } 3255 3256 listObj.Freeze() 3257 o.List = listObj 3258 o.Value = items 3259 3260 return nil 3261 } 3262 3263 type TCPSocketAction struct { 3264 *starlark.Dict 3265 Value v1alpha1.TCPSocketAction 3266 isUnpacked bool 3267 t *starlark.Thread // instantiation thread for computing abspath 3268 } 3269 3270 func (p Plugin) tCPSocketAction(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 3271 var port starlark.Value 3272 var host starlark.Value 3273 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 3274 "port?", &port, 3275 "host?", &host, 3276 ) 3277 if err != nil { 3278 return nil, err 3279 } 3280 3281 dict := starlark.NewDict(2) 3282 3283 if port != nil { 3284 err := dict.SetKey(starlark.String("port"), port) 3285 if err != nil { 3286 return nil, err 3287 } 3288 } 3289 if host != nil { 3290 err := dict.SetKey(starlark.String("host"), host) 3291 if err != nil { 3292 return nil, err 3293 } 3294 } 3295 var obj *TCPSocketAction = &TCPSocketAction{t: t} 3296 err = obj.Unpack(dict) 3297 if err != nil { 3298 return nil, err 3299 } 3300 return obj, nil 3301 } 3302 3303 func (o *TCPSocketAction) Unpack(v starlark.Value) error { 3304 obj := v1alpha1.TCPSocketAction{} 3305 3306 starlarkObj, ok := v.(*TCPSocketAction) 3307 if ok { 3308 *o = *starlarkObj 3309 return nil 3310 } 3311 3312 mapObj, ok := v.(*starlark.Dict) 3313 if !ok { 3314 return fmt.Errorf("expected dict, actual: %v", v.Type()) 3315 } 3316 3317 for _, item := range mapObj.Items() { 3318 keyV, val := item[0], item[1] 3319 key, ok := starlark.AsString(keyV) 3320 if !ok { 3321 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 3322 } 3323 3324 if key == "port" { 3325 v, err := starlark.AsInt32(val) 3326 if err != nil { 3327 return fmt.Errorf("Expected int, got: %v", err) 3328 } 3329 obj.Port = int32(v) 3330 continue 3331 } 3332 if key == "host" { 3333 v, ok := starlark.AsString(val) 3334 if !ok { 3335 return fmt.Errorf("Expected string, actual: %s", val.Type()) 3336 } 3337 obj.Host = string(v) 3338 continue 3339 } 3340 return fmt.Errorf("Unexpected attribute name: %s", key) 3341 } 3342 3343 mapObj.Freeze() 3344 o.Dict = mapObj 3345 o.Value = obj 3346 o.isUnpacked = true 3347 3348 return nil 3349 } 3350 3351 type TCPSocketActionList struct { 3352 *starlark.List 3353 Value []v1alpha1.TCPSocketAction 3354 t *starlark.Thread 3355 } 3356 3357 func (o *TCPSocketActionList) Unpack(v starlark.Value) error { 3358 items := []v1alpha1.TCPSocketAction{} 3359 3360 listObj, ok := v.(*starlark.List) 3361 if !ok { 3362 return fmt.Errorf("expected list, actual: %v", v.Type()) 3363 } 3364 3365 for i := 0; i < listObj.Len(); i++ { 3366 v := listObj.Index(i) 3367 3368 item := TCPSocketAction{t: o.t} 3369 err := item.Unpack(v) 3370 if err != nil { 3371 return fmt.Errorf("at index %d: %v", i, err) 3372 } 3373 items = append(items, v1alpha1.TCPSocketAction(item.Value)) 3374 } 3375 3376 listObj.Freeze() 3377 o.List = listObj 3378 o.Value = items 3379 3380 return nil 3381 } 3382 3383 type UIBoolInputSpec struct { 3384 *starlark.Dict 3385 Value v1alpha1.UIBoolInputSpec 3386 isUnpacked bool 3387 t *starlark.Thread // instantiation thread for computing abspath 3388 } 3389 3390 func (p Plugin) uIBoolInputSpec(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 3391 var defaultValue starlark.Value 3392 var trueString starlark.Value 3393 var falseString starlark.Value 3394 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 3395 "default_value?", &defaultValue, 3396 "true_string?", &trueString, 3397 "false_string?", &falseString, 3398 ) 3399 if err != nil { 3400 return nil, err 3401 } 3402 3403 dict := starlark.NewDict(3) 3404 3405 if defaultValue != nil { 3406 err := dict.SetKey(starlark.String("default_value"), defaultValue) 3407 if err != nil { 3408 return nil, err 3409 } 3410 } 3411 if trueString != nil { 3412 err := dict.SetKey(starlark.String("true_string"), trueString) 3413 if err != nil { 3414 return nil, err 3415 } 3416 } 3417 if falseString != nil { 3418 err := dict.SetKey(starlark.String("false_string"), falseString) 3419 if err != nil { 3420 return nil, err 3421 } 3422 } 3423 var obj *UIBoolInputSpec = &UIBoolInputSpec{t: t} 3424 err = obj.Unpack(dict) 3425 if err != nil { 3426 return nil, err 3427 } 3428 return obj, nil 3429 } 3430 3431 func (o *UIBoolInputSpec) Unpack(v starlark.Value) error { 3432 obj := v1alpha1.UIBoolInputSpec{} 3433 3434 starlarkObj, ok := v.(*UIBoolInputSpec) 3435 if ok { 3436 *o = *starlarkObj 3437 return nil 3438 } 3439 3440 mapObj, ok := v.(*starlark.Dict) 3441 if !ok { 3442 return fmt.Errorf("expected dict, actual: %v", v.Type()) 3443 } 3444 3445 for _, item := range mapObj.Items() { 3446 keyV, val := item[0], item[1] 3447 key, ok := starlark.AsString(keyV) 3448 if !ok { 3449 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 3450 } 3451 3452 if key == "default_value" { 3453 v, ok := val.(starlark.Bool) 3454 if !ok { 3455 return fmt.Errorf("Expected bool, got: %v", val.Type()) 3456 } 3457 obj.DefaultValue = bool(v) 3458 continue 3459 } 3460 if key == "true_string" { 3461 v, ok := starlark.AsString(val) 3462 if !ok { 3463 return fmt.Errorf("Expected string, actual: %s", val.Type()) 3464 } 3465 obj.TrueString = (*string)(&v) 3466 continue 3467 } 3468 if key == "false_string" { 3469 v, ok := starlark.AsString(val) 3470 if !ok { 3471 return fmt.Errorf("Expected string, actual: %s", val.Type()) 3472 } 3473 obj.FalseString = (*string)(&v) 3474 continue 3475 } 3476 return fmt.Errorf("Unexpected attribute name: %s", key) 3477 } 3478 3479 mapObj.Freeze() 3480 o.Dict = mapObj 3481 o.Value = obj 3482 o.isUnpacked = true 3483 3484 return nil 3485 } 3486 3487 type UIBoolInputSpecList struct { 3488 *starlark.List 3489 Value []v1alpha1.UIBoolInputSpec 3490 t *starlark.Thread 3491 } 3492 3493 func (o *UIBoolInputSpecList) Unpack(v starlark.Value) error { 3494 items := []v1alpha1.UIBoolInputSpec{} 3495 3496 listObj, ok := v.(*starlark.List) 3497 if !ok { 3498 return fmt.Errorf("expected list, actual: %v", v.Type()) 3499 } 3500 3501 for i := 0; i < listObj.Len(); i++ { 3502 v := listObj.Index(i) 3503 3504 item := UIBoolInputSpec{t: o.t} 3505 err := item.Unpack(v) 3506 if err != nil { 3507 return fmt.Errorf("at index %d: %v", i, err) 3508 } 3509 items = append(items, v1alpha1.UIBoolInputSpec(item.Value)) 3510 } 3511 3512 listObj.Freeze() 3513 o.List = listObj 3514 o.Value = items 3515 3516 return nil 3517 } 3518 3519 type UIChoiceInputSpec struct { 3520 *starlark.Dict 3521 Value v1alpha1.UIChoiceInputSpec 3522 isUnpacked bool 3523 t *starlark.Thread // instantiation thread for computing abspath 3524 } 3525 3526 func (p Plugin) uIChoiceInputSpec(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 3527 var choices starlark.Value 3528 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 3529 "choices?", &choices, 3530 ) 3531 if err != nil { 3532 return nil, err 3533 } 3534 3535 dict := starlark.NewDict(1) 3536 3537 if choices != nil { 3538 err := dict.SetKey(starlark.String("choices"), choices) 3539 if err != nil { 3540 return nil, err 3541 } 3542 } 3543 var obj *UIChoiceInputSpec = &UIChoiceInputSpec{t: t} 3544 err = obj.Unpack(dict) 3545 if err != nil { 3546 return nil, err 3547 } 3548 return obj, nil 3549 } 3550 3551 func (o *UIChoiceInputSpec) Unpack(v starlark.Value) error { 3552 obj := v1alpha1.UIChoiceInputSpec{} 3553 3554 starlarkObj, ok := v.(*UIChoiceInputSpec) 3555 if ok { 3556 *o = *starlarkObj 3557 return nil 3558 } 3559 3560 mapObj, ok := v.(*starlark.Dict) 3561 if !ok { 3562 return fmt.Errorf("expected dict, actual: %v", v.Type()) 3563 } 3564 3565 for _, item := range mapObj.Items() { 3566 keyV, val := item[0], item[1] 3567 key, ok := starlark.AsString(keyV) 3568 if !ok { 3569 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 3570 } 3571 3572 if key == "choices" { 3573 var v value.StringList 3574 err := v.Unpack(val) 3575 if err != nil { 3576 return fmt.Errorf("unpacking %s: %v", key, err) 3577 } 3578 obj.Choices = v 3579 continue 3580 } 3581 return fmt.Errorf("Unexpected attribute name: %s", key) 3582 } 3583 3584 mapObj.Freeze() 3585 o.Dict = mapObj 3586 o.Value = obj 3587 o.isUnpacked = true 3588 3589 return nil 3590 } 3591 3592 type UIChoiceInputSpecList struct { 3593 *starlark.List 3594 Value []v1alpha1.UIChoiceInputSpec 3595 t *starlark.Thread 3596 } 3597 3598 func (o *UIChoiceInputSpecList) Unpack(v starlark.Value) error { 3599 items := []v1alpha1.UIChoiceInputSpec{} 3600 3601 listObj, ok := v.(*starlark.List) 3602 if !ok { 3603 return fmt.Errorf("expected list, actual: %v", v.Type()) 3604 } 3605 3606 for i := 0; i < listObj.Len(); i++ { 3607 v := listObj.Index(i) 3608 3609 item := UIChoiceInputSpec{t: o.t} 3610 err := item.Unpack(v) 3611 if err != nil { 3612 return fmt.Errorf("at index %d: %v", i, err) 3613 } 3614 items = append(items, v1alpha1.UIChoiceInputSpec(item.Value)) 3615 } 3616 3617 listObj.Freeze() 3618 o.List = listObj 3619 o.Value = items 3620 3621 return nil 3622 } 3623 3624 type UIComponentLocation struct { 3625 *starlark.Dict 3626 Value v1alpha1.UIComponentLocation 3627 isUnpacked bool 3628 t *starlark.Thread // instantiation thread for computing abspath 3629 } 3630 3631 func (p Plugin) uIComponentLocation(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 3632 var componentID starlark.Value 3633 var componentType starlark.Value 3634 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 3635 "component_id?", &componentID, 3636 "component_type?", &componentType, 3637 ) 3638 if err != nil { 3639 return nil, err 3640 } 3641 3642 dict := starlark.NewDict(2) 3643 3644 if componentID != nil { 3645 err := dict.SetKey(starlark.String("component_id"), componentID) 3646 if err != nil { 3647 return nil, err 3648 } 3649 } 3650 if componentType != nil { 3651 err := dict.SetKey(starlark.String("component_type"), componentType) 3652 if err != nil { 3653 return nil, err 3654 } 3655 } 3656 var obj *UIComponentLocation = &UIComponentLocation{t: t} 3657 err = obj.Unpack(dict) 3658 if err != nil { 3659 return nil, err 3660 } 3661 return obj, nil 3662 } 3663 3664 func (o *UIComponentLocation) Unpack(v starlark.Value) error { 3665 obj := v1alpha1.UIComponentLocation{} 3666 3667 starlarkObj, ok := v.(*UIComponentLocation) 3668 if ok { 3669 *o = *starlarkObj 3670 return nil 3671 } 3672 3673 mapObj, ok := v.(*starlark.Dict) 3674 if !ok { 3675 return fmt.Errorf("expected dict, actual: %v", v.Type()) 3676 } 3677 3678 for _, item := range mapObj.Items() { 3679 keyV, val := item[0], item[1] 3680 key, ok := starlark.AsString(keyV) 3681 if !ok { 3682 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 3683 } 3684 3685 if key == "component_id" { 3686 v, ok := starlark.AsString(val) 3687 if !ok { 3688 return fmt.Errorf("Expected string, actual: %s", val.Type()) 3689 } 3690 obj.ComponentID = string(v) 3691 continue 3692 } 3693 if key == "component_type" { 3694 v, ok := starlark.AsString(val) 3695 if !ok { 3696 return fmt.Errorf("Expected string, actual: %s", val.Type()) 3697 } 3698 obj.ComponentType = v1alpha1.ComponentType(v) 3699 continue 3700 } 3701 return fmt.Errorf("Unexpected attribute name: %s", key) 3702 } 3703 3704 mapObj.Freeze() 3705 o.Dict = mapObj 3706 o.Value = obj 3707 o.isUnpacked = true 3708 3709 return nil 3710 } 3711 3712 type UIComponentLocationList struct { 3713 *starlark.List 3714 Value []v1alpha1.UIComponentLocation 3715 t *starlark.Thread 3716 } 3717 3718 func (o *UIComponentLocationList) Unpack(v starlark.Value) error { 3719 items := []v1alpha1.UIComponentLocation{} 3720 3721 listObj, ok := v.(*starlark.List) 3722 if !ok { 3723 return fmt.Errorf("expected list, actual: %v", v.Type()) 3724 } 3725 3726 for i := 0; i < listObj.Len(); i++ { 3727 v := listObj.Index(i) 3728 3729 item := UIComponentLocation{t: o.t} 3730 err := item.Unpack(v) 3731 if err != nil { 3732 return fmt.Errorf("at index %d: %v", i, err) 3733 } 3734 items = append(items, v1alpha1.UIComponentLocation(item.Value)) 3735 } 3736 3737 listObj.Freeze() 3738 o.List = listObj 3739 o.Value = items 3740 3741 return nil 3742 } 3743 3744 type UIHiddenInputSpec struct { 3745 *starlark.Dict 3746 Value v1alpha1.UIHiddenInputSpec 3747 isUnpacked bool 3748 t *starlark.Thread // instantiation thread for computing abspath 3749 } 3750 3751 func (p Plugin) uIHiddenInputSpec(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 3752 var value starlark.Value 3753 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 3754 "value?", &value, 3755 ) 3756 if err != nil { 3757 return nil, err 3758 } 3759 3760 dict := starlark.NewDict(1) 3761 3762 if value != nil { 3763 err := dict.SetKey(starlark.String("value"), value) 3764 if err != nil { 3765 return nil, err 3766 } 3767 } 3768 var obj *UIHiddenInputSpec = &UIHiddenInputSpec{t: t} 3769 err = obj.Unpack(dict) 3770 if err != nil { 3771 return nil, err 3772 } 3773 return obj, nil 3774 } 3775 3776 func (o *UIHiddenInputSpec) Unpack(v starlark.Value) error { 3777 obj := v1alpha1.UIHiddenInputSpec{} 3778 3779 starlarkObj, ok := v.(*UIHiddenInputSpec) 3780 if ok { 3781 *o = *starlarkObj 3782 return nil 3783 } 3784 3785 mapObj, ok := v.(*starlark.Dict) 3786 if !ok { 3787 return fmt.Errorf("expected dict, actual: %v", v.Type()) 3788 } 3789 3790 for _, item := range mapObj.Items() { 3791 keyV, val := item[0], item[1] 3792 key, ok := starlark.AsString(keyV) 3793 if !ok { 3794 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 3795 } 3796 3797 if key == "value" { 3798 v, ok := starlark.AsString(val) 3799 if !ok { 3800 return fmt.Errorf("Expected string, actual: %s", val.Type()) 3801 } 3802 obj.Value = string(v) 3803 continue 3804 } 3805 return fmt.Errorf("Unexpected attribute name: %s", key) 3806 } 3807 3808 mapObj.Freeze() 3809 o.Dict = mapObj 3810 o.Value = obj 3811 o.isUnpacked = true 3812 3813 return nil 3814 } 3815 3816 type UIHiddenInputSpecList struct { 3817 *starlark.List 3818 Value []v1alpha1.UIHiddenInputSpec 3819 t *starlark.Thread 3820 } 3821 3822 func (o *UIHiddenInputSpecList) Unpack(v starlark.Value) error { 3823 items := []v1alpha1.UIHiddenInputSpec{} 3824 3825 listObj, ok := v.(*starlark.List) 3826 if !ok { 3827 return fmt.Errorf("expected list, actual: %v", v.Type()) 3828 } 3829 3830 for i := 0; i < listObj.Len(); i++ { 3831 v := listObj.Index(i) 3832 3833 item := UIHiddenInputSpec{t: o.t} 3834 err := item.Unpack(v) 3835 if err != nil { 3836 return fmt.Errorf("at index %d: %v", i, err) 3837 } 3838 items = append(items, v1alpha1.UIHiddenInputSpec(item.Value)) 3839 } 3840 3841 listObj.Freeze() 3842 o.List = listObj 3843 o.Value = items 3844 3845 return nil 3846 } 3847 3848 type UIInputSpec struct { 3849 *starlark.Dict 3850 Value v1alpha1.UIInputSpec 3851 isUnpacked bool 3852 t *starlark.Thread // instantiation thread for computing abspath 3853 } 3854 3855 func (p Plugin) uIInputSpec(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 3856 var name starlark.Value 3857 var label starlark.Value 3858 var text starlark.Value 3859 var bool starlark.Value 3860 var hidden starlark.Value 3861 var choice starlark.Value 3862 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 3863 "name?", &name, 3864 "label?", &label, 3865 "text?", &text, 3866 "bool?", &bool, 3867 "hidden?", &hidden, 3868 "choice?", &choice, 3869 ) 3870 if err != nil { 3871 return nil, err 3872 } 3873 3874 dict := starlark.NewDict(6) 3875 3876 if name != nil { 3877 err := dict.SetKey(starlark.String("name"), name) 3878 if err != nil { 3879 return nil, err 3880 } 3881 } 3882 if label != nil { 3883 err := dict.SetKey(starlark.String("label"), label) 3884 if err != nil { 3885 return nil, err 3886 } 3887 } 3888 if text != nil { 3889 err := dict.SetKey(starlark.String("text"), text) 3890 if err != nil { 3891 return nil, err 3892 } 3893 } 3894 if bool != nil { 3895 err := dict.SetKey(starlark.String("bool"), bool) 3896 if err != nil { 3897 return nil, err 3898 } 3899 } 3900 if hidden != nil { 3901 err := dict.SetKey(starlark.String("hidden"), hidden) 3902 if err != nil { 3903 return nil, err 3904 } 3905 } 3906 if choice != nil { 3907 err := dict.SetKey(starlark.String("choice"), choice) 3908 if err != nil { 3909 return nil, err 3910 } 3911 } 3912 var obj *UIInputSpec = &UIInputSpec{t: t} 3913 err = obj.Unpack(dict) 3914 if err != nil { 3915 return nil, err 3916 } 3917 return obj, nil 3918 } 3919 3920 func (o *UIInputSpec) Unpack(v starlark.Value) error { 3921 obj := v1alpha1.UIInputSpec{} 3922 3923 starlarkObj, ok := v.(*UIInputSpec) 3924 if ok { 3925 *o = *starlarkObj 3926 return nil 3927 } 3928 3929 mapObj, ok := v.(*starlark.Dict) 3930 if !ok { 3931 return fmt.Errorf("expected dict, actual: %v", v.Type()) 3932 } 3933 3934 for _, item := range mapObj.Items() { 3935 keyV, val := item[0], item[1] 3936 key, ok := starlark.AsString(keyV) 3937 if !ok { 3938 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 3939 } 3940 3941 if key == "name" { 3942 v, ok := starlark.AsString(val) 3943 if !ok { 3944 return fmt.Errorf("Expected string, actual: %s", val.Type()) 3945 } 3946 obj.Name = string(v) 3947 continue 3948 } 3949 if key == "label" { 3950 v, ok := starlark.AsString(val) 3951 if !ok { 3952 return fmt.Errorf("Expected string, actual: %s", val.Type()) 3953 } 3954 obj.Label = string(v) 3955 continue 3956 } 3957 if key == "text" { 3958 v := UITextInputSpec{t: o.t} 3959 err := v.Unpack(val) 3960 if err != nil { 3961 return fmt.Errorf("unpacking %s: %v", key, err) 3962 } 3963 obj.Text = (*v1alpha1.UITextInputSpec)(&v.Value) 3964 continue 3965 } 3966 if key == "bool" { 3967 v := UIBoolInputSpec{t: o.t} 3968 err := v.Unpack(val) 3969 if err != nil { 3970 return fmt.Errorf("unpacking %s: %v", key, err) 3971 } 3972 obj.Bool = (*v1alpha1.UIBoolInputSpec)(&v.Value) 3973 continue 3974 } 3975 if key == "hidden" { 3976 v := UIHiddenInputSpec{t: o.t} 3977 err := v.Unpack(val) 3978 if err != nil { 3979 return fmt.Errorf("unpacking %s: %v", key, err) 3980 } 3981 obj.Hidden = (*v1alpha1.UIHiddenInputSpec)(&v.Value) 3982 continue 3983 } 3984 if key == "choice" { 3985 v := UIChoiceInputSpec{t: o.t} 3986 err := v.Unpack(val) 3987 if err != nil { 3988 return fmt.Errorf("unpacking %s: %v", key, err) 3989 } 3990 obj.Choice = (*v1alpha1.UIChoiceInputSpec)(&v.Value) 3991 continue 3992 } 3993 return fmt.Errorf("Unexpected attribute name: %s", key) 3994 } 3995 3996 mapObj.Freeze() 3997 o.Dict = mapObj 3998 o.Value = obj 3999 o.isUnpacked = true 4000 4001 return nil 4002 } 4003 4004 type UIInputSpecList struct { 4005 *starlark.List 4006 Value []v1alpha1.UIInputSpec 4007 t *starlark.Thread 4008 } 4009 4010 func (o *UIInputSpecList) Unpack(v starlark.Value) error { 4011 items := []v1alpha1.UIInputSpec{} 4012 4013 listObj, ok := v.(*starlark.List) 4014 if !ok { 4015 return fmt.Errorf("expected list, actual: %v", v.Type()) 4016 } 4017 4018 for i := 0; i < listObj.Len(); i++ { 4019 v := listObj.Index(i) 4020 4021 item := UIInputSpec{t: o.t} 4022 err := item.Unpack(v) 4023 if err != nil { 4024 return fmt.Errorf("at index %d: %v", i, err) 4025 } 4026 items = append(items, v1alpha1.UIInputSpec(item.Value)) 4027 } 4028 4029 listObj.Freeze() 4030 o.List = listObj 4031 o.Value = items 4032 4033 return nil 4034 } 4035 4036 type UITextInputSpec struct { 4037 *starlark.Dict 4038 Value v1alpha1.UITextInputSpec 4039 isUnpacked bool 4040 t *starlark.Thread // instantiation thread for computing abspath 4041 } 4042 4043 func (p Plugin) uITextInputSpec(t *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { 4044 var defaultValue starlark.Value 4045 var placeholder starlark.Value 4046 err := starkit.UnpackArgs(t, fn.Name(), args, kwargs, 4047 "default_value?", &defaultValue, 4048 "placeholder?", &placeholder, 4049 ) 4050 if err != nil { 4051 return nil, err 4052 } 4053 4054 dict := starlark.NewDict(2) 4055 4056 if defaultValue != nil { 4057 err := dict.SetKey(starlark.String("default_value"), defaultValue) 4058 if err != nil { 4059 return nil, err 4060 } 4061 } 4062 if placeholder != nil { 4063 err := dict.SetKey(starlark.String("placeholder"), placeholder) 4064 if err != nil { 4065 return nil, err 4066 } 4067 } 4068 var obj *UITextInputSpec = &UITextInputSpec{t: t} 4069 err = obj.Unpack(dict) 4070 if err != nil { 4071 return nil, err 4072 } 4073 return obj, nil 4074 } 4075 4076 func (o *UITextInputSpec) Unpack(v starlark.Value) error { 4077 obj := v1alpha1.UITextInputSpec{} 4078 4079 starlarkObj, ok := v.(*UITextInputSpec) 4080 if ok { 4081 *o = *starlarkObj 4082 return nil 4083 } 4084 4085 mapObj, ok := v.(*starlark.Dict) 4086 if !ok { 4087 return fmt.Errorf("expected dict, actual: %v", v.Type()) 4088 } 4089 4090 for _, item := range mapObj.Items() { 4091 keyV, val := item[0], item[1] 4092 key, ok := starlark.AsString(keyV) 4093 if !ok { 4094 return fmt.Errorf("key must be string. Got: %s", keyV.Type()) 4095 } 4096 4097 if key == "default_value" { 4098 v, ok := starlark.AsString(val) 4099 if !ok { 4100 return fmt.Errorf("Expected string, actual: %s", val.Type()) 4101 } 4102 obj.DefaultValue = string(v) 4103 continue 4104 } 4105 if key == "placeholder" { 4106 v, ok := starlark.AsString(val) 4107 if !ok { 4108 return fmt.Errorf("Expected string, actual: %s", val.Type()) 4109 } 4110 obj.Placeholder = string(v) 4111 continue 4112 } 4113 return fmt.Errorf("Unexpected attribute name: %s", key) 4114 } 4115 4116 mapObj.Freeze() 4117 o.Dict = mapObj 4118 o.Value = obj 4119 o.isUnpacked = true 4120 4121 return nil 4122 } 4123 4124 type UITextInputSpecList struct { 4125 *starlark.List 4126 Value []v1alpha1.UITextInputSpec 4127 t *starlark.Thread 4128 } 4129 4130 func (o *UITextInputSpecList) Unpack(v starlark.Value) error { 4131 items := []v1alpha1.UITextInputSpec{} 4132 4133 listObj, ok := v.(*starlark.List) 4134 if !ok { 4135 return fmt.Errorf("expected list, actual: %v", v.Type()) 4136 } 4137 4138 for i := 0; i < listObj.Len(); i++ { 4139 v := listObj.Index(i) 4140 4141 item := UITextInputSpec{t: o.t} 4142 err := item.Unpack(v) 4143 if err != nil { 4144 return fmt.Errorf("at index %d: %v", i, err) 4145 } 4146 items = append(items, v1alpha1.UITextInputSpec(item.Value)) 4147 } 4148 4149 listObj.Freeze() 4150 o.List = listObj 4151 o.Value = items 4152 4153 return nil 4154 }