@@ -10,17 +10,27 @@ import (
1010)
1111
1212func main () {
13- flagTruncNewLine := flag .Bool ("n" , false , "Set to truncate one trailing line break if it exists." )
13+ flagTruncNewLine := flag .Bool ("n" , false , "Set to omit exactly one trailing line break from the clipboard should it exist." )
14+ outputClipboard := flag .Bool ("o" , false , "Set to output the clipboard instead of setting it." )
1415 flag .Parse ()
1516
1617 var cb string
1718 var err error
19+ var filePath string
1820 if flag .NArg () == 0 {
19- data , ioErr := ioutil .ReadAll (os .Stdin )
20- cb , err = string (data ), ioErr
21+ if * outputClipboard {
22+ cb , err = clipboard .ReadAll ()
23+ } else {
24+ data , ioErr := ioutil .ReadAll (os .Stdin )
25+ cb , err = string (data ), ioErr
26+ }
2127 } else if flag .NArg () == 1 {
22- filePath := flag .Arg (0 )
23- cb , err = readTextFile (filePath )
28+ filePath = flag .Arg (0 )
29+ if * outputClipboard {
30+ cb , err = clipboard .ReadAll ()
31+ } else {
32+ cb , err = readTextFile (filePath )
33+ }
2434 } else {
2535 fatalf ("provide file path or input on stdin" )
2636 }
@@ -32,7 +42,16 @@ func main() {
3242 cb = cb [:len (cb )- 1 ]
3343 }
3444
35- err = clipboard .WriteAll (cb )
45+ if * outputClipboard {
46+ if filePath == "" {
47+ _ , err = fmt .Printf (cb )
48+ } else {
49+ err = ioutil .WriteFile (filePath , []byte (cb ), 0755 )
50+ }
51+ } else {
52+ err = clipboard .WriteAll (cb )
53+ }
54+
3655 if err != nil {
3756 fatalf ("%v" , err )
3857 }
0 commit comments