| |
| import std.stdio; |
| import std.array : split; |
| import std.string : strip; |
| |
| import extra; |
| |
| auto getMenu () |
| { |
| auto foods = import ("food.txt").strip.split ("\n"); |
| return foods; |
| } |
| |
| auto getPeople () |
| { |
| return import ("people.txt").strip.split ("\n"); |
| } |
| |
| void main (string[] args) |
| { |
| import std.array : join; |
| import core.stdc.stdlib : exit; |
| |
| immutable request = args[1]; |
| if (request == "menu") { |
| version (No_Menu) { |
| } else { |
| writeln ("On the menu: ", getMenu.join (", ")); |
| exit (0); |
| } |
| } |
| |
| version (With_People) { |
| if (request == "people") { |
| writeln ("People: ", getPeople.join (", ")); |
| |
| // only exit successfully if the second module also had its module version set. |
| // this checks for issue https://github.com/mesonbuild/meson/issues/3337 |
| if (secondModulePeopleVersionSet ()) |
| exit (0); |
| exit (1); |
| } |
| } |
| |
| version (With_VersionInteger) |
| version(3) exit(0); |
| |
| version (With_Debug) |
| debug exit(0); |
| |
| version (With_DebugInteger) |
| debug(3) exit(0); |
| |
| version (With_DebugIdentifier) |
| debug(DebugIdentifier) exit(0); |
| |
| version (With_DebugAll) { |
| int dbg = 0; |
| debug dbg++; |
| debug(2) dbg++; |
| debug(3) dbg++; |
| debug(4) dbg++; |
| debug(DebugIdentifier) dbg++; |
| |
| if (dbg == 5) |
| exit(0); |
| } |
| |
| // we fail here |
| exit (1); |
| } |
| |
| unittest |
| { |
| writeln ("TEST"); |
| import core.stdc.stdlib : exit; |
| |
| writeln(getMenu); |
| assert (getMenu () == ["Spam", "Eggs", "Spam", "Baked Beans", "Spam", "Spam"]); |
| |
| exit (0); |
| } |