2023-06-01 12:32:00 -07:00
|
|
|
package main
|
2023-05-23 07:27:23 -07:00
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/spf13/cobra"
|
2023-06-01 12:32:00 -07:00
|
|
|
"github.com/wormhole-foundation/wormhole-explorer/analytics/cmd/metrics"
|
|
|
|
"github.com/wormhole-foundation/wormhole-explorer/analytics/cmd/prices"
|
|
|
|
"github.com/wormhole-foundation/wormhole-explorer/analytics/cmd/service"
|
2023-05-23 07:27:23 -07:00
|
|
|
)
|
|
|
|
|
2023-06-01 12:32:00 -07:00
|
|
|
func main() {
|
|
|
|
execute()
|
|
|
|
}
|
2023-05-23 07:27:23 -07:00
|
|
|
|
2023-06-01 12:32:00 -07:00
|
|
|
func execute() error {
|
2023-05-23 07:27:23 -07:00
|
|
|
root := &cobra.Command{
|
2023-06-01 12:32:00 -07:00
|
|
|
Use: "analytics",
|
2023-05-23 07:27:23 -07:00
|
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
|
|
if len(args) == 0 {
|
2023-06-01 12:32:00 -07:00
|
|
|
service.Run()
|
2023-05-23 07:27:23 -07:00
|
|
|
}
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
2023-06-01 12:32:00 -07:00
|
|
|
addServiceCommand(root)
|
|
|
|
addBackfiller(root)
|
|
|
|
|
|
|
|
return root.Execute()
|
|
|
|
}
|
|
|
|
|
|
|
|
func addServiceCommand(root *cobra.Command) {
|
|
|
|
serviceCommand := &cobra.Command{
|
|
|
|
Use: "service",
|
|
|
|
Short: "Run analytics as service",
|
|
|
|
Run: func(_ *cobra.Command, _ []string) {
|
|
|
|
service.Run()
|
|
|
|
},
|
|
|
|
}
|
|
|
|
root.AddCommand(serviceCommand)
|
|
|
|
}
|
|
|
|
|
|
|
|
func addBackfiller(root *cobra.Command) {
|
2023-05-23 07:27:23 -07:00
|
|
|
metrics := &cobra.Command{
|
|
|
|
Use: "metrics",
|
|
|
|
}
|
|
|
|
addVaaCountCommand(metrics)
|
|
|
|
addVaaVolumeCommand(metrics)
|
|
|
|
root.AddCommand(metrics)
|
|
|
|
|
|
|
|
prices := &cobra.Command{
|
|
|
|
Use: "prices",
|
|
|
|
}
|
|
|
|
addPricesCommand(prices)
|
|
|
|
root.AddCommand(prices)
|
|
|
|
}
|
|
|
|
|
|
|
|
func addVaaCountCommand(parent *cobra.Command) {
|
|
|
|
var input, output string
|
|
|
|
vaaCountCmd := &cobra.Command{
|
|
|
|
Use: "vaa-count",
|
|
|
|
Short: "Generate vaa-count metrics from a vaa csv file",
|
|
|
|
Run: func(_ *cobra.Command, _ []string) {
|
|
|
|
metrics.RunVaaCount(input, output)
|
|
|
|
},
|
|
|
|
}
|
2023-06-01 12:32:00 -07:00
|
|
|
// input flag
|
2023-05-23 07:27:23 -07:00
|
|
|
vaaCountCmd.Flags().StringVar(&input, "input", "", "path to input vaa file")
|
|
|
|
vaaCountCmd.MarkFlagRequired("input")
|
2023-06-01 12:32:00 -07:00
|
|
|
// output flag
|
2023-05-23 07:27:23 -07:00
|
|
|
vaaCountCmd.Flags().StringVar(&output, "output", "", "path to output file")
|
|
|
|
vaaCountCmd.MarkFlagRequired("output")
|
|
|
|
parent.AddCommand(vaaCountCmd)
|
|
|
|
}
|
|
|
|
|
2023-07-25 11:36:05 -07:00
|
|
|
func addVaaVolumeFromFileCommand(parent *cobra.Command) {
|
2023-11-28 05:16:40 -08:00
|
|
|
var input, output, prices, vaaPayloadParserURL, p2pNetwork string
|
2023-07-25 11:36:05 -07:00
|
|
|
|
|
|
|
//vaa-volume from csv file
|
|
|
|
vaaVolumeFileCmd := &cobra.Command{
|
|
|
|
Use: "file",
|
2023-05-23 07:27:23 -07:00
|
|
|
Short: "Generate volume metrics from a VAA csv file",
|
|
|
|
Run: func(_ *cobra.Command, _ []string) {
|
2023-11-28 05:16:40 -08:00
|
|
|
metrics.RunVaaVolumeFromFile(input, output, prices, vaaPayloadParserURL, p2pNetwork)
|
2023-05-23 07:27:23 -07:00
|
|
|
},
|
|
|
|
}
|
2023-07-25 11:36:05 -07:00
|
|
|
|
2023-06-01 12:32:00 -07:00
|
|
|
// input flag
|
2023-07-25 11:36:05 -07:00
|
|
|
vaaVolumeFileCmd.Flags().StringVar(&input, "input", "", "path to input vaa file")
|
|
|
|
vaaVolumeFileCmd.MarkFlagRequired("input")
|
|
|
|
// output flag
|
|
|
|
vaaVolumeFileCmd.Flags().StringVar(&output, "output", "", "path to output file")
|
|
|
|
vaaVolumeFileCmd.MarkFlagRequired("output")
|
|
|
|
// prices flag
|
|
|
|
vaaVolumeFileCmd.Flags().StringVar(&prices, "prices", "prices.csv", "path to prices file")
|
|
|
|
|
2023-09-25 12:56:05 -07:00
|
|
|
//vaa-payload-parser-url flag
|
|
|
|
vaaVolumeFileCmd.Flags().StringVar(&vaaPayloadParserURL, "vaa-payload-parser-url", "", "VAA payload parser URL")
|
|
|
|
vaaVolumeFileCmd.MarkFlagRequired("vaa-payload-parser-url")
|
|
|
|
|
2023-11-28 05:16:40 -08:00
|
|
|
//p2p-network flag
|
|
|
|
vaaVolumeFileCmd.Flags().StringVar(&p2pNetwork, "p2p-network", "", "P2P network")
|
|
|
|
vaaVolumeFileCmd.MarkFlagRequired("p2p-network")
|
|
|
|
|
2023-07-25 11:36:05 -07:00
|
|
|
parent.AddCommand(vaaVolumeFileCmd)
|
|
|
|
}
|
|
|
|
|
|
|
|
func addVaaVolumeFromMongoCommand(parent *cobra.Command) {
|
2023-11-28 05:16:40 -08:00
|
|
|
var mongoUri, mongoDb, output, prices, vaaPayloadParserURL, p2pNetwork string
|
2023-07-25 11:36:05 -07:00
|
|
|
//vaa-volume from MongoDB
|
|
|
|
vaaVolumeMongoCmd := &cobra.Command{
|
|
|
|
Use: "mongo",
|
|
|
|
Short: "Generate volume metrics from MongoDB",
|
|
|
|
Run: func(_ *cobra.Command, _ []string) {
|
2023-11-28 05:16:40 -08:00
|
|
|
metrics.RunVaaVolumeFromMongo(mongoUri, mongoDb, output, prices, vaaPayloadParserURL, p2pNetwork)
|
2023-07-25 11:36:05 -07:00
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
//mongo flags
|
|
|
|
vaaVolumeMongoCmd.Flags().StringVar(&mongoUri, "mongo-uri", "", "Mongo connection")
|
|
|
|
vaaVolumeMongoCmd.Flags().StringVar(&mongoDb, "mongo-database", "", "Mongo database")
|
|
|
|
|
2023-06-01 12:32:00 -07:00
|
|
|
// output flag
|
2023-07-25 11:36:05 -07:00
|
|
|
vaaVolumeMongoCmd.Flags().StringVar(&output, "output", "", "path to output file")
|
|
|
|
vaaVolumeMongoCmd.MarkFlagRequired("output")
|
2023-06-01 12:32:00 -07:00
|
|
|
// prices flag
|
2023-07-25 11:36:05 -07:00
|
|
|
vaaVolumeMongoCmd.Flags().StringVar(&prices, "prices", "prices.csv", "path to prices file")
|
|
|
|
|
2023-09-25 12:56:05 -07:00
|
|
|
//vaa-payload-parser-url flag
|
|
|
|
vaaVolumeMongoCmd.Flags().StringVar(&vaaPayloadParserURL, "vaa-payload-parser-url", "", "VAA payload parser URL")
|
|
|
|
vaaVolumeMongoCmd.MarkFlagRequired("vaa-payload-parser-url")
|
|
|
|
|
2023-11-28 05:16:40 -08:00
|
|
|
//p2p-network flag
|
|
|
|
vaaVolumeMongoCmd.Flags().StringVar(&p2pNetwork, "p2p-network", "", "P2P network")
|
|
|
|
vaaVolumeMongoCmd.MarkFlagRequired("p2p-network")
|
|
|
|
|
2023-07-25 11:36:05 -07:00
|
|
|
parent.AddCommand(vaaVolumeMongoCmd)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
func addVaaVolumeCommand(parent *cobra.Command) {
|
|
|
|
|
|
|
|
vaaVolumeCmd := &cobra.Command{
|
|
|
|
Use: "vaa-volume",
|
|
|
|
Short: "Generate volume metric",
|
|
|
|
}
|
2023-06-01 12:32:00 -07:00
|
|
|
|
2023-07-25 11:36:05 -07:00
|
|
|
addVaaVolumeFromFileCommand(vaaVolumeCmd)
|
|
|
|
addVaaVolumeFromMongoCommand(vaaVolumeCmd)
|
2023-05-23 07:27:23 -07:00
|
|
|
parent.AddCommand(vaaVolumeCmd)
|
|
|
|
}
|
|
|
|
|
|
|
|
func addPricesCommand(root *cobra.Command) {
|
2024-01-02 05:38:03 -08:00
|
|
|
var output, p2pNetwork, coingeckoUrl, coingeckoHeaderKey, coingeckoApiKey string
|
2023-05-23 07:27:23 -07:00
|
|
|
vaaCountCmd := &cobra.Command{
|
|
|
|
Use: "history",
|
|
|
|
Short: "Generate notional price history for symbol",
|
|
|
|
Run: func(_ *cobra.Command, _ []string) {
|
2024-01-02 05:38:03 -08:00
|
|
|
prices.RunPrices(output, p2pNetwork, coingeckoUrl, coingeckoHeaderKey, coingeckoApiKey)
|
2023-05-23 07:27:23 -07:00
|
|
|
},
|
|
|
|
}
|
2023-06-01 12:32:00 -07:00
|
|
|
// output flag
|
2023-05-23 07:27:23 -07:00
|
|
|
vaaCountCmd.Flags().StringVar(&output, "output", "", "path to output file")
|
|
|
|
vaaCountCmd.MarkFlagRequired("output")
|
2023-11-28 05:16:40 -08:00
|
|
|
|
|
|
|
//p2p-network flag
|
|
|
|
vaaCountCmd.Flags().StringVar(&p2pNetwork, "p2p-network", "", "P2P network")
|
|
|
|
vaaCountCmd.MarkFlagRequired("p2p-network")
|
2024-01-02 05:38:03 -08:00
|
|
|
|
|
|
|
//coingecko flags
|
|
|
|
vaaCountCmd.Flags().StringVar(&coingeckoUrl, "coingecko-url", "", "Coingecko URL")
|
|
|
|
vaaCountCmd.MarkFlagRequired("coingecko-url")
|
|
|
|
|
|
|
|
vaaCountCmd.Flags().StringVar(&coingeckoHeaderKey, "coingecko-header-key", "", "Coingecko header key")
|
|
|
|
vaaCountCmd.Flags().StringVar(&coingeckoApiKey, "coingecko-api-key", "", "Coingecko api key")
|
|
|
|
|
2023-05-23 07:27:23 -07:00
|
|
|
root.AddCommand(vaaCountCmd)
|
|
|
|
}
|