diff options
Diffstat (limited to 'src/machine.rs')
| -rw-r--r-- | src/machine.rs | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/src/machine.rs b/src/machine.rs new file mode 100644 index 0000000..f1ad94d --- /dev/null +++ b/src/machine.rs | |||
| @@ -0,0 +1,101 @@ | |||
| 1 | macro_rules! define_machines { | ||
| 2 | ($(($name:ident, $idx:expr, $hostname:expr, $interface:expr)),*) => { | ||
| 3 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] | ||
| 4 | pub enum Machine { | ||
| 5 | $($name,)* | ||
| 6 | } | ||
| 7 | |||
| 8 | impl std::fmt::Display for Machine { | ||
| 9 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | ||
| 10 | f.write_str(self.hostname()) | ||
| 11 | } | ||
| 12 | } | ||
| 13 | |||
| 14 | impl Machine { | ||
| 15 | pub fn hostname(&self) -> &'static str { | ||
| 16 | match self { | ||
| 17 | $(Self::$name => $hostname,)* | ||
| 18 | } | ||
| 19 | } | ||
| 20 | |||
| 21 | pub fn index(&self) -> usize { | ||
| 22 | match self { | ||
| 23 | $(Self::$name => $idx,)* | ||
| 24 | } | ||
| 25 | } | ||
| 26 | |||
| 27 | pub fn from_hostname(hostname: &str) -> Option<Self> { | ||
| 28 | match hostname { | ||
| 29 | $($hostname => Some(Self::$name),)* | ||
| 30 | _ => None | ||
| 31 | } | ||
| 32 | } | ||
| 33 | |||
| 34 | pub fn interface(&self) -> &'static str { | ||
| 35 | match self { | ||
| 36 | $(Self::$name => $interface,)* | ||
| 37 | } | ||
| 38 | } | ||
| 39 | } | ||
| 40 | }; | ||
| 41 | } | ||
| 42 | |||
| 43 | define_machines!( | ||
| 44 | (Alakazam01, 0, "alakazam-01", todo!()), | ||
| 45 | (Alakazam02, 1, "alakazam-02", todo!()), | ||
| 46 | (Alakazam03, 2, "alakazam-03", todo!()), | ||
| 47 | (Alakazam04, 3, "alakazam-04", todo!()), | ||
| 48 | (Alakazam05, 4, "alakazam-05", todo!()), | ||
| 49 | (Alakazam06, 5, "alakazam-06", todo!()), | ||
| 50 | (Alakazam07, 6, "alakazam-07", todo!()), | ||
| 51 | (Alakazam08, 7, "alakazam-08", todo!()), | ||
| 52 | (Bulbasaur1, 8, "bulbasaur-1", todo!()), | ||
| 53 | (Bulbasaur2, 9, "bulbasaur-2", todo!()), | ||
| 54 | (Bulbasaur3, 10, "bulbasaur-3", todo!()), | ||
| 55 | (Charmander1, 11, "charmander-1", "bond0"), | ||
| 56 | (Charmander2, 12, "charmander-2", "bond0"), | ||
| 57 | (Charmander3, 13, "charmander-3", "bond0"), | ||
| 58 | (Charmander4, 14, "charmander-4", "bond0"), | ||
| 59 | (Charmander5, 15, "charmander-5", "bond0"), | ||
| 60 | (Gengar1, 16, "gengar-1", "bond0"), | ||
| 61 | (Gengar2, 17, "gengar-2", "bond0"), | ||
| 62 | (Gengar3, 18, "gengar-3", "bond0"), | ||
| 63 | (Gengar4, 19, "gengar-4", "bond0"), | ||
| 64 | (Gengar5, 20, "gengar-5", "bond0"), | ||
| 65 | (Kadabra01, 21, "kadabra-01", todo!()), | ||
| 66 | (Kadabra02, 22, "kadabra-02", todo!()), | ||
| 67 | (Kadabra03, 23, "kadabra-03", todo!()), | ||
| 68 | (Kadabra04, 24, "kadabra-04", todo!()), | ||
| 69 | (Kadabra05, 25, "kadabra-05", todo!()), | ||
| 70 | (Kadabra06, 26, "kadabra-06", todo!()), | ||
| 71 | (Kadabra07, 27, "kadabra-07", todo!()), | ||
| 72 | (Kadabra08, 28, "kadabra-08", todo!()), | ||
| 73 | (Lugia1, 29, "lugia-1", "bond0"), | ||
| 74 | (Lugia2, 30, "lugia-2", "bond0"), | ||
| 75 | (Lugia3, 31, "lugia-3", "bond0"), | ||
| 76 | (Lugia4, 32, "lugia-4", "bond0"), | ||
| 77 | (Lugia5, 33, "lugia-5", "bond0"), | ||
| 78 | (Magikarp1, 34, "magikarp-1", todo!()), | ||
| 79 | (Moltres01, 35, "moltres-01", todo!()), | ||
| 80 | (Moltres02, 36, "moltres-02", todo!()), | ||
| 81 | (Moltres03, 37, "moltres-03", todo!()), | ||
| 82 | (Moltres04, 38, "moltres-04", todo!()), | ||
| 83 | (Moltres05, 39, "moltres-05", todo!()), | ||
| 84 | (Moltres06, 40, "moltres-06", todo!()), | ||
| 85 | (Moltres07, 41, "moltres-07", todo!()), | ||
| 86 | (Moltres08, 42, "moltres-08", todo!()), | ||
| 87 | (Moltres09, 43, "moltres-09", todo!()), | ||
| 88 | (Moltres10, 44, "moltres-10", todo!()), | ||
| 89 | (Oddish1, 45, "oddish-1", todo!()), | ||
| 90 | (Psyduck1, 46, "psyduck-1", todo!()), | ||
| 91 | (Psyduck2, 47, "psyduck-2", todo!()), | ||
| 92 | (Psyduck3, 48, "psyduck-3", todo!()), | ||
| 93 | (Shelder1, 49, "shelder-1", todo!()), | ||
| 94 | (Squirtle1, 50, "squirtle-1", todo!()), | ||
| 95 | (Squirtle2, 51, "squirtle-2", todo!()), | ||
| 96 | (Squirtle3, 52, "squirtle-3", todo!()), | ||
| 97 | (Squirtle4, 53, "squirtle-4", todo!()), | ||
| 98 | (Staryu1, 54, "staryu-1", todo!()), | ||
| 99 | (Sudowoodo1, 55, "sudowoodo-1", todo!()), | ||
| 100 | (Vulpix1, 56, "vulpix-1", todo!()) | ||
| 101 | ); | ||
