-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathbuild.rs
78 lines (73 loc) · 2.32 KB
/
build.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
use std::env;
use std::process::Command;
use bcrypt::{hash, BcryptError, DEFAULT_COST};
use dotenvy::dotenv;
use sqlx::migrate::MigrateDatabase;
use sqlx::{Sqlite, SqlitePool};
async fn add_admin<'a>(
uname: String,
pass: String,
db_pool: SqlitePool,
) -> Result<(), BcryptError> {
// why no argon2 , veruthe : )
let passwd = hash(pass, DEFAULT_COST)?;
sqlx::query!(
"INSERT OR IGNORE INTO admin_login (username,password) VALUES (?,?)",
uname,
passwd,
)
.execute(&db_pool)
.await
.expect("Error adding admin cred to admin_login");
Ok(())
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
dotenv().ok();
println!("Running Vaderboard Build script : )");
//VaderBoard database setup
println!("Running Database Setup");
let db_url = env::var("DATABASE_URL").expect("Error DATABASE_URL env variable not set");
if !Sqlite::database_exists(&db_url)
.await
.expect("Unable to fetch database existance details")
{
println!("Creating Vaderboard database");
Sqlite::create_database(&db_url)
.await
.expect("Unable to create database");
}
let pool = SqlitePool::connect(&db_url)
.await
.expect("Unable to Connect to Database");
println!("Running Vaderboard Migrations");
sqlx::migrate!()
.run(&pool)
.await
.expect("Unable to run Db migrations");
//add Admin Login to DB
println!("Adding Admin cred to db");
let uname = env::var("ADMIN_USERNAME").expect("Error ADMIN_USERNAME env variable not set");
let pass = env::var("ADMIN_PASSWORD").expect("Error ADMIN_PASSWORD env variable not set");
add_admin(uname, pass, pool).await?;
println!("Successfully registered admin cred");
//Vite build setup
println!("Running vader-admin-ui Build");
let vite_res = Command::new("npm")
.arg("--prefix")
.arg("vader-admin-ui")
.arg("run")
.arg("build")
.output()
.expect("Failed building vader-admin-ui");
if vite_res.status.success() {
println!("Build Successful");
} else {
println!(
"Build Error : {}",
String::from_utf8_lossy(&vite_res.stderr)
);
}
println!("Build script Executed Successfully : )");
Ok(())
}