From 36e4d2cc59e5ad65f0a839d087d52bcfce1efdc2 Mon Sep 17 00:00:00 2001 From: Bertrand Delacretaz Date: Wed, 18 Apr 2018 12:07:42 +0200 Subject: [PATCH 1/2] Fonky platform skeleton --- fonky.txt | 1 + src/platform/fonky.rs | 41 +++++++++++++++++++++++++++++++++++++++++ src/platform/mod.rs | 6 ++++++ src/platform/rust.rs | 2 +- 4 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 fonky.txt create mode 100644 src/platform/fonky.rs diff --git a/fonky.txt b/fonky.txt new file mode 100644 index 0000000..811b327 --- /dev/null +++ b/fonky.txt @@ -0,0 +1 @@ +This is some fonky stuff! diff --git a/src/platform/fonky.rs b/src/platform/fonky.rs new file mode 100644 index 0000000..483b01f --- /dev/null +++ b/src/platform/fonky.rs @@ -0,0 +1,41 @@ +use super::Platform; + +use std::fs::metadata; +use std::process::Command; + +pub struct Fonky {} + +impl Platform for Fonky { + fn probe(&self) -> bool { + metadata("./fonky.txt") + .map(|data| data.is_file()) + .unwrap_or(false) + } + + fn build(&self) -> bool { + println!("building a Fonky project"); + + let output = Command::new("ls").arg("-l").output().expect( + "Fonky build failed", + ); + + println!("{}", String::from_utf8_lossy(&output.stdout)); + eprintln!("{}", String::from_utf8_lossy(&output.stderr)); + + output.status.success() + + } + + fn run(&self) -> bool { + println!("running a Fonky project"); + + let output = Command::new("who").output().expect( + "Fonky run failed", + ); + + println!("{}", String::from_utf8_lossy(&output.stdout)); + println!("{}", String::from_utf8_lossy(&output.stderr)); + + output.status.success() + } +} \ No newline at end of file diff --git a/src/platform/mod.rs b/src/platform/mod.rs index 555fa4a..fd2133f 100644 --- a/src/platform/mod.rs +++ b/src/platform/mod.rs @@ -1,6 +1,9 @@ mod rust; use self::rust::Rust; +mod fonky; +use self::fonky::Fonky; + pub trait Platform { fn probe(&self) -> bool; @@ -11,8 +14,11 @@ pub trait Platform { pub fn probe() -> Option> { let rust = Rust {}; + let fonky = Fonky {}; if rust.probe() { Some(Box::new(rust)) + } else if fonky.probe() { + Some(Box::new(fonky)) } else { None } diff --git a/src/platform/rust.rs b/src/platform/rust.rs index b057490..93c941f 100644 --- a/src/platform/rust.rs +++ b/src/platform/rust.rs @@ -7,7 +7,7 @@ pub struct Rust {} impl Platform for Rust { fn probe(&self) -> bool { - metadata("./Cargo.toml") + metadata("./Cargo_TODO_DISABLED_FOR_TESTING_FONKY.toml") .map(|data| data.is_file()) .unwrap_or(false) } From 21928f77caf1725ac8618afb29e588bd38c0924c Mon Sep 17 00:00:00 2001 From: Bertrand Delacretaz Date: Wed, 18 Apr 2018 12:12:41 +0200 Subject: [PATCH 2/2] Fonky 'compiler' works! (if you have cp and cat on your box) --- .gitignore | 1 + src/platform/fonky.rs | 4 ++-- src/platform/mod.rs | 6 +++--- src/platform/rust.rs | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 143b1ca..6ddc762 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ /target/ **/*.rs.bk Cargo.lock +fonky.out diff --git a/src/platform/fonky.rs b/src/platform/fonky.rs index 483b01f..68d9760 100644 --- a/src/platform/fonky.rs +++ b/src/platform/fonky.rs @@ -15,7 +15,7 @@ impl Platform for Fonky { fn build(&self) -> bool { println!("building a Fonky project"); - let output = Command::new("ls").arg("-l").output().expect( + let output = Command::new("cp").arg("fonky.txt").arg("fonky.out").output().expect( "Fonky build failed", ); @@ -29,7 +29,7 @@ impl Platform for Fonky { fn run(&self) -> bool { println!("running a Fonky project"); - let output = Command::new("who").output().expect( + let output = Command::new("cat").arg("fonky.out").output().expect( "Fonky run failed", ); diff --git a/src/platform/mod.rs b/src/platform/mod.rs index fd2133f..6bedf36 100644 --- a/src/platform/mod.rs +++ b/src/platform/mod.rs @@ -15,10 +15,10 @@ pub trait Platform { pub fn probe() -> Option> { let rust = Rust {}; let fonky = Fonky {}; - if rust.probe() { - Some(Box::new(rust)) - } else if fonky.probe() { + if fonky.probe() { Some(Box::new(fonky)) + } else if rust.probe() { + Some(Box::new(rust)) } else { None } diff --git a/src/platform/rust.rs b/src/platform/rust.rs index 93c941f..b057490 100644 --- a/src/platform/rust.rs +++ b/src/platform/rust.rs @@ -7,7 +7,7 @@ pub struct Rust {} impl Platform for Rust { fn probe(&self) -> bool { - metadata("./Cargo_TODO_DISABLED_FOR_TESTING_FONKY.toml") + metadata("./Cargo.toml") .map(|data| data.is_file()) .unwrap_or(false) }