cloudflare/cloudflared

Public

mirrored from https://github.com/cloudflare/cloudflaredAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
e8841c0fb35484c7d450eab6d8a20f4f77e131c2

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

cmd/cloudflared/cliutil/handler.go

50lines · modecode

1package cliutil
2
3import (
4 "github.com/urfave/cli/v2"
5 "github.com/urfave/cli/v2/altsrc"
6
7 "github.com/cloudflare/cloudflared/config"
8 "github.com/cloudflare/cloudflared/logger"
9)
10
11func Action(actionFunc cli.ActionFunc) cli.ActionFunc {
12 return WithErrorHandler(actionFunc)
13}
14
15func ConfiguredAction(actionFunc cli.ActionFunc) cli.ActionFunc {
16 // Adapt actionFunc to the type signature required by ConfiguredActionWithWarnings
17 f := func(context *cli.Context, _ string) error {
18 return actionFunc(context)
19 }
20
21 return ConfiguredActionWithWarnings(f)
22}
23
24// Just like ConfiguredAction, but accepts a second parameter with configuration warnings.
25func ConfiguredActionWithWarnings(actionFunc func(*cli.Context, string) error) cli.ActionFunc {
26 return WithErrorHandler(func(c *cli.Context) error {
27 warnings, err := setFlagsFromConfigFile(c)
28 if err != nil {
29 return err
30 }
31 return actionFunc(c, warnings)
32 })
33}
34
35func setFlagsFromConfigFile(c *cli.Context) (configWarnings string, err error) {
36 const errorExitCode = 1
37 log := logger.CreateLoggerFromContext(c, logger.EnableTerminalLog)
38 inputSource, warnings, err := config.ReadConfigFile(c, log)
39 if err != nil {
40 if err == config.ErrNoConfigFile {
41 return "", nil
42 }
43 return "", cli.Exit(err, errorExitCode)
44 }
45
46 if err := altsrc.ApplyInputSource(c, inputSource); err != nil {
47 return "", cli.Exit(err, errorExitCode)
48 }
49 return warnings, nil
50}
51