MCPcopy
hub / github.com/puma/puma-dev / link

Function link

cmd/puma-dev/command.go:23–88  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

21}
22
23func link() error {
24 fs := flag.NewFlagSet("link", flag.ExitOnError)
25 name := fs.String("n", "", "name to link app as")
26
27 err := fs.Parse(flag.Args()[1:])
28 if err != nil {
29 return err
30 }
31
32 var dir string
33
34 if fs.NArg() == 0 {
35 dir, err = os.Getwd()
36 if err != nil {
37 return err
38 }
39
40 } else {
41 dir, err = filepath.Abs(fs.Arg(0))
42 if err != nil {
43 return err
44 }
45
46 stat, err := os.Stat(dir)
47 if err != nil {
48 if os.IsNotExist(err) {
49 return fmt.Errorf("invalid directory: %s", dir)
50 }
51
52 return err
53 }
54
55 if !stat.IsDir() {
56 return fmt.Errorf("invalid directory: %s", dir)
57 }
58 }
59
60 if *name == "" {
61 *name = strings.Replace(filepath.Base(dir), ".", "_", -1)
62 }
63
64 dest, err := homedir.Expand(filepath.Join(*fDir, *name))
65 if err != nil {
66 return err
67 }
68
69 _, err = os.Stat(dest)
70 if err == nil {
71 dest, err := os.Readlink(dest)
72 if err == nil {
73 fmt.Printf("! App '%s' already exists, pointed at '%s'\n", *name, dest)
74 } else {
75 fmt.Printf("! App '%s' already exists'\n", *name)
76 }
77 return nil
78 }
79
80 err = os.Symlink(dir, dest)

Callers 1

commandFunction · 0.85

Calls 1

ExpandFunction · 0.92

Tested by

no test coverage detected