mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-09-20 15:09:02 +03:00
parent
246a0b7ab8
commit
75d35ac2f6
13
CHANGELOG.md
13
CHANGELOG.md
@ -2,6 +2,19 @@
|
|||||||
|
|
||||||
## Next release
|
## Next release
|
||||||
|
|
||||||
|
### cli: add support for .env file
|
||||||
|
|
||||||
|
ENV vars can now be read from .env file present at the project root directory. A global flag, `--envfile`, is added so you can explicitly provide the .env filename, which defaults to `.env` filename if no flag is provided.
|
||||||
|
|
||||||
|
**Example**:
|
||||||
|
|
||||||
|
```
|
||||||
|
hasura console --envfile production.env
|
||||||
|
```
|
||||||
|
The above command will read ENV vars from `production.env` file present at the project root directory.
|
||||||
|
|
||||||
|
(close #4129) (#4454)
|
||||||
|
|
||||||
### console: allow setting post-update check in update permissions
|
### console: allow setting post-update check in update permissions
|
||||||
|
|
||||||
Along with the check for filtering rows that can be updated, you can now set a post-update permission check that needs to be satisfied by the updated rows after the update is made.
|
Along with the check for filtering rows that can be updated, you can now set a post-update permission check that needs to be satisfied by the updated rows after the update is made.
|
||||||
|
27
cli/cli.go
27
cli/cli.go
@ -30,6 +30,7 @@ import (
|
|||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
|
"github.com/subosito/gotenv"
|
||||||
"golang.org/x/crypto/ssh/terminal"
|
"golang.org/x/crypto/ssh/terminal"
|
||||||
"gopkg.in/yaml.v2"
|
"gopkg.in/yaml.v2"
|
||||||
)
|
)
|
||||||
@ -206,6 +207,8 @@ type ExecutionContext struct {
|
|||||||
|
|
||||||
// ExecutionDirectory is the directory in which command is being executed.
|
// ExecutionDirectory is the directory in which command is being executed.
|
||||||
ExecutionDirectory string
|
ExecutionDirectory string
|
||||||
|
// Envfile is the .env file to load ENV vars from
|
||||||
|
Envfile string
|
||||||
// MigrationDir is the name of directory where migrations are stored.
|
// MigrationDir is the name of directory where migrations are stored.
|
||||||
MigrationDir string
|
MigrationDir string
|
||||||
// MetadataDir is the name of directory where metadata files are stored.
|
// MetadataDir is the name of directory where metadata files are stored.
|
||||||
@ -412,6 +415,11 @@ func (ec *ExecutionContext) Validate() error {
|
|||||||
return errors.Wrap(err, "validating current directory failed")
|
return errors.Wrap(err, "validating current directory failed")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// load .env file
|
||||||
|
err = ec.loadEnvfile()
|
||||||
|
if err != nil {
|
||||||
|
return errors.Wrap(err, "loading .env file failed")
|
||||||
|
}
|
||||||
// set names of config file
|
// set names of config file
|
||||||
ec.ConfigFile = filepath.Join(ec.ExecutionDirectory, "config.yaml")
|
ec.ConfigFile = filepath.Join(ec.ExecutionDirectory, "config.yaml")
|
||||||
|
|
||||||
@ -588,6 +596,25 @@ func (ec *ExecutionContext) Spin(message string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// loadEnvfile loads .env file
|
||||||
|
func (ec *ExecutionContext) loadEnvfile() error {
|
||||||
|
envfile := filepath.Join(ec.ExecutionDirectory, ec.Envfile)
|
||||||
|
err := gotenv.Load(envfile)
|
||||||
|
if err != nil {
|
||||||
|
// return error if user provided envfile name
|
||||||
|
if ec.Envfile != ".env" {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if !os.IsNotExist(err) {
|
||||||
|
ec.Logger.Warn(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if err == nil {
|
||||||
|
ec.Logger.Debug("ENV vars read from: ", envfile)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// setupLogger creates a default logger if context does not have one set.
|
// setupLogger creates a default logger if context does not have one set.
|
||||||
func (ec *ExecutionContext) setupLogger() {
|
func (ec *ExecutionContext) setupLogger() {
|
||||||
if ec.Logger == nil {
|
if ec.Logger == nil {
|
||||||
|
@ -77,6 +77,7 @@ func init() {
|
|||||||
f.StringVar(&ec.ExecutionDirectory, "project", "", "directory where commands are executed (default: current dir)")
|
f.StringVar(&ec.ExecutionDirectory, "project", "", "directory where commands are executed (default: current dir)")
|
||||||
f.BoolVar(&ec.SkipUpdateCheck, "skip-update-check", false, "Skip automatic update check on command execution")
|
f.BoolVar(&ec.SkipUpdateCheck, "skip-update-check", false, "Skip automatic update check on command execution")
|
||||||
f.BoolVar(&ec.NoColor, "no-color", false, "do not colorize output (default: false)")
|
f.BoolVar(&ec.NoColor, "no-color", false, "do not colorize output (default: false)")
|
||||||
|
f.StringVar(&ec.Envfile, "envfile", ".env", ".env filename to load ENV vars from")
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewDefaultHasuraCommand creates the `hasura` command with default arguments
|
// NewDefaultHasuraCommand creates the `hasura` command with default arguments
|
||||||
|
@ -53,6 +53,7 @@ require (
|
|||||||
github.com/spf13/pflag v1.0.5
|
github.com/spf13/pflag v1.0.5
|
||||||
github.com/spf13/viper v1.6.1
|
github.com/spf13/viper v1.6.1
|
||||||
github.com/stretchr/testify v1.4.0
|
github.com/stretchr/testify v1.4.0
|
||||||
|
github.com/subosito/gotenv v1.2.0
|
||||||
github.com/theplant/cldr v0.0.0-20190423050709-9f76f7ce4ee8 // indirect
|
github.com/theplant/cldr v0.0.0-20190423050709-9f76f7ce4ee8 // indirect
|
||||||
github.com/theplant/htmltestingutils v0.0.0-20190423050759-0e06de7b6967 // indirect
|
github.com/theplant/htmltestingutils v0.0.0-20190423050759-0e06de7b6967 // indirect
|
||||||
github.com/theplant/testingutils v0.0.0-20190603093022-26d8b4d95c61 // indirect
|
github.com/theplant/testingutils v0.0.0-20190603093022-26d8b4d95c61 // indirect
|
||||||
|
Loading…
Reference in New Issue
Block a user