about summary refs log tree commit diff
path: root/third_party/go/git-appraise/commands/input/input.go
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/go/git-appraise/commands/input/input.go')
-rw-r--r--third_party/go/git-appraise/commands/input/input.go118
1 files changed, 0 insertions, 118 deletions
diff --git a/third_party/go/git-appraise/commands/input/input.go b/third_party/go/git-appraise/commands/input/input.go
deleted file mode 100644
index 9a8678a827..0000000000
--- a/third_party/go/git-appraise/commands/input/input.go
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
-Copyright 2015 Google Inc. All rights reserved.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package input
-
-import (
-	"bufio"
-	"bytes"
-	"fmt"
-	"github.com/google/git-appraise/repository"
-	"io/ioutil"
-	"os"
-	"os/exec"
-)
-
-// LaunchEditor launches the default editor configured for the given repo. This
-// method blocks until the editor command has returned.
-//
-// The specified filename should be a temporary file and provided as a relative path
-// from the repo (e.g. "FILENAME" will be converted to ".git/FILENAME"). This file
-// will be deleted after the editor is closed and its contents have been read.
-//
-// This method returns the text that was read from the temporary file, or
-// an error if any step in the process failed.
-func LaunchEditor(repo repository.Repo, fileName string) (string, error) {
-	editor, err := repo.GetCoreEditor()
-	if err != nil {
-		return "", fmt.Errorf("Unable to detect default git editor: %v\n", err)
-	}
-
-	path := fmt.Sprintf("%s/.git/%s", repo.GetPath(), fileName)
-
-	cmd, err := startInlineCommand(editor, path)
-	if err != nil {
-		// Running the editor directly did not work. This might mean that
-		// the editor string is not a path to an executable, but rather
-		// a shell command (e.g. "emacsclient --tty"). As such, we'll try
-		// to run the command through bash, and if that fails, try with sh
-		args := []string{"-c", fmt.Sprintf("%s %q", editor, path)}
-		cmd, err = startInlineCommand("bash", args...)
-		if err != nil {
-			cmd, err = startInlineCommand("sh", args...)
-		}
-	}
-	if err != nil {
-		return "", fmt.Errorf("Unable to start editor: %v\n", err)
-	}
-
-	if err := cmd.Wait(); err != nil {
-		return "", fmt.Errorf("Editing finished with error: %v\n", err)
-	}
-
-	output, err := ioutil.ReadFile(path)
-	if err != nil {
-		os.Remove(path)
-		return "", fmt.Errorf("Error reading edited file: %v\n", err)
-	}
-	os.Remove(path)
-	return string(output), err
-}
-
-// FromFile loads and returns the contents of a given file. If - is passed
-// through, much like git, it will read from stdin. This can be piped data,
-// unless there is a tty in which case the user will be prompted to enter a
-// message.
-func FromFile(fileName string) (string, error) {
-	if fileName == "-" {
-		stat, err := os.Stdin.Stat()
-		if err != nil {
-			return "", fmt.Errorf("Error reading from stdin: %v\n", err)
-		}
-		if (stat.Mode() & os.ModeCharDevice) == 0 {
-			// There is no tty. This will allow us to read piped data instead.
-			output, err := ioutil.ReadAll(os.Stdin)
-			if err != nil {
-				return "", fmt.Errorf("Error reading from stdin: %v\n", err)
-			}
-			return string(output), err
-		}
-
-		fmt.Printf("(reading comment from standard input)\n")
-		var output bytes.Buffer
-		s := bufio.NewScanner(os.Stdin)
-		for s.Scan() {
-			output.Write(s.Bytes())
-			output.WriteRune('\n')
-		}
-		return output.String(), nil
-	}
-
-	output, err := ioutil.ReadFile(fileName)
-	if err != nil {
-		return "", fmt.Errorf("Error reading file: %v\n", err)
-	}
-	return string(output), err
-}
-
-func startInlineCommand(command string, args ...string) (*exec.Cmd, error) {
-	cmd := exec.Command(command, args...)
-	cmd.Stdin = os.Stdin
-	cmd.Stdout = os.Stdout
-	cmd.Stderr = os.Stderr
-	err := cmd.Start()
-	return cmd, err
-}