| 
0
 | 
     1 local Luan = require "luan:Luan.luan"
 | 
| 
 | 
     2 local error = Luan.error
 | 
| 
 | 
     3 local Io = require "luan:Io.luan"
 | 
| 
 | 
     4 local Http = require "luan:http/Http.luan"
 | 
| 
 | 
     5 local Shared = require "site:/lib/Shared.luan"
 | 
| 
 | 
     6 local get_user = Shared.get_user or error()
 | 
| 
 | 
     7 local get_raw_config = Shared.get_raw_config or error()
 | 
| 
 | 
     8 local save_raw_config = Shared.save_raw_config or error()
 | 
| 
 | 
     9 
 | 
| 
 | 
    10 
 | 
| 
 | 
    11 return function()
 | 
| 
 | 
    12 	local user = get_user()
 | 
| 
 | 
    13 	local repo_name = Http.request.parameters.repo or error "missing repo param"
 | 
| 
 | 
    14 	repo_name~="_all" and repo_name~="_private" or error()
 | 
| 
 | 
    15 	local mode = Http.request.parameters.mode or error "missing mode param"
 | 
| 
 | 
    16 	mode=="public" or mode=="private" or error()
 | 
| 
 | 
    17 	Io.stdout = Http.response.text_writer()
 | 
| 
 | 
    18 	local raw_config = get_raw_config()
 | 
| 
 | 
    19 	local repo = raw_config.repos[repo_name]
 | 
| 
 | 
    20 	if repo == nil then
 | 
| 
 | 
    21 		raw_config.repos[repo_name] = {
 | 
| 
 | 
    22 			mode = mode
 | 
| 
 | 
    23 			users = {user}
 | 
| 
 | 
    24 			admins = {user}
 | 
| 
 | 
    25 		}
 | 
| 
 | 
    26 		save_raw_config(raw_config)
 | 
| 
 | 
    27 		%>added<%
 | 
| 
 | 
    28 	else
 | 
| 
 | 
    29 		repo.mode==mode or error "mode mismatch"
 | 
| 
 | 
    30 		%>exists<%
 | 
| 
 | 
    31 	end
 | 
| 
 | 
    32 end
 |