forked from the-distro/ofborg
try to do a type thing
This commit is contained in:
parent
f7377c1584
commit
d559383737
|
@ -11,42 +11,47 @@ use std::io::Error;
|
||||||
|
|
||||||
use ofborg::checkout;
|
use ofborg::checkout;
|
||||||
use ofborg::worker;
|
use ofborg::worker;
|
||||||
use ofborg::worker::{Actions,StdPr,StdRepo,BuildJob};
|
use ofborg::worker::{Actions,StdPr,StdRepo};
|
||||||
|
|
||||||
|
|
||||||
|
pub struct BuildJob {
|
||||||
|
pub repo: StdRepo,
|
||||||
|
pub pr: StdPr,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
println!("Hello, world!");
|
println!("Hello, world!");
|
||||||
|
|
||||||
|
|
||||||
if false {
|
let mut session = Session::open_url("amqps://grahamc:cCbKQmwnRcd8kvPW9cjmMSkp@events.nix.gsc.io//").unwrap();
|
||||||
let mut session = Session::open_url("amqps://grahamc:cCbKQmwnRcd8kvPW9cjmMSkp@events.nix.gsc.io//").unwrap();
|
let mut channel = session.open_channel(1).unwrap();
|
||||||
let mut channel = session.open_channel(1).unwrap();
|
|
||||||
|
|
||||||
//queue: &str, passive: bool, durable: bool, exclusive: bool, auto_delete: bool, nowait: bool, arguments: Table
|
//queue: &str, passive: bool, durable: bool, exclusive: bool, auto_delete: bool, nowait: bool, arguments: Table
|
||||||
if let Err(problem) = channel.queue_declare("my_queue_name", false, true, false, false, false, Table::new()) {
|
if let Err(problem) = channel.queue_declare("my_queue_name", false, true, false, false, false, Table::new()) {
|
||||||
println!("Failed to declare a queue: {:?}", problem);
|
println!("Failed to declare a queue: {:?}", problem);
|
||||||
process::exit(1);
|
process::exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
let cloner = checkout::cached_cloner(Path::new("/home/grahamc/.nix-test-rs"));
|
let cloner = checkout::cached_cloner(Path::new("/home/grahamc/.nix-test-rs"));
|
||||||
|
|
||||||
channel.basic_consume(
|
channel.basic_consume(
|
||||||
worker::new(BuildWorker{
|
worker::new(BuildWorker{
|
||||||
cloner: cloner
|
cloner: cloner
|
||||||
}),
|
}),
|
||||||
"my_queue_name",
|
"my_queue_name",
|
||||||
"lmao1",
|
"lmao1",
|
||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
false,
|
false,
|
||||||
Table::new()
|
Table::new()
|
||||||
);
|
);
|
||||||
|
|
||||||
if let Err(result) = channel.basic_publish("", "my_queue_name", true, false,
|
if let Err(result) = channel.basic_publish("", "my_queue_name", true, false,
|
||||||
protocol::basic::BasicProperties{ content_type: Some("text".to_string()), ..Default::default()}, (b"Hello from rust!").to_vec()) {
|
protocol::basic::BasicProperties{ content_type: Some("text".to_string()), ..Default::default()}, (b"Hello from rust!").to_vec()) {
|
||||||
println!("Failed to publish: {:?}", result);
|
println!("Failed to publish: {:?}", result);
|
||||||
process::exit(1);
|
process::exit(1);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,7 +60,7 @@ struct BuildWorker {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl worker::SimpleWorker for BuildWorker {
|
impl worker::SimpleWorker for BuildWorker {
|
||||||
fn consumer(&self, job: BuildJob, resp: Actions) -> Result<(), Error> {
|
fn consumer<BuildJob>(&self, job: BuildJob, resp: Actions) -> Result<(), Error> {
|
||||||
let project = self.cloner.project(job.repo.full_name, job.repo.clone_url);
|
let project = self.cloner.project(job.repo.full_name, job.repo.clone_url);
|
||||||
let co = project.clone_for("builder".to_string(),
|
let co = project.clone_for("builder".to_string(),
|
||||||
job.pr.number.to_string())?;
|
job.pr.number.to_string())?;
|
||||||
|
|
|
@ -19,18 +19,11 @@ pub struct StdPr {
|
||||||
pub head_sha: String,
|
pub head_sha: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
pub struct BuildJob {
|
|
||||||
pub repo: StdRepo,
|
|
||||||
pub pr: StdPr,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
pub struct Actions {
|
pub struct Actions {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait SimpleWorker {
|
pub trait SimpleWorker {
|
||||||
fn consumer(&self, job: BuildJob, resp: Actions) -> Result<(), Error>;
|
fn consumer<J>(&self, job: J, resp: Actions) -> Result<(), Error>;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn new<T: SimpleWorker>(worker: T) -> Worker<T> {
|
pub fn new<T: SimpleWorker>(worker: T) -> Worker<T> {
|
||||||
|
|
Loading…
Reference in a new issue