{"action":"created","issue":{"url":"https://api.github.com/repos/aionnetwork/aion/issues/676","repository_url":"https://api.github.com/repos/aionnetwork/aion","labels_url":"https://api.github.com/repos/aionnetwork/aion/issues/676/labels{/name}","comments_url":"https://api.github.com/repos/aionnetwork/aion/issues/676/comments","events_url":"https://api.github.com/repos/aionnetwork/aion/issues/676/events","html_url":"https://github.com/aionnetwork/aion/issues/676","id":372641146,"node_id":"MDU6SXNzdWUzNzI2NDExNDY=","number":676,"title":"Check for incompatible CLI arguments","user":{"login":"AlexandraRoatis","id":31413007,"node_id":"MDQ6VXNlcjMxNDEzMDA3","avatar_url":"https://avatars2.githubusercontent.com/u/31413007?v=4","gravatar_id":"","url":"https://api.github.com/users/AlexandraRoatis","html_url":"https://github.com/AlexandraRoatis","followers_url":"https://api.github.com/users/AlexandraRoatis/followers","following_url":"https://api.github.com/users/AlexandraRoatis/following{/other_user}","gists_url":"https://api.github.com/users/AlexandraRoatis/gists{/gist_id}","starred_url":"https://api.github.com/users/AlexandraRoatis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AlexandraRoatis/subscriptions","organizations_url":"https://api.github.com/users/AlexandraRoatis/orgs","repos_url":"https://api.github.com/users/AlexandraRoatis/repos","events_url":"https://api.github.com/users/AlexandraRoatis/events{/privacy}","received_events_url":"https://api.github.com/users/AlexandraRoatis/received_events","type":"User","site_admin":false},"labels":[{"id":1075597842,"node_id":"MDU6TGFiZWwxMDc1NTk3ODQy","url":"https://api.github.com/repos/aionnetwork/aion/labels/bounty","name":"bounty","color":"0e8a16","default":false},{"id":812772739,"node_id":"MDU6TGFiZWw4MTI3NzI3Mzk=","url":"https://api.github.com/repos/aionnetwork/aion/labels/enhancement","name":"enhancement","color":"a2eeef","default":true}],"state":"open","locked":false,"assignee":{"login":"kzeine","id":28711582,"node_id":"MDQ6VXNlcjI4NzExNTgy","avatar_url":"https://avatars0.githubusercontent.com/u/28711582?v=4","gravatar_id":"","url":"https://api.github.com/users/kzeine","html_url":"https://github.com/kzeine","followers_url":"https://api.github.com/users/kzeine/followers","following_url":"https://api.github.com/users/kzeine/following{/other_user}","gists_url":"https://api.github.com/users/kzeine/gists{/gist_id}","starred_url":"https://api.github.com/users/kzeine/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kzeine/subscriptions","organizations_url":"https://api.github.com/users/kzeine/orgs","repos_url":"https://api.github.com/users/kzeine/repos","events_url":"https://api.github.com/users/kzeine/events{/privacy}","received_events_url":"https://api.github.com/users/kzeine/received_events","type":"User","site_admin":false},"assignees":[{"login":"kzeine","id":28711582,"node_id":"MDQ6VXNlcjI4NzExNTgy","avatar_url":"https://avatars0.githubusercontent.com/u/28711582?v=4","gravatar_id":"","url":"https://api.github.com/users/kzeine","html_url":"https://github.com/kzeine","followers_url":"https://api.github.com/users/kzeine/followers","following_url":"https://api.github.com/users/kzeine/following{/other_user}","gists_url":"https://api.github.com/users/kzeine/gists{/gist_id}","starred_url":"https://api.github.com/users/kzeine/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kzeine/subscriptions","organizations_url":"https://api.github.com/users/kzeine/orgs","repos_url":"https://api.github.com/users/kzeine/repos","events_url":"https://api.github.com/users/kzeine/events{/privacy}","received_events_url":"https://api.github.com/users/kzeine/received_events","type":"User","site_admin":false},{"login":"AlexandraRoatis","id":31413007,"node_id":"MDQ6VXNlcjMxNDEzMDA3","avatar_url":"https://avatars2.githubusercontent.com/u/31413007?v=4","gravatar_id":"","url":"https://api.github.com/users/AlexandraRoatis","html_url":"https://github.com/AlexandraRoatis","followers_url":"https://api.github.com/users/AlexandraRoatis/followers","following_url":"https://api.github.com/users/AlexandraRoatis/following{/other_user}","gists_url":"https://api.github.com/users/AlexandraRoatis/gists{/gist_id}","starred_url":"https://api.github.com/users/AlexandraRoatis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AlexandraRoatis/subscriptions","organizations_url":"https://api.github.com/users/AlexandraRoatis/orgs","repos_url":"https://api.github.com/users/AlexandraRoatis/repos","events_url":"https://api.github.com/users/AlexandraRoatis/events{/privacy}","received_events_url":"https://api.github.com/users/AlexandraRoatis/received_events","type":"User","site_admin":false}],"milestone":null,"comments":5,"created_at":"2018-10-22T18:28:44Z","updated_at":"2018-10-27T12:56:24Z","closed_at":null,"author_association":"CONTRIBUTOR","body":"# Introduction\r\n\r\nThis bounty request is geared towards improving the overall user experience of interacting with the Kernel through the command line options. We are constantly looking to improve and enhance features that will accelerate the development for Aion users.\r\n\r\n# Current situation\r\n\r\nThe current CLI implementation provides correct behavior by ignoring errors the user may make in selecting options that are incompatible with one another. When incompatible options are provided, only one of the options will be executed. The option that will be executed depends on the functionality ordering inside the class implementation, not on the order of the given arguments. This situation may lead some users to be puzzled by the execution behavior and can be remedied by printing warning messages in case of incompatible arguments as described below.\r\n\r\n# Task Description\r\n\r\n* Analyse the method [`call`](https://github.com/aionnetwork/aion/blob/f1db3deae290ef7b49cc1d47a7418e28e09e198e/modAionImpl/src/org/aion/zero/impl/cli/Cli.java#L85-L417) from the class [`Cli.java`](https://github.com/aionnetwork/aion/blob/master-pre-merge/modAionImpl/src/org/aion/zero/impl/cli/Cli.java) to determine which combinations of command line arguments are incompatible.\r\n* Add a new method `checkArguments(Arguments givenOptions)` to the class [`Cli.java`](https://github.com/aionnetwork/aion/blob/master-pre-merge/modAionImpl/src/org/aion/zero/impl/cli/Cli.java) that should be called after the [command line parser call](https://github.com/aionnetwork/aion/blob/f1db3deae290ef7b49cc1d47a7418e28e09e198e/modAionImpl/src/org/aion/zero/impl/cli/Cli.java#L89) where the program arguments are checked and a warning message is printed signaling that incompatible options were given.\r\n* Example:\r\n\t* The current functionality allows only one of the account options to be executed by a program call. The option to be executed depends on the ordering inside the class, not on the order of the given arguments. Therefore if a user runs the command `./aion.sh -a list -a create` the list accounts option will be ignored and the program will proceed to creating a new account. The new functionality introduced here should ensure that a meaningful message is printed for the user before the create account functionality is triggered. The message for this task would be: \r\n\t_The given arguments «-a list» and «-a create» require incompatible tasks. Only «-a create» will be executed._\r\n* The functionality must be accompanied by unit tests for the `checkArguments` method that provide full coverage of the method and illustrate how it handles varying numbers of incompatible options.\r\n\t\r\n# Acceptance Criteria\r\n\r\n- The code implements the targets described above.\r\n- The code is well documented and fully covered by unit tests.\r\n- The code is compliant with Aion's [code conventions](https://github.com/aionnetwork/aion/wiki/Aion-Code-Conventions).\r\n- The code gets merged into the main code repository.\r\n\r\n# Required Skill\r\n\r\nUsers must have the following skills and experience:\r\n- Java software development\r\n- Debugging and unit testing \r\n\r\n# Guidance\r\n\r\nDetails regarding this issue can be requested in comments.\r\nFurther technical support is available through [Gitter](https://gitter.im/aionnetwork/Lobby)."},"comment":{"url":"https://api.github.com/repos/aionnetwork/aion/issues/comments/433618015","html_url":"https://github.com/aionnetwork/aion/issues/676#issuecomment-433618015","issue_url":"https://api.github.com/repos/aionnetwork/aion/issues/676","id":433618015,"node_id":"MDEyOklzc3VlQ29tbWVudDQzMzYxODAxNQ==","user":{"login":"Destiner","id":4247901,"node_id":"MDQ6VXNlcjQyNDc5MDE=","avatar_url":"https://avatars2.githubusercontent.com/u/4247901?v=4","gravatar_id":"","url":"https://api.github.com/users/Destiner","html_url":"https://github.com/Destiner","followers_url":"https://api.github.com/users/Destiner/followers","following_url":"https://api.github.com/users/Destiner/following{/other_user}","gists_url":"https://api.github.com/users/Destiner/gists{/gist_id}","starred_url":"https://api.github.com/users/Destiner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Destiner/subscriptions","organizations_url":"https://api.github.com/users/Destiner/orgs","repos_url":"https://api.github.com/users/Destiner/repos","events_url":"https://api.github.com/users/Destiner/events{/privacy}","received_events_url":"https://api.github.com/users/Destiner/received_events","type":"User","site_admin":false},"created_at":"2018-10-27T12:56:24Z","updated_at":"2018-10-27T12:56:24Z","author_association":"NONE","body":"Quick update. Looks like the implementation is mostly done, the code is going through review."}}
{"actor":{"display_login":"Destiner"}}