Просмотр исходного кода

Add option to always list files

Lucas Stadler лет назад: 9
Родитель
Сommit
99697c5ed3
1 измененных файлов с 29 добавлено и 2 удалено
  1. 29 2
      go/explore/explore.go

+ 29 - 2
go/explore/explore.go

1
package main
1
package main
2
2
3
import (
3
import (
4
	"flag"
4
	"fmt"
5
	"fmt"
5
	"os"
6
	"os"
6
	"os/exec"
7
	"os/exec"
8
	"strings"
9
	"strings"
9
)
10
)
10
11
12
var options struct {
13
	listFiles bool
14
}
15
16
func init() {
17
	flag.BoolVar(&options.listFiles, "l", false, "Always list files")
18
}
19
11
func main() {
20
func main() {
21
	flag.Parse()
22
12
	dir := "."
23
	dir := "."
13
	if len(os.Args) > 1 {
14
		dir = os.Args[1]
24
	if flag.NArg() > 0 {
25
		dir = flag.Arg(0)
15
	}
26
	}
16
27
17
	f, err := os.Open(dir)
28
	f, err := os.Open(dir)
26
		os.Exit(1)
37
		os.Exit(1)
27
	}
38
	}
28
39
40
	if options.listFiles {
41
		cmd := exec.Command("ls", dir)
42
		cmd.Stdin = os.Stdin
43
		cmd.Stdout = os.Stdout
44
		cmd.Stderr = os.Stderr
45
		cmd.Run()
46
	}
47
29
	var cmd *exec.Cmd
48
	var cmd *exec.Cmd
30
	if fi.IsDir() {
49
	if fi.IsDir() {
31
		fis, err := f.Readdir(-1)
50
		fis, err := f.Readdir(-1)
49
		if len(rs) == 0 {
68
		if len(rs) == 0 {
50
			cmd = exec.Command("ls", dir)
69
			cmd = exec.Command("ls", dir)
51
		} else {
70
		} else {
71
			if options.listFiles {
72
				fmt.Println()
73
			}
74
52
			fmt.Printf("'%s':\n", rs[0])
75
			fmt.Printf("'%s':\n", rs[0])
53
			cmd = exec.Command("head", "-n3", path.Join(dir, rs[0]))
76
			cmd = exec.Command("head", "-n3", path.Join(dir, rs[0]))
54
		}
77
		}
56
		cmd = exec.Command("head", "-n3", path.Join(dir, f.Name()))
79
		cmd = exec.Command("head", "-n3", path.Join(dir, f.Name()))
57
	}
80
	}
58
81
82
	if options.listFiles && cmd.Path == "ls" {
83
		os.Exit(0)
84
	}
85
59
	cmd.Stdin = os.Stdin
86
	cmd.Stdin = os.Stdin
60
	cmd.Stdout = os.Stdout
87
	cmd.Stdout = os.Stdout
61
	cmd.Stderr = os.Stderr
88
	cmd.Stderr = os.Stderr