{"action":"closed","number":389,"pull_request":{"url":"https://api.github.com/repos/atomist/sdm/pulls/389","id":191012371,"html_url":"https://github.com/atomist/sdm/pull/389","diff_url":"https://github.com/atomist/sdm/pull/389.diff","patch_url":"https://github.com/atomist/sdm/pull/389.patch","issue_url":"https://api.github.com/repos/atomist/sdm/issues/389","number":389,"state":"closed","locked":false,"title":"Make SoftwareDeliveryMachine an interface","user":{"login":"johnsonr","id":1916583,"avatar_url":"https://avatars3.githubusercontent.com/u/1916583?v=4","gravatar_id":"","url":"https://api.github.com/users/johnsonr","html_url":"https://github.com/johnsonr","followers_url":"https://api.github.com/users/johnsonr/followers","following_url":"https://api.github.com/users/johnsonr/following{/other_user}","gists_url":"https://api.github.com/users/johnsonr/gists{/gist_id}","starred_url":"https://api.github.com/users/johnsonr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johnsonr/subscriptions","organizations_url":"https://api.github.com/users/johnsonr/orgs","repos_url":"https://api.github.com/users/johnsonr/repos","events_url":"https://api.github.com/users/johnsonr/events{/privacy}","received_events_url":"https://api.github.com/users/johnsonr/received_events","type":"User","site_admin":false},"body":"Make `SoftwareDeliveryMachine` an interface. This is important because it allows downstream projects to depend only on interfaces, minimizing the likelihood of version conflicts. For example, we could pull out an `sdm-api` module. Capability \"packs\" could depend only on that, meaning that their SDM version doesn't complicate downstream projects' node modules.\r\n\r\nMinor incompatibility: Machine construction now uses `machineFactory.createSoftwareDeliveryMachine` rather than instantiating a `SoftwareDeliveryMachine` directly.","created_at":"2018-05-29T00:58:31Z","updated_at":"2018-05-29T03:34:38Z","closed_at":"2018-05-29T03:34:38Z","merged_at":"2018-05-29T03:34:38Z","merge_commit_sha":"ce2c0eadbd40c3a2c687fb3b97a890d3816a2096","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/atomist/sdm/pulls/389/commits","review_comments_url":"https://api.github.com/repos/atomist/sdm/pulls/389/comments","review_comment_url":"https://api.github.com/repos/atomist/sdm/pulls/comments{/number}","comments_url":"https://api.github.com/repos/atomist/sdm/issues/389/comments","statuses_url":"https://api.github.com/repos/atomist/sdm/statuses/18113ef029e7df111bf24d360d8378daa56c1b9f","head":{"label":"atomist:interface","ref":"interface","sha":"18113ef029e7df111bf24d360d8378daa56c1b9f","user":{"login":"atomist","id":19392,"avatar_url":"https://avatars3.githubusercontent.com/u/19392?v=4","gravatar_id":"","url":"https://api.github.com/users/atomist","html_url":"https://github.com/atomist","followers_url":"https://api.github.com/users/atomist/followers","following_url":"https://api.github.com/users/atomist/following{/other_user}","gists_url":"https://api.github.com/users/atomist/gists{/gist_id}","starred_url":"https://api.github.com/users/atomist/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/atomist/subscriptions","organizations_url":"https://api.github.com/users/atomist/orgs","repos_url":"https://api.github.com/users/atomist/repos","events_url":"https://api.github.com/users/atomist/events{/privacy}","received_events_url":"https://api.github.com/users/atomist/received_events","type":"Organization","site_admin":false},"repo":{"id":118969370,"name":"sdm","full_name":"atomist/sdm","owner":{"login":"atomist","id":19392,"avatar_url":"https://avatars3.githubusercontent.com/u/19392?v=4","gravatar_id":"","url":"https://api.github.com/users/atomist","html_url":"https://github.com/atomist","followers_url":"https://api.github.com/users/atomist/followers","following_url":"https://api.github.com/users/atomist/following{/other_user}","gists_url":"https://api.github.com/users/atomist/gists{/gist_id}","starred_url":"https://api.github.com/users/atomist/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/atomist/subscriptions","organizations_url":"https://api.github.com/users/atomist/orgs","repos_url":"https://api.github.com/users/atomist/repos","events_url":"https://api.github.com/users/atomist/events{/privacy}","received_events_url":"https://api.github.com/users/atomist/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/atomist/sdm","description":"Atomist Software Delivery Machine framework","fork":false,"url":"https://api.github.com/repos/atomist/sdm","forks_url":"https://api.github.com/repos/atomist/sdm/forks","keys_url":"https://api.github.com/repos/atomist/sdm/keys{/key_id}","collaborators_url":"https://api.github.com/repos/atomist/sdm/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/atomist/sdm/teams","hooks_url":"https://api.github.com/repos/atomist/sdm/hooks","issue_events_url":"https://api.github.com/repos/atomist/sdm/issues/events{/number}","events_url":"https://api.github.com/repos/atomist/sdm/events","assignees_url":"https://api.github.com/repos/atomist/sdm/assignees{/user}","branches_url":"https://api.github.com/repos/atomist/sdm/branches{/branch}","tags_url":"https://api.github.com/repos/atomist/sdm/tags","blobs_url":"https://api.github.com/repos/atomist/sdm/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/atomist/sdm/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/atomist/sdm/git/refs{/sha}","trees_url":"https://api.github.com/repos/atomist/sdm/git/trees{/sha}","statuses_url":"https://api.github.com/repos/atomist/sdm/statuses/{sha}","languages_url":"https://api.github.com/repos/atomist/sdm/languages","stargazers_url":"https://api.github.com/repos/atomist/sdm/stargazers","contributors_url":"https://api.github.com/repos/atomist/sdm/contributors","subscribers_url":"https://api.github.com/repos/atomist/sdm/subscribers","subscription_url":"https://api.github.com/repos/atomist/sdm/subscription","commits_url":"https://api.github.com/repos/atomist/sdm/commits{/sha}","git_commits_url":"https://api.github.com/repos/atomist/sdm/git/commits{/sha}","comments_url":"https://api.github.com/repos/atomist/sdm/comments{/number}","issue_comment_url":"https://api.github.com/repos/atomist/sdm/issues/comments{/number}","contents_url":"https://api.github.com/repos/atomist/sdm/contents/{+path}","compare_url":"https://api.github.com/repos/atomist/sdm/compare/{base}...{head}","merges_url":"https://api.github.com/repos/atomist/sdm/merges","archive_url":"https://api.github.com/repos/atomist/sdm/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/atomist/sdm/downloads","issues_url":"https://api.github.com/repos/atomist/sdm/issues{/number}","pulls_url":"https://api.github.com/repos/atomist/sdm/pulls{/number}","milestones_url":"https://api.github.com/repos/atomist/sdm/milestones{/number}","notifications_url":"https://api.github.com/repos/atomist/sdm/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/atomist/sdm/labels{/name}","releases_url":"https://api.github.com/repos/atomist/sdm/releases{/id}","deployments_url":"https://api.github.com/repos/atomist/sdm/deployments","created_at":"2018-01-25T21:23:17Z","updated_at":"2018-05-28T23:39:52Z","pushed_at":"2018-05-29T03:34:38Z","git_url":"git://github.com/atomist/sdm.git","ssh_url":"git@github.com:atomist/sdm.git","clone_url":"https://github.com/atomist/sdm.git","svn_url":"https://github.com/atomist/sdm","homepage":"","size":13330,"stargazers_count":16,"watchers_count":16,"language":"TypeScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":5,"mirror_url":null,"archived":false,"open_issues_count":75,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":5,"open_issues":75,"watchers":16,"default_branch":"master"}},"base":{"label":"atomist:master","ref":"master","sha":"2787e78357d471968935600c6b3906543ba7422e","user":{"login":"atomist","id":19392,"avatar_url":"https://avatars3.githubusercontent.com/u/19392?v=4","gravatar_id":"","url":"https://api.github.com/users/atomist","html_url":"https://github.com/atomist","followers_url":"https://api.github.com/users/atomist/followers","following_url":"https://api.github.com/users/atomist/following{/other_user}","gists_url":"https://api.github.com/users/atomist/gists{/gist_id}","starred_url":"https://api.github.com/users/atomist/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/atomist/subscriptions","organizations_url":"https://api.github.com/users/atomist/orgs","repos_url":"https://api.github.com/users/atomist/repos","events_url":"https://api.github.com/users/atomist/events{/privacy}","received_events_url":"https://api.github.com/users/atomist/received_events","type":"Organization","site_admin":false},"repo":{"id":118969370,"name":"sdm","full_name":"atomist/sdm","owner":{"login":"atomist","id":19392,"avatar_url":"https://avatars3.githubusercontent.com/u/19392?v=4","gravatar_id":"","url":"https://api.github.com/users/atomist","html_url":"https://github.com/atomist","followers_url":"https://api.github.com/users/atomist/followers","following_url":"https://api.github.com/users/atomist/following{/other_user}","gists_url":"https://api.github.com/users/atomist/gists{/gist_id}","starred_url":"https://api.github.com/users/atomist/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/atomist/subscriptions","organizations_url":"https://api.github.com/users/atomist/orgs","repos_url":"https://api.github.com/users/atomist/repos","events_url":"https://api.github.com/users/atomist/events{/privacy}","received_events_url":"https://api.github.com/users/atomist/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/atomist/sdm","description":"Atomist Software Delivery Machine framework","fork":false,"url":"https://api.github.com/repos/atomist/sdm","forks_url":"https://api.github.com/repos/atomist/sdm/forks","keys_url":"https://api.github.com/repos/atomist/sdm/keys{/key_id}","collaborators_url":"https://api.github.com/repos/atomist/sdm/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/atomist/sdm/teams","hooks_url":"https://api.github.com/repos/atomist/sdm/hooks","issue_events_url":"https://api.github.com/repos/atomist/sdm/issues/events{/number}","events_url":"https://api.github.com/repos/atomist/sdm/events","assignees_url":"https://api.github.com/repos/atomist/sdm/assignees{/user}","branches_url":"https://api.github.com/repos/atomist/sdm/branches{/branch}","tags_url":"https://api.github.com/repos/atomist/sdm/tags","blobs_url":"https://api.github.com/repos/atomist/sdm/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/atomist/sdm/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/atomist/sdm/git/refs{/sha}","trees_url":"https://api.github.com/repos/atomist/sdm/git/trees{/sha}","statuses_url":"https://api.github.com/repos/atomist/sdm/statuses/{sha}","languages_url":"https://api.github.com/repos/atomist/sdm/languages","stargazers_url":"https://api.github.com/repos/atomist/sdm/stargazers","contributors_url":"https://api.github.com/repos/atomist/sdm/contributors","subscribers_url":"https://api.github.com/repos/atomist/sdm/subscribers","subscription_url":"https://api.github.com/repos/atomist/sdm/subscription","commits_url":"https://api.github.com/repos/atomist/sdm/commits{/sha}","git_commits_url":"https://api.github.com/repos/atomist/sdm/git/commits{/sha}","comments_url":"https://api.github.com/repos/atomist/sdm/comments{/number}","issue_comment_url":"https://api.github.com/repos/atomist/sdm/issues/comments{/number}","contents_url":"https://api.github.com/repos/atomist/sdm/contents/{+path}","compare_url":"https://api.github.com/repos/atomist/sdm/compare/{base}...{head}","merges_url":"https://api.github.com/repos/atomist/sdm/merges","archive_url":"https://api.github.com/repos/atomist/sdm/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/atomist/sdm/downloads","issues_url":"https://api.github.com/repos/atomist/sdm/issues{/number}","pulls_url":"https://api.github.com/repos/atomist/sdm/pulls{/number}","milestones_url":"https://api.github.com/repos/atomist/sdm/milestones{/number}","notifications_url":"https://api.github.com/repos/atomist/sdm/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/atomist/sdm/labels{/name}","releases_url":"https://api.github.com/repos/atomist/sdm/releases{/id}","deployments_url":"https://api.github.com/repos/atomist/sdm/deployments","created_at":"2018-01-25T21:23:17Z","updated_at":"2018-05-28T23:39:52Z","pushed_at":"2018-05-29T03:34:38Z","git_url":"git://github.com/atomist/sdm.git","ssh_url":"git@github.com:atomist/sdm.git","clone_url":"https://github.com/atomist/sdm.git","svn_url":"https://github.com/atomist/sdm","homepage":"","size":13330,"stargazers_count":16,"watchers_count":16,"language":"TypeScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":5,"mirror_url":null,"archived":false,"open_issues_count":75,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":5,"open_issues":75,"watchers":16,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/atomist/sdm/pulls/389"},"html":{"href":"https://github.com/atomist/sdm/pull/389"},"issue":{"href":"https://api.github.com/repos/atomist/sdm/issues/389"},"comments":{"href":"https://api.github.com/repos/atomist/sdm/issues/389/comments"},"review_comments":{"href":"https://api.github.com/repos/atomist/sdm/pulls/389/comments"},"review_comment":{"href":"https://api.github.com/repos/atomist/sdm/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/atomist/sdm/pulls/389/commits"},"statuses":{"href":"https://api.github.com/repos/atomist/sdm/statuses/18113ef029e7df111bf24d360d8378daa56c1b9f"}},"author_association":"CONTRIBUTOR","merged":true,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":{"login":"jessitron","id":1149737,"avatar_url":"https://avatars2.githubusercontent.com/u/1149737?v=4","gravatar_id":"","url":"https://api.github.com/users/jessitron","html_url":"https://github.com/jessitron","followers_url":"https://api.github.com/users/jessitron/followers","following_url":"https://api.github.com/users/jessitron/following{/other_user}","gists_url":"https://api.github.com/users/jessitron/gists{/gist_id}","starred_url":"https://api.github.com/users/jessitron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jessitron/subscriptions","organizations_url":"https://api.github.com/users/jessitron/orgs","repos_url":"https://api.github.com/users/jessitron/repos","events_url":"https://api.github.com/users/jessitron/events{/privacy}","received_events_url":"https://api.github.com/users/jessitron/received_events","type":"User","site_admin":false},"comments":0,"review_comments":0,"maintainer_can_modify":false,"commits":7,"additions":859,"deletions":507,"changed_files":17}}
{"actor":{"display_login":"jessitron"}}