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
use std::io; pub struct ScriptFile{ script_file_name: String, } impl ScriptFile { pub fn new(script_file: String) -> Self { ScriptFile{ script_file_name : script_file, } } pub fn write_cd_only(&self, project: String) -> io::Result<()>{ script::write_cd_only(self.script_file_name.clone(), project) } pub fn write_cd_and_exec(&self, project: String, command: Vec<String>) -> io::Result<()>{ script::write_cd_and_exec(self.script_file_name.clone(), project, command) } } #[cfg(unix)] mod script { use std::io; use std::fs; pub fn write_cd_only(script_file_name: String, project: String) -> io::Result<()>{ let data = format!("#/bin/bash\ncd {}\n", project); fs::write(script_file_name, data) } pub fn write_cd_and_exec(script_file_name: String, project: String, command: Vec<String>) -> io::Result<()>{ let data = format!("#/bin/bash\ncd {}\n{}\n", project, command.join(" ")); fs::write(script_file_name, data) } } #[cfg(windows)] mod script { use std::io; use std::fs; pub fn write_cd_only(script_file_name: String, project: String) -> io::Result<()>{ let data = format!("cd /d {}\n", project); fs::write(script_file_name, data) } pub fn write_cd_and_exec(script_file_name: String, project: String, command: Vec<String>) -> io::Result<()>{ let data = format!("cd /d {}\n{}\n", project, command.join(" ")); fs::write(script_file_name, data) } }