{"action":"opened","issue":{"url":"https://api.github.com/repos/notion-cli/notion/issues/31","repository_url":"https://api.github.com/repos/notion-cli/notion","labels_url":"https://api.github.com/repos/notion-cli/notion/issues/31/labels{/name}","comments_url":"https://api.github.com/repos/notion-cli/notion/issues/31/comments","events_url":"https://api.github.com/repos/notion-cli/notion/issues/31/events","html_url":"https://github.com/notion-cli/notion/issues/31","id":294821557,"number":31,"title":"use serde and semver instead of hand-written logic","user":{"login":"dherman","id":307871,"avatar_url":"https://avatars2.githubusercontent.com/u/307871?v=4","gravatar_id":"","url":"https://api.github.com/users/dherman","html_url":"https://github.com/dherman","followers_url":"https://api.github.com/users/dherman/followers","following_url":"https://api.github.com/users/dherman/following{/other_user}","gists_url":"https://api.github.com/users/dherman/gists{/gist_id}","starred_url":"https://api.github.com/users/dherman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dherman/subscriptions","organizations_url":"https://api.github.com/users/dherman/orgs","repos_url":"https://api.github.com/users/dherman/repos","events_url":"https://api.github.com/users/dherman/events{/privacy}","received_events_url":"https://api.github.com/users/dherman/received_events","type":"User","site_admin":false},"labels":[{"id":808475346,"url":"https://api.github.com/repos/notion-cli/notion/labels/code%20quality","name":"code quality","color":"60f291","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/notion-cli/notion/milestones/1","html_url":"https://github.com/notion-cli/notion/milestone/1","labels_url":"https://api.github.com/repos/notion-cli/notion/milestones/1/labels","id":3033546,"number":1,"title":"Minimum Viable Product","description":"The MVP should be able to demonstrate a few things:\r\n\r\n- A pleasant experience for open source projects.\r\n- Installation in both Unix and Windows.\r\n- Basic plugin support for custom provisioning, demo-able with one company (using LinkedIn as initial test case).\r\n","creator":{"login":"dherman","id":307871,"avatar_url":"https://avatars2.githubusercontent.com/u/307871?v=4","gravatar_id":"","url":"https://api.github.com/users/dherman","html_url":"https://github.com/dherman","followers_url":"https://api.github.com/users/dherman/followers","following_url":"https://api.github.com/users/dherman/following{/other_user}","gists_url":"https://api.github.com/users/dherman/gists{/gist_id}","starred_url":"https://api.github.com/users/dherman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dherman/subscriptions","organizations_url":"https://api.github.com/users/dherman/orgs","repos_url":"https://api.github.com/users/dherman/repos","events_url":"https://api.github.com/users/dherman/events{/privacy}","received_events_url":"https://api.github.com/users/dherman/received_events","type":"User","site_admin":false},"open_issues":8,"closed_issues":2,"state":"open","created_at":"2018-01-14T02:42:23Z","updated_at":"2018-02-06T16:21:47Z","due_on":null,"closed_at":null},"comments":0,"created_at":"2018-02-06T16:21:47Z","updated_at":"2018-02-06T16:21:47Z","closed_at":null,"author_association":"COLLABORATOR","body":"Path to eliminating the hand-written logic for version data structures and for serialization of various data structures:\r\n\r\n- [x] config should use serde (with an IR if necessary)\r\n- [x] config should match the structure of RFC1 — just one hook for now\r\n- [x] catalog should store versions as an ordered, sorted collection\r\n- [x] catalog should support a resolve method that finds an available version that matches a spec\r\n- [x] move most Tool logic to Node, for now tailored to specifically being the Node launcher\r\n- [x] create a new top level Node launcher separate from launchbin/launchscript\r\n- [x] rename notion/main.rs to notion/notion.rs\r\n- [x] Node::new() should call session.node(&mut self) and get back the Version, instead of session.node_version()\r\n- [x] session.node() should check for project and if so get a VersionReq, otherwise use the current catalog Version\r\n- [x] when session.node() gets a VersionReq, try to find one already in catalog and return that\r\n- [x] when session.node() gets a VersionReq and there’s none in catalog, either use resolution plugin or default resolution logic\r\n- [x] config should have an IR for serialization\r\n- [ ] default resolution logic should consult https://nodejs.org/dist/index.json but for now can hard-code a few versions\r\n- [ ] plugin resolution logic should call the executable\r\n- [ ] manifest should parse using serde\r\n- [ ] manifest should just return the VersionReq, not do the logic of installing\r\n- [ ] kill the lockfile module entirely\r\n- [ ] kill the untoml module entirely\r\n- [ ] kill the version module entirely\r\n- [ ] session.install_node() should ask the catalog to do the fetching if it has a VersionReq\r\n- [ ] catalog should initiate the plugin’s resolution protocol if it needs to resolve a VersionReq\r\n"}}
{"actor":{"display_login":"dherman"}}