{"action":"opened","issue":{"url":"https://api.github.com/repos/LambdaHack/LambdaHack/issues/116","repository_url":"https://api.github.com/repos/LambdaHack/LambdaHack","labels_url":"https://api.github.com/repos/LambdaHack/LambdaHack/issues/116/labels{/name}","comments_url":"https://api.github.com/repos/LambdaHack/LambdaHack/issues/116/comments","events_url":"https://api.github.com/repos/LambdaHack/LambdaHack/issues/116/events","html_url":"https://github.com/LambdaHack/LambdaHack/issues/116","id":272397477,"number":116,"title":"Unify commandline options and config file options","user":{"login":"Mikolaj","id":281893,"avatar_url":"https://avatars3.githubusercontent.com/u/281893?v=4","gravatar_id":"","url":"https://api.github.com/users/Mikolaj","html_url":"https://github.com/Mikolaj","followers_url":"https://api.github.com/users/Mikolaj/followers","following_url":"https://api.github.com/users/Mikolaj/following{/other_user}","gists_url":"https://api.github.com/users/Mikolaj/gists{/gist_id}","starred_url":"https://api.github.com/users/Mikolaj/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Mikolaj/subscriptions","organizations_url":"https://api.github.com/users/Mikolaj/orgs","repos_url":"https://api.github.com/users/Mikolaj/repos","events_url":"https://api.github.com/users/Mikolaj/events{/privacy}","received_events_url":"https://api.github.com/users/Mikolaj/received_events","type":"User","site_admin":false},"labels":[{"id":555889891,"url":"https://api.github.com/repos/LambdaHack/LambdaHack/labels/code%20smell","name":"code smell","color":"c2e0c6","default":false},{"id":719911187,"url":"https://api.github.com/repos/LambdaHack/LambdaHack/labels/help%20wanted","name":"help wanted","color":"33aa3f","default":true},{"id":96299562,"url":"https://api.github.com/repos/LambdaHack/LambdaHack/labels/medium","name":"medium","color":"fbca04","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2017-11-09T00:20:01Z","updated_at":"2017-11-09T00:20:01Z","closed_at":null,"author_association":"OWNER","body":"This issue is not hard, but there is a lot of work to do and it may not be easy to delineate small independent steps to perform it in. Also, quite likely, the new proposed design is impossible to implement or suboptimal (unification vs abstraction), so experimentation and redesign cycle will be required.\r\n\r\nMost options should be settable from both commandline and config files (separate UI config file, client config file and server config file). `ClientOptions` and `UIOptions` should be deduplicated and the latter put in a record field of the former. \r\n\r\nThe current setup that `UIOptions' type is abstract outside `Client/UI/` should be kept and extended to `ClientOptions` outside `Client/` (perhaps duplicating the `sbenchmark` for the server, if needed). This probably requires that commandline parsing is split into 3 modules. Reading the config files should probably be performed at init time of, respectively, server and each of the clients.\r\n\r\nBonus points: \r\n* somehow ensure that the client and UI options are stored only once, not again in each client state (at least ensure this in savefiles due to JS speed and storage limitations).\r\n* detect default key redefinition and warn about it\r\n* remove all haddocks for individual options and change/merge them into commandline option descriptions\r\n"}}
{"actor":{"display_login":"Mikolaj"}}