{"action":"created","comment":{"url":"https://api.github.com/repos/flutter/flutter/pulls/comments/166433387","pull_request_review_id":94493899,"id":166433387,"diff_hunk":"@@ -0,0 +1,186 @@\n+// Copyright 2018 The Chromium Authors. All rights reserved.\n+// Use of this source code is governed by a BSD-style license that can be\n+// found in the LICENSE file.\n+\n+import 'dart:convert';\n+\n+import '../base/common.dart';\n+import '../base/file_system.dart';\n+import '../base/platform.dart';\n+import '../base/version.dart';\n+\n+// Include VS Code insiders (useful for debugging).\n+const bool _includeInsiders = false;\n+\n+class VsCode {\n+  static const String extensionIdentifier = 'Dart-Code.dart-code';\n+\n+  VsCode._(this.directory, this.extensionDirectory, { Version version })\n+      : this.version = version ?? Version.unknown {\n+    _init();\n+  }\n+\n+  final String directory;\n+  final String extensionDirectory;\n+  final Version version;\n+\n+  bool _isValid = false;\n+  Version extensionVersion;\n+  final List<String> _validationMessages = <String>[];","path":"packages/flutter_tools/lib/src/vscode/vscode.dart","position":29,"original_position":29,"commit_id":"96330f6504d0bf0e841a1291057f7e971a77f6ad","original_commit_id":"96330f6504d0bf0e841a1291057f7e971a77f6ad","user":{"login":"tvolkert","id":15253456,"avatar_url":"https://avatars0.githubusercontent.com/u/15253456?v=4","gravatar_id":"","url":"https://api.github.com/users/tvolkert","html_url":"https://github.com/tvolkert","followers_url":"https://api.github.com/users/tvolkert/followers","following_url":"https://api.github.com/users/tvolkert/following{/other_user}","gists_url":"https://api.github.com/users/tvolkert/gists{/gist_id}","starred_url":"https://api.github.com/users/tvolkert/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tvolkert/subscriptions","organizations_url":"https://api.github.com/users/tvolkert/orgs","repos_url":"https://api.github.com/users/tvolkert/repos","events_url":"https://api.github.com/users/tvolkert/events{/privacy}","received_events_url":"https://api.github.com/users/tvolkert/received_events","type":"User","site_admin":false},"body":"Since you allow direct access to the list, this could just be public.\r\n\r\n(alternatively, if you make the getter return a copy of the internal list, then take care to never modify the contents of the public getter in this class, which you're doing now).","created_at":"2018-02-06T20:30:34Z","updated_at":"2018-02-06T20:41:44Z","html_url":"https://github.com/flutter/flutter/pull/14463#discussion_r166433387","pull_request_url":"https://api.github.com/repos/flutter/flutter/pulls/14463","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/flutter/flutter/pulls/comments/166433387"},"html":{"href":"https://github.com/flutter/flutter/pull/14463#discussion_r166433387"},"pull_request":{"href":"https://api.github.com/repos/flutter/flutter/pulls/14463"}}},"pull_request":{"url":"https://api.github.com/repos/flutter/flutter/pulls/14463","id":167172460,"html_url":"https://github.com/flutter/flutter/pull/14463","diff_url":"https://github.com/flutter/flutter/pull/14463.diff","patch_url":"https://github.com/flutter/flutter/pull/14463.patch","issue_url":"https://api.github.com/repos/flutter/flutter/issues/14463","number":14463,"state":"open","locked":false,"title":"Add flutter doctor support for VS Code","user":{"login":"DanTup","id":1078012,"avatar_url":"https://avatars2.githubusercontent.com/u/1078012?v=4","gravatar_id":"","url":"https://api.github.com/users/DanTup","html_url":"https://github.com/DanTup","followers_url":"https://api.github.com/users/DanTup/followers","following_url":"https://api.github.com/users/DanTup/following{/other_user}","gists_url":"https://api.github.com/users/DanTup/gists{/gist_id}","starred_url":"https://api.github.com/users/DanTup/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DanTup/subscriptions","organizations_url":"https://api.github.com/users/DanTup/orgs","repos_url":"https://api.github.com/users/DanTup/repos","events_url":"https://api.github.com/users/DanTup/events{/privacy}","received_events_url":"https://api.github.com/users/DanTup/received_events","type":"User","site_admin":false},"body":"Fixes #14314.\r\n\r\nLooks in default install locations on Mac, Linux and Windows for VS Code. If found, looks in default extension location to see if Dart Code is installed.\r\n\r\nIf VS Code is not installed, nothing is reported. If VS Code is installed without Dart Code, a warning is shown.\r\n\r\nNo VS Code (no change in output):\r\n\r\n<img width=\"726\" alt=\"screen shot 2018-02-05 at 15 08 38\" src=\"https://user-images.githubusercontent.com/1078012/35811486-8423b9d8-0a86-11e8-94ea-aab7dbf51b03.png\">\r\n\r\nVS Code, no Dart Code:\r\n\r\n<img width=\"741\" alt=\"screen shot 2018-02-05 at 15 08 15\" src=\"https://user-images.githubusercontent.com/1078012/35811508-8cd0fc44-0a86-11e8-8c9f-bee9bf8aa228.png\">\r\n\r\nVS Code, with Dart Code:\r\n\r\n<img width=\"739\" alt=\"screen shot 2018-02-05 at 15 07 59\" src=\"https://user-images.githubusercontent.com/1078012/35811522-96481d16-0a86-11e8-9360-6eb5cb5e41f8.png\">\r\n\r\nI've tested this on Windows 10, Mac OS High Sierra, Ubuntu LTS but I'm rather nervous about the possibility of breaking `flutter doctor` so this may need additional testing before merging! I'm also unsure if/how we could add automated tests for this?\r\n\r\nFeel free to nitpick; this is a learning exercise!\r\n\r\n(cc @devoncarew @mit-mit)","created_at":"2018-02-05T15:22:32Z","updated_at":"2018-02-06T20:41:44Z","closed_at":null,"merged_at":null,"merge_commit_sha":"06280a16485890203aa96cfe3f2f50f1e7aa87c9","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"milestone":null,"commits_url":"https://api.github.com/repos/flutter/flutter/pulls/14463/commits","review_comments_url":"https://api.github.com/repos/flutter/flutter/pulls/14463/comments","review_comment_url":"https://api.github.com/repos/flutter/flutter/pulls/comments{/number}","comments_url":"https://api.github.com/repos/flutter/flutter/issues/14463/comments","statuses_url":"https://api.github.com/repos/flutter/flutter/statuses/96330f6504d0bf0e841a1291057f7e971a77f6ad","head":{"label":"DanTup:doctor-vscode","ref":"doctor-vscode","sha":"96330f6504d0bf0e841a1291057f7e971a77f6ad","user":{"login":"DanTup","id":1078012,"avatar_url":"https://avatars2.githubusercontent.com/u/1078012?v=4","gravatar_id":"","url":"https://api.github.com/users/DanTup","html_url":"https://github.com/DanTup","followers_url":"https://api.github.com/users/DanTup/followers","following_url":"https://api.github.com/users/DanTup/following{/other_user}","gists_url":"https://api.github.com/users/DanTup/gists{/gist_id}","starred_url":"https://api.github.com/users/DanTup/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DanTup/subscriptions","organizations_url":"https://api.github.com/users/DanTup/orgs","repos_url":"https://api.github.com/users/DanTup/repos","events_url":"https://api.github.com/users/DanTup/events{/privacy}","received_events_url":"https://api.github.com/users/DanTup/received_events","type":"User","site_admin":false},"repo":{"id":120276099,"name":"flutter","full_name":"DanTup/flutter","owner":{"login":"DanTup","id":1078012,"avatar_url":"https://avatars2.githubusercontent.com/u/1078012?v=4","gravatar_id":"","url":"https://api.github.com/users/DanTup","html_url":"https://github.com/DanTup","followers_url":"https://api.github.com/users/DanTup/followers","following_url":"https://api.github.com/users/DanTup/following{/other_user}","gists_url":"https://api.github.com/users/DanTup/gists{/gist_id}","starred_url":"https://api.github.com/users/DanTup/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DanTup/subscriptions","organizations_url":"https://api.github.com/users/DanTup/orgs","repos_url":"https://api.github.com/users/DanTup/repos","events_url":"https://api.github.com/users/DanTup/events{/privacy}","received_events_url":"https://api.github.com/users/DanTup/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/DanTup/flutter","description":"Flutter makes it easy and fast to build beautiful mobile apps.","fork":true,"url":"https://api.github.com/repos/DanTup/flutter","forks_url":"https://api.github.com/repos/DanTup/flutter/forks","keys_url":"https://api.github.com/repos/DanTup/flutter/keys{/key_id}","collaborators_url":"https://api.github.com/repos/DanTup/flutter/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/DanTup/flutter/teams","hooks_url":"https://api.github.com/repos/DanTup/flutter/hooks","issue_events_url":"https://api.github.com/repos/DanTup/flutter/issues/events{/number}","events_url":"https://api.github.com/repos/DanTup/flutter/events","assignees_url":"https://api.github.com/repos/DanTup/flutter/assignees{/user}","branches_url":"https://api.github.com/repos/DanTup/flutter/branches{/branch}","tags_url":"https://api.github.com/repos/DanTup/flutter/tags","blobs_url":"https://api.github.com/repos/DanTup/flutter/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/DanTup/flutter/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/DanTup/flutter/git/refs{/sha}","trees_url":"https://api.github.com/repos/DanTup/flutter/git/trees{/sha}","statuses_url":"https://api.github.com/repos/DanTup/flutter/statuses/{sha}","languages_url":"https://api.github.com/repos/DanTup/flutter/languages","stargazers_url":"https://api.github.com/repos/DanTup/flutter/stargazers","contributors_url":"https://api.github.com/repos/DanTup/flutter/contributors","subscribers_url":"https://api.github.com/repos/DanTup/flutter/subscribers","subscription_url":"https://api.github.com/repos/DanTup/flutter/subscription","commits_url":"https://api.github.com/repos/DanTup/flutter/commits{/sha}","git_commits_url":"https://api.github.com/repos/DanTup/flutter/git/commits{/sha}","comments_url":"https://api.github.com/repos/DanTup/flutter/comments{/number}","issue_comment_url":"https://api.github.com/repos/DanTup/flutter/issues/comments{/number}","contents_url":"https://api.github.com/repos/DanTup/flutter/contents/{+path}","compare_url":"https://api.github.com/repos/DanTup/flutter/compare/{base}...{head}","merges_url":"https://api.github.com/repos/DanTup/flutter/merges","archive_url":"https://api.github.com/repos/DanTup/flutter/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/DanTup/flutter/downloads","issues_url":"https://api.github.com/repos/DanTup/flutter/issues{/number}","pulls_url":"https://api.github.com/repos/DanTup/flutter/pulls{/number}","milestones_url":"https://api.github.com/repos/DanTup/flutter/milestones{/number}","notifications_url":"https://api.github.com/repos/DanTup/flutter/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/DanTup/flutter/labels{/name}","releases_url":"https://api.github.com/repos/DanTup/flutter/releases{/id}","deployments_url":"https://api.github.com/repos/DanTup/flutter/deployments","created_at":"2018-02-05T08:28:51Z","updated_at":"2018-02-05T08:28:59Z","pushed_at":"2018-02-06T16:17:59Z","git_url":"git://github.com/DanTup/flutter.git","ssh_url":"git@github.com:DanTup/flutter.git","clone_url":"https://github.com/DanTup/flutter.git","svn_url":"https://github.com/DanTup/flutter","homepage":"https://flutter.io","size":33998,"stargazers_count":0,"watchers_count":0,"language":"Dart","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"flutter:master","ref":"master","sha":"f0f0f097077729882f91f9c81a6310f229513aa1","user":{"login":"flutter","id":14101776,"avatar_url":"https://avatars3.githubusercontent.com/u/14101776?v=4","gravatar_id":"","url":"https://api.github.com/users/flutter","html_url":"https://github.com/flutter","followers_url":"https://api.github.com/users/flutter/followers","following_url":"https://api.github.com/users/flutter/following{/other_user}","gists_url":"https://api.github.com/users/flutter/gists{/gist_id}","starred_url":"https://api.github.com/users/flutter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/flutter/subscriptions","organizations_url":"https://api.github.com/users/flutter/orgs","repos_url":"https://api.github.com/users/flutter/repos","events_url":"https://api.github.com/users/flutter/events{/privacy}","received_events_url":"https://api.github.com/users/flutter/received_events","type":"Organization","site_admin":false},"repo":{"id":31792824,"name":"flutter","full_name":"flutter/flutter","owner":{"login":"flutter","id":14101776,"avatar_url":"https://avatars3.githubusercontent.com/u/14101776?v=4","gravatar_id":"","url":"https://api.github.com/users/flutter","html_url":"https://github.com/flutter","followers_url":"https://api.github.com/users/flutter/followers","following_url":"https://api.github.com/users/flutter/following{/other_user}","gists_url":"https://api.github.com/users/flutter/gists{/gist_id}","starred_url":"https://api.github.com/users/flutter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/flutter/subscriptions","organizations_url":"https://api.github.com/users/flutter/orgs","repos_url":"https://api.github.com/users/flutter/repos","events_url":"https://api.github.com/users/flutter/events{/privacy}","received_events_url":"https://api.github.com/users/flutter/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/flutter/flutter","description":"Flutter makes it easy and fast to build beautiful mobile apps.","fork":false,"url":"https://api.github.com/repos/flutter/flutter","forks_url":"https://api.github.com/repos/flutter/flutter/forks","keys_url":"https://api.github.com/repos/flutter/flutter/keys{/key_id}","collaborators_url":"https://api.github.com/repos/flutter/flutter/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/flutter/flutter/teams","hooks_url":"https://api.github.com/repos/flutter/flutter/hooks","issue_events_url":"https://api.github.com/repos/flutter/flutter/issues/events{/number}","events_url":"https://api.github.com/repos/flutter/flutter/events","assignees_url":"https://api.github.com/repos/flutter/flutter/assignees{/user}","branches_url":"https://api.github.com/repos/flutter/flutter/branches{/branch}","tags_url":"https://api.github.com/repos/flutter/flutter/tags","blobs_url":"https://api.github.com/repos/flutter/flutter/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/flutter/flutter/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/flutter/flutter/git/refs{/sha}","trees_url":"https://api.github.com/repos/flutter/flutter/git/trees{/sha}","statuses_url":"https://api.github.com/repos/flutter/flutter/statuses/{sha}","languages_url":"https://api.github.com/repos/flutter/flutter/languages","stargazers_url":"https://api.github.com/repos/flutter/flutter/stargazers","contributors_url":"https://api.github.com/repos/flutter/flutter/contributors","subscribers_url":"https://api.github.com/repos/flutter/flutter/subscribers","subscription_url":"https://api.github.com/repos/flutter/flutter/subscription","commits_url":"https://api.github.com/repos/flutter/flutter/commits{/sha}","git_commits_url":"https://api.github.com/repos/flutter/flutter/git/commits{/sha}","comments_url":"https://api.github.com/repos/flutter/flutter/comments{/number}","issue_comment_url":"https://api.github.com/repos/flutter/flutter/issues/comments{/number}","contents_url":"https://api.github.com/repos/flutter/flutter/contents/{+path}","compare_url":"https://api.github.com/repos/flutter/flutter/compare/{base}...{head}","merges_url":"https://api.github.com/repos/flutter/flutter/merges","archive_url":"https://api.github.com/repos/flutter/flutter/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/flutter/flutter/downloads","issues_url":"https://api.github.com/repos/flutter/flutter/issues{/number}","pulls_url":"https://api.github.com/repos/flutter/flutter/pulls{/number}","milestones_url":"https://api.github.com/repos/flutter/flutter/milestones{/number}","notifications_url":"https://api.github.com/repos/flutter/flutter/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/flutter/flutter/labels{/name}","releases_url":"https://api.github.com/repos/flutter/flutter/releases{/id}","deployments_url":"https://api.github.com/repos/flutter/flutter/deployments","created_at":"2015-03-06T22:54:58Z","updated_at":"2018-02-06T19:43:39Z","pushed_at":"2018-02-06T20:41:16Z","git_url":"git://github.com/flutter/flutter.git","ssh_url":"git@github.com:flutter/flutter.git","clone_url":"https://github.com/flutter/flutter.git","svn_url":"https://github.com/flutter/flutter","homepage":"https://flutter.io","size":34059,"stargazers_count":10082,"watchers_count":10082,"language":"Dart","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":946,"mirror_url":null,"archived":false,"open_issues_count":2194,"license":null,"forks":946,"open_issues":2194,"watchers":10082,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/flutter/flutter/pulls/14463"},"html":{"href":"https://github.com/flutter/flutter/pull/14463"},"issue":{"href":"https://api.github.com/repos/flutter/flutter/issues/14463"},"comments":{"href":"https://api.github.com/repos/flutter/flutter/issues/14463/comments"},"review_comments":{"href":"https://api.github.com/repos/flutter/flutter/pulls/14463/comments"},"review_comment":{"href":"https://api.github.com/repos/flutter/flutter/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/flutter/flutter/pulls/14463/commits"},"statuses":{"href":"https://api.github.com/repos/flutter/flutter/statuses/96330f6504d0bf0e841a1291057f7e971a77f6ad"}},"author_association":"NONE"}}
{"actor":{"display_login":"tvolkert"}}