package commands import ( "log" "git.snorba.art/hugo/nssh/storage" ) type TestCommand struct { filestore storage.Filestore } var fakeDirs = map[string]bool{ "/bin": true, "/usr/bin": true, "/sbin": true, } func (c *TestCommand) Execute(shell *Shell, args []string) error { if len(args) > 0 && args[0] == "0" { _, err := shell.WriteOutputString(trampSuccess) return err } if len(args) > 1 && args[0] == "-d" { log.Printf("Checking for existance of directory %s", args[1]) var exists bool var err error if answer, ok := fakeDirs[args[1]]; ok { exists = answer } else { exists, err = c.filestore.DirectoryExists(args[1]) if err != nil { return err } } if exists { log.Printf("Directory %s exists", args[1]) _, err := shell.WriteOutputString(trampSuccess) return err } _, err = shell.WriteOutputString(trampFailure) return err } if len(args) > 1 && (args[0] == "-e" || args[0] == "-r") { log.Printf("Checking for existance of file %s", args[1]) // Tramp sometimes throws in a sentence "this file does not exist", my // guess is it does this to check if the test command is working // properly. This catches that and makes the test command fail // appropriately. if len(args) > 5 && args[2] == "this" && args[5] == "not" { _, err := shell.WriteOutputString(trampFailure) return err } if exists, _ := c.filestore.Exists(args[1]); exists { log.Printf("File %s exists", args[1]) _, err := shell.WriteOutputString(trampSuccess) return err } _, err := shell.WriteOutputString(trampFailure) return err } return nil }