added push subcommand
This commit is contained in:
parent
5ac086b67b
commit
9d7fa48390
4 changed files with 49 additions and 10 deletions
|
@ -23,8 +23,6 @@ notify-debouncer-mini = "0.2"
|
||||||
ron = "0.8"
|
ron = "0.8"
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
termion = "1.5"
|
termion = "1.5"
|
||||||
# tree-sitter = "0.20"
|
|
||||||
# tree-sitter-c = "0.20"
|
|
||||||
|
|
||||||
[profile.release]
|
[profile.release]
|
||||||
lto = true
|
lto = true
|
||||||
|
|
|
@ -36,7 +36,12 @@ impl Config {
|
||||||
fs::write(path, content).unwrap();
|
fs::write(path, content).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_current() -> Self {
|
pub fn get_local() -> Option<Self> {
|
||||||
|
let path = env::current_dir().unwrap();
|
||||||
|
Self::get(&path)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_local_or_default() -> Self {
|
||||||
let path = env::current_dir().unwrap();
|
let path = env::current_dir().unwrap();
|
||||||
Self::get(&path)
|
Self::get(&path)
|
||||||
.unwrap_or_else(|| Self::new(path.file_name().unwrap().to_str().unwrap().to_string()))
|
.unwrap_or_else(|| Self::new(path.file_name().unwrap().to_str().unwrap().to_string()))
|
||||||
|
|
15
src/main.rs
15
src/main.rs
|
@ -3,6 +3,7 @@ use config::Config;
|
||||||
|
|
||||||
pub mod check;
|
pub mod check;
|
||||||
pub mod config;
|
pub mod config;
|
||||||
|
pub mod push;
|
||||||
pub mod run;
|
pub mod run;
|
||||||
pub mod tasks;
|
pub mod tasks;
|
||||||
pub mod test;
|
pub mod test;
|
||||||
|
@ -68,12 +69,12 @@ pub enum Commands {
|
||||||
},
|
},
|
||||||
|
|
||||||
/// Pushes changes to the git server with a custom tag.
|
/// Pushes changes to the git server with a custom tag.
|
||||||
push,
|
push { message: Option<String> },
|
||||||
}
|
}
|
||||||
|
|
||||||
fn append_includes(list: &mut Vec<String>) {
|
fn append_includes(list: &mut Vec<String>) {
|
||||||
list.extend(
|
list.extend(
|
||||||
Config::get_current()
|
Config::get_local_or_default()
|
||||||
.includes()
|
.includes()
|
||||||
.iter()
|
.iter()
|
||||||
.map(|f| f.to_string()),
|
.map(|f| f.to_string()),
|
||||||
|
@ -86,7 +87,7 @@ fn compilation_args() -> Vec<String> {
|
||||||
"-Wextra".to_string(),
|
"-Wextra".to_string(),
|
||||||
"-std=c99".to_string(),
|
"-std=c99".to_string(),
|
||||||
];
|
];
|
||||||
if Config::get_current().strict_mode() {
|
if Config::get_local_or_default().strict_mode() {
|
||||||
args.push("-Werror".to_string());
|
args.push("-Werror".to_string());
|
||||||
}
|
}
|
||||||
args
|
args
|
||||||
|
@ -102,7 +103,7 @@ fn main() {
|
||||||
|
|
||||||
Commands::run { mut files } => {
|
Commands::run { mut files } => {
|
||||||
if files.is_empty() {
|
if files.is_empty() {
|
||||||
files.push(Config::get_current().main_file().to_string());
|
files.push(Config::get_local_or_default().main_file().to_string());
|
||||||
}
|
}
|
||||||
append_includes(&mut files);
|
append_includes(&mut files);
|
||||||
let args = compilation_args();
|
let args = compilation_args();
|
||||||
|
@ -115,7 +116,7 @@ fn main() {
|
||||||
tests,
|
tests,
|
||||||
} => {
|
} => {
|
||||||
if files.is_empty() {
|
if files.is_empty() {
|
||||||
files.push(Config::get_current().test_file().to_string());
|
files.push(Config::get_local_or_default().test_file().to_string());
|
||||||
}
|
}
|
||||||
append_includes(&mut files);
|
append_includes(&mut files);
|
||||||
let args = compilation_args();
|
let args = compilation_args();
|
||||||
|
@ -132,8 +133,8 @@ fn main() {
|
||||||
config::create(path, identifier);
|
config::create(path, identifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
Commands::push => {
|
Commands::push { message } => {
|
||||||
todo!();
|
push::main(message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
35
src/push.rs
Normal file
35
src/push.rs
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
use std::process::Command;
|
||||||
|
|
||||||
|
use chrono::Utc;
|
||||||
|
|
||||||
|
use crate::{config::Config, utils::log_success};
|
||||||
|
|
||||||
|
pub fn main(message: Option<String>) {
|
||||||
|
let message = message.unwrap_or_else(|| Utc::now().format("pi - %d/%m/%Y %H:%M").to_string());
|
||||||
|
|
||||||
|
// commit
|
||||||
|
Command::new("git")
|
||||||
|
.args(["commit", "-m", &message])
|
||||||
|
.status()
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
// push
|
||||||
|
Command::new("git").arg("push").status().unwrap();
|
||||||
|
|
||||||
|
// tag
|
||||||
|
let timestamp = Utc::now().timestamp();
|
||||||
|
let suffix = format!("pi-{timestamp}");
|
||||||
|
let tag = Config::get_local().unwrap().identifier().to_string() + &suffix;
|
||||||
|
Command::new("git")
|
||||||
|
.args(["tag", "-a", &tag, "-m", ""])
|
||||||
|
.status()
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
// push tag
|
||||||
|
Command::new("git")
|
||||||
|
.args(["push", "--follow-tags"])
|
||||||
|
.status()
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
log_success(&format!("pushed with tag '{tag}'"));
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue