Help us shape the future of Go! Take the 2026 Go Developer Survey

projects

package
v0.3.2 Latest Latest
Warning

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

Go to latest
Published: Sep 15, 2026 License: Apache-2.0 Imports: 26 Imported by: 0

Documentation

Overview

Package projects contains utilities for working with projects.

Index

Constants

View Source
const (
	// MinderMetadataVersion is the version of the metadata format.
	MinderMetadataVersion = "v1alpha1"
)

Variables

View Source
var (
	// ErrProjectAlreadyExists is returned when a project with the same name already exists
	ErrProjectAlreadyExists = errors.New("project already exists")
)
View Source
var (
	// ErrValidationFailed is returned when a project fails validation
	ErrValidationFailed = fmt.Errorf("validation failed")
)

Functions

func SerializeMetadata

func SerializeMetadata(meta *Metadata) ([]byte, error)

SerializeMetadata serializes the given Metadata object into JSON.

func ValidateName

func ValidateName(name string) error

ValidateName validates the given project name.

Types

type Metadata

type Metadata struct {
	Version      string `json:"version"`
	SelfEnrolled bool   `json:"self_enrolled"`

	// This will be deprecated in favor of PublicMetadataV1.
	Description string `json:"description"`

	// Public is a field that is meant to be read by other systems.
	// It will be exposed to the public, e.g. via a UI.
	Public PublicMetadataV1 `json:"public"`
}

Metadata contains metadata relevant for a project.

func NewSelfEnrolledMetadata

func NewSelfEnrolledMetadata(projectName string) Metadata

NewSelfEnrolledMetadata returns a new Metadata object with the SelfEnrolled field set to true.

func ParseMetadata

func ParseMetadata(proj *db.Project) (*Metadata, error)

ParseMetadata parses the given JSON data into a Metadata object.

type ProjectCreator

type ProjectCreator interface {
	// ProvisionProject orchestrates the creation of a project, checking permissions,
	// managing the database transaction, and calling the appropriate provisioning logic.
	ProvisionProject(
		ctx context.Context,
		projectName string,
		parentProjectID uuid.UUID,
	) (*minderv1.Project, error)

	// ProvisionSelfEnrolledProject creates the core default components of the project
	// (project, marketplace subscriptions, etc.).
	ProvisionSelfEnrolledProject(
		ctx context.Context,
		qtx db.ExtendQuerier,
		projectName string,
		userSub string,
	) (outproj *db.Project, projerr error)
}

ProjectCreator encapsulates operations for managing projects TODO: There are several follow-ups needed here: 1. Move the delete operations into this interface 2. The interface is very GitHub-specific. It needs to be made more generic.

func NewProjectCreator

func NewProjectCreator(authzClient authz.Client,
	marketplace marketplaces.Marketplace,
	profilesCfg *server.DefaultProfilesConfig,
	featuresCfg *server.FeaturesConfig,
	store db.Store,
	featureFlags flags.Interface,
) ProjectCreator

NewProjectCreator creates a new instance of the project creator

type ProjectDeleter

type ProjectDeleter interface {
	// CleanUpUnmanagedProjects deletes a project if it has no role assignments left
	CleanUpUnmanagedProjects(
		ctx context.Context,
		subject string,
		proj uuid.UUID,
		querier db.Querier,
	) error

	// DeleteProject deletes a project and authorization relationships
	DeleteProject(
		ctx context.Context,
		proj uuid.UUID,
		querier db.Querier,
	) error
}

ProjectDeleter encapsulates operations for deleting projects This is a separate interface/struct to ProjectCreator to avoid a circular dependency issue.

func NewProjectDeleter

func NewProjectDeleter(
	authzClient authz.Client,
	providerManager manager.ProviderManager,
) ProjectDeleter

NewProjectDeleter creates a new instance of the project deleter

type PublicMetadataV1

type PublicMetadataV1 struct {
	Description string `json:"description"`
	DisplayName string `json:"display_name"`
}

PublicMetadataV1 contains public metadata relevant for a project.

Directories

Path Synopsis
Package features provides the features checks for the projects
Package features provides the features checks for the projects

Jump to

Keyboard shortcuts

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