1 /// This module provides a DUB template for `dub init -t fluid` 2 module fluid.dub_template; 3 4 import std.file; 5 import std.string; 6 import std.process; 7 8 import std.stdio : writefln, stderr; 9 10 11 version (Fluid_InitExec): 12 13 14 void main() { 15 16 const mainFile = q{ 17 18 import fluid; 19 import raylib; 20 21 void main() { 22 23 // Prepare the window 24 SetConfigFlags(ConfigFlags.FLAG_WINDOW_RESIZABLE); 25 SetTraceLogLevel(TraceLogLevel.LOG_WARNING); 26 InitWindow(800, 600, "Hello, Fluid!"); 27 SetTargetFPS(60); 28 scope (exit) CloseWindow(); 29 30 // Create UI 31 auto ui = label("Hello, World!"); 32 33 // Event loop 34 while (!WindowShouldClose) { 35 36 BeginDrawing(); 37 scope (exit) EndDrawing(); 38 39 ClearBackground(color!"fff"); 40 41 ui.draw(); 42 43 } 44 45 } 46 47 }; 48 49 const mainOutdent = mainFile 50 .splitLines 51 .outdent // Remove indent 52 .join("\n") 53 .strip; // Strip leading & trailing whitespace 54 55 if ("source".exists) { 56 57 stderr.writefln!"fluid: Directory 'source/' already exists, aborting."; 58 return; 59 60 } 61 62 // Prepare the source 63 mkdir("source"); 64 write("source/main.d", mainOutdent); 65 append(".gitignore", "*.so\n"); 66 append(".gitignore", "*.so.*\n"); 67 68 // Install raylib 69 spawnShell("dub add raylib-d").wait; 70 spawnShell("dub run raylib-d:install -y -n").wait; 71 72 }