Skip to content

Commit 310d9c8

Browse files
committed
add force flag to smallweb link
1 parent 660c843 commit 310d9c8

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

cmd/link.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ import (
1010
)
1111

1212
func NewCmdLink() *cobra.Command {
13+
var flags struct {
14+
force bool
15+
}
16+
1317
cmd := &cobra.Command{
1418
Use: "link <source> <target>",
1519
Aliases: []string{"ln"},
@@ -34,17 +38,19 @@ func NewCmdLink() *cobra.Command {
3438
return fmt.Errorf("failed to get absolute path for target: %w", err)
3539
}
3640

37-
if _, err := os.Stat(target); err == nil {
38-
return fmt.Errorf("target already exists")
39-
}
40-
4141
// if target is inside the smallweb directory, create a relative symlink
4242
if strings.HasPrefix(target, k.String("dir")) {
4343
relative, err := filepath.Rel(filepath.Dir(target), source)
4444
if err != nil {
4545
return fmt.Errorf("failed to get relative path: %w", err)
4646
}
4747

48+
if flags.force {
49+
if err := os.Remove(target); err != nil && !os.IsNotExist(err) {
50+
return fmt.Errorf("failed to remove existing target: %w", err)
51+
}
52+
}
53+
4854
if err := os.Symlink(relative, target); err != nil {
4955
return fmt.Errorf("failed to create symbolic link: %w", err)
5056
}
@@ -61,5 +67,7 @@ func NewCmdLink() *cobra.Command {
6167
},
6268
}
6369

70+
cmd.Flags().BoolVarP(&flags.force, "force", "f", false, "Force overwrite existing symlinks")
71+
6472
return cmd
6573
}

0 commit comments

Comments
 (0)