diff --git a/instruction.go b/instruction.go index 56e8177..1e05a47 100644 --- a/instruction.go +++ b/instruction.go @@ -122,7 +122,12 @@ func (instruction *LinkInstruction) RunAsync(status chan (error)) { } } - err := os.Symlink(instruction.Source, instruction.Target) + var err error + if *hard { + err = os.Link(instruction.Source, instruction.Target) + } else { + err = os.Symlink(instruction.Source, instruction.Target) + } if err != nil { status <- fmt.Errorf("failed creating symlink between %s%s%s and %s%s%s with error %s%+v%s", SourceColor, instruction.Source, DefaultColor, TargetColor, instruction.Target, DefaultColor, ErrorColor, err, DefaultColor) return diff --git a/main.go b/main.go index fbd9e4c..9ec9988 100644 --- a/main.go +++ b/main.go @@ -32,10 +32,13 @@ var DirRegex, _ = regexp.Compile(`^(.+?)[/\\]sync$`) var FileRegex, _ = regexp.Compile(`^sync$`) var programName = os.Args[0] +var hard *bool + func main() { recurse := flag.String("r", "", "recurse into directories") file := flag.String("f", "", "file to read instructions from") debug := flag.Bool("d", false, "debug") + hard = flag.Bool("h", false, "create hard links instead") flag.Parse() if *debug {