本文整理汇总了Golang中path/filepath.Join函数的典型用法代码示例。如果您正苦于以下问题:Golang Join函数的具体用法?Golang Join怎么用?Golang Join使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Join函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: install
// Install git-hook into current git repo
func install(isInstall bool) {
dirPath, err := getGitDirPath()
if err != nil {
logger.Errorln(MESSAGES["NotGitRepo"])
return
}
if isInstall {
isExist, _ := exists(filepath.Join(dirPath, "hooks.old"))
if isExist {
logger.Errorln(MESSAGES["ExistHooks"])
return
}
installInto(dirPath, tplPostInstall)
} else {
isExist, _ := exists(filepath.Join(dirPath, "hooks.old"))
if !isExist {
logger.Errorln(MESSAGES["NotExistHooks"])
return
}
os.RemoveAll(filepath.Join(dirPath, "hooks"))
os.Rename(filepath.Join(dirPath, "hooks.old"), filepath.Join(dirPath, "hooks"))
logger.Infoln(MESSAGES["Restore"])
}
}
示例2: NewEtcdMinion
// Creates a new etcd minion
func NewEtcdMinion(name string, cfg etcdclient.Config) Minion {
c, err := etcdclient.New(cfg)
if err != nil {
log.Fatal(err)
}
kapi := etcdclient.NewKeysAPI(c)
id := utils.GenerateUUID(name)
rootDir := filepath.Join(EtcdMinionSpace, id.String())
queueDir := filepath.Join(rootDir, "queue")
classifierDir := filepath.Join(rootDir, "classifier")
logDir := filepath.Join(rootDir, "log")
taskQueue := make(chan *task.Task)
done := make(chan struct{})
m := &etcdMinion{
name: name,
rootDir: rootDir,
queueDir: queueDir,
classifierDir: classifierDir,
logDir: logDir,
id: id,
kapi: kapi,
taskQueue: taskQueue,
done: done,
}
return m
}
示例3: TestRunDeviceSymlink
// TestRunDeviceSymlink checks run with device that follows symlink (#13840)
func (s *DockerSuite) TestRunDeviceSymlink(c *check.C) {
testRequires(c, DaemonIsLinux, NotUserNamespace, NotArm, SameHostDaemon)
if _, err := os.Stat("/dev/zero"); err != nil {
c.Skip("Host does not have /dev/zero")
}
// Create a temporary directory to create symlink
tmpDir, err := ioutil.TempDir("", "docker_device_follow_symlink_tests")
c.Assert(err, checker.IsNil)
defer os.RemoveAll(tmpDir)
// Create a symbolic link to /dev/zero
symZero := filepath.Join(tmpDir, "zero")
err = os.Symlink("/dev/zero", symZero)
c.Assert(err, checker.IsNil)
// Create a temporary file "temp" inside tmpDir, write some data to "tmpDir/temp",
// then create a symlink "tmpDir/file" to the temporary file "tmpDir/temp".
tmpFile := filepath.Join(tmpDir, "temp")
err = ioutil.WriteFile(tmpFile, []byte("temp"), 0666)
c.Assert(err, checker.IsNil)
symFile := filepath.Join(tmpDir, "file")
err = os.Symlink(tmpFile, symFile)
c.Assert(err, checker.IsNil)
// md5sum of 'dd if=/dev/zero bs=4K count=8' is bb7df04e1b0a2570657527a7e108ae23
out, _ := dockerCmd(c, "run", "--device", symZero+":/dev/symzero", "busybox", "sh", "-c", "dd if=/dev/symzero bs=4K count=8 | md5sum")
c.Assert(strings.Trim(out, "\r\n"), checker.Contains, "bb7df04e1b0a2570657527a7e108ae23", check.Commentf("expected output bb7df04e1b0a2570657527a7e108ae23"))
// symlink "tmpDir/file" to a file "tmpDir/temp" will result in an error as it is not a device.
out, _, err = dockerCmdWithError("run", "--device", symFile+":/dev/symzero", "busybox", "sh", "-c", "dd if=/dev/symzero bs=4K count=8 | md5sum")
c.Assert(err, check.NotNil)
c.Assert(strings.Trim(out, "\r\n"), checker.Contains, "not a device node", check.Commentf("expected output 'not a device node'"))
}
示例4: TestAddSingleFileToWorkdir
// Issue #3960: "ADD src ." hangs
func TestAddSingleFileToWorkdir(t *testing.T) {
buildDirectory := filepath.Join(workingDirectory, "build_tests", "TestAdd", "SingleFileToWorkdir")
f, err := os.OpenFile(filepath.Join(buildDirectory, "test_file"), os.O_CREATE, 0644)
if err != nil {
t.Fatal(err)
}
f.Close()
buildCmd := exec.Command(dockerBinary, "build", "-t", "testaddimg", ".")
buildCmd.Dir = buildDirectory
done := make(chan error)
go func() {
out, exitCode, err := runCommandWithOutput(buildCmd)
if err != nil || exitCode != 0 {
done <- fmt.Errorf("build failed to complete: %s %v", out, err)
return
}
done <- nil
}()
select {
case <-time.After(5 * time.Second):
if err := buildCmd.Process.Kill(); err != nil {
fmt.Printf("could not kill build (pid=%d): %v\n", buildCmd.Process.Pid, err)
}
t.Fatal("build timed out")
case err := <-done:
if err != nil {
t.Fatal(err)
}
}
deleteImages("testaddimg")
logDone("build - add single file to workdir")
}
示例5: Search
// Search looks for the closest valid repository, starting from the current path
// of this Repository object.
func (repo *Repository) Search() error {
// First expand the current path to an absolute form.
if path, err := filepath.Abs(repo.path); err == nil {
repo.path = path
} else {
return err
}
originalPath := repo.path
// If we are already given a .git directory, we're done.
if repo.IsValid() {
return nil
}
// We're probably in a non-bare repo. Start with that hypothetical path.
repo.path = filepath.Join(repo.path, ".git")
// Traverse upward until we hit a valid repo or root.
for !repo.IsValid() {
if repo.path == "/.git" {
break
}
repo.path = filepath.Clean(filepath.Join(repo.path, "..", "..", ".git"))
}
if repo.IsValid() {
return nil
}
return core.Errorf("Not a git repository (or any of the parent directories): %s", originalPath)
}
示例6: mirrorLocalZoneInfo
// mirrorLocalZoneInfo tries to reproduce the /etc/localtime target in stage1/ to satisfy systemd-nspawn
func mirrorLocalZoneInfo(root string) {
zif, err := os.Readlink(localtimePath)
if err != nil {
return
}
// On some systems /etc/localtime is a relative symlink, make it absolute
if !filepath.IsAbs(zif) {
zif = filepath.Join(filepath.Dir(localtimePath), zif)
zif = filepath.Clean(zif)
}
src, err := os.Open(zif)
if err != nil {
return
}
defer src.Close()
destp := filepath.Join(common.Stage1RootfsPath(root), zif)
if err = os.MkdirAll(filepath.Dir(destp), 0755); err != nil {
return
}
dest, err := os.OpenFile(destp, os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
return
}
defer dest.Close()
_, _ = io.Copy(dest, src)
}
示例7: Stop
// Stop profiling and output results to a file. Also dump a memory profile.
func (pro *Prof) Stop() error {
pprof.StopCPUProfile()
pro.fd.Close()
profileDir := "Profile-" + time.Now().Format("Jan_02_2006-15.04.05")
if err := os.Mkdir(profileDir, 0777); err != nil {
return err
}
cpuProfilePath := filepath.Join(profileDir, pro.fname)
if err := os.Rename(pro.fname+".tmp", cpuProfilePath); err != nil {
return fmt.Errorf("failed to rename tmp file: %s", err)
}
memProfilePath := filepath.Join(profileDir, pro.fname+".mem")
memFile, err := os.Create(memProfilePath)
if err != nil {
return fmt.Errorf("failed to create mem file: %s", err)
}
defer memFile.Close()
runtime.GC()
if err := pprof.WriteHeapProfile(memFile); err != nil {
return fmt.Errorf("failed to write heap profile: %s", err)
}
return nil
}
示例8: initDefaultCachePath
func initDefaultCachePath() string {
xdgCache := os.Getenv("XDG_CACHE_HOME")
if xdgCache == "" {
xdgCache = filepath.Join(os.Getenv("HOME"), ".cache")
}
return filepath.Join(xdgCache, "bashbrew")
}
示例9: Build
func (bdeb *DebWriter) Build(tempDir, destDir string) error {
wtr, err := os.Create(filepath.Join(destDir, bdeb.Filename))
if err != nil {
return err
}
defer wtr.Close()
aw := ar.NewWriter(wtr)
err = bdeb.writeBytes(aw, "debian-binary", []byte(bdeb.DebianBinaryVersion+"\n"))
if err != nil {
return fmt.Errorf("Error writing debian-binary into .ar archive: %v", err)
}
err = bdeb.writeFromFile(aw, filepath.Join(tempDir, bdeb.ControlArchive))
if err != nil {
return fmt.Errorf("Error writing control archive into .ar archive: %v", err)
}
err = bdeb.writeFromFile(aw, filepath.Join(tempDir, bdeb.DataArchive))
if err != nil {
return fmt.Errorf("Error writing data archive into .ar archive: %v", err)
}
err = aw.Close()
if err != nil {
return fmt.Errorf("Error closing .ar archive: %v", err)
}
return nil
}
示例10: buildHash
func (b *Builder) buildHash(hash string) error {
log.Println(b.name, "building", hash)
// create place in which to do work
workpath := filepath.Join(*buildroot, b.name+"-"+hash[:12])
if err := os.Mkdir(workpath, mkdirPerm); err != nil {
return err
}
defer removePath(workpath)
buildLog, runTime, err := b.buildRepoOnHash(workpath, hash, b.buildCmd())
if err != nil {
// record failure
return b.recordResult(false, "", hash, "", buildLog, runTime)
}
// record success
if err = b.recordResult(true, "", hash, "", "", runTime); err != nil {
return fmt.Errorf("recordResult: %s", err)
}
// build sub-repositories
goRoot := filepath.Join(workpath, *buildTool)
goPath := workpath
b.buildSubrepos(goRoot, goPath, hash)
return nil
}
示例11: initDefaultConfigPath
func initDefaultConfigPath() string {
xdgConfig := os.Getenv("XDG_CONFIG_HOME")
if xdgConfig == "" {
xdgConfig = filepath.Join(os.Getenv("HOME"), ".config")
}
return filepath.Join(xdgConfig, "bashbrew")
}
示例12: TestCopyFileWithTarSrcFile
func TestCopyFileWithTarSrcFile(t *testing.T) {
folder, err := ioutil.TempDir("", "docker-archive-test")
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(folder)
dest := filepath.Join(folder, "dest")
srcFolder := filepath.Join(folder, "src")
src := filepath.Join(folder, filepath.Join("src", "src"))
err = os.MkdirAll(srcFolder, 0740)
if err != nil {
t.Fatal(err)
}
err = os.MkdirAll(dest, 0740)
if err != nil {
t.Fatal(err)
}
ioutil.WriteFile(src, []byte("content"), 0777)
err = CopyWithTar(src, dest+"/")
if err != nil {
t.Fatalf("archiver.CopyFileWithTar shouldn't throw an error, %s.", err)
}
_, err = os.Stat(dest)
if err != nil {
t.Fatalf("Destination folder should contain the source file but did not.")
}
}
示例13: TestUntarPathWithDestinationFile
// Do the same test as above but with the destination as file, it should fail
func TestUntarPathWithDestinationFile(t *testing.T) {
tmpFolder, err := ioutil.TempDir("", "docker-archive-test")
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(tmpFolder)
srcFile := filepath.Join(tmpFolder, "src")
tarFile := filepath.Join(tmpFolder, "src.tar")
os.Create(filepath.Join(tmpFolder, "src"))
// Translate back to Unix semantics as next exec.Command is run under sh
srcFileU := srcFile
tarFileU := tarFile
if runtime.GOOS == "windows" {
tarFileU = "/tmp/" + filepath.Base(filepath.Dir(tarFile)) + "/src.tar"
srcFileU = "/tmp/" + filepath.Base(filepath.Dir(srcFile)) + "/src"
}
cmd := exec.Command("sh", "-c", "tar cf "+tarFileU+" "+srcFileU)
_, err = cmd.CombinedOutput()
if err != nil {
t.Fatal(err)
}
destFile := filepath.Join(tmpFolder, "dest")
_, err = os.Create(destFile)
if err != nil {
t.Fatalf("Fail to create the destination file")
}
err = UntarPath(tarFile, destFile)
if err == nil {
t.Fatalf("UntarPath should throw an error if the destination if a file")
}
}
示例14: TestUntarPathWithInvalidDest
func TestUntarPathWithInvalidDest(t *testing.T) {
tempFolder, err := ioutil.TempDir("", "docker-archive-test")
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(tempFolder)
invalidDestFolder := filepath.Join(tempFolder, "invalidDest")
// Create a src file
srcFile := filepath.Join(tempFolder, "src")
tarFile := filepath.Join(tempFolder, "src.tar")
os.Create(srcFile)
os.Create(invalidDestFolder) // being a file (not dir) should cause an error
// Translate back to Unix semantics as next exec.Command is run under sh
srcFileU := srcFile
tarFileU := tarFile
if runtime.GOOS == "windows" {
tarFileU = "/tmp/" + filepath.Base(filepath.Dir(tarFile)) + "/src.tar"
srcFileU = "/tmp/" + filepath.Base(filepath.Dir(srcFile)) + "/src"
}
cmd := exec.Command("sh", "-c", "tar cf "+tarFileU+" "+srcFileU)
_, err = cmd.CombinedOutput()
if err != nil {
t.Fatal(err)
}
err = UntarPath(tarFile, invalidDestFolder)
if err == nil {
t.Fatalf("UntarPath with invalid destination path should throw an error.")
}
}
示例15: getCertPathInfo
// getCertPaths returns the cert paths
// codegangsta/cli will not set the cert paths if the storage-path
// is set to something different so we cannot use the paths
// in the global options. le sigh.
func getCertPathInfo(c *cli.Context) libmachine.CertPathInfo {
// setup cert paths
caCertPath := c.GlobalString("tls-ca-cert")
caKeyPath := c.GlobalString("tls-ca-key")
clientCertPath := c.GlobalString("tls-client-cert")
clientKeyPath := c.GlobalString("tls-client-key")
if caCertPath == "" {
caCertPath = filepath.Join(utils.GetMachineCertDir(), "ca.pem")
}
if caKeyPath == "" {
caKeyPath = filepath.Join(utils.GetMachineCertDir(), "ca-key.pem")
}
if clientCertPath == "" {
clientCertPath = filepath.Join(utils.GetMachineCertDir(), "cert.pem")
}
if clientKeyPath == "" {
clientKeyPath = filepath.Join(utils.GetMachineCertDir(), "key.pem")
}
return libmachine.CertPathInfo{
CaCertPath: caCertPath,
CaKeyPath: caKeyPath,
ClientCertPath: clientCertPath,
ClientKeyPath: clientKeyPath,
}
}