go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers-sdk/v1/lr/cli/cmd/parse.go (about)

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package cmd
     5  
     6  import (
     7  	"encoding/json"
     8  	"fmt"
     9  	"os"
    10  
    11  	"github.com/rs/zerolog/log"
    12  	"github.com/spf13/cobra"
    13  	"go.mondoo.com/cnquery/providers-sdk/v1/lr"
    14  )
    15  
    16  var parseCmd = &cobra.Command{
    17  	Use:   "parse",
    18  	Short: "parse an LR file",
    19  	Long:  `parse an LR file and print the AST`,
    20  	Args:  cobra.MinimumNArgs(1),
    21  	Run: func(cmd *cobra.Command, args []string) {
    22  		raw, err := os.ReadFile(args[0])
    23  		if err != nil {
    24  			log.Error().Msg(err.Error())
    25  			return
    26  		}
    27  
    28  		res, err := lr.Parse(string(raw))
    29  		if err != nil {
    30  			log.Error().Msg(err.Error())
    31  			return
    32  		}
    33  
    34  		s, _ := json.Marshal(res)
    35  		fmt.Println(string(s))
    36  	},
    37  }
    38  
    39  func init() {
    40  	rootCmd.AddCommand(parseCmd)
    41  }