pkg

package
v0.11.0-alpha.1 Latest Latest
Warning

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

Go to latest
Published: Nov 20, 2024 License: Apache-2.0 Imports: 19 Imported by: 17

Documentation

Overview

Copyright 2022 The KCL Authors. All rights reserved.

Copyright 2022 The KCL Authors. All rights reserved.

Because the same dependency package will be serialized into toml files in different formats in kcl.mod and kcl.mod.lock, the toml library 'github.com/BurntSushi/toml' is encapsulated in this file, and two different format are provided according to different files.

In kcl.mod, the dependency toml looks like:

<dependency_name> = { git = "<git_url>", tag = "<git_tag>" }

In kcl.mod.lock, the dependency toml looks like:

[dependencies.<dependency_name>] name = "<dependency_name>" full_name = "<dependency_fullname>" version = "<dependency_version>" sum = "yNADGqn3jclWtfpwvWMHBsgkAKzOaMWg/VYxfcOJs64=" url = "https://github.com/xxxx" tag = "<dependency_tag>"

Index

Constants

View Source
const (
	MOD_FILE      = "kcl.mod"
	MOD_LOCK_FILE = "kcl.mod.lock"
	GIT           = "git"
	OCI           = "oci"
	LOCAL         = "local"
)
View Source
const (
	PACKAGE_FLAG  = "package"
	DEPS_FLAG     = "dependencies"
	PROFILES_FLAG = "profile"
)
View Source
const (
	NAME_FLAG        = "name"
	EDITION_FLAG     = "edition"
	VERSION_FLAG     = "version"
	DESCRIPTION_FLAG = "description"
	INCLUDE_FLAG     = "include"
	EXCLUDE_FLAG     = "exclude"
)
View Source
const DEPS_PATTERN = "[dependencies]"
View Source
const DEP_PATTERN = "%s = %s"
View Source
const LOCK_FILE_NAME = "kcl.mod.lock"
View Source
const NEWLINE = "\n"
View Source
const PACKAGE_PATTERN = "[package]"
View Source
const PKG_NAME_PATTERN = "%s_%s"
View Source
const PROFILE_PATTERN = "[profile]"
View Source
const TAR_SUFFIX = ".tar"

Variables

View Source
var TestPkgDependency = Dependency{
	Name:     "kcl",
	FullName: "kcl",
	Version:  "0.0.0",
	Sum:      "Sum",
}

Functions

func GenSource added in v0.8.7

func GenSource(sourceType string, uri string, tagName string) (downloader.Source, error)

func ModFileExists added in v0.3.3

func ModFileExists(path string) (bool, error)

ModFileExists returns whether a 'kcl.mod' file exists in the path.

func ModLockFileExists added in v0.3.3

func ModLockFileExists(path string) (bool, error)

ModLockFileExists returns whether a 'kcl.mod.lock' file exists in the path.

func ParseRepoFullNameFromGitSource added in v0.3.3

func ParseRepoFullNameFromGitSource(gitSrc downloader.Git) (string, error)

ParseRepoFullNameFromGitSource will extract the kcl package name from the git url. If the package flag is passed then it will be used as the package name.

func ParseRepoNameFromGitSource added in v0.3.3

func ParseRepoNameFromGitSource(gitSrc downloader.Git) string

ParseRepoNameFromGitSource will extract the kcl package name from the git url. If the package flag is passed then it will be used

Types

type Dependencies added in v0.3.3

type Dependencies struct {
	Deps *orderedmap.OrderedMap[string, Dependency] `json:"packages" toml:"dependencies,omitempty"`
}

'Dependencies' is dependencies section of 'kcl.mod'.

func LoadLockDeps added in v0.3.3

func LoadLockDeps(homePath string) (*Dependencies, error)

LoadLockDeps will load all dependencies from 'kcl.mod.lock'.

func (*Dependencies) CheckForLocalDeps added in v0.8.7

func (deps *Dependencies) CheckForLocalDeps() bool

func (*Dependencies) MarshalLockTOML added in v0.3.3

func (dep *Dependencies) MarshalLockTOML() (string, error)

func (*Dependencies) MarshalTOML added in v0.3.3

func (dep *Dependencies) MarshalTOML() string

func (*Dependencies) ToDepMetadata added in v0.4.5

func (deps *Dependencies) ToDepMetadata() (*DependenciesUI, error)

ToDepMetadata will transform the dependencies into metadata. And check whether the dependency name conflicts.

func (*Dependencies) UnmarshalLockTOML added in v0.3.3

func (dep *Dependencies) UnmarshalLockTOML(data string) error

func (*Dependencies) UnmarshalModTOML added in v0.3.3

func (deps *Dependencies) UnmarshalModTOML(data interface{}) error

type DependenciesUI added in v0.9.0

type DependenciesUI struct {
	Deps map[string]Dependency `json:"packages" toml:"dependencies,omitempty"`
}

type Dependency added in v0.3.3

type Dependency struct {
	Name     string `json:"name" toml:"name,omitempty"`
	FullName string `json:"-" toml:"full_name,omitempty"`
	Version  string `json:"-" toml:"version,omitempty"`
	Sum      string `json:"-" toml:"sum,omitempty"`
	// The actual local path of the package.
	// In vendor mode is "current_kcl_package/vendor"
	// In non-vendor mode is "$KCL_PKG_PATH"
	LocalFullPath     string `json:"manifest_path" toml:"-"`
	downloader.Source `json:"-"`
}

func ParseOpt added in v0.3.3

func ParseOpt(opt *opt.RegistryOptions) (*Dependency, error)

Parse out some information for a Dependency from registry url.

func (Dependency) Equals added in v0.8.7

func (d Dependency) Equals(other Dependency) bool

func (*Dependency) FillDepInfo added in v0.3.3

func (dep *Dependency) FillDepInfo(homepath string) error

FillDepInfo will fill registry information for a dependency.

func (*Dependency) FromKclPkg added in v0.8.3

func (d *Dependency) FromKclPkg(pkg *KclPkg)

func (*Dependency) GenDepFullName added in v0.3.3

func (dep *Dependency) GenDepFullName() string

GenDepFullName will generate the full name of a dependency by its name and version based on the '<package_name>_<package_tag>' format.

func (*Dependency) GenPathSuffix added in v0.9.3

func (d *Dependency) GenPathSuffix() string

func (*Dependency) GetAliasName added in v0.4.5

func (d *Dependency) GetAliasName() string

SetName will set the name and alias name of a dependency.

func (*Dependency) GetDownloadPath added in v0.8.7

func (dep *Dependency) GetDownloadPath() string

GetDownloadPath will get the download path of a dependency.

func (*Dependency) GetLocalFullPath added in v0.3.4

func (dep *Dependency) GetLocalFullPath(rootpath string) string

GetLocalFullPath will get the local path of a dependency.

func (*Dependency) GetSourceType added in v0.8.7

func (dep *Dependency) GetSourceType() string

GetSourceType will get the source type of a dependency.

func (*Dependency) IsFromLocal added in v0.3.7

func (dep *Dependency) IsFromLocal() bool

func (*Dependency) MarshalTOML added in v0.3.3

func (dep *Dependency) MarshalTOML() string

func (*Dependency) UnmarshalModTOML added in v0.3.3

func (dep *Dependency) UnmarshalModTOML(data interface{}) error

func (*Dependency) VersionLessThan added in v0.10.0

func (d *Dependency) VersionLessThan(other *Dependency) (bool, error)

VersionGreaterThan will compare the version of a dependency with another dependency.

type KclPkg

type KclPkg struct {
	ModFile  ModFile
	HomePath string
	// The dependencies in the current kcl package are the dependencies of kcl.mod.lock,
	// not the dependencies in kcl.mod.
	Dependencies
	// The flag 'NoSumCheck' is true if the checksum of the current kcl package is not checked.
	NoSumCheck bool
	// contains filtered or unexported fields
}

func FindFirstKclPkgFrom added in v0.8.3

func FindFirstKclPkgFrom(pkgpath string) (*KclPkg, error)

FindFirstKclPkgFrom will find the first kcl package from the 'path' The default oci registry in '$KCL_PKG_PATH/.kpm/config/kpm.json' will be used.

func LoadKclPkg

func LoadKclPkg(path string) (*KclPkg, error)

LoadKclPkg will load a package from the 'pkgPath' The default oci registry in '$KCL_PKG_PATH/.kpm/config/kpm.json' will be used.

func LoadKclPkgFromTar

func LoadKclPkgFromTar(pkgTarPath string) (*KclPkg, error)

LoadKclPkgFromTar loads a package *.tar file from the 'pkgTarPath' The default oci registry in '$KCL_PKG_PATH/.kpm/config/kpm.json' will be used.

func LoadKclPkgWithOpts added in v0.11.0

func LoadKclPkgWithOpts(options ...LoadOption) (*KclPkg, error)

LoadKclPkgWithOpts loads a module from the file system with options. The options include the module path and the settings with default oci registry.

func NewKclPkg

func NewKclPkg(opts *opt.InitOptions) KclPkg

func (*KclPkg) BackupDepUI added in v0.11.0

func (p *KclPkg) BackupDepUI(name string, dep *Dependency)

func (*KclPkg) CreateDefaultMain added in v0.10.0

func (kclPkg *KclPkg) CreateDefaultMain() error

CreateDefaultMain will create a default main.k file in the current kcl package.

func (*KclPkg) DefaultTarPath

func (kclPkg *KclPkg) DefaultTarPath() string

DefaultTarPath will return "<kcl_package_path>/<package_name>-<package_version>.tar"

func (*KclPkg) GenCheckSum added in v0.4.0

func (KclPkg *KclPkg) GenCheckSum() (string, error)

GenCheckSum generates the checksum of the current kcl package.

func (*KclPkg) GenOciManifestFromPkg added in v0.9.0

func (kclPkg *KclPkg) GenOciManifestFromPkg() (map[string]string, error)

GenOciManifestFromPkg will generate the oci manifest from the kcl package.

func (*KclPkg) GetDepsMetadata added in v0.4.5

func (p *KclPkg) GetDepsMetadata() (*DependenciesUI, error)

func (*KclPkg) GetEntryKclFilesFromModFile

func (kclPkg *KclPkg) GetEntryKclFilesFromModFile() []string

GetEntryKclFilesFromModFile will return the entry kcl files from kcl.mod.

func (*KclPkg) GetKclOpts

func (kclPkg *KclPkg) GetKclOpts() *kcl.Option

GetKclOpts will return the kcl options from kcl.mod.

func (*KclPkg) GetLockFilePath

func (kclPkg *KclPkg) GetLockFilePath() string

GetLockFilePath returns the abs path of kcl.mod.lock.

func (*KclPkg) GetPkgDescription added in v0.3.7

func (KclPkg *KclPkg) GetPkgDescription() string

GetPkgDescription returns the description of package.

func (*KclPkg) GetPkgEdition added in v0.3.4

func (kclPkg *KclPkg) GetPkgEdition() string

GetPkgEdition returns compile edition of package.

func (*KclPkg) GetPkgExclude added in v0.8.7

func (KclPkg *KclPkg) GetPkgExclude() []string

GetPkgExclude returns the exclude of package.

func (*KclPkg) GetPkgFullName

func (kclPkg *KclPkg) GetPkgFullName() string

GetPkgFullName returns the full name of package. The full name is "<pkg_name>-<pkg_version>", <pkg_name> is the name of package. <pkg_version> is the version of package

func (*KclPkg) GetPkgInclude added in v0.8.7

func (KclPkg *KclPkg) GetPkgInclude() []string

GetPkgInclude returns the include of package.

func (*KclPkg) GetPkgName

func (kclPkg *KclPkg) GetPkgName() string

GetPkgName returns name of package.

func (*KclPkg) GetPkgProfile added in v0.3.4

func (kclPkg *KclPkg) GetPkgProfile() *Profile

GetPkgProfile returns the profile of package.

func (*KclPkg) GetPkgTag

func (kclPkg *KclPkg) GetPkgTag() string

GetPkgTag returns version of package.

func (*KclPkg) GetPkgTarName

func (kclPkg *KclPkg) GetPkgTarName() string

GetPkgTarName returns the kcl package tar name "<package_name>-v<package_version>.tar"

func (*KclPkg) GetPkgVersion added in v0.3.7

func (KclPkg *KclPkg) GetPkgVersion() string

GetPkgVersion returns the version of package.

func (*KclPkg) HasProfile added in v0.4.3

func (kclPkg *KclPkg) HasProfile() bool

HasProfile will return true if the current kcl package has the profile.

func (*KclPkg) IsVendorMode

func (kclPkg *KclPkg) IsVendorMode() bool

func (*KclPkg) LocalVendorPath

func (kclPkg *KclPkg) LocalVendorPath() string

Return the full vendor path.

func (*KclPkg) LockDepsVersion

func (kclPkg *KclPkg) LockDepsVersion() error

LockDepsVersion locks the dependencies of the current kcl package into kcl.mod.lock.

func (*KclPkg) SetVendorMode

func (kclPkg *KclPkg) SetVendorMode(vendorMode bool)

func (*KclPkg) UpdateModAndLockFile

func (kclPkg *KclPkg) UpdateModAndLockFile() error

updateModAndLockFile will update kcl.mod and kcl.mod.lock

func (*KclPkg) ValidateKpmHome

func (kclPkg *KclPkg) ValidateKpmHome(kpmHome string) *reporter.KpmEvent

Verify that the environment variable KPM HOME is set correctly

type LoadOption added in v0.11.0

type LoadOption func(*LoadOptions)

func WithPath added in v0.11.0

func WithPath(path string) LoadOption

WithPath sets the module path.

func WithSettings added in v0.11.0

func WithSettings(settings *settings.Settings) LoadOption

WithSettings sets the settings with default oci registry.

type LoadOptions added in v0.11.0

type LoadOptions struct {
	// The module path.
	Path string
	// The settings with default oci registry.
	Settings *settings.Settings
}

type ModFile added in v0.3.3

type ModFile struct {
	HomePath string  `toml:"-"`
	Pkg      Package `toml:"package,omitempty"`
	// Whether the current package uses the vendor mode
	// In the vendor mode, kpm will look for the package in the vendor subdirectory
	// in the current package directory.
	VendorMode bool     `toml:"-"`
	Profiles   *Profile `toml:"profile"`
	Dependencies
}

'ModFile' is kcl package file 'kcl.mod'.

func LoadAndFillModFileWithOpts added in v0.11.0

func LoadAndFillModFileWithOpts(options ...LoadOption) (*ModFile, error)

LoadAndFillModFileWithOpts loads a mod file from the file system with options. It will load the mod file, convert the local path to the absolute path, and fill the default oci registry.

func LoadModFile added in v0.3.3

func LoadModFile(path string) (*ModFile, error)

LoadModFile load the contents of the 'kcl.mod' file in the path. Deprecated: Use 'LoadAndFillModFileWithOpts' instead.

func NewModFile added in v0.3.3

func NewModFile(opts *opt.InitOptions) *ModFile

func (*ModFile) FillDependenciesInfo added in v0.3.3

func (modFile *ModFile) FillDependenciesInfo() error

FillDependenciesInfo will fill registry information for all dependencies in a kcl.mod.

func (*ModFile) GetEntries added in v0.4.3

func (modFile *ModFile) GetEntries() []string

GetEntries will get the entry kcl files from kcl.mod.

func (*ModFile) GetModFilePath added in v0.3.3

func (mfile *ModFile) GetModFilePath() string

Returns the path to the kcl.mod file

func (*ModFile) GetModLockFilePath added in v0.3.3

func (mfile *ModFile) GetModLockFilePath() string

Returns the path to the kcl.mod.lock file

func (*ModFile) LoadModFile added in v0.4.0

func (mod *ModFile) LoadModFile(name string) error

Load the kcl.mod file, and make sure the `ModFile` is the same as the content in the kcl.mod file. For the dependency like "helloworld=0.1.0", `ModFile` will lack the source information. The `ModFile` will be filled with the source information loaded by `LoadAndFillModFileWithOpts`

func (*ModFile) MarshalTOML added in v0.3.3

func (mod *ModFile) MarshalTOML() string

func (*ModFile) StoreModFile added in v0.3.3

func (mfile *ModFile) StoreModFile() error

Write the contents of 'ModFile' to 'kcl.mod' file

func (*ModFile) UnmarshalTOML added in v0.3.3

func (mod *ModFile) UnmarshalTOML(data interface{}) error

type Package added in v0.3.3

type Package struct {
	// The name of the package.
	Name string `toml:"name,omitempty"`
	// The kcl compiler version
	Edition string `toml:"edition,omitempty"`
	// The version of the package.
	Version string `toml:"version,omitempty"`
	// Description denotes the description of the package.
	Description string `toml:"description,omitempty"` // kcl package description
	// Exclude denote the files to include when publishing.
	Include []string `toml:"include,omitempty"`
	// Exclude denote the files to exclude when publishing.
	Exclude []string `toml:"exclude,omitempty"`
}

'Package' is the kcl package section of 'kcl.mod'.

func (*Package) MarshalTOML added in v0.3.3

func (pkg *Package) MarshalTOML() string

func (*Package) UnmarshalTOML added in v0.3.3

func (pkg *Package) UnmarshalTOML(data interface{}) error

type Profile added in v0.3.3

type Profile struct {
	Entries     *[]string `toml:"entries"`
	DisableNone *bool     `toml:"disable_none"`
	SortKeys    *bool     `toml:"sort_keys"`
	Selectors   *[]string `toml:"selectors"`
	Overrides   *[]string `toml:"overrides"`
	Options     *[]string `toml:"arguments"`
}

Profile is the profile section of 'kcl.mod'. It is used to specify the compilation options of the current package.

func NewProfile added in v0.3.3

func NewProfile() Profile

NewProfile will create a new profile.

func (*Profile) GetEntries added in v0.4.3

func (profile *Profile) GetEntries() []string

GetEntries will get the entry kcl files from profile.

func (*Profile) IntoKclOptions added in v0.3.3

func (profile *Profile) IntoKclOptions() *kcl.Option

IntoKclOptions will transform the profile into kcl options.

func (*Profile) MarshalTOML added in v0.3.3

func (p *Profile) MarshalTOML() string

Jump to

Keyboard shortcuts

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