v doctor: os.Result{ exit_code: 0 output: '|V full version |V 0.4.10 ded45dce4c1c05e077d58486e90da77ec387b611 |:-------------------|:------------------- |OS |linux, N/A (VM) |Processor |2 cpus, 64bit, little endian, QEMU Virtual CPU version 4.2.0 |Memory |0.33GB/3.82GB | | |V executable |/opt/vlang/v |V last modified time|2025-05-14 20:53:17 | | |V home dir |OK, value: /opt/vlang |VMODULES |OK, value: /root/.vmodules |VTMP |OK, value: /tmp/v_0 |Current working dir |OK, value: /app | | |Git version |git version 2.40.3 |V git status |weekly.2025.20 |.git/config present |true | | |cc version |cc (Alpine 12.2.1_git20220924-r10) 12.2.1 20220924 |gcc version |gcc (Alpine 12.2.1_git20220924-r10) 12.2.1 20220924 |clang version |Alpine clang version 16.0.6 |tcc version |tcc version 0.9.27 mob:d3e940c (x86_64 Linux) |tcc git status |thirdparty-linuxmusl-amd64 a3e24da2 |emcc version |N/A |glibc version |Error: musl libc (x86_64) Version 1.2.4 Dynamic Program Loader Usage: /lib/ld-musl-x86_64.so.1 [options] [--] pathname ' } main.v: module main import veb import os pub struct App { veb.Controller } pub struct Index {} pub struct Context { veb.Context } @['/fr'] pub fn (app &Index) fr(mut ctx Context) veb.Result { info := os.execute("v doctor") file := os.read_file("main.v") or {panic(err)} return ctx.text("v doctor:\n ${info}\n main.v: \n${file}") } // we do a little crutches @['/'] pub fn (app &Index) index(mut ctx Context) veb.Result { return ctx.file("static/index.html") } @['/index.css'] pub fn (app &Index) css(mut ctx Context) veb.Result { return ctx.file("static/index.css") } @['/index.js'] pub fn (app &Index) js(mut ctx Context) veb.Result { return ctx.file("static/index.js") } @['/v-logo.png'] pub fn (app &Index) logo(mut ctx Context) veb.Result { return ctx.file("static/v-logo.png") } @['/throne.webp'] pub fn (app &Index) throne(mut ctx Context) veb.Result { return ctx.file("static/throne.webp") } @['/soon.webp'] pub fn (app &Index) soon(mut ctx Context) veb.Result { return ctx.file("static/soon.webp") } @['/em_soon.webp'] pub fn (app &Index) em_soon(mut ctx Context) veb.Result { return ctx.file("static/em_soon.webp") } @['/em_wip.webp'] pub fn (app &Index) em_wip(mut ctx Context) veb.Result { return ctx.file("static/em_wip.webp") } @['/stealer.webp'] pub fn (app &Index) stealer(mut ctx Context) veb.Result { return ctx.file("static/stealer.webp") } fn main() { mut app := &App{} mut index_app := &Index{} app.register_controller[Index, Context]("/", mut index_app)! veb.run[App, Context](mut app, 5252) }