From b38ee12162f4e3d33dbd60eec5319f2e64eb9c85 Mon Sep 17 00:00:00 2001 From: Chris Gianelloni Date: Wed, 25 Oct 2023 17:10:06 -0400 Subject: [PATCH] chore: run golines Use ``` golines -w --ignore-generated --chain-split-dots --max-len=80 --reformat-tags . ``` Signed-off-by: Chris Gianelloni --- cmd/snek/main.go | 15 ++++++++-- event/event.go | 6 +++- fcm/message.go | 5 +++- input/chainsync/chainsync.go | 58 ++++++++++++++++++++++++++++++------ input/chainsync/options.go | 4 ++- input/chainsync/plugin.go | 6 +++- input/chainsync/tx.go | 12 ++++++-- internal/config/config.go | 20 +++++++++---- internal/logging/logging.go | 8 +++-- output/notify/notify.go | 6 ++-- output/push/push.go | 27 +++++++++++------ output/webhook/webhook.go | 17 +++++++++-- pipeline/pipeline.go | 5 +++- plugin/option.go | 49 +++++++++++++++++++++++++----- plugin/register.go | 10 +++++-- 15 files changed, 199 insertions(+), 49 deletions(-) diff --git a/cmd/snek/main.go b/cmd/snek/main.go index a3e39af..7cf002a 100644 --- a/cmd/snek/main.go +++ b/cmd/snek/main.go @@ -95,9 +95,20 @@ func main() { // Start debug listener if cfg.Debug.ListenPort > 0 { - logger.Infof("starting debug listener on %s:%d", cfg.Debug.ListenAddress, cfg.Debug.ListenPort) + logger.Infof( + "starting debug listener on %s:%d", + cfg.Debug.ListenAddress, + cfg.Debug.ListenPort, + ) go func() { - err := http.ListenAndServe(fmt.Sprintf("%s:%d", cfg.Debug.ListenAddress, cfg.Debug.ListenPort), nil) + err := http.ListenAndServe( + fmt.Sprintf( + "%s:%d", + cfg.Debug.ListenAddress, + cfg.Debug.ListenPort, + ), + nil, + ) if err != nil { logger.Fatalf("failed to start debug listener: %s", err) } diff --git a/event/event.go b/event/event.go index bf65868..cfa4372 100644 --- a/event/event.go +++ b/event/event.go @@ -25,7 +25,11 @@ type Event struct { Payload interface{} `json:"payload"` } -func New(eventType string, timestamp time.Time, context, payload interface{}) Event { +func New( + eventType string, + timestamp time.Time, + context, payload interface{}, +) Event { return Event{ Type: eventType, Timestamp: timestamp, diff --git a/fcm/message.go b/fcm/message.go index eaddfd0..a243ce9 100644 --- a/fcm/message.go +++ b/fcm/message.go @@ -61,7 +61,10 @@ func NewMessage(token string, opts ...MessageOption) *Message { func Send(accessToken string, projectId string, msg *Message) error { - fcmEndpoint := fmt.Sprintf("https://fcm.googleapis.com/v1/projects/%s/messages:send", projectId) + fcmEndpoint := fmt.Sprintf( + "https://fcm.googleapis.com/v1/projects/%s/messages:send", + projectId, + ) // Convert the message to JSON payload, err := json.Marshal(msg) diff --git a/input/chainsync/chainsync.go b/input/chainsync/chainsync.go index bd29426..d4cb8a7 100644 --- a/input/chainsync/chainsync.go +++ b/input/chainsync/chainsync.go @@ -83,7 +83,9 @@ func (c *ChainSync) Start() error { } if c.bulkMode && !c.intersectTip && c.oConn.BlockFetch() != nil { var err error - c.bulkRangeStart, c.bulkRangeEnd, err = c.oConn.ChainSync().Client.GetAvailableBlockRange(c.intersectPoints) + c.bulkRangeStart, c.bulkRangeEnd, err = c.oConn.ChainSync().Client.GetAvailableBlockRange( + c.intersectPoints, + ) if err != nil { return err } @@ -142,7 +144,11 @@ func (c *ChainSync) setupConnection() error { // If network has well-known public root address/port, use those as our dial default if network.PublicRootAddress != "" && network.PublicRootPort > 0 { dialFamily = "tcp" - dialAddress = fmt.Sprintf("%s:%d", network.PublicRootAddress, network.PublicRootPort) + dialAddress = fmt.Sprintf( + "%s:%d", + network.PublicRootAddress, + network.PublicRootPort, + ) useNtn = true } } @@ -199,13 +205,25 @@ func (c *ChainSync) setupConnection() error { return nil } -func (c *ChainSync) handleRollBackward(point ocommon.Point, tip ochainsync.Tip) error { - evt := event.New("chainsync.rollback", time.Now(), nil, NewRollbackEvent(point)) +func (c *ChainSync) handleRollBackward( + point ocommon.Point, + tip ochainsync.Tip, +) error { + evt := event.New( + "chainsync.rollback", + time.Now(), + nil, + NewRollbackEvent(point), + ) c.eventChan <- evt return nil } -func (c *ChainSync) handleRollForward(blockType uint, blockData interface{}, tip ochainsync.Tip) error { +func (c *ChainSync) handleRollForward( + blockType uint, + blockData interface{}, + tip ochainsync.Tip, +) error { switch v := blockData.(type) { case ledger.Block: evt := event.New("chainsync.block", time.Now(), NewBlockContext(v), NewBlockEvent(v, c.includeCbor)) @@ -230,13 +248,29 @@ func (c *ChainSync) handleRollForward(blockType uint, blockData interface{}, tip } func (c *ChainSync) handleBlockFetchBlock(block ledger.Block) error { - blockEvt := event.New("chainsync.block", time.Now(), NewBlockContext(block), NewBlockEvent(block, c.includeCbor)) + blockEvt := event.New( + "chainsync.block", + time.Now(), + NewBlockContext(block), + NewBlockEvent(block, c.includeCbor), + ) c.eventChan <- blockEvt for t, transaction := range block.Transactions() { - txEvt := event.New("chainsync.transaction", time.Now(), NewTransactionContext(block, transaction, uint32(t)), NewTransactionEvent(block, transaction, c.includeCbor)) + txEvt := event.New( + "chainsync.transaction", + time.Now(), + NewTransactionContext(block, transaction, uint32(t)), + NewTransactionEvent(block, transaction, c.includeCbor), + ) c.eventChan <- txEvt } - c.updateStatus(block.SlotNumber(), block.BlockNumber(), block.Hash(), c.bulkRangeEnd.Slot, hex.EncodeToString(c.bulkRangeEnd.Hash)) + c.updateStatus( + block.SlotNumber(), + block.BlockNumber(), + block.Hash(), + c.bulkRangeEnd.Slot, + hex.EncodeToString(c.bulkRangeEnd.Hash), + ) // Start normal chain-sync if we've reached the last block of our bulk range if block.SlotNumber() == c.bulkRangeEnd.Slot { if err := c.oConn.ChainSync().Client.Sync([]ocommon.Point{c.bulkRangeEnd}); err != nil { @@ -246,7 +280,13 @@ func (c *ChainSync) handleBlockFetchBlock(block ledger.Block) error { return nil } -func (c *ChainSync) updateStatus(slotNumber uint64, blockNumber uint64, blockHash string, tipSlotNumber uint64, tipBlockHash string) { +func (c *ChainSync) updateStatus( + slotNumber uint64, + blockNumber uint64, + blockHash string, + tipSlotNumber uint64, + tipBlockHash string, +) { // Determine if we've reached the chain tip if !c.status.TipReached { // Make sure we're past the end slot in any bulk range, since we don't update the tip during bulk sync diff --git a/input/chainsync/options.go b/input/chainsync/options.go index fad0ebb..eb8c4c3 100644 --- a/input/chainsync/options.go +++ b/input/chainsync/options.go @@ -78,7 +78,9 @@ func WithIncludeCbor(includeCbor bool) ChainSyncOptionFunc { // WithStatusUpdateFunc specifies a callback function for status updates. This is useful for tracking the chain-sync status // to be able to resume a sync at a later time, especially when any filtering could prevent you from getting all block update events -func WithStatusUpdateFunc(statusUpdateFunc StatusUpdateFunc) ChainSyncOptionFunc { +func WithStatusUpdateFunc( + statusUpdateFunc StatusUpdateFunc, +) ChainSyncOptionFunc { return func(c *ChainSync) { c.statusUpdateFunc = statusUpdateFunc } diff --git a/input/chainsync/plugin.go b/input/chainsync/plugin.go index 6893541..44bc397 100644 --- a/input/chainsync/plugin.go +++ b/input/chainsync/plugin.go @@ -131,7 +131,11 @@ func NewFromCmdlineOptions() plugin.Plugin { if len(intersectPointParts) != 2 { panic("invalid intersect point format") } - intersectSlot, err := strconv.ParseUint(intersectPointParts[0], 10, 64) + intersectSlot, err := strconv.ParseUint( + intersectPointParts[0], + 10, + 64, + ) if err != nil { panic("invalid intersect point format") } diff --git a/input/chainsync/tx.go b/input/chainsync/tx.go index 152bac9..a6e43b3 100644 --- a/input/chainsync/tx.go +++ b/input/chainsync/tx.go @@ -36,7 +36,11 @@ type TransactionEvent struct { TTL uint64 `json:"ttl,omitempty"` } -func NewTransactionContext(block ledger.Block, tx ledger.Transaction, index uint32) TransactionContext { +func NewTransactionContext( + block ledger.Block, + tx ledger.Transaction, + index uint32, +) TransactionContext { ctx := TransactionContext{ BlockNumber: block.BlockNumber(), SlotNumber: block.SlotNumber(), @@ -46,7 +50,11 @@ func NewTransactionContext(block ledger.Block, tx ledger.Transaction, index uint return ctx } -func NewTransactionEvent(block ledger.Block, tx ledger.Transaction, includeCbor bool) TransactionEvent { +func NewTransactionEvent( + block ledger.Block, + tx ledger.Transaction, + includeCbor bool, +) TransactionEvent { evt := TransactionEvent{ BlockHash: block.Hash(), Inputs: tx.Inputs(), diff --git a/internal/config/config.go b/internal/config/config.go index 95bf6ed..323b82d 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -35,8 +35,8 @@ type Config struct { Version bool `yaml:"-"` Logging LoggingConfig `yaml:"logging"` Debug DebugConfig `yaml:"debug"` - Input string `yaml:"input" envconfig:"INPUT"` - Output string `yaml:"output" envconfig:"OUTPUT"` + Input string `yaml:"input" envconfig:"INPUT"` + Output string `yaml:"output" envconfig:"OUTPUT"` Plugin map[string]map[string]map[interface{}]interface{} `yaml:"plugins"` } @@ -46,7 +46,7 @@ type LoggingConfig struct { type DebugConfig struct { ListenAddress string `yaml:"address" envconfig:"DEBUG_ADDRESS"` - ListenPort uint `yaml:"port" envconfig:"DEBUG_PORT"` + ListenPort uint `yaml:"port" envconfig:"DEBUG_PORT"` } // Singleton config instance with default values @@ -88,8 +88,18 @@ func (c *Config) ParseCmdlineArgs(programName string, args []string) error { fs := flag.NewFlagSet(programName, flag.ExitOnError) fs.StringVar(&c.ConfigFile, "config", "", "path to config file to load") fs.BoolVar(&c.Version, "version", false, "show version and exit") - fs.StringVar(&c.Input, "input", DefaultInputPlugin, "input plugin to use, 'list' to show available") - fs.StringVar(&c.Output, "output", DefaultOutputPlugin, "output plugin to use, 'list' to show available") + fs.StringVar( + &c.Input, + "input", + DefaultInputPlugin, + "input plugin to use, 'list' to show available", + ) + fs.StringVar( + &c.Output, + "output", + DefaultOutputPlugin, + "output plugin to use, 'list' to show available", + ) if err := plugin.PopulateCmdlineOptions(fs); err != nil { return err } diff --git a/internal/logging/logging.go b/internal/logging/logging.go index fddebaf..d57bf3e 100644 --- a/internal/logging/logging.go +++ b/internal/logging/logging.go @@ -35,7 +35,9 @@ func Configure() { // Change timestamp key name loggerConfig.EncoderConfig.TimeKey = "timestamp" // Use a human readable time format - loggerConfig.EncoderConfig.EncodeTime = zapcore.TimeEncoderOfLayout(time.RFC3339) + loggerConfig.EncoderConfig.EncodeTime = zapcore.TimeEncoderOfLayout( + time.RFC3339, + ) // Set level if cfg.Logging.Level != "" { @@ -65,5 +67,7 @@ func GetDesugaredLogger() *zap.Logger { } func GetAccessLogger() *zap.Logger { - return globalLogger.Desugar().With(zap.String("type", "access")).WithOptions(zap.WithCaller(false)) + return globalLogger.Desugar(). + With(zap.String("type", "access")). + WithOptions(zap.WithCaller(false)) } diff --git a/output/notify/notify.go b/output/notify/notify.go index fdb5e3c..c3d61e8 100644 --- a/output/notify/notify.go +++ b/output/notify/notify.go @@ -64,7 +64,8 @@ func (n *NotifyOutput) Start() error { bc := context.(chainsync.BlockContext) err := beeep.Notify( n.title, - fmt.Sprintf("New Block!\nBlockNumber: %d, SlotNumber: %d\nHash: %s", + fmt.Sprintf( + "New Block!\nBlockNumber: %d, SlotNumber: %d\nHash: %s", bc.BlockNumber, bc.SlotNumber, be.BlockHash, @@ -106,7 +107,8 @@ func (n *NotifyOutput) Start() error { tc := context.(chainsync.TransactionContext) err := beeep.Notify( n.title, - fmt.Sprintf("New Transaction!\nBlockNumber: %d, SlotNumber: %d\nInputs: %d, Outputs: %d\nFee: %d\nHash: %s", + fmt.Sprintf( + "New Transaction!\nBlockNumber: %d, SlotNumber: %d\nInputs: %d, Outputs: %d\nFee: %d\nHash: %s", tc.BlockNumber, tc.SlotNumber, len(te.Inputs), diff --git a/output/push/push.go b/output/push/push.go index 67ed6ca..b5e2d24 100644 --- a/output/push/push.go +++ b/output/push/push.go @@ -91,7 +91,8 @@ func (p *PushOutput) Start() error { be := payload.(chainsync.BlockEvent) bc := context.(chainsync.BlockContext) fmt.Println("Snek") - fmt.Printf("New Block!\nBlockNumber: %d, SlotNumber: %d\nHash: %s", + fmt.Printf( + "New Block!\nBlockNumber: %d, SlotNumber: %d\nHash: %s", bc.BlockNumber, bc.SlotNumber, be.BlockHash, @@ -124,7 +125,8 @@ func (p *PushOutput) Start() error { // Create notification message title := "Snek" - body := fmt.Sprintf("New Transaction!\nBlockNumber: %d, SlotNumber: %d\nInputs: %d, Outputs: %d\nFee: %d\nHash: %s", + body := fmt.Sprintf( + "New Transaction!\nBlockNumber: %d, SlotNumber: %d\nInputs: %d, Outputs: %d\nFee: %d\nHash: %s", tc.BlockNumber, tc.SlotNumber, len(te.Inputs), @@ -167,7 +169,8 @@ func (p *PushOutput) processFcmNotifications(title, body string) { // If no FCM tokens exist, log and exit if len(p.fcmTokens) == 0 { - logging.GetLogger().Warnln("No FCM tokens found. Skipping notification.") + logging.GetLogger(). + Warnln("No FCM tokens found. Skipping notification.") return } @@ -179,23 +182,27 @@ func (p *PushOutput) processFcmNotifications(title, body string) { ) if err := fcm.Send(p.accessToken, p.projectID, msg); err != nil { - logging.GetLogger().Errorf("Failed to send message to token %s: %v", fcmToken, err) + logging.GetLogger(). + Errorf("Failed to send message to token %s: %v", fcmToken, err) continue } - logging.GetLogger().Infof("Message sent successfully to token %s!", fcmToken) + logging.GetLogger(). + Infof("Message sent successfully to token %s!", fcmToken) } } func (p *PushOutput) GetAccessToken() error { data, err := os.ReadFile(p.serviceAccountFilePath) if err != nil { - logging.GetLogger().Fatalf("Failed to read the credential file: %v", err) + logging.GetLogger(). + Fatalf("Failed to read the credential file: %v", err) return err } conf, err := google.JWTConfigFromJSON(data, p.accessTokenUrl) if err != nil { - logging.GetLogger().Fatalf("Failed to parse the credential file: %v", err) + logging.GetLogger(). + Fatalf("Failed to parse the credential file: %v", err) return err } @@ -214,14 +221,16 @@ func (p *PushOutput) GetAccessToken() error { func (p *PushOutput) GetProjectId() error { data, err := os.ReadFile(p.serviceAccountFilePath) if err != nil { - logging.GetLogger().Fatalf("Failed to read the credential file: %v", err) + logging.GetLogger(). + Fatalf("Failed to read the credential file: %v", err) return err } // Get project ID from file var v map[string]any if err := json.Unmarshal(data, &v); err != nil { - logging.GetLogger().Fatalf("Failed to parse the credential file: %v", err) + logging.GetLogger(). + Fatalf("Failed to parse the credential file: %v", err) return err } p.projectID = v["project_id"].(string) diff --git a/output/webhook/webhook.go b/output/webhook/webhook.go index b31b7be..c55b318 100644 --- a/output/webhook/webhook.go +++ b/output/webhook/webhook.go @@ -177,7 +177,10 @@ func formatWebhook(e *event.Event, format string) []byte { Value: tc.TransactionHash, }) // TODO: fix this URL for different networks - dme.URL = fmt.Sprintf("https://cexplorer.io/tx/%s", tc.TransactionHash) + dme.URL = fmt.Sprintf( + "https://cexplorer.io/tx/%s", + tc.TransactionHash, + ) default: dwe.Content = fmt.Sprintf("%v", e.Payload) } @@ -221,12 +224,20 @@ func (w *WebhookOutput) SendWebhook(e *event.Event) error { // Setup request ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() - req, err := http.NewRequestWithContext(ctx, http.MethodPost, w.url, bytes.NewReader(data)) + req, err := http.NewRequestWithContext( + ctx, + http.MethodPost, + w.url, + bytes.NewReader(data), + ) if err != nil { return fmt.Errorf("%s", err) } req.Header.Add("Content-Type", "application/json") - req.Header.Add("User-Agent", fmt.Sprintf("Snek/%s", version.GetVersionString())) + req.Header.Add( + "User-Agent", + fmt.Sprintf("Snek/%s", version.GetVersionString()), + ) // Setup authorization if w.username != "" && w.password != "" { diff --git a/pipeline/pipeline.go b/pipeline/pipeline.go index 792b43a..4f33d02 100644 --- a/pipeline/pipeline.go +++ b/pipeline/pipeline.go @@ -127,7 +127,10 @@ func (p *Pipeline) Stop() error { } // chanCopyLoop is a generic function for reading an event from one channel and writing it to another in a loop -func (p *Pipeline) chanCopyLoop(input <-chan event.Event, output chan<- event.Event) { +func (p *Pipeline) chanCopyLoop( + input <-chan event.Event, + output chan<- event.Event, +) { for { select { case <-p.doneChan: diff --git a/plugin/option.go b/plugin/option.go index 4e90462..9962b12 100644 --- a/plugin/option.go +++ b/plugin/option.go @@ -42,7 +42,11 @@ type PluginOption struct { Dest interface{} } -func (p *PluginOption) AddToFlagSet(fs *flag.FlagSet, pluginType string, pluginName string) error { +func (p *PluginOption) AddToFlagSet( + fs *flag.FlagSet, + pluginType string, + pluginName string, +) error { var flagName string if p.CustomFlag != "" { flagName = fmt.Sprintf("%s-%s", pluginType, p.CustomFlag) @@ -51,15 +55,34 @@ func (p *PluginOption) AddToFlagSet(fs *flag.FlagSet, pluginType string, pluginN } switch p.Type { case PluginOptionTypeString: - fs.StringVar(p.Dest.(*string), flagName, p.DefaultValue.(string), p.Description) + fs.StringVar( + p.Dest.(*string), + flagName, + p.DefaultValue.(string), + p.Description, + ) case PluginOptionTypeBool: - fs.BoolVar(p.Dest.(*bool), flagName, p.DefaultValue.(bool), p.Description) + fs.BoolVar( + p.Dest.(*bool), + flagName, + p.DefaultValue.(bool), + p.Description, + ) case PluginOptionTypeInt: fs.IntVar(p.Dest.(*int), flagName, p.DefaultValue.(int), p.Description) case PluginOptionTypeUint: - fs.UintVar(p.Dest.(*uint), flagName, p.DefaultValue.(uint), p.Description) + fs.UintVar( + p.Dest.(*uint), + flagName, + p.DefaultValue.(uint), + p.Description, + ) default: - return fmt.Errorf("unknown plugin option type %d for option %s", p.Type, p.Name) + return fmt.Errorf( + "unknown plugin option type %d for option %s", + p.Type, + p.Name, + ) } return nil } @@ -109,14 +132,20 @@ func (p *PluginOption) ProcessEnvVars(envPrefix string) error { } *(p.Dest.(*uint)) = uint(value) default: - return fmt.Errorf("unknown plugin option type %d for option %s", p.Type, p.Name) + return fmt.Errorf( + "unknown plugin option type %d for option %s", + p.Type, + p.Name, + ) } } } return nil } -func (p *PluginOption) ProcessConfig(pluginData map[interface{}]interface{}) error { +func (p *PluginOption) ProcessConfig( + pluginData map[interface{}]interface{}, +) error { if optionData, ok := pluginData[p.Name]; ok { switch p.Type { case PluginOptionTypeString: @@ -148,7 +177,11 @@ func (p *PluginOption) ProcessConfig(pluginData map[interface{}]interface{}) err return fmt.Errorf("invalid value for option '%s': expected uint and got %T", p.Name, optionData) } default: - return fmt.Errorf("unknown plugin option type %d for option %s", p.Type, p.Name) + return fmt.Errorf( + "unknown plugin option type %d for option %s", + p.Type, + p.Name, + ) } } diff --git a/plugin/register.go b/plugin/register.go index 9439f2a..cb0b64e 100644 --- a/plugin/register.go +++ b/plugin/register.go @@ -68,7 +68,11 @@ func PopulateCmdlineOptions(fs *flag.FlagSet) error { func ProcessEnvVars() error { for _, plugin := range pluginEntries { // Generate env var prefix based on plugin type and name - envVarPrefix := fmt.Sprintf("%s-%s-", PluginTypeName(plugin.Type), plugin.Name) + envVarPrefix := fmt.Sprintf( + "%s-%s-", + PluginTypeName(plugin.Type), + plugin.Name, + ) for _, option := range plugin.Options { if err := option.ProcessEnvVars(envVarPrefix); err != nil { return err @@ -78,7 +82,9 @@ func ProcessEnvVars() error { return nil } -func ProcessConfig(pluginConfig map[string]map[string]map[interface{}]interface{}) error { +func ProcessConfig( + pluginConfig map[string]map[string]map[interface{}]interface{}, +) error { for _, plugin := range pluginEntries { if pluginTypeData, ok := pluginConfig[PluginTypeName(plugin.Type)]; ok { if pluginData, ok := pluginTypeData[plugin.Name]; ok {