1
0
Fork 0
mirror of https://codeberg.org/icewind/haze.git synced 2026-06-03 17:14:08 +02:00

allow connecting to mysql db as root

This commit is contained in:
Robin Appelman 2021-06-14 18:03:50 +02:00
commit 8614a3e875
3 changed files with 18 additions and 7 deletions

View file

@ -30,6 +30,7 @@ pub enum HazeArgs {
},
Db {
filter: Option<String>,
root: bool,
},
Clean,
Logs {
@ -45,7 +46,7 @@ pub enum HazeArgs {
impl HazeArgs {
pub fn parse<I, S>(mut args: I) -> Result<HazeArgs>
where
S: AsRef<str> + Into<String> + Display,
S: AsRef<str> + Into<String> + Display + PartialEq<str>,
I: Iterator<Item = S>,
{
let _bin = args.next();
@ -101,7 +102,10 @@ impl HazeArgs {
filter,
command: args.map(S::into).collect(),
}),
HazeCommand::Db => Ok(HazeArgs::Db { filter }),
HazeCommand::Db => Ok(HazeArgs::Db {
filter,
root: args.next().filter(|arg| arg == "root").is_some(),
}),
HazeCommand::Clean => Ok(HazeArgs::Clean),
HazeCommand::Logs => {
let mut args = args.peekable();
@ -197,7 +201,8 @@ fn test_arg_parse() {
assert_eq!(
HazeArgs::parse(vec!["haze", "asdasd", "db"].into_iter()).unwrap(),
HazeArgs::Db {
filter: Some("asdasd".to_string())
filter: Some("asdasd".to_string()),
root: false
}
);
assert_eq!(

View file

@ -209,7 +209,7 @@ impl Database {
Ok(Some(id))
}
pub async fn exec(&self, docker: &mut Docker, cloud_id: &str) -> Result<i64> {
pub async fn exec(&self, docker: &mut Docker, cloud_id: &str, root: bool) -> Result<i64> {
match self.family() {
DatabaseFamily::Sqlite => {
exec_tty(
@ -226,7 +226,13 @@ impl Database {
docker,
format!("{}-db", cloud_id),
"mysql",
vec!["mysql", "-u", "haze", "-phaze", "haze"],
vec![
"mysql",
"-u",
if root { "root" } else { "haze" },
"-phaze",
"haze",
],
vec![],
)
.await

View file

@ -133,9 +133,9 @@ async fn main() -> Result<()> {
command.insert(0, "occ".to_string());
cloud.exec(&mut docker, command, true).await?;
}
HazeArgs::Db { filter } => {
HazeArgs::Db { filter, root } => {
let cloud = Cloud::get_by_filter(&mut docker, filter, &config).await?;
cloud.db.exec(&mut docker, &cloud.id).await?;
cloud.db.exec(&mut docker, &cloud.id, root).await?;
}
HazeArgs::Open { filter } => {
let cloud = Cloud::get_by_filter(&mut docker, filter, &config).await?;