| 1 | import os |
| 2 | import veb |
| 3 | import config |
| 4 | |
| 5 | enum Lang { |
| 6 | en |
| 7 | ru |
| 8 | es |
| 9 | jp |
| 10 | cn |
| 11 | pt |
| 12 | } |
| 13 | |
| 14 | const tr_menu_en = '<select id=select_lang><option value=en selected>English</option><option value=ru>Русский</option><option value=es>Español</option><option value=jp>日本語</option><option value=cn>中文</option><option value=pt>Português</option></select>' |
| 15 | const tr_menu_ru = '<select id=select_lang><option value=en>English</option><option value=ru selected>Русский</option><option value=es>Español</option><option value=jp>日本語</option><option value=cn>中文</option><option value=pt>Português</option></select>' |
| 16 | const tr_menu_es = '<select id=select_lang><option value=en>English</option><option value=ru>Русский</option><option value=es selected>Español</option><option value=jp>日本語</option><option value=cn>中文</option><option value=pt>Português</option></select>' |
| 17 | const tr_menu_jp = '<select id=select_lang><option value=en>English</option><option value=ru>Русский</option><option value=es>Español</option><option value=jp selected>日本語</option><option value=cn>中文</option><option value=pt>Português</option></select>' |
| 18 | const tr_menu_cn = '<select id=select_lang><option value=en>English</option><option value=ru>Русский</option><option value=es>Español</option><option value=jp>日本語</option><option value=cn selected>中文</option><option value=pt>Português</option></select>' |
| 19 | const tr_menu_pt = '<select id=select_lang><option value=en>English</option><option value=ru>Русский</option><option value=es>Español</option><option value=jp>日本語</option><option value=cn>中文</option><option value=pt selected>Português</option></select>' |
| 20 | |
| 21 | fn get_port(conf config.Config) int { |
| 22 | // Priority: -p flag > GITLY_PORT env > config.json port > 8080 |
| 23 | for i, arg in os.args { |
| 24 | if (arg == '-p' || arg == '--port') && i + 1 < os.args.len { |
| 25 | return os.args[i + 1].int() |
| 26 | } |
| 27 | } |
| 28 | env_port := os.getenv_opt('GITLY_PORT') or { '' } |
| 29 | if env_port != '' { |
| 30 | return env_port.int() |
| 31 | } |
| 32 | if conf.port > 0 { |
| 33 | return conf.port |
| 34 | } |
| 35 | return 8080 |
| 36 | } |
| 37 | |
| 38 | fn main() { |
| 39 | if os.args.contains('ci_run') { |
| 40 | return |
| 41 | } |
| 42 | mut app := new_app()! |
| 43 | |
| 44 | app.use(handler: app.before_request) |
| 45 | |
| 46 | app.port = get_port(app.config) |
| 47 | |
| 48 | veb.run_at[App, Context](mut app, |
| 49 | port: app.port |
| 50 | family: .ip |
| 51 | timeout_in_seconds: 5 |
| 52 | ) or { panic(err) } |
| 53 | } |
| 54 | |
| 55 | fn build_tr_menu(cur_lang Lang) string { |
| 56 | return match cur_lang { |
| 57 | .ru { tr_menu_ru } |
| 58 | .en { tr_menu_en } |
| 59 | .es { tr_menu_es } |
| 60 | .jp { tr_menu_jp } |
| 61 | .cn { tr_menu_cn } |
| 62 | .pt { tr_menu_pt } |
| 63 | } |
| 64 | } |
| 65 | |