scaffolder

package
v1.11.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 8, 2025 License: Apache-2.0 Imports: 17 Imported by: 0

README

pkg/scaffolder

This package provides scaffolding utilities for KSail projects.

Purpose

Contains utilities for generating KSail project files and configurations. The scaffold creator provides the necessary configuration files for a complete KSail project setup.

Features

  • Multi-Distribution Support: Scaffolds configurations for different Kubernetes distributions (Kind, K3d, EKS)
  • Complete Project Setup: Generates all required files including ksail.yaml, distribution configs, and kustomization files
  • Force Overwrite: Option to overwrite existing files
  • Directory Structure: Creates proper directory structure for source files

Usage

import "github.com/devantler-tech/ksail-go/pkg/scaffolder"

// Create a cluster configuration
cluster := v1alpha1.Cluster{
    TypeMeta: metav1.TypeMeta{
        APIVersion: v1alpha1.APIVersion,
        Kind:       v1alpha1.Kind,
    },
    Metadata: metav1.ObjectMeta{
        Name: "my-cluster",
    },
    Spec: v1alpha1.Spec{
        Distribution:       v1alpha1.DistributionKind,
        SourceDirectory:    "k8s",
        DistributionConfig: "kind.yaml",
    },
}

// Create scaffold instance and generate files
scaffold := scaffolder.NewScaffolder(cluster, os.Stdout)
err := scaffold.Scaffold("/path/to/output/", false)
if err != nil {
    log.Fatal(err)
}

Generated Files

The scaffold creator generates the following files based on the cluster configuration:

  • ksail.yaml: Main KSail cluster configuration
  • Distribution config: Kind, K3d, or EKS-specific configuration file
  • kustomization.yaml: Kustomization file in the source directory
Distribution-Specific Files
  • Kind: Generates kind.yaml with a basic cluster configuration
  • K3d: Generates k3d.yaml with a simple k3d cluster configuration
  • EKS: Generates eks.yaml with an EKS cluster configuration including node groups

⬅️ Go Back

Documentation

Overview

Package scaffolder provides utilities for scaffolding KSail project files and configuration.

Index

Constants

View Source
const (
	KindConfigFile = "kind.yaml"
	K3dConfigFile  = "k3d.yaml"
)

Distribution config file constants.

Variables

View Source
var (
	ErrUnknownDistribution     = errors.New("provided distribution is unknown")
	ErrKSailConfigGeneration   = errors.New("failed to generate KSail configuration")
	ErrKindConfigGeneration    = errors.New("failed to generate Kind configuration")
	ErrK3dConfigGeneration     = errors.New("failed to generate K3d configuration")
	ErrKustomizationGeneration = errors.New("failed to generate kustomization configuration")
)

Error definitions for distribution handling.

Functions

This section is empty.

Types

type GenerationParams

type GenerationParams[T any] struct {
	Gen         generator.Generator[T, yamlgenerator.Options]
	Model       T
	Opts        yamlgenerator.Options
	DisplayName string
	Force       bool
	WrapErr     func(error) error
}

GenerationParams groups parameters for generateWithFileHandling.

type Scaffolder

Scaffolder is responsible for generating KSail project files and configurations.

func NewScaffolder

func NewScaffolder(cfg v1alpha1.Cluster, writer io.Writer) *Scaffolder

NewScaffolder creates a new Scaffolder instance with the provided KSail cluster configuration.

func (*Scaffolder) Scaffold

func (s *Scaffolder) Scaffold(output string, force bool) error

Scaffold generates project files and configurations.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL