@@ -28,9 +28,8 @@ func NewRootCmd() *cobra.Command {
2828 SilenceUsage : true ,
2929 RunE : func (cmd * cobra.Command , args []string ) error {
3030 var err error
31- var reader io.Reader
31+ var readers [] io.Reader
3232 var indent string
33- var path string
3433
3534 inPlace , _ := cmd .Flags ().GetBool ("in-place" )
3635
@@ -45,17 +44,23 @@ func NewRootCmd() *cobra.Command {
4544 return nil
4645 }
4746
48- reader = os .Stdin
47+ readers = append ( readers , os .Stdin )
4948 } else {
50- path = args [len (args )- 1 ]
51- var err error
52- if reader , err = os .Open (path ); err != nil {
53- return err
49+ for _ , fileName := range args {
50+ f , err := os .Open (fileName )
51+ if err != nil {
52+ return err
53+ }
54+ defer func () {
55+ _ = f .Close ()
56+ }()
57+
58+ readers = append (readers , f )
5459 }
5560 }
5661
57- if path == "" && inPlace {
58- return errors .New ("in-place formatting requires a file path" )
62+ if len ( args ) != 1 && inPlace {
63+ return errors .New ("in-place formatting requires a file path (and only one file path) " )
5964 }
6065
6166 xPathQuery , singleNode := getXpathQuery (cmd .Flags ())
@@ -82,25 +87,27 @@ func NewRootCmd() *cobra.Command {
8287 _ = pw .Close ()
8388 }()
8489
85- if xPathQuery != "" {
86- err = utils .XPathQuery (reader , pw , xPathQuery , singleNode , options )
87- } else if cssQuery != "" {
88- err = utils .CSSQuery (reader , pw , cssQuery , cssAttr , options )
89- } else {
90- var contentType utils.ContentType
91- contentType , reader = detectFormat (cmd .Flags (), reader )
92- if jsonOutputMode {
93- err = processAsJSON (cmd .Flags (), reader , pw , contentType )
90+ for _ , reader := range readers {
91+ if xPathQuery != "" {
92+ err = utils .XPathQuery (reader , pw , xPathQuery , singleNode , options )
93+ } else if cssQuery != "" {
94+ err = utils .CSSQuery (reader , pw , cssQuery , cssAttr , options )
9495 } else {
95- switch contentType {
96- case utils .ContentHtml :
97- err = utils .FormatHtml (reader , pw , indent , colors )
98- case utils .ContentXml :
99- err = utils .FormatXml (reader , pw , indent , colors )
100- case utils .ContentJson :
101- err = utils .FormatJson (reader , pw , indent , colors )
102- default :
103- err = fmt .Errorf ("unknown content type: %v" , contentType )
96+ var contentType utils.ContentType
97+ contentType , reader = detectFormat (cmd .Flags (), reader )
98+ if jsonOutputMode {
99+ err = processAsJSON (cmd .Flags (), reader , pw , contentType )
100+ } else {
101+ switch contentType {
102+ case utils .ContentHtml :
103+ err = utils .FormatHtml (reader , pw , indent , colors )
104+ case utils .ContentXml :
105+ err = utils .FormatXml (reader , pw , indent , colors )
106+ case utils .ContentJson :
107+ err = utils .FormatJson (reader , pw , indent , colors )
108+ default :
109+ err = fmt .Errorf ("unknown content type: %v" , contentType )
110+ }
104111 }
105112 }
106113 }
@@ -112,6 +119,7 @@ func NewRootCmd() *cobra.Command {
112119 }()
113120
114121 if inPlace {
122+ var path = args [0 ]
115123 var content []byte
116124 if content , err = io .ReadAll (pr ); err != nil {
117125 return err
0 commit comments