{"action":"created","comment":{"url":"https://api.github.com/repos/aspnet/KRuntime/pulls/comments/23057842","id":23057842,"diff_hunk":"@@ -0,0 +1,80 @@\n+﻿// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.\n+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\n+\n+using System;\n+using System.IO;\n+using NuGet;\n+\n+namespace Microsoft.Framework.Runtime.Servicing\n+{\n+    internal class ServicingBreadcrumbs\n+    {\n+        private readonly string _breadcrumbsFolder;\n+\n+        public ServicingBreadcrumbs()\n+            : this(ResolveBreadcrumbsFolder())\n+        {\n+        }\n+\n+        internal ServicingBreadcrumbs(string breadcrumbsFolder)\n+        {\n+            // If the directory doesn't exist, don't create it because it\n+            // needs special permissions on it\n+            _breadcrumbsFolder = Directory.Exists(breadcrumbsFolder) ? breadcrumbsFolder : null; ;\n+        }\n+\n+        public static bool IsPackageServiceable(IPackage package)\n+        {\n+            // TODO: Figure out what makes a package serviceable\n+            return true;\n+        }\n+\n+        public void LeaveBreadcrumb(string packageId, SemanticVersion packageVersion)\n+        {\n+            if (string.IsNullOrWhiteSpace(_breadcrumbsFolder))\n+            {\n+                return;\n+            }\n+\n+            // Create both files for now until we get clear instructions about the format of the name\n+            CreateBreadcrumbfile(packageId);\n+            CreateBreadcrumbfile(packageId + \".\" + packageVersion);\n+        }\n+\n+        private static string ResolveBreadcrumbsFolder()\n+        {\n+            var programDataFolder = Environment.GetEnvironmentVariable(\"ProgramData\");","path":"src/Microsoft.Framework.Runtime/Servicing/ServicingBreadcrumbs.cs","position":46,"original_position":46,"commit_id":"5422607bfb55da6ab31f4e9fe71d5f19881bdff3","original_commit_id":"5422607bfb55da6ab31f4e9fe71d5f19881bdff3","user":{"login":"GrabYourPitchforks","id":1746272,"avatar_url":"https://avatars.githubusercontent.com/u/1746272?v=3","gravatar_id":"","url":"https://api.github.com/users/GrabYourPitchforks","html_url":"https://github.com/GrabYourPitchforks","followers_url":"https://api.github.com/users/GrabYourPitchforks/followers","following_url":"https://api.github.com/users/GrabYourPitchforks/following{/other_user}","gists_url":"https://api.github.com/users/GrabYourPitchforks/gists{/gist_id}","starred_url":"https://api.github.com/users/GrabYourPitchforks/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GrabYourPitchforks/subscriptions","organizations_url":"https://api.github.com/users/GrabYourPitchforks/orgs","repos_url":"https://api.github.com/users/GrabYourPitchforks/repos","events_url":"https://api.github.com/users/GrabYourPitchforks/events{/privacy}","received_events_url":"https://api.github.com/users/GrabYourPitchforks/received_events","type":"User","site_admin":false},"body":"Consider using SpecialFolder.CommonApplicationData instead so that we're not hardcoding this.","created_at":"2015-01-16T01:19:28Z","updated_at":"2015-01-16T01:19:28Z","html_url":"https://github.com/aspnet/KRuntime/pull/1078#discussion_r23057842","pull_request_url":"https://api.github.com/repos/aspnet/KRuntime/pulls/1078","_links":{"self":{"href":"https://api.github.com/repos/aspnet/KRuntime/pulls/comments/23057842"},"html":{"href":"https://github.com/aspnet/KRuntime/pull/1078#discussion_r23057842"},"pull_request":{"href":"https://api.github.com/repos/aspnet/KRuntime/pulls/1078"}}},"pull_request":{"url":"https://api.github.com/repos/aspnet/KRuntime/pulls/1078","id":27477095,"html_url":"https://github.com/aspnet/KRuntime/pull/1078","diff_url":"https://github.com/aspnet/KRuntime/pull/1078.diff","patch_url":"https://github.com/aspnet/KRuntime/pull/1078.patch","issue_url":"https://api.github.com/repos/aspnet/KRuntime/issues/1078","number":1078,"state":"open","locked":false,"title":"Breadcrumbs for servicing","user":{"login":"victorhurdugaci","id":5921642,"avatar_url":"https://avatars.githubusercontent.com/u/5921642?v=3","gravatar_id":"","url":"https://api.github.com/users/victorhurdugaci","html_url":"https://github.com/victorhurdugaci","followers_url":"https://api.github.com/users/victorhurdugaci/followers","following_url":"https://api.github.com/users/victorhurdugaci/following{/other_user}","gists_url":"https://api.github.com/users/victorhurdugaci/gists{/gist_id}","starred_url":"https://api.github.com/users/victorhurdugaci/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/victorhurdugaci/subscriptions","organizations_url":"https://api.github.com/users/victorhurdugaci/orgs","repos_url":"https://api.github.com/users/victorhurdugaci/repos","events_url":"https://api.github.com/users/victorhurdugaci/events{/privacy}","received_events_url":"https://api.github.com/users/victorhurdugaci/received_events","type":"User","site_admin":false},"body":"It still has a TODO for what should be the marker for the serviceable package and that check returns true all the time.\r\nCurrently there are two files created (with and without version).\r\n\r\n@glennc @lodejard @loudej @GrabYourPitchforks @davidfowl ","created_at":"2015-01-16T01:07:44Z","updated_at":"2015-01-16T01:19:28Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3d2558849ac244f6c4d0841d0493025e0e6c6965","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/aspnet/KRuntime/pulls/1078/commits","review_comments_url":"https://api.github.com/repos/aspnet/KRuntime/pulls/1078/comments","review_comment_url":"https://api.github.com/repos/aspnet/KRuntime/pulls/comments/{number}","comments_url":"https://api.github.com/repos/aspnet/KRuntime/issues/1078/comments","statuses_url":"https://api.github.com/repos/aspnet/KRuntime/statuses/5422607bfb55da6ab31f4e9fe71d5f19881bdff3","head":{"label":"aspnet:breadcrumbs","ref":"breadcrumbs","sha":"5422607bfb55da6ab31f4e9fe71d5f19881bdff3","user":{"login":"aspnet","id":6476660,"avatar_url":"https://avatars.githubusercontent.com/u/6476660?v=3","gravatar_id":"","url":"https://api.github.com/users/aspnet","html_url":"https://github.com/aspnet","followers_url":"https://api.github.com/users/aspnet/followers","following_url":"https://api.github.com/users/aspnet/following{/other_user}","gists_url":"https://api.github.com/users/aspnet/gists{/gist_id}","starred_url":"https://api.github.com/users/aspnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aspnet/subscriptions","organizations_url":"https://api.github.com/users/aspnet/orgs","repos_url":"https://api.github.com/users/aspnet/repos","events_url":"https://api.github.com/users/aspnet/events{/privacy}","received_events_url":"https://api.github.com/users/aspnet/received_events","type":"Organization","site_admin":false},"repo":{"id":14225208,"name":"KRuntime","full_name":"aspnet/KRuntime","owner":{"login":"aspnet","id":6476660,"avatar_url":"https://avatars.githubusercontent.com/u/6476660?v=3","gravatar_id":"","url":"https://api.github.com/users/aspnet","html_url":"https://github.com/aspnet","followers_url":"https://api.github.com/users/aspnet/followers","following_url":"https://api.github.com/users/aspnet/following{/other_user}","gists_url":"https://api.github.com/users/aspnet/gists{/gist_id}","starred_url":"https://api.github.com/users/aspnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aspnet/subscriptions","organizations_url":"https://api.github.com/users/aspnet/orgs","repos_url":"https://api.github.com/users/aspnet/repos","events_url":"https://api.github.com/users/aspnet/events{/privacy}","received_events_url":"https://api.github.com/users/aspnet/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/aspnet/KRuntime","description":"The code required to bootstrap and run an ASP.NET vNext application, including the compilation system, SDK tools, and the native CLR hosts.","fork":false,"url":"https://api.github.com/repos/aspnet/KRuntime","forks_url":"https://api.github.com/repos/aspnet/KRuntime/forks","keys_url":"https://api.github.com/repos/aspnet/KRuntime/keys{/key_id}","collaborators_url":"https://api.github.com/repos/aspnet/KRuntime/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/aspnet/KRuntime/teams","hooks_url":"https://api.github.com/repos/aspnet/KRuntime/hooks","issue_events_url":"https://api.github.com/repos/aspnet/KRuntime/issues/events{/number}","events_url":"https://api.github.com/repos/aspnet/KRuntime/events","assignees_url":"https://api.github.com/repos/aspnet/KRuntime/assignees{/user}","branches_url":"https://api.github.com/repos/aspnet/KRuntime/branches{/branch}","tags_url":"https://api.github.com/repos/aspnet/KRuntime/tags","blobs_url":"https://api.github.com/repos/aspnet/KRuntime/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/aspnet/KRuntime/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/aspnet/KRuntime/git/refs{/sha}","trees_url":"https://api.github.com/repos/aspnet/KRuntime/git/trees{/sha}","statuses_url":"https://api.github.com/repos/aspnet/KRuntime/statuses/{sha}","languages_url":"https://api.github.com/repos/aspnet/KRuntime/languages","stargazers_url":"https://api.github.com/repos/aspnet/KRuntime/stargazers","contributors_url":"https://api.github.com/repos/aspnet/KRuntime/contributors","subscribers_url":"https://api.github.com/repos/aspnet/KRuntime/subscribers","subscription_url":"https://api.github.com/repos/aspnet/KRuntime/subscription","commits_url":"https://api.github.com/repos/aspnet/KRuntime/commits{/sha}","git_commits_url":"https://api.github.com/repos/aspnet/KRuntime/git/commits{/sha}","comments_url":"https://api.github.com/repos/aspnet/KRuntime/comments{/number}","issue_comment_url":"https://api.github.com/repos/aspnet/KRuntime/issues/comments/{number}","contents_url":"https://api.github.com/repos/aspnet/KRuntime/contents/{+path}","compare_url":"https://api.github.com/repos/aspnet/KRuntime/compare/{base}...{head}","merges_url":"https://api.github.com/repos/aspnet/KRuntime/merges","archive_url":"https://api.github.com/repos/aspnet/KRuntime/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/aspnet/KRuntime/downloads","issues_url":"https://api.github.com/repos/aspnet/KRuntime/issues{/number}","pulls_url":"https://api.github.com/repos/aspnet/KRuntime/pulls{/number}","milestones_url":"https://api.github.com/repos/aspnet/KRuntime/milestones{/number}","notifications_url":"https://api.github.com/repos/aspnet/KRuntime/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/aspnet/KRuntime/labels{/name}","releases_url":"https://api.github.com/repos/aspnet/KRuntime/releases{/id}","created_at":"2013-11-08T06:01:29Z","updated_at":"2015-01-16T00:10:40Z","pushed_at":"2015-01-16T01:03:21Z","git_url":"git://github.com/aspnet/KRuntime.git","ssh_url":"git@github.com:aspnet/KRuntime.git","clone_url":"https://github.com/aspnet/KRuntime.git","svn_url":"https://github.com/aspnet/KRuntime","homepage":"","size":27350,"stargazers_count":436,"watchers_count":436,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":108,"mirror_url":null,"open_issues_count":231,"forks":108,"open_issues":231,"watchers":436,"default_branch":"dev"}},"base":{"label":"aspnet:dev","ref":"dev","sha":"3771086fe2035b46c3a75cc5788f25cb0af028de","user":{"login":"aspnet","id":6476660,"avatar_url":"https://avatars.githubusercontent.com/u/6476660?v=3","gravatar_id":"","url":"https://api.github.com/users/aspnet","html_url":"https://github.com/aspnet","followers_url":"https://api.github.com/users/aspnet/followers","following_url":"https://api.github.com/users/aspnet/following{/other_user}","gists_url":"https://api.github.com/users/aspnet/gists{/gist_id}","starred_url":"https://api.github.com/users/aspnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aspnet/subscriptions","organizations_url":"https://api.github.com/users/aspnet/orgs","repos_url":"https://api.github.com/users/aspnet/repos","events_url":"https://api.github.com/users/aspnet/events{/privacy}","received_events_url":"https://api.github.com/users/aspnet/received_events","type":"Organization","site_admin":false},"repo":{"id":14225208,"name":"KRuntime","full_name":"aspnet/KRuntime","owner":{"login":"aspnet","id":6476660,"avatar_url":"https://avatars.githubusercontent.com/u/6476660?v=3","gravatar_id":"","url":"https://api.github.com/users/aspnet","html_url":"https://github.com/aspnet","followers_url":"https://api.github.com/users/aspnet/followers","following_url":"https://api.github.com/users/aspnet/following{/other_user}","gists_url":"https://api.github.com/users/aspnet/gists{/gist_id}","starred_url":"https://api.github.com/users/aspnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aspnet/subscriptions","organizations_url":"https://api.github.com/users/aspnet/orgs","repos_url":"https://api.github.com/users/aspnet/repos","events_url":"https://api.github.com/users/aspnet/events{/privacy}","received_events_url":"https://api.github.com/users/aspnet/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/aspnet/KRuntime","description":"The code required to bootstrap and run an ASP.NET vNext application, including the compilation system, SDK tools, and the native CLR hosts.","fork":false,"url":"https://api.github.com/repos/aspnet/KRuntime","forks_url":"https://api.github.com/repos/aspnet/KRuntime/forks","keys_url":"https://api.github.com/repos/aspnet/KRuntime/keys{/key_id}","collaborators_url":"https://api.github.com/repos/aspnet/KRuntime/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/aspnet/KRuntime/teams","hooks_url":"https://api.github.com/repos/aspnet/KRuntime/hooks","issue_events_url":"https://api.github.com/repos/aspnet/KRuntime/issues/events{/number}","events_url":"https://api.github.com/repos/aspnet/KRuntime/events","assignees_url":"https://api.github.com/repos/aspnet/KRuntime/assignees{/user}","branches_url":"https://api.github.com/repos/aspnet/KRuntime/branches{/branch}","tags_url":"https://api.github.com/repos/aspnet/KRuntime/tags","blobs_url":"https://api.github.com/repos/aspnet/KRuntime/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/aspnet/KRuntime/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/aspnet/KRuntime/git/refs{/sha}","trees_url":"https://api.github.com/repos/aspnet/KRuntime/git/trees{/sha}","statuses_url":"https://api.github.com/repos/aspnet/KRuntime/statuses/{sha}","languages_url":"https://api.github.com/repos/aspnet/KRuntime/languages","stargazers_url":"https://api.github.com/repos/aspnet/KRuntime/stargazers","contributors_url":"https://api.github.com/repos/aspnet/KRuntime/contributors","subscribers_url":"https://api.github.com/repos/aspnet/KRuntime/subscribers","subscription_url":"https://api.github.com/repos/aspnet/KRuntime/subscription","commits_url":"https://api.github.com/repos/aspnet/KRuntime/commits{/sha}","git_commits_url":"https://api.github.com/repos/aspnet/KRuntime/git/commits{/sha}","comments_url":"https://api.github.com/repos/aspnet/KRuntime/comments{/number}","issue_comment_url":"https://api.github.com/repos/aspnet/KRuntime/issues/comments/{number}","contents_url":"https://api.github.com/repos/aspnet/KRuntime/contents/{+path}","compare_url":"https://api.github.com/repos/aspnet/KRuntime/compare/{base}...{head}","merges_url":"https://api.github.com/repos/aspnet/KRuntime/merges","archive_url":"https://api.github.com/repos/aspnet/KRuntime/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/aspnet/KRuntime/downloads","issues_url":"https://api.github.com/repos/aspnet/KRuntime/issues{/number}","pulls_url":"https://api.github.com/repos/aspnet/KRuntime/pulls{/number}","milestones_url":"https://api.github.com/repos/aspnet/KRuntime/milestones{/number}","notifications_url":"https://api.github.com/repos/aspnet/KRuntime/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/aspnet/KRuntime/labels{/name}","releases_url":"https://api.github.com/repos/aspnet/KRuntime/releases{/id}","created_at":"2013-11-08T06:01:29Z","updated_at":"2015-01-16T00:10:40Z","pushed_at":"2015-01-16T01:03:21Z","git_url":"git://github.com/aspnet/KRuntime.git","ssh_url":"git@github.com:aspnet/KRuntime.git","clone_url":"https://github.com/aspnet/KRuntime.git","svn_url":"https://github.com/aspnet/KRuntime","homepage":"","size":27350,"stargazers_count":436,"watchers_count":436,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":108,"mirror_url":null,"open_issues_count":231,"forks":108,"open_issues":231,"watchers":436,"default_branch":"dev"}},"_links":{"self":{"href":"https://api.github.com/repos/aspnet/KRuntime/pulls/1078"},"html":{"href":"https://github.com/aspnet/KRuntime/pull/1078"},"issue":{"href":"https://api.github.com/repos/aspnet/KRuntime/issues/1078"},"comments":{"href":"https://api.github.com/repos/aspnet/KRuntime/issues/1078/comments"},"review_comments":{"href":"https://api.github.com/repos/aspnet/KRuntime/pulls/1078/comments"},"review_comment":{"href":"https://api.github.com/repos/aspnet/KRuntime/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/aspnet/KRuntime/pulls/1078/commits"},"statuses":{"href":"https://api.github.com/repos/aspnet/KRuntime/statuses/5422607bfb55da6ab31f4e9fe71d5f19881bdff3"}}}}