gitlyx / main.v
65 lines · 57 sloc · 2.63 KB · 31b1cb297e0cd7893d102dbf7410a58b89a2cf54
Raw
1import os
2import veb
3import config
4
5enum Lang {
6 en
7 ru
8 es
9 jp
10 cn
11 pt
12}
13
14const 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>'
15const 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>'
16const 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>'
17const 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>'
18const 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>'
19const 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
21fn 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
38fn 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 app.route_use('/:username/:repo_name/pull/:id/files', handler: minify_pr_files_html, after: true)
46
47 app.port = get_port(app.config)
48
49 veb.run_at[App, Context](mut app,
50 port: app.port
51 family: .ip
52 timeout_in_seconds: 5
53 ) or { panic(err) }
54}
55
56fn build_tr_menu(cur_lang Lang) string {
57 return match cur_lang {
58 .ru { tr_menu_ru }
59 .en { tr_menu_en }
60 .es { tr_menu_es }
61 .jp { tr_menu_jp }
62 .cn { tr_menu_cn }
63 .pt { tr_menu_pt }
64 }
65}
66