Skip to content
This repository was archived by the owner on May 8, 2023. It is now read-only.

Commit 7ee7292

Browse files
author
Tom Elliott
committed
Merge branch 'develop'
2 parents 8537ea7 + 1058439 commit 7ee7292

129 files changed

Lines changed: 12845 additions & 567 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
language: go
22

33
before_script:
4-
- wget https://github.com/spf13/hugo/releases/download/v0.26/hugo_0.26_Linux-64bit.tar.gz -O /tmp/hugo.tar.gz
4+
- wget https://github.com/spf13/hugo/releases/download/v0.29/hugo_0.29_Linux-64bit.tar.gz -O /tmp/hugo.tar.gz
55
- mkdir /tmp/hugo
66
- tar -xvf /tmp/hugo.tar.gz -C /tmp/hugo
77
- export PATH=$PATH:/tmp/hugo/

Gopkg.lock

Lines changed: 37 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/restart.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ var restartFlags struct {
2828
noWatch *bool
2929
tail *bool
3030
exclude *[]string
31-
timeout *int
3231
force *bool
3332
}
3433

@@ -40,5 +39,4 @@ func init() {
4039
restartFlags.force = restartCmd.Flags().BoolP("force", "f", false, "Skip confirmation prompt")
4140
restartFlags.tail = restartCmd.Flags().BoolP("tail", "t", false, "After starting, tail logs for services.")
4241
restartFlags.exclude = restartCmd.Flags().StringArrayP("exclude", "e", nil, "Exclude `SERVICE` from this operation")
43-
restartFlags.timeout = restartCmd.Flags().Int("timeout", 30, "The amount of time in seconds that Edward will wait for a service to launch before timing out. Defaults to 30s")
4442
}

cmd/root.go

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
"github.com/yext/edward/config"
1717
"github.com/yext/edward/edward"
1818
"github.com/yext/edward/home"
19+
"github.com/yext/edward/output"
1920
"github.com/yext/edward/services"
2021
"github.com/yext/edward/updates"
2122
)
@@ -36,6 +37,21 @@ var RootCmd = &cobra.Command{
3637
Build, start and manage service instances with a single command.`,
3738
SilenceUsage: true,
3839
PersistentPreRunE: func(cmd *cobra.Command, args []string) error {
40+
if redirectLogs {
41+
logger = log.New(os.Stdout, fmt.Sprintf("%v >", os.Args), log.Ldate|log.Ltime|log.Lmicroseconds|log.Lshortfile)
42+
}
43+
if logFile != "" {
44+
prefix := "edward"
45+
if len(args) > 0 {
46+
prefix = fmt.Sprintf("%s %s", cmd.Use, args[0])
47+
}
48+
logger = log.New(&lumberjack.Logger{
49+
Filename: logFile,
50+
MaxSize: 50, // megabytes
51+
MaxBackups: 30,
52+
MaxAge: 1, //days
53+
}, fmt.Sprintf("%s > ", prefix), log.Ldate|log.Ltime|log.Lmicroseconds|log.Lshortfile)
54+
}
3955
// Begin logging
4056
logger.Printf("=== Edward v%v ===\n", common.EdwardVersion)
4157
logger.Printf("Args: %v\n", os.Args)
@@ -53,7 +69,7 @@ Build, start and manage service instances with a single command.`,
5369

5470
var err error
5571
if command != "generate" {
56-
edwardClient, err = edward.NewClientWithConfig(configPath, common.EdwardVersion)
72+
edwardClient, err = edward.NewClientWithConfig(configPath, common.EdwardVersion, logger)
5773
if err != nil {
5874
return errors.WithStack(err)
5975
}
@@ -76,6 +92,13 @@ Build, start and manage service instances with a single command.`,
7692
// Populate the Edward executable with this binary
7793
edwardClient.EdwardExecutable = os.Args[0]
7894

95+
// Let the client know about the log file for starting runners
96+
edwardClient.LogFile = logFile
97+
98+
if redirectLogs {
99+
edwardClient.Follower = output.NewNonLiveFollower()
100+
}
101+
79102
if command != "stop" {
80103
// Check for legacy pidfiles and error out if any are found
81104
for _, service := range edwardClient.ServiceMap() {
@@ -112,12 +135,17 @@ func Execute() {
112135
fmt.Printf("%+v", err)
113136
}
114137

138+
logPrefix := "edward"
139+
if len(os.Args) > 1 {
140+
logPrefix = fmt.Sprintf("edward %v >", os.Args[1:])
141+
}
142+
115143
logger = log.New(&lumberjack.Logger{
116144
Filename: filepath.Join(home.EdwardConfig.EdwardLogDir, "edward.log"),
117145
MaxSize: 50, // megabytes
118146
MaxBackups: 30,
119147
MaxAge: 1, //days
120-
}, fmt.Sprintf("%v >", os.Args), log.Ldate|log.Ltime|log.Lmicroseconds|log.Lshortfile)
148+
}, logPrefix, log.Ldate|log.Ltime|log.Lmicroseconds|log.Lshortfile)
121149

122150
for _, arg := range os.Args {
123151
if arg == "--generate-bash-completion" {
@@ -127,16 +155,29 @@ func Execute() {
127155
}
128156

129157
if err := RootCmd.Execute(); err != nil {
158+
logger.Printf("Error: %v\n", err)
130159
os.Exit(1)
131160
}
132161
}
133162

134163
var configPath string
164+
var redirectLogs bool
165+
var logFile string
135166

136167
func init() {
137168
cobra.OnInitialize(initConfig)
138169

170+
RootCmd.PersistentFlags().StringVar(&logFile, "logfile", "", "Write logs to `PATH`")
139171
RootCmd.PersistentFlags().StringVarP(&configPath, "config", "c", "", "Use service configuration file at `PATH`")
172+
RootCmd.PersistentFlags().BoolVar(&redirectLogs, "redirect_logs", false, "Redirect edward logs to the console")
173+
err := RootCmd.PersistentFlags().MarkHidden("redirect_logs")
174+
if err != nil {
175+
panic(err)
176+
}
177+
err = RootCmd.PersistentFlags().MarkHidden("logfile")
178+
if err != nil {
179+
panic(err)
180+
}
140181
}
141182

142183
// initConfig reads in config file and ENV variables if set.
@@ -148,7 +189,7 @@ func initConfig() {
148189
// Find home directory.
149190
home, err := homedir.Dir()
150191
if err != nil {
151-
fmt.Println(err)
192+
fmt.Println("initConfig: error finding home dir:", err)
152193
os.Exit(1)
153194
}
154195

@@ -167,7 +208,7 @@ func initConfig() {
167208

168209
func checkUpdateAvailable(checkUpdateChan chan interface{}) {
169210
defer close(checkUpdateChan)
170-
updateAvailable, latestVersion, err := updates.UpdateAvailable("yext", "edward", common.EdwardVersion, filepath.Join(home.EdwardConfig.Dir, ".updatecache"), logger)
211+
updateAvailable, latestVersion, err := updates.UpdateAvailable("yext", "edward", common.EdwardVersion, filepath.Join(home.EdwardConfig.Dir, ".cache/version"), logger)
171212
if err != nil {
172213
logger.Println("Error checking for updates:", err)
173214
return

cmd/run.go

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package cmd
22

33
import (
4+
"fmt"
5+
46
"github.com/pkg/errors"
57
"github.com/spf13/cobra"
6-
"github.com/yext/edward/common"
7-
"github.com/yext/edward/config"
88
"github.com/yext/edward/runner"
99
)
1010

@@ -13,23 +13,18 @@ var runCmd = &cobra.Command{
1313
Use: "run",
1414
Hidden: true,
1515
RunE: func(cmd *cobra.Command, args []string) error {
16-
configPath, err := config.GetConfigPathFromWorkingDirectory()
17-
if err != nil {
18-
return errors.WithStack(err)
19-
}
20-
cfg, err := config.LoadConfig(configPath, common.EdwardVersion, logger)
21-
if err != nil {
22-
return errors.WithMessage(err, configPath)
16+
service := edwardClient.ServiceMap()[args[0]]
17+
if service == nil {
18+
return fmt.Errorf("service not found: %s", args[0])
2319
}
24-
2520
r := &runner.Runner{
26-
Service: cfg.ServiceMap[args[0]],
21+
Service: service,
2722
}
2823
r.NoWatch = *runFlags.noWatch
2924
r.WorkingDir = *runFlags.directory
3025
r.Logger = logger
31-
r.Run(args)
32-
return nil
26+
err := r.Run(args)
27+
return errors.WithStack(err)
3328
},
3429
}
3530

@@ -43,4 +38,5 @@ func init() {
4338

4439
runFlags.noWatch = runCmd.Flags().Bool("no-watch", false, "Disable autorestart")
4540
runFlags.directory = runCmd.Flags().StringP("directory", "d", "", "Working directory")
41+
_ = runCmd.Flags().StringArrayP("tag", "t", nil, "Tags to distinguish this instance of Edward")
4642
}

cmd/start.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ var startFlags struct {
2121
noWatch *bool
2222
tail *bool
2323
exclude *[]string
24-
timeout *int
2524
}
2625

2726
func init() {
@@ -31,5 +30,4 @@ func init() {
3130
startFlags.noWatch = startCmd.Flags().Bool("no-watch", false, "Disable autorestart")
3231
startFlags.tail = startCmd.Flags().BoolP("tail", "t", false, "After starting, tail logs for services.")
3332
startFlags.exclude = startCmd.Flags().StringArrayP("exclude", "e", nil, "Exclude `SERVICE` from this operation")
34-
startFlags.timeout = startCmd.Flags().Int("timeout", 30, "The amount of time in seconds that Edward will wait for a service to launch before timing out. Defaults to 30s")
3533
}

common/version.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
package common
22

3-
const EdwardVersion = "1.8.5"
3+
const EdwardVersion = "1.8.6"

config/config.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ type GroupDef struct {
4646

4747
// LoadConfig loads configuration from an io.Reader with the working directory explicitly specified
4848
func LoadConfig(filePath string, edwardVersion string, logger common.Logger) (Config, error) {
49+
if logger != nil {
50+
logger.Printf("Loading config from: %s\n", filePath)
51+
}
4952
reader, err := os.Open(filePath)
5053
if err != nil {
5154
return Config{}, errors.WithStack(err)
@@ -73,7 +76,6 @@ func LoadConfig(filePath string, edwardVersion string, logger common.Logger) (Co
7376
err = config.initMaps()
7477

7578
config.printf("Config loaded with: %d groups and %d services\n", len(config.GroupMap), len(config.ServiceMap))
76-
7779
return config, errors.WithStack(err)
7880
}
7981

docs/autocompletion/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1">
1111
<meta http-equiv="X-UA-Compatible" content="IE=10" />
1212
<title>Autocompletion - Edward Docs</title>
13-
<meta name="generator" content="Hugo 0.26" />
13+
<meta name="generator" content="Hugo 0.29" />
1414

1515

1616
<meta name="description" content="A command line tool for managing local instances of microservices.">
@@ -134,7 +134,7 @@
134134
<div class="banner">
135135

136136
<div class="name">
137-
<strong>Edward Docs <span class="version">1.8.5</span></strong>
137+
<strong>Edward Docs <span class="version">1.8.6</span></strong>
138138

139139
<br>
140140
yext/edward

docs/commands/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1">
1111
<meta http-equiv="X-UA-Compatible" content="IE=10" />
1212
<title>Commands - Edward Docs</title>
13-
<meta name="generator" content="Hugo 0.26" />
13+
<meta name="generator" content="Hugo 0.29" />
1414

1515

1616
<meta name="description" content="A command line tool for managing local instances of microservices.">
@@ -134,7 +134,7 @@
134134
<div class="banner">
135135

136136
<div class="name">
137-
<strong>Edward Docs <span class="version">1.8.5</span></strong>
137+
<strong>Edward Docs <span class="version">1.8.6</span></strong>
138138

139139
<br>
140140
yext/edward

0 commit comments

Comments
 (0)