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
- func ModFileExists(path string) (bool, error)
- func ModLockFileExists(path string) (bool, error)
- func ParseRepoFullNameFromGitSource(gitSrc Git) (string, error)
- func ParseRepoNameFromGitSource(gitSrc Git) string
- type Dependencies
- type Dependency
- func (dep *Dependency) FillDepInfo() error
- func (dep *Dependency) GenDepFullName() string
- func (d *Dependency) GetAliasName() string
- func (dep *Dependency) GetLocalFullPath(rootpath string) string
- func (dep *Dependency) IsFromLocal() bool
- func (dep *Dependency) MarshalTOML() string
- func (dep *Dependency) UnmarshalModTOML(data interface{}) error
- func (d Dependency) WithTheSameVersion(other Dependency) bool
- type Git
- type KclPkg
- func (kclPkg *KclPkg) CreateDefauleMain() error
- func (kclPkg *KclPkg) DefaultTarPath() string
- func (KclPkg *KclPkg) GenCheckSum() (string, error)
- func (p *KclPkg) GetDepsMetadata() (*Dependencies, error)
- func (kclPkg *KclPkg) GetEntryKclFilesFromModFile() []string
- func (kclPkg *KclPkg) GetKclOpts() *kcl.Option
- func (kclPkg *KclPkg) GetLockFilePath() string
- func (KclPkg *KclPkg) GetPkgDescription() string
- func (kclPkg *KclPkg) GetPkgEdition() string
- func (kclPkg *KclPkg) GetPkgFullName() string
- func (kclPkg *KclPkg) GetPkgName() string
- func (kclPkg *KclPkg) GetPkgProfile() *Profile
- func (kclPkg *KclPkg) GetPkgTag() string
- func (kclPkg *KclPkg) GetPkgTarName() string
- func (KclPkg *KclPkg) GetPkgVersion() string
- func (kclPkg *KclPkg) HasProfile() bool
- func (kclPkg *KclPkg) IsVendorMode() bool
- func (kclPkg *KclPkg) LocalVendorPath() string
- func (kclPkg *KclPkg) LockDepsVersion() error
- func (kclPkg *KclPkg) SetVendorMode(vendorMode bool)
- func (kclPkg *KclPkg) UpdateModAndLockFile() error
- func (kclPkg *KclPkg) ValidateKpmHome(kpmHome string) *reporter.KpmEvent
- type Local
- type ModFile
- func (modFile *ModFile) FillDependenciesInfo() error
- func (modFile *ModFile) GetEntries() []string
- func (mfile *ModFile) GetModFilePath() string
- func (mfile *ModFile) GetModLockFilePath() string
- func (mod *ModFile) LoadModFile(filepath string) error
- func (mod *ModFile) MarshalTOML() string
- func (mfile *ModFile) StoreModFile() error
- func (mod *ModFile) UnmarshalTOML(data interface{}) error
- type Oci
- type Package
- type Profile
- type Source
Constants ¶
const ( MOD_FILE = "kcl.mod" MOD_LOCK_FILE = "kcl.mod.lock" )
const DEPS_FLAG = "dependencies"
const DEPS_PATTERN = "[dependencies]"
const DEP_PATTERN = "%s = %s"
const DESCRIPTION_FLAG = "description"
const EDITION_FLAG = "edition"
const GIT_COMMIT_FLAG = "commit"
const GIT_COMMIT_PATTERN = "commit = \"%s\""
const GIT_TAG_FLAG = "tag"
const GIT_TAG_PATTERN = "tag = \"%s\""
const GIT_URL_FLAG = "git"
const GIT_URL_PATTERN = "git = \"%s\""
const LOCAL_PATH_FLAG = "path"
const LOCAL_PATH_PATTERN = "path = %s"
const LOCK_FILE_NAME = "kcl.mod.lock"
const NAME_FLAG = "name"
const NEWLINE = "\n"
const PACKAGE_FLAG = "package"
const PACKAGE_PATTERN = "[package]"
const PKG_NAME_PATTERN = "%s_%s"
const PROFILES_FLAG = "profile"
const PROFILE_PATTERN = "[profile]"
const SEPARATOR = ", "
const SOURCE_PATTERN = "{ %s }"
const TAR_SUFFIX = ".tar"
const VERSION_FLAG = "version"
Variables ¶
This section is empty.
Functions ¶
func ModFileExists ¶ added in v0.3.3
ModFileExists returns whether a 'kcl.mod' file exists in the path.
func ModLockFileExists ¶ added in v0.3.3
ModLockFileExists returns whether a 'kcl.mod.lock' file exists in the path.
func ParseRepoFullNameFromGitSource ¶ added in v0.3.3
ParseRepoFullNameFromGitSource will extract the kcl package name from the git url.
func ParseRepoNameFromGitSource ¶ added in v0.3.3
ParseRepoNameFromGitSource will extract the kcl package name from the git url.
Types ¶
type Dependencies ¶ added in v0.3.3
type Dependencies struct {
Deps map[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) 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() (*Dependencies, 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 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:"-"` 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) FillDepInfo ¶ added in v0.3.3
func (dep *Dependency) FillDepInfo() error
FillDepInfo will fill registry information for a dependency.
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) GetAliasName ¶ added in v0.4.5
func (d *Dependency) GetAliasName() string
SetName will set the name and alias name 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) 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) WithTheSameVersion ¶ added in v0.4.3
func (d Dependency) WithTheSameVersion(other Dependency) bool
WithTheSameVersion will check whether two dependencies have the same version.
type Git ¶ added in v0.3.3
type Git struct { Url string `toml:"url,omitempty"` Branch string `toml:"branch,omitempty"` Commit string `toml:"commit,omitempty"` Tag string `toml:"git_tag,omitempty"` }
Git is the package source from git registry.
func (*Git) GetValidGitReference ¶ added in v0.6.0
GetValidGitReference will get the valid git reference from git source. Only one of branch, tag or commit is allowed.
func (*Git) MarshalTOML ¶ added in v0.3.3
func (*Git) UnmarshalModTOML ¶ added in v0.3.3
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 }
func LoadKclPkg ¶
func LoadKclPkgFromTar ¶
func NewKclPkg ¶
func NewKclPkg(opts *opt.InitOptions) KclPkg
func (*KclPkg) CreateDefauleMain ¶ added in v0.3.7
CreateDefauleMain will create a default main.k file in the current kcl package.
func (*KclPkg) DefaultTarPath ¶
DefaultTarPath will return "<kcl_package_path>/<package_name>-<package_version>.tar"
func (*KclPkg) GenCheckSum ¶ added in v0.4.0
GenCheckSum generates the checksum of the current kcl package.
func (*KclPkg) GetDepsMetadata ¶ added in v0.4.5
func (p *KclPkg) GetDepsMetadata() (*Dependencies, error)
func (*KclPkg) GetEntryKclFilesFromModFile ¶
GetEntryKclFilesFromModFile will return the entry kcl files from kcl.mod.
func (*KclPkg) GetKclOpts ¶
GetKclOpts will return the kcl options from kcl.mod.
func (*KclPkg) GetLockFilePath ¶
GetLockFilePath returns the abs path of kcl.mod.lock.
func (*KclPkg) GetPkgDescription ¶ added in v0.3.7
GetPkgDescription returns the description of package.
func (*KclPkg) GetPkgEdition ¶ added in v0.3.4
GetPkgEdition returns compile edition of package.
func (*KclPkg) GetPkgFullName ¶
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) GetPkgName ¶
GetPkgName returns name of package.
func (*KclPkg) GetPkgProfile ¶ added in v0.3.4
GetPkgProfile returns the profile of package.
func (*KclPkg) GetPkgTarName ¶
GetPkgTarName returns the kcl package tar name "<package_name>-v<package_version>.tar"
func (*KclPkg) GetPkgVersion ¶ added in v0.3.7
GetPkgVersion returns the version of package.
func (*KclPkg) HasProfile ¶ added in v0.4.3
HasProfile will return true if the current kcl package has the profile.
func (*KclPkg) IsVendorMode ¶
func (*KclPkg) LocalVendorPath ¶
Return the full vendor path.
func (*KclPkg) LockDepsVersion ¶
LockDepsVersion locks the dependencies of the current kcl package into kcl.mod.lock.
func (*KclPkg) SetVendorMode ¶
func (*KclPkg) UpdateModAndLockFile ¶
updateModAndLockFile will update kcl.mod and kcl.mod.lock
type Local ¶ added in v0.3.3
type Local struct {
Path string `toml:"path,omitempty"`
}
func (*Local) MarshalTOML ¶ added in v0.3.3
func (*Local) UnmarshalModTOML ¶ added in v0.3.3
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 LoadModFile ¶ added in v0.3.3
LoadModFile load the contents of the 'kcl.mod' file in the path.
func NewModFile ¶ added in v0.3.3
func NewModFile(opts *opt.InitOptions) *ModFile
func (*ModFile) FillDependenciesInfo ¶ added in v0.3.3
FillDependenciesInfo will fill registry information for all dependencies in a kcl.mod.
func (*ModFile) GetEntries ¶ added in v0.4.3
GetEntries will get the entry kcl files from kcl.mod.
func (*ModFile) GetModFilePath ¶ added in v0.3.3
Returns the path to the kcl.mod file
func (*ModFile) GetModLockFilePath ¶ added in v0.3.3
Returns the path to the kcl.mod.lock file
func (*ModFile) LoadModFile ¶ added in v0.4.0
Load the kcl.mod file.
func (*ModFile) MarshalTOML ¶ added in v0.3.3
func (*ModFile) StoreModFile ¶ added in v0.3.3
Write the contents of 'ModFile' to 'kcl.mod' file
func (*ModFile) UnmarshalTOML ¶ added in v0.3.3
type Oci ¶ added in v0.3.3
type Oci struct { Reg string `toml:"reg,omitempty"` Repo string `toml:"repo,omitempty"` Tag string `toml:"oci_tag,omitempty"` }
func (*Oci) MarshalTOML ¶ added in v0.3.3
func (*Oci) UnmarshalModTOML ¶ added in v0.3.3
type Package ¶ added in v0.3.3
type Package struct { Name string `toml:"name,omitempty"` // kcl package name Edition string `toml:"edition,omitempty"` // kcl compiler version Version string `toml:"version,omitempty"` // kcl package version Description string `toml:"description,omitempty"` // kcl package description }
'Package' is the kcl package section of 'kcl.mod'.
func (*Package) MarshalTOML ¶ added in v0.3.3
func (*Package) UnmarshalTOML ¶ added in v0.3.3
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 (*Profile) GetEntries ¶ added in v0.4.3
GetEntries will get the entry kcl files from profile.
func (*Profile) IntoKclOptions ¶ added in v0.3.3
IntoKclOptions will transform the profile into kcl options.
func (*Profile) MarshalTOML ¶ added in v0.3.3
type Source ¶ added in v0.3.3
Source is the package source from registry.