aboutsummaryrefslogtreecommitdiff
path: root/src/machine.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/machine.rs')
-rw-r--r--src/machine.rs101
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 @@
1macro_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
43define_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);