mirror of
https://github.com/dolthub/dolt.git
synced 2026-02-12 18:59:03 -06:00
maybe?
This commit is contained in:
@@ -190,20 +190,29 @@ func (cmd SqlCmd) Exec(ctx context.Context, commandStr string, args []string, dE
|
||||
return HandleVErrAndExitCode(verr, usage)
|
||||
}
|
||||
|
||||
// Handle doltcfg directory
|
||||
var cfgDirPath string
|
||||
var dataDir string
|
||||
dataDirSpecified := false
|
||||
if multiDbDir, ok := apr.GetValue(MultiDBDirFlag); ok {
|
||||
cli.PrintErrln("WARNING: --multi-db-dir is deprecated, use --data-dir instead")
|
||||
dataDir = multiDbDir
|
||||
dataDirSpecified = true
|
||||
}
|
||||
if dataDirPath, ok := apr.GetValue(DataDirFlag); ok {
|
||||
dataDir = dataDirPath
|
||||
dataDirSpecified = true
|
||||
}
|
||||
cfgDir, hasCfg := apr.GetValue(CfgDirFlag)
|
||||
if hasCfg {
|
||||
// doltcfg directory specified; create at path if DNE, else add it to mrEnv
|
||||
path := filepath.Join(dataDir, cfgDir)
|
||||
cfgDir, cfgDirSpecified := apr.GetValue(CfgDirFlag)
|
||||
if cfgDirSpecified {
|
||||
if exists, _ := dEnv.FS.Exists(cfgDir); !exists {
|
||||
if err := dEnv.FS.MkDirs(cfgDir); err != nil {
|
||||
absPath, _ := dEnv.FS.Abs(cfgDir)
|
||||
return HandleVErrAndExitCode(errhand.VerboseErrorFromError(fmt.Errorf("couldn't create directory at %s", absPath)), usage)
|
||||
}
|
||||
}
|
||||
cfgDirPath = cfgDir
|
||||
} else if dataDirSpecified {
|
||||
path := filepath.Join(dataDir, DefaultCfgDirName)
|
||||
if exists, _ := dEnv.FS.Exists(path); !exists {
|
||||
if err := dEnv.FS.MkDirs(path); err != nil {
|
||||
absPath, _ := dEnv.FS.Abs(path)
|
||||
@@ -218,7 +227,7 @@ func (cmd SqlCmd) Exec(ctx context.Context, commandStr string, args []string, dE
|
||||
cfgDirPath = path
|
||||
}
|
||||
|
||||
// Look in current directory for doltcfg, create one here if none found so far
|
||||
// Look in data directory (which is necessarily current directory) for doltcfg, create one here if none found
|
||||
path = filepath.Join(dataDir, DefaultCfgDirName)
|
||||
if exists, isDir := dEnv.FS.Exists(path); exists && isDir {
|
||||
if len(cfgDirPath) != 0 {
|
||||
@@ -241,7 +250,7 @@ func (cmd SqlCmd) Exec(ctx context.Context, commandStr string, args []string, dE
|
||||
}
|
||||
}
|
||||
|
||||
// If no privilege filepath specified, default to cfg directory
|
||||
// If no privilege filepath specified, default to doltcfg directory
|
||||
privsFp, hasPrivsFp := apr.GetValue(PrivsFilePathFlag)
|
||||
if !hasPrivsFp {
|
||||
privsFp, err = dEnv.FS.Abs(filepath.Join(cfgDirPath, DefaultPrivsName))
|
||||
|
||||
@@ -270,16 +270,7 @@ func getCommandLineServerConfig(dEnv *env.DoltEnv, apr *argparser.ArgParseResult
|
||||
serverConfig.withLogLevel(LogLevel(logLevel))
|
||||
}
|
||||
|
||||
if dataDir, ok := apr.GetValue(commands.DataDirFlag); ok {
|
||||
dbNamesAndPaths, err := env.DBNamesAndPathsFromDir(dEnv.FS, dataDir)
|
||||
|
||||
if err != nil {
|
||||
return nil, errors.New("failed to read databases in path specified by --data-dir. error: " + err.Error())
|
||||
}
|
||||
|
||||
serverConfig.withDBNamesAndPaths(dbNamesAndPaths).withDataDir(dataDir)
|
||||
}
|
||||
|
||||
dataDirSpecified := false
|
||||
if dataDir, ok := apr.GetValue(commands.MultiDBDirFlag); ok {
|
||||
dbNamesAndPaths, err := env.DBNamesAndPathsFromDir(dEnv.FS, dataDir)
|
||||
cli.PrintErrln("WARNING: --multi-db-dir is deprecated, use --data-dir instead")
|
||||
@@ -289,13 +280,32 @@ func getCommandLineServerConfig(dEnv *env.DoltEnv, apr *argparser.ArgParseResult
|
||||
}
|
||||
|
||||
serverConfig.withDBNamesAndPaths(dbNamesAndPaths).withDataDir(dataDir)
|
||||
dataDirSpecified = true
|
||||
}
|
||||
|
||||
if dataDir, ok := apr.GetValue(commands.DataDirFlag); ok {
|
||||
dbNamesAndPaths, err := env.DBNamesAndPathsFromDir(dEnv.FS, dataDir)
|
||||
|
||||
if err != nil {
|
||||
return nil, errors.New("failed to read databases in path specified by --data-dir. error: " + err.Error())
|
||||
}
|
||||
|
||||
serverConfig.withDBNamesAndPaths(dbNamesAndPaths).withDataDir(dataDir)
|
||||
dataDirSpecified = true
|
||||
}
|
||||
|
||||
// TODO: make sure absolute paths also work
|
||||
var cfgDirPath string
|
||||
dataDir := serverConfig.DataDir()
|
||||
cfgDir, ok := apr.GetValue(commands.CfgDirFlag)
|
||||
if ok {
|
||||
// doltcfg directory specified; create at path if DNE, else add it to mrEnv
|
||||
cfgDir, cfgDirSpecified := apr.GetValue(commands.CfgDirFlag)
|
||||
if cfgDirSpecified {
|
||||
if exists, _ := dEnv.FS.Exists(cfgDir); !exists {
|
||||
if err := dEnv.FS.MkDirs(cfgDir); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
cfgDirPath = cfgDir
|
||||
} else if dataDirSpecified {
|
||||
path := filepath.Join(dataDir, cfgDir)
|
||||
if exists, _ := dEnv.FS.Exists(path); !exists {
|
||||
if err := dEnv.FS.MkDirs(path); err != nil {
|
||||
@@ -310,7 +320,7 @@ func getCommandLineServerConfig(dEnv *env.DoltEnv, apr *argparser.ArgParseResult
|
||||
cfgDirPath = path
|
||||
}
|
||||
|
||||
// Look in current directory for doltcfg, create one here if none found so far
|
||||
// Look in data directory (which is necessarily current directory) for doltcfg, create one here if none found
|
||||
path = filepath.Join(dataDir, commands.DefaultCfgDirName)
|
||||
if exists, isDir := dEnv.FS.Exists(path); exists && isDir {
|
||||
if len(cfgDirPath) != 0 {
|
||||
|
||||
@@ -207,6 +207,76 @@ teardown() {
|
||||
rm -rf inner_db
|
||||
}
|
||||
|
||||
@test "sql: dolt sql -q specify data directory dolt repo" {
|
||||
# remove files
|
||||
rm -rf datadir
|
||||
rm -rf new_repo
|
||||
|
||||
# initialize data directory and inner dbs
|
||||
mkdir datadir
|
||||
cd datadir
|
||||
|
||||
mkdir db1
|
||||
cd db1
|
||||
dolt init
|
||||
cd ..
|
||||
|
||||
mkdir db2
|
||||
cd db2
|
||||
dolt init
|
||||
cd ..
|
||||
|
||||
mkdir db3
|
||||
cd db3
|
||||
dolt init
|
||||
cd ..
|
||||
|
||||
cd ..
|
||||
|
||||
# initialize new repo
|
||||
mkdir new_repo
|
||||
cd new_repo
|
||||
|
||||
run dolt sql --data-dir=$BATS_TEST_DIRNAME/datadir -q "show databases"
|
||||
[ $status -eq 0 ]
|
||||
[[ $output =~ "db1" ]] || false
|
||||
[[ $output =~ "db2" ]] || false
|
||||
[[ $output =~ "db3" ]] || false
|
||||
|
||||
run dolt sql --data-dir=$BATS_TEST_DIRNAME/datadir -q "create user new_user"
|
||||
[ $status -eq 0 ]
|
||||
|
||||
run dolt sql --data-dir=$BATS_TEST_DIRNAME/datadir -q "use db1; select user from mysql.user"
|
||||
[ $status -eq 0 ]
|
||||
[[ $output =~ "new_user" ]] || false
|
||||
|
||||
run dolt sql --data-dir=$BATS_TEST_DIRNAME/datadir -q "use db2; select user from mysql.user"
|
||||
[ $status -eq 0 ]
|
||||
[[ $output =~ "new_user" ]] || false
|
||||
|
||||
run dolt sql --data-dir=$BATS_TEST_DIRNAME/datadir -q "use db3; select user from mysql.user"
|
||||
[ $status -eq 0 ]
|
||||
[[ $output =~ "new_user" ]] || false
|
||||
|
||||
# check that correct files exist
|
||||
cd ..
|
||||
|
||||
run ls -a
|
||||
[[ $output =~ "datadir" ]] || false
|
||||
[[ $output =~ "new_repo" ]] || false
|
||||
! [[ $output =~ ".doltcfg" ]] || false
|
||||
|
||||
run ls datadir
|
||||
[[ $output =~ ".doltcfg" ]] || false
|
||||
|
||||
run ls datadir/.doltcfg
|
||||
[[ $output =~ "privileges.db" ]] || false
|
||||
|
||||
# remove files
|
||||
rm -rf new_repo
|
||||
rm -rf datadir
|
||||
}
|
||||
|
||||
@test "sql: dolt sql -q specify data directory, cfg directory, and privilege file" {
|
||||
# remove files
|
||||
rm -rf .doltcfg
|
||||
|
||||
Reference in New Issue
Block a user