本文整理匯總了Golang中github.com/openshift/source-to-image/pkg/api.Config.WorkingSourceDir方法的典型用法代碼示例。如果您正苦於以下問題:Golang Config.WorkingSourceDir方法的具體用法?Golang Config.WorkingSourceDir怎麽用?Golang Config.WorkingSourceDir使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/openshift/source-to-image/pkg/api.Config
的用法示例。
在下文中一共展示了Config.WorkingSourceDir方法的6個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: Download
// Download downloads the application source code from the GIT repository
// and checkout the Ref specified in the config.
func (c *Clone) Download(config *api.Config) (*api.SourceInfo, error) {
targetSourceDir := filepath.Join(config.WorkingDir, api.Source)
config.WorkingSourceDir = targetSourceDir
var info *api.SourceInfo
if c.ValidCloneSpec(config.Source) {
if len(config.ContextDir) > 0 {
targetSourceDir = filepath.Join(config.WorkingDir, api.ContextTmp)
}
glog.V(2).Infof("Cloning into %s", targetSourceDir)
if err := c.Clone(config.Source, targetSourceDir); err != nil {
glog.V(1).Infof("Git clone failed: %+v", err)
return nil, err
}
if len(config.Ref) > 0 {
if err := c.Checkout(targetSourceDir, config.Ref); err != nil {
return nil, err
}
glog.V(1).Infof("Checked out %q", config.Ref)
}
if len(config.ContextDir) > 0 {
originalTargetDir := filepath.Join(config.WorkingDir, api.Source)
c.RemoveDirectory(originalTargetDir)
// we want to copy entire dir contents, thus we need to use dir/. construct
path := filepath.Join(targetSourceDir, config.ContextDir) + string(filepath.Separator) + "."
err := c.Copy(path, originalTargetDir)
if err != nil {
return nil, err
}
info = c.GetInfo(targetSourceDir)
c.RemoveDirectory(targetSourceDir)
} else {
info = c.GetInfo(targetSourceDir)
}
if len(config.ContextDir) > 0 {
info.ContextDir = config.ContextDir
}
return info, nil
}
// we want to copy entire dir contents, thus we need to use dir/. construct
path := filepath.Join(config.Source, config.ContextDir) + string(filepath.Separator) + "."
if !c.Exists(path) {
return nil, errors.NewSourcePathError(path)
}
if err := c.Copy(path, targetSourceDir); err != nil {
return nil, err
}
// When building from a local directory (not using GIT clone spec scheme) we
// skip gathering informations about the source as there is no guarantee that
// the folder is a GIT repository or it requires context-dir to be set.
if !config.Quiet {
glog.Warning("You are using <source> location that is not valid GIT repository. The source code information will not be stored into the output image. Use this image only for local testing and development.")
}
return nil, nil
}
示例2: Download
func (f *File) Download(config *api.Config) (*api.SourceInfo, error) {
targetSourceDir := filepath.Join(config.WorkingDir, api.Source)
sourceDir := strings.TrimPrefix(config.Source, "file://")
config.WorkingSourceDir = targetSourceDir
if len(config.ContextDir) > 0 {
targetSourceDir = filepath.Join(config.WorkingDir, api.ContextTmp)
}
glog.V(1).Infof("Copying sources from %q to %q", sourceDir, targetSourceDir)
err := f.CopyContents(sourceDir, targetSourceDir)
if err != nil {
return nil, err
}
if len(config.ContextDir) > 0 {
originalTargetDir := filepath.Join(config.WorkingDir, api.Source)
f.RemoveDirectory(originalTargetDir)
// we want to copy entire dir contents, thus we need to use dir/. construct
path := filepath.Join(targetSourceDir, config.ContextDir) + string(filepath.Separator) + "."
err := f.Copy(path, originalTargetDir)
if err != nil {
return nil, err
}
f.RemoveDirectory(targetSourceDir)
}
return &api.SourceInfo{
Location: sourceDir,
ContextDir: config.ContextDir,
}, nil
}
示例3: Download
func (f *File) Download(config *api.Config) (*api.SourceInfo, error) {
targetSourceDir := filepath.Join(config.WorkingDir, api.Source)
sourceDir := strings.TrimPrefix(config.Source, "file://")
config.WorkingSourceDir = targetSourceDir
if len(config.ContextDir) > 0 {
targetSourceDir = filepath.Join(targetSourceDir, config.ContextDir, ".")
}
glog.V(1).Infof("Copying sources from %q to %q", sourceDir, targetSourceDir)
err := f.Copy(sourceDir, targetSourceDir)
if err != nil {
return nil, err
}
return &api.SourceInfo{
Location: sourceDir,
ContextDir: config.ContextDir,
}, nil
}
示例4: Download
// Download copies sources from a local directory into the working directory
func (f *File) Download(config *api.Config) (*api.SourceInfo, error) {
config.WorkingSourceDir = filepath.Join(config.WorkingDir, api.Source)
source := strings.TrimPrefix(config.Source, "file://")
copySrc := source
if len(config.ContextDir) > 0 {
copySrc = filepath.Join(source, config.ContextDir)
}
glog.V(1).Infof("Copying sources from %q to %q", copySrc, config.WorkingSourceDir)
err := f.CopyContents(copySrc, config.WorkingSourceDir)
if err != nil {
return nil, err
}
return &api.SourceInfo{
Location: source,
ContextDir: config.ContextDir,
}, nil
}
示例5: Download
// Download downloads the application source code from the Git repository
// and checkout the Ref specified in the config.
func (c *Clone) Download(config *api.Config) (*api.SourceInfo, error) {
targetSourceDir := filepath.Join(config.WorkingDir, api.Source)
config.WorkingSourceDir = targetSourceDir
var info *api.SourceInfo
hasRef := len(config.Ref) > 0
hasSubmodules := !config.DisableRecursive
cloneConfig := api.CloneConfig{Quiet: true, Recursive: hasSubmodules && !hasRef}
if c.ValidCloneSpec(config.Source) {
if len(config.ContextDir) > 0 {
targetSourceDir = filepath.Join(config.WorkingDir, api.ContextTmp)
glog.V(1).Infof("Downloading %q (%q) ...", config.Source, config.ContextDir)
} else {
glog.V(1).Infof("Downloading %q ...", config.Source)
}
// If we have a specific checkout ref, use submodule update instead of recursive
// Otherwise the versions will be incorrect.
if hasRef && hasSubmodules {
glog.V(2).Infof("Cloning sources (deferring submodule init) into %q", targetSourceDir)
} else if cloneConfig.Recursive {
glog.V(2).Infof("Cloning sources and all Git submodules into %q", targetSourceDir)
} else {
glog.V(2).Infof("Cloning sources into %q", targetSourceDir)
}
if err := c.Clone(config.Source, targetSourceDir, cloneConfig); err != nil {
glog.V(1).Infof("Git clone failed: %+v", err)
return nil, err
}
if hasRef {
if err := c.Checkout(targetSourceDir, config.Ref); err != nil {
return nil, err
}
glog.V(1).Infof("Checked out %q", config.Ref)
if hasSubmodules {
if err := c.SubmoduleUpdate(targetSourceDir, true, true); err != nil {
return nil, err
}
glog.V(1).Infof("Updated submodules for %q", config.Ref)
}
}
if len(config.ContextDir) > 0 {
originalTargetDir := filepath.Join(config.WorkingDir, api.Source)
c.RemoveDirectory(originalTargetDir)
// we want to copy entire dir contents, thus we need to use dir/. construct
path := filepath.Join(targetSourceDir, config.ContextDir) + string(filepath.Separator) + "."
err := c.Copy(path, originalTargetDir)
if err != nil {
return nil, err
}
info = c.GetInfo(targetSourceDir)
c.RemoveDirectory(targetSourceDir)
} else {
info = c.GetInfo(targetSourceDir)
}
if len(config.ContextDir) > 0 {
info.ContextDir = config.ContextDir
}
return info, nil
}
// we want to copy entire dir contents, thus we need to use dir/. construct
path := filepath.Join(config.Source, config.ContextDir) + string(filepath.Separator) + "."
if !c.Exists(path) {
return nil, errors.NewSourcePathError(path)
}
if err := c.Copy(path, targetSourceDir); err != nil {
return nil, err
}
// When building from a local directory (not using Git clone spec scheme) we
// skip gathering informations about the source as there is no guarantee that
// the folder is a Git repository or it requires context-dir to be set.
if !config.Quiet {
glog.Warning("You are using <source> location that is not valid Git repository. The source code information will not be stored into the output image. Use this image only for local testing and development.")
}
return nil, nil
}
示例6: Download
// Download downloads the application source code from the Git repository
// and checkout the Ref specified in the config.
func (c *Clone) Download(config *api.Config) (*api.SourceInfo, error) {
targetSourceDir := filepath.Join(config.WorkingDir, api.Source)
config.WorkingSourceDir = targetSourceDir
ok, err := c.ValidCloneSpec(config.Source)
if err != nil {
return nil, err
}
if !ok {
glog.Errorf("Clone.Download was passed an invalid source %s", config.Source)
return nil, fmt.Errorf("invalid source %s", config.Source)
}
ref := "HEAD"
if config.Ref != "" {
ref = config.Ref
}
if strings.HasPrefix(config.Source, "file://") {
s := strings.TrimPrefix(config.Source, "file://")
if util.UsingCygwinGit {
var err error
s, err = util.ToSlashCygwin(s)
if err != nil {
glog.V(0).Infof("error: Cygwin path conversion failed: %v", err)
return nil, err
}
}
config.Source = "file://" + s
}
if len(config.ContextDir) > 0 {
targetSourceDir = filepath.Join(config.WorkingDir, api.ContextTmp)
glog.V(1).Infof("Downloading %q (%q) ...", config.Source, config.ContextDir)
} else {
glog.V(1).Infof("Downloading %q ...", config.Source)
}
if !config.IgnoreSubmodules {
glog.V(2).Infof("Cloning sources into %q", targetSourceDir)
} else {
glog.V(2).Infof("Cloning sources (ignoring submodules) into %q", targetSourceDir)
}
cloneConfig := api.CloneConfig{Quiet: true}
err = c.Clone(config.Source, targetSourceDir, cloneConfig)
if err != nil {
glog.V(0).Infof("error: git clone failed: %v", err)
return nil, err
}
err = c.Checkout(targetSourceDir, ref)
if err != nil {
return nil, err
}
glog.V(1).Infof("Checked out %q", ref)
if !config.IgnoreSubmodules {
err = c.SubmoduleUpdate(targetSourceDir, true, true)
if err != nil {
return nil, err
}
glog.V(1).Infof("Updated submodules for %q", ref)
}
// Record Git's knowledge about file permissions
if runtime.GOOS == "windows" {
filemodes, err := c.LsTree(filepath.Join(targetSourceDir, config.ContextDir), ref, true)
if err != nil {
return nil, err
}
for _, filemode := range filemodes {
c.Chmod(filepath.Join(targetSourceDir, config.ContextDir, filemode.Name()), os.FileMode(filemode.Mode())&os.ModePerm)
}
}
info := c.GetInfo(targetSourceDir)
if len(config.ContextDir) > 0 {
originalTargetDir := filepath.Join(config.WorkingDir, api.Source)
c.RemoveDirectory(originalTargetDir)
path := filepath.Join(targetSourceDir, config.ContextDir)
err := c.CopyContents(path, originalTargetDir)
if err != nil {
return nil, err
}
c.RemoveDirectory(targetSourceDir)
}
if len(config.ContextDir) > 0 {
info.ContextDir = config.ContextDir
}
return info, nil
}