{"action":"created","comment":{"url":"https://api.github.com/repos/dlang/dub/pulls/comments/198003383","pull_request_review_id":131850195,"id":198003383,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE5ODAwMzM4Mw==","diff_hunk":"@@ -0,0 +1,185 @@\n+/**\n+ * Authors: Pedro Tacla Yamada\n+ * Date: June 9, 2014\n+ * License: Licensed under the MIT license. See LICENSE for more information\n+ * Version: 1.0.2\n+ */\n+module dub.internal.colorize.colors;\n+\n+import std.string : format;\n+\n+private template color_type(int offset)\n+{\n+\tstatic enum type : int\n+\t{\n+\t\tinit = 39 + offset,\n+\n+\t\tblack   = 30 + offset,\n+\t\tred     = 31 + offset,\n+\t\tgreen   = 32 + offset,\n+\t\tyellow  = 33 + offset,\n+\t\tblue    = 34 + offset,\n+\t\tmagenta = 35 + offset,\n+\t\tcyan    = 36 + offset,\n+\t\twhite   = 37 + offset,\n+\n+\t\tlight_black   = 90 + offset,\n+\t\tlight_red     = 91 + offset,\n+\t\tlight_green   = 92 + offset,\n+\t\tlight_yellow  = 93 + offset,\n+\t\tlight_blue    = 94 + offset,\n+\t\tlight_magenta = 95 + offset,\n+\t\tlight_cyan    = 96 + offset,\n+\t\tlight_white   = 97 + offset\n+\t}\n+}\n+\n+alias color_type!0 .type fg;\n+alias color_type!10 .type bg;\n+\n+// Text modes\n+static enum mode : int\n+{\n+\tinit      = 0,\n+\tbold      = 1,\n+\tunderline = 4,\n+\tblink     = 5,\n+\tswap      = 7,\n+\thide      = 8\n+}\n+\n+/**\n+ * Wraps a string around color escape sequences.\n+ *\n+ * Params:\n+ *   str = The string to wrap with colors and modes\n+ *   c   = The foreground color (see the fg enum type)\n+ *   b   = The background color (see the bg enum type)\n+ *   m   = The text mode        (see the mode enum type)\n+ * Example:\n+ * ---\n+ * writeln(\"This is blue\".color(fg.blue));\n+ * writeln(\n+ *   color(\"This is red over green blinking\", fg.blue, bg.green, mode.blink)\n+ * );\n+ * ---\n+ */\n+\n+string color(\n+\tconst string str,\n+\tconst fg c=fg.init,\n+\tconst bg b=bg.init,\n+\tconst mode m=mode.init\n+) pure\n+{\n+\treturn format(\"\\033[%d;%d;%dm%s\\033[0m\", m, c, b, str);\n+}\n+\n+unittest\n+{\n+\tstring ret;\n+\n+\tret = \"This is yellow\".color(fg.yellow);\n+\tassert(ret == \"\\033[33mThis is yellow\\033[0m\");\n+\n+\tret = \"This is light green\".color(fg.light_green);\n+\tassert(ret == \"\\033[92mThis is light green\\033[0m\");\n+\n+\tret = \"This is light blue with red background\".color(fg.light_blue, bg.red);\n+\tassert(ret == \"\\033[0;94;41mThis is light blue with red background\\033[0m\");\n+\n+\tret = \"This is red on blue blinking\".color(fg.red, bg.blue, mode.blink);\n+\tassert(ret == \"\\033[5;31;44mThis is red on blue blinking\\033[0m\");\n+\n+\tret = color(\"This is magenta\", \"magenta\");\n+\tassert(ret == \"\\033[35mThis is magenta\\033[0m\");\n+}\n+\n+string colorHelper(const string str, const string name) pure\n+{\n+\tint code;\n+\n+\tswitch(name)\n+\t{\n+\t\tcase \"init\": code = 39; break;\n+\n+\t\tcase \"black\"  : code = 30; break;\n+\t\tcase \"red\"    : code = 31; break;\n+\t\tcase \"green\"  : code = 32; break;\n+\t\tcase \"yellow\" : code = 33; break;\n+\t\tcase \"blue\"   : code = 34; break;\n+\t\tcase \"magenta\": code = 35; break;\n+\t\tcase \"cyan\"   : code = 36; break;\n+\t\tcase \"white\"  : code = 37; break;\n+\n+\t\tcase \"light_black\"  : code = 90; break;\n+\t\tcase \"light_red\"    : code = 91; break;\n+\t\tcase \"light_green\"  : code = 92; break;\n+\t\tcase \"light_yellow\" : code = 93; break;\n+\t\tcase \"light_blue\"   : code = 94; break;\n+\t\tcase \"light_magenta\": code = 95; break;\n+\t\tcase \"light_cyan\"   : code = 96; break;\n+\t\tcase \"light_white\"  : code = 97; break;\n+\n+\t\tcase \"bg_init\": code = 49; break;\n+\n+\t\tcase \"bg_black\"  : code = 40; break;\n+\t\tcase \"bg_red\"    : code = 41; break;\n+\t\tcase \"bg_green\"  : code = 42; break;\n+\t\tcase \"bg_yellow\" : code = 43; break;\n+\t\tcase \"bg_blue\"   : code = 44; break;\n+\t\tcase \"bg_magenta\": code = 45; break;\n+\t\tcase \"bg_cyan\"   : code = 46; break;\n+\t\tcase \"bg_white\"  : code = 47; break;\n+\n+\t\tcase \"bg_light_black\"  : code = 100; break;\n+\t\tcase \"bg_light_red\"    : code = 101; break;\n+\t\tcase \"bg_light_green\"  : code = 102; break;\n+\t\tcase \"bg_light_yellow\" : code = 103; break;\n+\t\tcase \"bg_light_blue\"   : code = 104; break;\n+\t\tcase \"bg_light_magenta\": code = 105; break;\n+\t\tcase \"bg_light_cyan\"   : code = 106; break;\n+\t\tcase \"bg_light_white\"  : code = 107; break;\n+\n+\t\tcase \"mode_init\": code = 0; break;\n+\t\tcase \"mode_bold\"     : code = 1; break;\n+\t\tcase \"mode_underline\": code = 4; break;\n+\t\tcase \"mode_blink\"    : code = 5; break;\n+\t\tcase \"mode_swap\"     : code = 7; break;\n+\t\tcase \"mode_hide\"     : code = 8; break;\n+\n+\t\tdefault:\n+\t\t\tthrow new Exception(\n+\t\t\t\t\"Unknown fg color, bg color or mode \\\"\" ~ name ~ \"\\\"\"\n+\t\t\t);\n+\t}\n+\n+\treturn format(\"\\033[%dm%s\\033[0m\", code, str);\n+}\n+\n+string colorHelper(T)(const string str, const T t=T.init) pure\n+\tif(is(T : fg) || is(T : bg) || is(T : mode))\n+{\n+\treturn format(\"\\033[%dm%s\\033[0m\", t, str);\n+}\n+\n+alias colorHelper!bg background;\n+alias colorHelper!fg foreground;\n+alias colorHelper!mode style;\n+\n+alias background color;\n+alias foreground color;\n+alias style color;\n+alias colorHelper color;","path":"source/dub/internal/colorize/colors.d","position":173,"original_position":173,"commit_id":"de3f45c892dd50d25f12fdf1ca1e25f796fae377","original_commit_id":"de3f45c892dd50d25f12fdf1ca1e25f796fae377","user":{"login":"wilzbach","id":4370550,"node_id":"MDQ6VXNlcjQzNzA1NTA=","avatar_url":"https://avatars3.githubusercontent.com/u/4370550?v=4","gravatar_id":"","url":"https://api.github.com/users/wilzbach","html_url":"https://github.com/wilzbach","followers_url":"https://api.github.com/users/wilzbach/followers","following_url":"https://api.github.com/users/wilzbach/following{/other_user}","gists_url":"https://api.github.com/users/wilzbach/gists{/gist_id}","starred_url":"https://api.github.com/users/wilzbach/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wilzbach/subscriptions","organizations_url":"https://api.github.com/users/wilzbach/orgs","repos_url":"https://api.github.com/users/wilzbach/repos","events_url":"https://api.github.com/users/wilzbach/events{/privacy}","received_events_url":"https://api.github.com/users/wilzbach/received_events","type":"User","site_admin":false},"body":"This `alias` style is deprecated. Use `alias background = colorHelper!bg`.","created_at":"2018-06-26T03:28:23Z","updated_at":"2018-06-26T03:29:05Z","html_url":"https://github.com/dlang/dub/pull/1490#discussion_r198003383","pull_request_url":"https://api.github.com/repos/dlang/dub/pulls/1490","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/dlang/dub/pulls/comments/198003383"},"html":{"href":"https://github.com/dlang/dub/pull/1490#discussion_r198003383"},"pull_request":{"href":"https://api.github.com/repos/dlang/dub/pulls/1490"}}},"pull_request":{"url":"https://api.github.com/repos/dlang/dub/pulls/1490","id":194020555,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk0MDIwNTU1","html_url":"https://github.com/dlang/dub/pull/1490","diff_url":"https://github.com/dlang/dub/pull/1490.diff","patch_url":"https://github.com/dlang/dub/pull/1490.patch","issue_url":"https://api.github.com/repos/dlang/dub/issues/1490","number":1490,"state":"open","locked":false,"title":"Colored output","user":{"login":"gdelazzari","id":7572780,"node_id":"MDQ6VXNlcjc1NzI3ODA=","avatar_url":"https://avatars3.githubusercontent.com/u/7572780?v=4","gravatar_id":"","url":"https://api.github.com/users/gdelazzari","html_url":"https://github.com/gdelazzari","followers_url":"https://api.github.com/users/gdelazzari/followers","following_url":"https://api.github.com/users/gdelazzari/following{/other_user}","gists_url":"https://api.github.com/users/gdelazzari/gists{/gist_id}","starred_url":"https://api.github.com/users/gdelazzari/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gdelazzari/subscriptions","organizations_url":"https://api.github.com/users/gdelazzari/orgs","repos_url":"https://api.github.com/users/gdelazzari/repos","events_url":"https://api.github.com/users/gdelazzari/events{/privacy}","received_events_url":"https://api.github.com/users/gdelazzari/received_events","type":"User","site_admin":false},"body":"This PR adds colored text output to Dub, in order to (in my opinion) enhance the user experience and make the output clearer and easier to navigate. See the first post of this forum thread for the motivations regarding this proposal: https://forum.dlang.org/thread/vefplpvwvrcbednsufli@forum.dlang.org\r\n\r\nThe change has been implemented by substituting the \"old\" dub.internal.vibecompat.core.log module with a new dub.logging module that provides the same functionality (same function names etc...) but also handles colored text and the concept of a colored \"tag\" at the beginning of each logging line. Non-TTY output is handled correctly, to avoid ASCII escape sequences when piping stdout/stderr to something else. No functionality of the program has been changed, just the output look. Also, the library colorize (https://github.com/yamadapc/d-colorize) has been imported (by copying the source code in dub/internal) as an helper to write formatted text to the console in a cross-platform manner.\r\n\r\nHere are a couple of screenshots of the final result while running clean & build commands.\r\n\r\n![build-from-scratch](https://user-images.githubusercontent.com/7572780/41241186-a26eb158-6d9c-11e8-8537-778a59e2fb3b.png)\r\n![build-error](https://user-images.githubusercontent.com/7572780/41241185-a24c72dc-6d9c-11e8-99dd-efcf45ffea9f.png)\r\n\r\nMore screenshots of other commands here https://imgur.com/a/VgIGPBy\r\n\r\nHope this is appreciated and doesn't create issues. As I said, IMHO the output is way easier to navigate and understand now.","created_at":"2018-06-11T15:34:16Z","updated_at":"2018-06-26T03:29:05Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ffd8aaaeecf2db4bce5e8050ca3eb91e3cced600","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/dlang/dub/pulls/1490/commits","review_comments_url":"https://api.github.com/repos/dlang/dub/pulls/1490/comments","review_comment_url":"https://api.github.com/repos/dlang/dub/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dlang/dub/issues/1490/comments","statuses_url":"https://api.github.com/repos/dlang/dub/statuses/de3f45c892dd50d25f12fdf1ca1e25f796fae377","head":{"label":"gdelazzari:colored-output","ref":"colored-output","sha":"de3f45c892dd50d25f12fdf1ca1e25f796fae377","user":{"login":"gdelazzari","id":7572780,"node_id":"MDQ6VXNlcjc1NzI3ODA=","avatar_url":"https://avatars3.githubusercontent.com/u/7572780?v=4","gravatar_id":"","url":"https://api.github.com/users/gdelazzari","html_url":"https://github.com/gdelazzari","followers_url":"https://api.github.com/users/gdelazzari/followers","following_url":"https://api.github.com/users/gdelazzari/following{/other_user}","gists_url":"https://api.github.com/users/gdelazzari/gists{/gist_id}","starred_url":"https://api.github.com/users/gdelazzari/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gdelazzari/subscriptions","organizations_url":"https://api.github.com/users/gdelazzari/orgs","repos_url":"https://api.github.com/users/gdelazzari/repos","events_url":"https://api.github.com/users/gdelazzari/events{/privacy}","received_events_url":"https://api.github.com/users/gdelazzari/received_events","type":"User","site_admin":false},"repo":{"id":136640213,"node_id":"MDEwOlJlcG9zaXRvcnkxMzY2NDAyMTM=","name":"dub","full_name":"gdelazzari/dub","owner":{"login":"gdelazzari","id":7572780,"node_id":"MDQ6VXNlcjc1NzI3ODA=","avatar_url":"https://avatars3.githubusercontent.com/u/7572780?v=4","gravatar_id":"","url":"https://api.github.com/users/gdelazzari","html_url":"https://github.com/gdelazzari","followers_url":"https://api.github.com/users/gdelazzari/followers","following_url":"https://api.github.com/users/gdelazzari/following{/other_user}","gists_url":"https://api.github.com/users/gdelazzari/gists{/gist_id}","starred_url":"https://api.github.com/users/gdelazzari/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gdelazzari/subscriptions","organizations_url":"https://api.github.com/users/gdelazzari/orgs","repos_url":"https://api.github.com/users/gdelazzari/repos","events_url":"https://api.github.com/users/gdelazzari/events{/privacy}","received_events_url":"https://api.github.com/users/gdelazzari/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/gdelazzari/dub","description":"Package and build management system for D","fork":true,"url":"https://api.github.com/repos/gdelazzari/dub","forks_url":"https://api.github.com/repos/gdelazzari/dub/forks","keys_url":"https://api.github.com/repos/gdelazzari/dub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gdelazzari/dub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gdelazzari/dub/teams","hooks_url":"https://api.github.com/repos/gdelazzari/dub/hooks","issue_events_url":"https://api.github.com/repos/gdelazzari/dub/issues/events{/number}","events_url":"https://api.github.com/repos/gdelazzari/dub/events","assignees_url":"https://api.github.com/repos/gdelazzari/dub/assignees{/user}","branches_url":"https://api.github.com/repos/gdelazzari/dub/branches{/branch}","tags_url":"https://api.github.com/repos/gdelazzari/dub/tags","blobs_url":"https://api.github.com/repos/gdelazzari/dub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gdelazzari/dub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gdelazzari/dub/git/refs{/sha}","trees_url":"https://api.github.com/repos/gdelazzari/dub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gdelazzari/dub/statuses/{sha}","languages_url":"https://api.github.com/repos/gdelazzari/dub/languages","stargazers_url":"https://api.github.com/repos/gdelazzari/dub/stargazers","contributors_url":"https://api.github.com/repos/gdelazzari/dub/contributors","subscribers_url":"https://api.github.com/repos/gdelazzari/dub/subscribers","subscription_url":"https://api.github.com/repos/gdelazzari/dub/subscription","commits_url":"https://api.github.com/repos/gdelazzari/dub/commits{/sha}","git_commits_url":"https://api.github.com/repos/gdelazzari/dub/git/commits{/sha}","comments_url":"https://api.github.com/repos/gdelazzari/dub/comments{/number}","issue_comment_url":"https://api.github.com/repos/gdelazzari/dub/issues/comments{/number}","contents_url":"https://api.github.com/repos/gdelazzari/dub/contents/{+path}","compare_url":"https://api.github.com/repos/gdelazzari/dub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gdelazzari/dub/merges","archive_url":"https://api.github.com/repos/gdelazzari/dub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gdelazzari/dub/downloads","issues_url":"https://api.github.com/repos/gdelazzari/dub/issues{/number}","pulls_url":"https://api.github.com/repos/gdelazzari/dub/pulls{/number}","milestones_url":"https://api.github.com/repos/gdelazzari/dub/milestones{/number}","notifications_url":"https://api.github.com/repos/gdelazzari/dub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gdelazzari/dub/labels{/name}","releases_url":"https://api.github.com/repos/gdelazzari/dub/releases{/id}","deployments_url":"https://api.github.com/repos/gdelazzari/dub/deployments","created_at":"2018-06-08T16:04:45Z","updated_at":"2018-06-08T16:04:47Z","pushed_at":"2018-06-13T12:23:15Z","git_url":"git://github.com/gdelazzari/dub.git","ssh_url":"git@github.com:gdelazzari/dub.git","clone_url":"https://github.com/gdelazzari/dub.git","svn_url":"https://github.com/gdelazzari/dub","homepage":null,"size":5575,"stargazers_count":0,"watchers_count":0,"language":"D","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":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"dlang:master","ref":"master","sha":"cc9ff7a676136dd48e574d63666c281a861cf59e","user":{"login":"dlang","id":565913,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU2NTkxMw==","avatar_url":"https://avatars3.githubusercontent.com/u/565913?v=4","gravatar_id":"","url":"https://api.github.com/users/dlang","html_url":"https://github.com/dlang","followers_url":"https://api.github.com/users/dlang/followers","following_url":"https://api.github.com/users/dlang/following{/other_user}","gists_url":"https://api.github.com/users/dlang/gists{/gist_id}","starred_url":"https://api.github.com/users/dlang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dlang/subscriptions","organizations_url":"https://api.github.com/users/dlang/orgs","repos_url":"https://api.github.com/users/dlang/repos","events_url":"https://api.github.com/users/dlang/events{/privacy}","received_events_url":"https://api.github.com/users/dlang/received_events","type":"Organization","site_admin":false},"repo":{"id":6470655,"node_id":"MDEwOlJlcG9zaXRvcnk2NDcwNjU1","name":"dub","full_name":"dlang/dub","owner":{"login":"dlang","id":565913,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU2NTkxMw==","avatar_url":"https://avatars3.githubusercontent.com/u/565913?v=4","gravatar_id":"","url":"https://api.github.com/users/dlang","html_url":"https://github.com/dlang","followers_url":"https://api.github.com/users/dlang/followers","following_url":"https://api.github.com/users/dlang/following{/other_user}","gists_url":"https://api.github.com/users/dlang/gists{/gist_id}","starred_url":"https://api.github.com/users/dlang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dlang/subscriptions","organizations_url":"https://api.github.com/users/dlang/orgs","repos_url":"https://api.github.com/users/dlang/repos","events_url":"https://api.github.com/users/dlang/events{/privacy}","received_events_url":"https://api.github.com/users/dlang/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/dlang/dub","description":"Package and build management system for D","fork":false,"url":"https://api.github.com/repos/dlang/dub","forks_url":"https://api.github.com/repos/dlang/dub/forks","keys_url":"https://api.github.com/repos/dlang/dub/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dlang/dub/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dlang/dub/teams","hooks_url":"https://api.github.com/repos/dlang/dub/hooks","issue_events_url":"https://api.github.com/repos/dlang/dub/issues/events{/number}","events_url":"https://api.github.com/repos/dlang/dub/events","assignees_url":"https://api.github.com/repos/dlang/dub/assignees{/user}","branches_url":"https://api.github.com/repos/dlang/dub/branches{/branch}","tags_url":"https://api.github.com/repos/dlang/dub/tags","blobs_url":"https://api.github.com/repos/dlang/dub/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dlang/dub/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dlang/dub/git/refs{/sha}","trees_url":"https://api.github.com/repos/dlang/dub/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dlang/dub/statuses/{sha}","languages_url":"https://api.github.com/repos/dlang/dub/languages","stargazers_url":"https://api.github.com/repos/dlang/dub/stargazers","contributors_url":"https://api.github.com/repos/dlang/dub/contributors","subscribers_url":"https://api.github.com/repos/dlang/dub/subscribers","subscription_url":"https://api.github.com/repos/dlang/dub/subscription","commits_url":"https://api.github.com/repos/dlang/dub/commits{/sha}","git_commits_url":"https://api.github.com/repos/dlang/dub/git/commits{/sha}","comments_url":"https://api.github.com/repos/dlang/dub/comments{/number}","issue_comment_url":"https://api.github.com/repos/dlang/dub/issues/comments{/number}","contents_url":"https://api.github.com/repos/dlang/dub/contents/{+path}","compare_url":"https://api.github.com/repos/dlang/dub/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dlang/dub/merges","archive_url":"https://api.github.com/repos/dlang/dub/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dlang/dub/downloads","issues_url":"https://api.github.com/repos/dlang/dub/issues{/number}","pulls_url":"https://api.github.com/repos/dlang/dub/pulls{/number}","milestones_url":"https://api.github.com/repos/dlang/dub/milestones{/number}","notifications_url":"https://api.github.com/repos/dlang/dub/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dlang/dub/labels{/name}","releases_url":"https://api.github.com/repos/dlang/dub/releases{/id}","deployments_url":"https://api.github.com/repos/dlang/dub/deployments","created_at":"2012-10-31T08:10:47Z","updated_at":"2018-06-25T20:56:59Z","pushed_at":"2018-06-25T21:42:04Z","git_url":"git://github.com/dlang/dub.git","ssh_url":"git@github.com:dlang/dub.git","clone_url":"https://github.com/dlang/dub.git","svn_url":"https://github.com/dlang/dub","homepage":null,"size":5384,"stargazers_count":413,"watchers_count":413,"language":"D","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":161,"mirror_url":null,"archived":false,"open_issues_count":449,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":161,"open_issues":449,"watchers":413,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dlang/dub/pulls/1490"},"html":{"href":"https://github.com/dlang/dub/pull/1490"},"issue":{"href":"https://api.github.com/repos/dlang/dub/issues/1490"},"comments":{"href":"https://api.github.com/repos/dlang/dub/issues/1490/comments"},"review_comments":{"href":"https://api.github.com/repos/dlang/dub/pulls/1490/comments"},"review_comment":{"href":"https://api.github.com/repos/dlang/dub/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dlang/dub/pulls/1490/commits"},"statuses":{"href":"https://api.github.com/repos/dlang/dub/statuses/de3f45c892dd50d25f12fdf1ca1e25f796fae377"}},"author_association":"NONE"}}
{"actor":{"display_login":"wilzbach"}}