...
1
2
3
4
5
6
7
8
9
10
11
12
13 package main
14
15 import (
16 "flag"
17 "fmt"
18 "io"
19 "log"
20 "os"
21
22 "github.com/rogpeppe/go-internal/txtar"
23 )
24
25 var (
26 extractDir = flag.String("C", ".", "directory to extract files into")
27 )
28
29 func usage() {
30 fmt.Fprintf(os.Stderr, "usage: txtar-x [flags] [file]\n")
31 flag.PrintDefaults()
32 }
33
34 func main() {
35 os.Exit(main1())
36 }
37
38 func main1() int {
39 flag.Usage = usage
40 flag.Parse()
41 if flag.NArg() > 1 {
42 usage()
43 return 2
44 }
45 log.SetPrefix("txtar-x: ")
46 log.SetFlags(0)
47
48 var a *txtar.Archive
49 if flag.NArg() == 0 {
50 data, err := io.ReadAll(os.Stdin)
51 if err != nil {
52 log.Printf("cannot read stdin: %v", err)
53 return 1
54 }
55 a = txtar.Parse(data)
56 } else {
57 a1, err := txtar.ParseFile(flag.Arg(0))
58 if err != nil {
59 log.Print(err)
60 return 1
61 }
62 a = a1
63 }
64 if err := txtar.Write(a, *extractDir); err != nil {
65 log.Print(err)
66 return 1
67 }
68 return 0
69 }
70
View as plain text