From e35708a6d49a87f20cc3fc6e441186b409320cc6 Mon Sep 17 00:00:00 2001 From: Wynn Netherland Date: Wed, 26 Nov 2014 16:48:20 -0600 Subject: [PATCH 1/9] Implement linting for remote GitHub projects --- README.md | 44 +- fixtures/octokit.rb.json | 108 + fixtures/octokit.rb_tree.json | 6055 +++++++++++++++++++++++++++++++++ flint.go | 70 +- flint/app.go | 111 + flint/app_test.go | 95 + flint/errors.go | 53 + flint/flint.go | 75 - flint/flint_test.go | 197 -- flint/github_fetcher.go | 83 + flint/github_fetcher_test.go | 220 ++ flint/linter.go | 59 + flint/linter_test.go | 62 + flint/local_project.go | 35 + flint/local_project_test.go | 171 + flint/remote_project.go | 77 + flint/remote_project_test.go | 149 + flint/summary.go | 64 + flint/summary_test.go | 66 + 19 files changed, 7439 insertions(+), 355 deletions(-) create mode 100644 fixtures/octokit.rb.json create mode 100644 fixtures/octokit.rb_tree.json create mode 100644 flint/app.go create mode 100644 flint/app_test.go create mode 100644 flint/errors.go delete mode 100644 flint/flint.go delete mode 100644 flint/flint_test.go create mode 100644 flint/github_fetcher.go create mode 100644 flint/github_fetcher_test.go create mode 100644 flint/linter.go create mode 100644 flint/linter_test.go create mode 100644 flint/local_project.go create mode 100644 flint/local_project_test.go create mode 100644 flint/remote_project.go create mode 100644 flint/remote_project_test.go create mode 100644 flint/summary.go create mode 100644 flint/summary_test.go diff --git a/README.md b/README.md index 7541432..f87ba2c 100644 --- a/README.md +++ b/README.md @@ -27,18 +27,31 @@ show the full gamut of suggestions: ❯ flint [ERROR] README not found [FIXME] Every project begins with a README. http://bit.ly/1dqUYQF -[ERROR] License file not found +[ERROR] CONTRIBUTING guide not found +[FIXME] Add a guide for potential contributors. http://git.io/z-TiGg +[ERROR] LICENSE not found [FIXME] Add a license to protect yourself and your users. http://choosealicense.com/ -[WARNING] Contributing guide not found -[FIXME] Add a CONTRIBUTING guide for potential contributors. http://git.io/z-TiGg [WARNING] Bootstrap script not found [FIXME] A bootstrap script makes setup a snap. http://bit.ly/JZjVL6 -[CRITICAL] Some critical problems found. Please fix right away! +[WARNING] Test script not found +[FIXME] Make it easy to run the test suite regardless of project type. http://bit.ly/JZjVL6 +[CRITICAL] Some critical problems found. ``` You can also run this in older projects which were created by lazy you, or by younger, less wise you. +If you want to check a remote GitHub repository, you can now do so without +cloning: + +```sh +❯ flint --github pengwynn/dotfiles +[ERROR] CONTRIBUTING guide not found +[FIXME] Add a guide for potential contributors. http://git.io/z-TiGg +[WARNING] Test script not found +[FIXME] Make it easy to run the test suite regardless of project type. http://bit.ly/JZjVL6 +[CRITICAL] Some critical problems found. +``` Passing the `-h` flag will show full usage options: ``` @@ -50,20 +63,23 @@ USAGE: flint [global options] command [command options] [arguments...] VERSION: - 0.0.2 + 0.0.4 COMMANDS: - help, h Shows a list of commands or help for one command + help, h Shows a list of commands or help for one command GLOBAL OPTIONS: - --skip-readme skip check for README - --skip-contributing skip check for contributing guide - --skip-license skip check for license - --skip-bootstrap skip check for bootstrap script - --skip-test skip check for test script - --skip-scripts skip check for all scripts - --version, -v print the version - --help, -h show help + --skip-readme skip check for README + --skip-contributing skip check for contributing guide + --skip-license skip check for license + --skip-bootstrap skip check for bootstrap script + --skip-test-script skip check for test script + --skip-scripts skip check for all scripts + --no-color skip coloring the terminal output + --github, -g GitHub repository as owner/repo + --token, -t GitHub API access token [$FLINT_TOKEN] + --help, -h show help + --version, -v print the version ``` ### Philosophy diff --git a/fixtures/octokit.rb.json b/fixtures/octokit.rb.json new file mode 100644 index 0000000..419469c --- /dev/null +++ b/fixtures/octokit.rb.json @@ -0,0 +1,108 @@ +{ + "id": 417862, + "name": "octokit.rb", + "full_name": "octokit/octokit.rb", + "owner": { + "login": "octokit", + "id": 3430433, + "avatar_url": "https://avatars.githubusercontent.com/u/3430433?v=3", + "gravatar_id": "", + "url": "https://api.github.com/users/octokit", + "html_url": "https://github.com/octokit", + "followers_url": "https://api.github.com/users/octokit/followers", + "following_url": "https://api.github.com/users/octokit/following{/other_user}", + "gists_url": "https://api.github.com/users/octokit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octokit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octokit/subscriptions", + "organizations_url": "https://api.github.com/users/octokit/orgs", + "repos_url": "https://api.github.com/users/octokit/repos", + "events_url": "https://api.github.com/users/octokit/events{/privacy}", + "received_events_url": "https://api.github.com/users/octokit/received_events", + "type": "Organization", + "site_admin": false + }, + "private": false, + "html_url": "https://github.com/octokit/octokit.rb", + "description": "Ruby toolkit for the GitHub API", + "fork": false, + "url": "https://api.github.com/repos/octokit/octokit.rb", + "forks_url": "https://api.github.com/repos/octokit/octokit.rb/forks", + "keys_url": "https://api.github.com/repos/octokit/octokit.rb/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/octokit/octokit.rb/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/octokit/octokit.rb/teams", + "hooks_url": "https://api.github.com/repos/octokit/octokit.rb/hooks", + "issue_events_url": "https://api.github.com/repos/octokit/octokit.rb/issues/events{/number}", + "events_url": "https://api.github.com/repos/octokit/octokit.rb/events", + "assignees_url": "https://api.github.com/repos/octokit/octokit.rb/assignees{/user}", + "branches_url": "https://api.github.com/repos/octokit/octokit.rb/branches{/branch}", + "tags_url": "https://api.github.com/repos/octokit/octokit.rb/tags", + "blobs_url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/octokit/octokit.rb/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/octokit/octokit.rb/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/octokit/octokit.rb/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/octokit/octokit.rb/statuses/{sha}", + "languages_url": "https://api.github.com/repos/octokit/octokit.rb/languages", + "stargazers_url": "https://api.github.com/repos/octokit/octokit.rb/stargazers", + "contributors_url": "https://api.github.com/repos/octokit/octokit.rb/contributors", + "subscribers_url": "https://api.github.com/repos/octokit/octokit.rb/subscribers", + "subscription_url": "https://api.github.com/repos/octokit/octokit.rb/subscription", + "commits_url": "https://api.github.com/repos/octokit/octokit.rb/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/octokit/octokit.rb/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/octokit/octokit.rb/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/octokit/octokit.rb/issues/comments/{number}", + "contents_url": "https://api.github.com/repos/octokit/octokit.rb/contents/{+path}", + "compare_url": "https://api.github.com/repos/octokit/octokit.rb/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/octokit/octokit.rb/merges", + "archive_url": "https://api.github.com/repos/octokit/octokit.rb/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/octokit/octokit.rb/downloads", + "issues_url": "https://api.github.com/repos/octokit/octokit.rb/issues{/number}", + "pulls_url": "https://api.github.com/repos/octokit/octokit.rb/pulls{/number}", + "milestones_url": "https://api.github.com/repos/octokit/octokit.rb/milestones{/number}", + "notifications_url": "https://api.github.com/repos/octokit/octokit.rb/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/octokit/octokit.rb/labels{/name}", + "releases_url": "https://api.github.com/repos/octokit/octokit.rb/releases{/id}", + "created_at": "2009-12-10T21:41:49Z", + "updated_at": "2014-12-06T03:59:19Z", + "pushed_at": "2014-12-03T20:42:51Z", + "git_url": "git://github.com/octokit/octokit.rb.git", + "ssh_url": "git@github.com:octokit/octokit.rb.git", + "clone_url": "https://github.com/octokit/octokit.rb.git", + "svn_url": "https://github.com/octokit/octokit.rb", + "homepage": "http://octokit.github.io/octokit.rb/", + "size": 16270, + "stargazers_count": 1734, + "watchers_count": 1734, + "language": "Ruby", + "has_issues": true, + "has_downloads": true, + "has_wiki": false, + "has_pages": true, + "forks_count": 366, + "mirror_url": null, + "open_issues_count": 3, + "forks": 366, + "open_issues": 3, + "watchers": 1734, + "default_branch": "master", + "organization": { + "login": "octokit", + "id": 3430433, + "avatar_url": "https://avatars.githubusercontent.com/u/3430433?v=3", + "gravatar_id": "", + "url": "https://api.github.com/users/octokit", + "html_url": "https://github.com/octokit", + "followers_url": "https://api.github.com/users/octokit/followers", + "following_url": "https://api.github.com/users/octokit/following{/other_user}", + "gists_url": "https://api.github.com/users/octokit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/octokit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/octokit/subscriptions", + "organizations_url": "https://api.github.com/users/octokit/orgs", + "repos_url": "https://api.github.com/users/octokit/repos", + "events_url": "https://api.github.com/users/octokit/events{/privacy}", + "received_events_url": "https://api.github.com/users/octokit/received_events", + "type": "Organization", + "site_admin": false + }, + "network_count": 366, + "subscribers_count": 81 +} diff --git a/fixtures/octokit.rb_tree.json b/fixtures/octokit.rb_tree.json new file mode 100644 index 0000000..1717ddc --- /dev/null +++ b/fixtures/octokit.rb_tree.json @@ -0,0 +1,6055 @@ +{ + "sha": "5f071913aa9bde7b576dd724b3cf768f784bf4c2", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/5f071913aa9bde7b576dd724b3cf768f784bf4c2", + "tree": [ + { + "path": ".document", + "mode": "100644", + "type": "blob", + "sha": "0ad1bde480e843a9d60fb4ac93727ebc3c728e77", + "size": 53, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/0ad1bde480e843a9d60fb4ac93727ebc3c728e77" + }, + { + "path": ".gemtest", + "mode": "100644", + "type": "blob", + "sha": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", + "size": 0, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/e69de29bb2d1d6434b8b29ae775ad8c2e48c5391" + }, + { + "path": ".gitignore", + "mode": "100644", + "type": "blob", + "sha": "e13ed182a6241fb9773d405d5224c105d98379f0", + "size": 206, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/e13ed182a6241fb9773d405d5224c105d98379f0" + }, + { + "path": ".rspec", + "mode": "100644", + "type": "blob", + "sha": "09127182c759ae50d1ebf397bf072a9ff0820cf6", + "size": 23, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/09127182c759ae50d1ebf397bf072a9ff0820cf6" + }, + { + "path": ".travis.yml", + "mode": "100644", + "type": "blob", + "sha": "dc9e37f84528b2d0c87a65466f6412e0971d67f5", + "size": 611, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/dc9e37f84528b2d0c87a65466f6412e0971d67f5" + }, + { + "path": ".yardopts", + "mode": "100644", + "type": "blob", + "sha": "10d5a25a7c64ef5b9bf348d612ea2f50b1bf3196", + "size": 171, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/10d5a25a7c64ef5b9bf348d612ea2f50b1bf3196" + }, + { + "path": "CONTRIBUTING.md", + "mode": "100644", + "type": "blob", + "sha": "66a3665b5ffff528bf877f2ceccac91d76e0efc5", + "size": 1029, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/66a3665b5ffff528bf877f2ceccac91d76e0efc5" + }, + { + "path": "Gemfile", + "mode": "100644", + "type": "blob", + "sha": "cff1835d14f04b038b6264c497ebd22d52a04916", + "size": 646, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/cff1835d14f04b038b6264c497ebd22d52a04916" + }, + { + "path": "Guardfile", + "mode": "100644", + "type": "blob", + "sha": "901c30f21d992fd329cd3c1b54f800e282b5fb9e", + "size": 451, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/901c30f21d992fd329cd3c1b54f800e282b5fb9e" + }, + { + "path": "LICENSE.md", + "mode": "100644", + "type": "blob", + "sha": "d2bc808d0844e5e837cf58fb2c4cad6247fdbb53", + "size": 1100, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/d2bc808d0844e5e837cf58fb2c4cad6247fdbb53" + }, + { + "path": "README.md", + "mode": "100644", + "type": "blob", + "sha": "46098c0b6ae9676d0924116da9955a26b2cc3054", + "size": 19809, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/46098c0b6ae9676d0924116da9955a26b2cc3054" + }, + { + "path": "Rakefile", + "mode": "100644", + "type": "blob", + "sha": "fccd9d2260bea0a637973f62abcf6c776250348b", + "size": 447, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/fccd9d2260bea0a637973f62abcf6c776250348b" + }, + { + "path": "lib", + "mode": "040000", + "type": "tree", + "sha": "a17442c0a396015f140869da5d3e9a6518ec7c75", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/a17442c0a396015f140869da5d3e9a6518ec7c75" + }, + { + "path": "lib/octokit.rb", + "mode": "100644", + "type": "blob", + "sha": "efb0d6f15808af1738e08a1bb23ade3f54ead96f", + "size": 924, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/efb0d6f15808af1738e08a1bb23ade3f54ead96f" + }, + { + "path": "lib/octokit", + "mode": "040000", + "type": "tree", + "sha": "36c43aa0be85f7ddeaeb3cb87c39332d072cdb60", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/36c43aa0be85f7ddeaeb3cb87c39332d072cdb60" + }, + { + "path": "lib/octokit/arguments.rb", + "mode": "100644", + "type": "blob", + "sha": "961e3b98be5623dcff962bb34671915b0ab2ffe2", + "size": 243, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/961e3b98be5623dcff962bb34671915b0ab2ffe2" + }, + { + "path": "lib/octokit/authentication.rb", + "mode": "100644", + "type": "blob", + "sha": "c3eaa9cb726864e7f44e2e635e82360cf379a6ac", + "size": 1962, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/c3eaa9cb726864e7f44e2e635e82360cf379a6ac" + }, + { + "path": "lib/octokit/backports", + "mode": "040000", + "type": "tree", + "sha": "debcf5d38fb3b1c8a26319f1fcb5fe47aab4b55a", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/debcf5d38fb3b1c8a26319f1fcb5fe47aab4b55a" + }, + { + "path": "lib/octokit/backports/uri.rb", + "mode": "100644", + "type": "blob", + "sha": "ca3a6360afbdff4af263cd80e64bdd5fda96fe86", + "size": 1667, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/ca3a6360afbdff4af263cd80e64bdd5fda96fe86" + }, + { + "path": "lib/octokit/client.rb", + "mode": "100644", + "type": "blob", + "sha": "c8ca3f9f995b7f5bc606c89fb545179cbadea84d", + "size": 11533, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/c8ca3f9f995b7f5bc606c89fb545179cbadea84d" + }, + { + "path": "lib/octokit/client", + "mode": "040000", + "type": "tree", + "sha": "8c2e36e102bd377cee4aa7a61da3a998d9ab8a62", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/8c2e36e102bd377cee4aa7a61da3a998d9ab8a62" + }, + { + "path": "lib/octokit/client/authorizations.rb", + "mode": "100644", + "type": "blob", + "sha": "6703e94006c9aa1656add9af1969c609fe88571e", + "size": 11580, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/6703e94006c9aa1656add9af1969c609fe88571e" + }, + { + "path": "lib/octokit/client/commit_comments.rb", + "mode": "100644", + "type": "blob", + "sha": "bdcdec8692ad541654db0046f4daa1e6b84c91d8", + "size": 4076, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/bdcdec8692ad541654db0046f4daa1e6b84c91d8" + }, + { + "path": "lib/octokit/client/commits.rb", + "mode": "100644", + "type": "blob", + "sha": "997f4102dc2cfc7eede42291ff2f0d77a81420d8", + "size": 11126, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/997f4102dc2cfc7eede42291ff2f0d77a81420d8" + }, + { + "path": "lib/octokit/client/contents.rb", + "mode": "100644", + "type": "blob", + "sha": "d325e5e7993fc75623f0b1b48169f0526d042062", + "size": 7333, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/d325e5e7993fc75623f0b1b48169f0526d042062" + }, + { + "path": "lib/octokit/client/deployments.rb", + "mode": "100644", + "type": "blob", + "sha": "da4117171b692cbc8654d7b7970cf61aaa84bcd2", + "size": 3830, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/da4117171b692cbc8654d7b7970cf61aaa84bcd2" + }, + { + "path": "lib/octokit/client/downloads.rb", + "mode": "100644", + "type": "blob", + "sha": "5a81c0d02031af4fbb652e600b31a1319ffb8add", + "size": 2097, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/5a81c0d02031af4fbb652e600b31a1319ffb8add" + }, + { + "path": "lib/octokit/client/emojis.rb", + "mode": "100644", + "type": "blob", + "sha": "c5bd3be1e4382f34a842e179116b72dd9dc821f2", + "size": 403, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/c5bd3be1e4382f34a842e179116b72dd9dc821f2" + }, + { + "path": "lib/octokit/client/events.rb", + "mode": "100644", + "type": "blob", + "sha": "9b277e3d228ea6dedb6c30c8b43edd2c6301c13c", + "size": 6678, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/9b277e3d228ea6dedb6c30c8b43edd2c6301c13c" + }, + { + "path": "lib/octokit/client/feeds.rb", + "mode": "100644", + "type": "blob", + "sha": "1d6b4bad60d78bc9ce271d2fabab841e70910284", + "size": 832, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/1d6b4bad60d78bc9ce271d2fabab841e70910284" + }, + { + "path": "lib/octokit/client/gists.rb", + "mode": "100644", + "type": "blob", + "sha": "3499cd47e8b72a90b7991245745b498684064b32", + "size": 7639, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3499cd47e8b72a90b7991245745b498684064b32" + }, + { + "path": "lib/octokit/client/gitignore.rb", + "mode": "100644", + "type": "blob", + "sha": "4206f626dd68e41667f66e29428ebd0da9335421", + "size": 1352, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/4206f626dd68e41667f66e29428ebd0da9335421" + }, + { + "path": "lib/octokit/client/hooks.rb", + "mode": "100644", + "type": "blob", + "sha": "7b3e523571b70f0bbffd9f9aa22929ec3ffc65f0", + "size": 435, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/7b3e523571b70f0bbffd9f9aa22929ec3ffc65f0" + }, + { + "path": "lib/octokit/client/issues.rb", + "mode": "100644", + "type": "blob", + "sha": "f89449257fdbb0a73ead923772d6de2120b19d4c", + "size": 14671, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/f89449257fdbb0a73ead923772d6de2120b19d4c" + }, + { + "path": "lib/octokit/client/labels.rb", + "mode": "100644", + "type": "blob", + "sha": "f221fa9d5037f114a9245d0af08cac57771bb6c5", + "size": 7582, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/f221fa9d5037f114a9245d0af08cac57771bb6c5" + }, + { + "path": "lib/octokit/client/legacy_search.rb", + "mode": "100644", + "type": "blob", + "sha": "947251659d43863409f93c09ecb5edb255768390", + "size": 1631, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/947251659d43863409f93c09ecb5edb255768390" + }, + { + "path": "lib/octokit/client/markdown.rb", + "mode": "100644", + "type": "blob", + "sha": "06b16287921d1214654bede5e9cc320794f63e51", + "size": 908, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/06b16287921d1214654bede5e9cc320794f63e51" + }, + { + "path": "lib/octokit/client/meta.rb", + "mode": "100644", + "type": "blob", + "sha": "1dc56cf20abbd56e06df90d3ceea044d5342f1f3", + "size": 505, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/1dc56cf20abbd56e06df90d3ceea044d5342f1f3" + }, + { + "path": "lib/octokit/client/milestones.rb", + "mode": "100644", + "type": "blob", + "sha": "b1ae7998cd5eba5e87c7de968198d044b156a185", + "size": 4823, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/b1ae7998cd5eba5e87c7de968198d044b156a185" + }, + { + "path": "lib/octokit/client/notifications.rb", + "mode": "100644", + "type": "blob", + "sha": "84c41ad8e8959687b02524b9bdcc31d95ee7888b", + "size": 7921, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/84c41ad8e8959687b02524b9bdcc31d95ee7888b" + }, + { + "path": "lib/octokit/client/objects.rb", + "mode": "100644", + "type": "blob", + "sha": "bbb449e4e4a50062f8c19d7a2e0c7341f6787dad", + "size": 6571, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/bbb449e4e4a50062f8c19d7a2e0c7341f6787dad" + }, + { + "path": "lib/octokit/client/organizations.rb", + "mode": "100644", + "type": "blob", + "sha": "69bb6a02851af5f84d07a3321c5e5e045cda3052", + "size": 23360, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/69bb6a02851af5f84d07a3321c5e5e045cda3052" + }, + { + "path": "lib/octokit/client/pages.rb", + "mode": "100644", + "type": "blob", + "sha": "7f49827f60c7fdb01dd8e5570069d00606a6df14", + "size": 1417, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/7f49827f60c7fdb01dd8e5570069d00606a6df14" + }, + { + "path": "lib/octokit/client/pub_sub_hubbub.rb", + "mode": "100644", + "type": "blob", + "sha": "0575020b4bc3cf4c275ba7a7ff3f8f49b19e600e", + "size": 5397, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/0575020b4bc3cf4c275ba7a7ff3f8f49b19e600e" + }, + { + "path": "lib/octokit/client/pull_requests.rb", + "mode": "100644", + "type": "blob", + "sha": "9adc8e1e1676c06c21f646457315e714ab9c5373", + "size": 14928, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/9adc8e1e1676c06c21f646457315e714ab9c5373" + }, + { + "path": "lib/octokit/client/rate_limit.rb", + "mode": "100644", + "type": "blob", + "sha": "3473a6bc165789930912e40546669bcc98af7f7f", + "size": 1790, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3473a6bc165789930912e40546669bcc98af7f7f" + }, + { + "path": "lib/octokit/client/refs.rb", + "mode": "100644", + "type": "blob", + "sha": "ae005e6352ef7c7a77a30347c38dd91bcd5400c1", + "size": 5613, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/ae005e6352ef7c7a77a30347c38dd91bcd5400c1" + }, + { + "path": "lib/octokit/client/releases.rb", + "mode": "100644", + "type": "blob", + "sha": "95114eda2e02308e806208d5f4cdbff52eac9c13", + "size": 6041, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/95114eda2e02308e806208d5f4cdbff52eac9c13" + }, + { + "path": "lib/octokit/client/repositories.rb", + "mode": "100644", + "type": "blob", + "sha": "b5803de834dbcd0448ebd238973394cae2aa739a", + "size": 29997, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/b5803de834dbcd0448ebd238973394cae2aa739a" + }, + { + "path": "lib/octokit/client/say.rb", + "mode": "100644", + "type": "blob", + "sha": "082be183cf9770cf8331eaee3b1f240ff4cd9732", + "size": 363, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/082be183cf9770cf8331eaee3b1f240ff4cd9732" + }, + { + "path": "lib/octokit/client/search.rb", + "mode": "100644", + "type": "blob", + "sha": "1c4a47a190a4b830f2f5cf5dd8d472b7d5fbdd33", + "size": 2927, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/1c4a47a190a4b830f2f5cf5dd8d472b7d5fbdd33" + }, + { + "path": "lib/octokit/client/service_status.rb", + "mode": "100644", + "type": "blob", + "sha": "65a1f84b6f9a1177e2dbfce8a99727bd2df1ee83", + "size": 1119, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/65a1f84b6f9a1177e2dbfce8a99727bd2df1ee83" + }, + { + "path": "lib/octokit/client/stats.rb", + "mode": "100644", + "type": "blob", + "sha": "62958e5d6ecfa9950667a9e4cbffe1f16365adbf", + "size": 3715, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/62958e5d6ecfa9950667a9e4cbffe1f16365adbf" + }, + { + "path": "lib/octokit/client/statuses.rb", + "mode": "100644", + "type": "blob", + "sha": "2b11f1b0b10d5e4e66268d362b9482e3f4797f7c", + "size": 2012, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/2b11f1b0b10d5e4e66268d362b9482e3f4797f7c" + }, + { + "path": "lib/octokit/client/users.rb", + "mode": "100644", + "type": "blob", + "sha": "1ac7fb45a2d6d512c6fdd691e797215f8869d355", + "size": 13515, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/1ac7fb45a2d6d512c6fdd691e797215f8869d355" + }, + { + "path": "lib/octokit/configurable.rb", + "mode": "100644", + "type": "blob", + "sha": "cdac011b2a3299cff8aa6fe0b1222a66aad78b9b", + "size": 3924, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/cdac011b2a3299cff8aa6fe0b1222a66aad78b9b" + }, + { + "path": "lib/octokit/default.rb", + "mode": "100644", + "type": "blob", + "sha": "61581b155716ade8a777ce1e00a4ab9c21c00ed4", + "size": 3677, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/61581b155716ade8a777ce1e00a4ab9c21c00ed4" + }, + { + "path": "lib/octokit/error.rb", + "mode": "100644", + "type": "blob", + "sha": "f208da6d757761f15e09b48dc380365a83aa69b9", + "size": 6767, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/f208da6d757761f15e09b48dc380365a83aa69b9" + }, + { + "path": "lib/octokit/gist.rb", + "mode": "100644", + "type": "blob", + "sha": "a2dbe00294cb7db0dc21ae897684a94f65cb43c4", + "size": 581, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/a2dbe00294cb7db0dc21ae897684a94f65cb43c4" + }, + { + "path": "lib/octokit/organization.rb", + "mode": "100644", + "type": "blob", + "sha": "24bd2da342f004f3d1b70ecd0b2aa18dd1641205", + "size": 408, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/24bd2da342f004f3d1b70ecd0b2aa18dd1641205" + }, + { + "path": "lib/octokit/rate_limit.rb", + "mode": "100644", + "type": "blob", + "sha": "d4d61372c7c056f84cdfe67bf889768f55ee0c3f", + "size": 1101, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/d4d61372c7c056f84cdfe67bf889768f55ee0c3f" + }, + { + "path": "lib/octokit/repo_arguments.rb", + "mode": "100644", + "type": "blob", + "sha": "6adfee4dbffc498d08c2f6a432ab16dc4f3cb593", + "size": 335, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/6adfee4dbffc498d08c2f6a432ab16dc4f3cb593" + }, + { + "path": "lib/octokit/repository.rb", + "mode": "100644", + "type": "blob", + "sha": "7a7bb6886a372e21a122a0dde834820cb97e4cd7", + "size": 1601, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/7a7bb6886a372e21a122a0dde834820cb97e4cd7" + }, + { + "path": "lib/octokit/response", + "mode": "040000", + "type": "tree", + "sha": "abb3478a92799761786586775baaa59776e9048f", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/abb3478a92799761786586775baaa59776e9048f" + }, + { + "path": "lib/octokit/response/feed_parser.rb", + "mode": "100644", + "type": "blob", + "sha": "77a880fd70d857241e7d94ac40d75a14382301cc", + "size": 379, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/77a880fd70d857241e7d94ac40d75a14382301cc" + }, + { + "path": "lib/octokit/response/raise_error.rb", + "mode": "100644", + "type": "blob", + "sha": "31920e9ec936ecb67e3e635fb90467feb58cee76", + "size": 434, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/31920e9ec936ecb67e3e635fb90467feb58cee76" + }, + { + "path": "lib/octokit/user.rb", + "mode": "100644", + "type": "blob", + "sha": "d8f83f3ca9f332ec606e76cdad861844fdaeb860", + "size": 390, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/d8f83f3ca9f332ec606e76cdad861844fdaeb860" + }, + { + "path": "lib/octokit/version.rb", + "mode": "100644", + "type": "blob", + "sha": "a1b4487a069662208febd9463dc7978129bcff1e", + "size": 89, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/a1b4487a069662208febd9463dc7978129bcff1e" + }, + { + "path": "octokit.gemspec", + "mode": "100644", + "type": "blob", + "sha": "1d81adb0ae350d2415436b0f4afa7c4398201696", + "size": 959, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/1d81adb0ae350d2415436b0f4afa7c4398201696" + }, + { + "path": "script", + "mode": "040000", + "type": "tree", + "sha": "0e51eb8f09f0b8e2ed4900131625733339d83ff6", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/0e51eb8f09f0b8e2ed4900131625733339d83ff6" + }, + { + "path": "script/bootstrap", + "mode": "100755", + "type": "blob", + "sha": "6479ada376a779a8bcf459a0a00e4d035bd82f70", + "size": 47, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/6479ada376a779a8bcf459a0a00e4d035bd82f70" + }, + { + "path": "script/cibuild", + "mode": "100755", + "type": "blob", + "sha": "95f9f780d239f0a355ad7affc7fcd32a015a5a38", + "size": 31, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/95f9f780d239f0a355ad7affc7fcd32a015a5a38" + }, + { + "path": "script/console", + "mode": "100755", + "type": "blob", + "sha": "d78fbeb6f0f4bf682619c10cf09abb2dc7e3a143", + "size": 120, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/d78fbeb6f0f4bf682619c10cf09abb2dc7e3a143" + }, + { + "path": "script/guard", + "mode": "100755", + "type": "blob", + "sha": "ea3accf04ac5a348218c34e5792a675abc0fd771", + "size": 58, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/ea3accf04ac5a348218c34e5792a675abc0fd771" + }, + { + "path": "script/package", + "mode": "100755", + "type": "blob", + "sha": "926f4891ba676cdf051a5083d3c39b615271412e", + "size": 152, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/926f4891ba676cdf051a5083d3c39b615271412e" + }, + { + "path": "script/release", + "mode": "100755", + "type": "blob", + "sha": "6dcd8cb3f38408adfecf45c2dcdc7676584de619", + "size": 398, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/6dcd8cb3f38408adfecf45c2dcdc7676584de619" + }, + { + "path": "script/test", + "mode": "100755", + "type": "blob", + "sha": "9fcd49db2f23cbfe8901f8dc9033caa5533b196e", + "size": 380, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/9fcd49db2f23cbfe8901f8dc9033caa5533b196e" + }, + { + "path": "spec", + "mode": "040000", + "type": "tree", + "sha": "29dd38d7f9fbc928b831c31df4c3e121369efb98", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/29dd38d7f9fbc928b831c31df4c3e121369efb98" + }, + { + "path": "spec/cassettes", + "mode": "040000", + "type": "tree", + "sha": "2731600f6fc7ac782064b4d4a319177770eb2948", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/2731600f6fc7ac782064b4d4a319177770eb2948" + }, + { + "path": "spec/cassettes/Octokit_Client", + "mode": "040000", + "type": "tree", + "sha": "c8843ba53d7f7d89ecbb2098bc3612ed8e690c51", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/c8843ba53d7f7d89ecbb2098bc3612ed8e690c51" + }, + { + "path": "spec/cassettes/Octokit_Client/_get", + "mode": "040000", + "type": "tree", + "sha": "2979fbb2f67ba946be5f38070e71b024b10dab38", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/2979fbb2f67ba946be5f38070e71b024b10dab38" + }, + { + "path": "spec/cassettes/Octokit_Client/_get/handles_query_params.json", + "mode": "100644", + "type": "blob", + "sha": "251d146d1ed6b852776591f8fa7fd235c541c2e4", + "size": 3169, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/251d146d1ed6b852776591f8fa7fd235c541c2e4" + }, + { + "path": "spec/cassettes/Octokit_Client/_head", + "mode": "040000", + "type": "tree", + "sha": "f9ed72e8d9e759644d026c32b84f0c8bb3a02e30", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/f9ed72e8d9e759644d026c32b84f0c8bb3a02e30" + }, + { + "path": "spec/cassettes/Octokit_Client/_head/handles_query_params.json", + "mode": "100644", + "type": "blob", + "sha": "d339a33b2e8f5a402e2325206569e93c03ac1ccf", + "size": 1209, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/d339a33b2e8f5a402e2325206569e93c03ac1ccf" + }, + { + "path": "spec/cassettes/Octokit_Client/_last_response", + "mode": "040000", + "type": "tree", + "sha": "fdc11b4a4e439ecc89206d23c5de3223cd4e5375", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/fdc11b4a4e439ecc89206d23c5de3223cd4e5375" + }, + { + "path": "spec/cassettes/Octokit_Client/_last_response/caches_the_last_agent_response.json", + "mode": "100644", + "type": "blob", + "sha": "1422422f0db574fdd93980ba6eeae874c2d9edb0", + "size": 3161, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/1422422f0db574fdd93980ba6eeae874c2d9edb0" + }, + { + "path": "spec/cassettes/Octokit_Client/authentication", + "mode": "040000", + "type": "tree", + "sha": "5aea94229a8c5257578a902a867c0ae57c4d7499", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/5aea94229a8c5257578a902a867c0ae57c4d7499" + }, + { + "path": "spec/cassettes/Octokit_Client/authentication/when_token_authenticated", + "mode": "040000", + "type": "tree", + "sha": "a8d14611ee2cfa60c0237a8ec19d630d824b2045", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/a8d14611ee2cfa60c0237a8ec19d630d824b2045" + }, + { + "path": "spec/cassettes/Octokit_Client/authentication/when_token_authenticated/fetches_and_memoizes_login.json", + "mode": "100644", + "type": "blob", + "sha": "f7bcd8f65ac8507b180b3db72d3a967d82f6795b", + "size": 3096, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/f7bcd8f65ac8507b180b3db72d3a967d82f6795b" + }, + { + "path": "spec/cassettes/Octokit_Client/auto_pagination", + "mode": "040000", + "type": "tree", + "sha": "deb905be98f5fc8fb124885714edfe4c7dbd5e8a", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/deb905be98f5fc8fb124885714edfe4c7dbd5e8a" + }, + { + "path": "spec/cassettes/Octokit_Client/auto_pagination/accepts_a_block_for_custom_result_concatination.json", + "mode": "100644", + "type": "blob", + "sha": "f378b9807695e93586c27f243ab713d74290fc0c", + "size": 5057, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/f378b9807695e93586c27f243ab713d74290fc0c" + }, + { + "path": "spec/cassettes/Octokit_Client/auto_pagination/fetches_all_the_pages.json", + "mode": "100644", + "type": "blob", + "sha": "734629df9ffa4633fcc8459ef8b16dadb5938b23", + "size": 7872, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/734629df9ffa4633fcc8459ef8b16dadb5938b23" + }, + { + "path": "spec/cassettes/Octokit_Client/content_type", + "mode": "040000", + "type": "tree", + "sha": "31a478fcfff2dbae179cddd093ed0bdc13b3a4c0", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/31a478fcfff2dbae179cddd093ed0bdc13b3a4c0" + }, + { + "path": "spec/cassettes/Octokit_Client/content_type/fixes_bug.json", + "mode": "100644", + "type": "blob", + "sha": "444f87a95d6902ae68f75c0bc044f5f064b92bea", + "size": 3390, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/444f87a95d6902ae68f75c0bc044f5f064b92bea" + }, + { + "path": "spec/cassettes/Octokit_Client_Authorizations", + "mode": "040000", + "type": "tree", + "sha": "97cb08be5a6585b15f62183a568e705955f85bee", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/97cb08be5a6585b15f62183a568e705955f85bee" + }, + { + "path": "spec/cassettes/Octokit_Client_Authorizations/_authorization", + "mode": "040000", + "type": "tree", + "sha": "9a55f75cfbb1e249b46b7494f042edead12c3197", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/9a55f75cfbb1e249b46b7494f042edead12c3197" + }, + { + "path": "spec/cassettes/Octokit_Client_Authorizations/_authorization/returns_a_single_authorization.json", + "mode": "100644", + "type": "blob", + "sha": "0b33da48d82fba27fd6fd2e22b6f132d86e9e087", + "size": 3559, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/0b33da48d82fba27fd6fd2e22b6f132d86e9e087" + }, + { + "path": "spec/cassettes/Octokit_Client_Authorizations/_authorizations", + "mode": "040000", + "type": "tree", + "sha": "7d2a719955085d6c78c098ed03ba7cf4191bb77e", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/7d2a719955085d6c78c098ed03ba7cf4191bb77e" + }, + { + "path": "spec/cassettes/Octokit_Client_Authorizations/_authorizations/lists_existing_authorizations.json", + "mode": "100644", + "type": "blob", + "sha": "326407b7f969d85b4bdbc08218c3c233f621dced", + "size": 16508, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/326407b7f969d85b4bdbc08218c3c233f621dced" + }, + { + "path": "spec/cassettes/Octokit_Client_Authorizations/_check_application_authorization", + "mode": "040000", + "type": "tree", + "sha": "1fc94798c1121c3c0bd2214a04dd4d9e5057440e", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/1fc94798c1121c3c0bd2214a04dd4d9e5057440e" + }, + { + "path": "spec/cassettes/Octokit_Client_Authorizations/_check_application_authorization/checks_an_application_authorization.json", + "mode": "100644", + "type": "blob", + "sha": "f99827d40e8cc2a9bd3a096512ab2cba2d957b71", + "size": 5587, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/f99827d40e8cc2a9bd3a096512ab2cba2d957b71" + }, + { + "path": "spec/cassettes/Octokit_Client_Authorizations/_create_authorization", + "mode": "040000", + "type": "tree", + "sha": "59b7c1bed09899cef1f053189c26eef60222c29a", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/59b7c1bed09899cef1f053189c26eef60222c29a" + }, + { + "path": "spec/cassettes/Octokit_Client_Authorizations/_create_authorization/with_idempotent_true", + "mode": "040000", + "type": "tree", + "sha": "d47f4564f37979df26a64f691e4199a4ef2ca1d4", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/d47f4564f37979df26a64f691e4199a4ef2ca1d4" + }, + { + "path": "spec/cassettes/Octokit_Client_Authorizations/_create_authorization/with_idempotent_true/creates_a_new_authorization_with_options.json", + "mode": "100644", + "type": "blob", + "sha": "9aa30ff3ace16543b2944cb2129bf80d1e9f549d", + "size": 1916, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/9aa30ff3ace16543b2944cb2129bf80d1e9f549d" + }, + { + "path": "spec/cassettes/Octokit_Client_Authorizations/_create_authorization/with_idempotent_true/returns_an_existing_API_authorization_if_one_already_exists.json", + "mode": "100644", + "type": "blob", + "sha": "0d988ef7988569b4b7a913bea35f763d49b6cbbb", + "size": 3641, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/0d988ef7988569b4b7a913bea35f763d49b6cbbb" + }, + { + "path": "spec/cassettes/Octokit_Client_Authorizations/_create_authorization/without_idempotent_true", + "mode": "040000", + "type": "tree", + "sha": "63ce8c6eb068a013c735c1e979e33b5a18e0d386", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/63ce8c6eb068a013c735c1e979e33b5a18e0d386" + }, + { + "path": "spec/cassettes/Octokit_Client_Authorizations/_create_authorization/without_idempotent_true/creates_a_new_API_authorization_each_time.json", + "mode": "100644", + "type": "blob", + "sha": "33df1147ef62c3a3914483d15b94d6ac7c3289ca", + "size": 3565, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/33df1147ef62c3a3914483d15b94d6ac7c3289ca" + }, + { + "path": "spec/cassettes/Octokit_Client_Authorizations/_create_authorization/without_idempotent_true/creates_a_new_authorization_with_options.json", + "mode": "100644", + "type": "blob", + "sha": "218aacd41b7e27028f3db1cea074b048519a6f85", + "size": 1814, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/218aacd41b7e27028f3db1cea074b048519a6f85" + }, + { + "path": "spec/cassettes/Octokit_Client_Authorizations/_create_authorization/without_idempotent_true/creates_an_API_authorization.json", + "mode": "100644", + "type": "blob", + "sha": "7f4b472dc6aabc44731a9450079f8712aa314fe7", + "size": 1782, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/7f4b472dc6aabc44731a9450079f8712aa314fe7" + }, + { + "path": "spec/cassettes/Octokit_Client_Authorizations/_reset_application_authorization", + "mode": "040000", + "type": "tree", + "sha": "8139e8737a87cbf3669adb889c5def3759649b74", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/8139e8737a87cbf3669adb889c5def3759649b74" + }, + { + "path": "spec/cassettes/Octokit_Client_Authorizations/_reset_application_authorization/resets_a_token.json", + "mode": "100644", + "type": "blob", + "sha": "7ad7848b9dbe9eb4b3378956d794a2699d2a14ad", + "size": 5591, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/7ad7848b9dbe9eb4b3378956d794a2699d2a14ad" + }, + { + "path": "spec/cassettes/Octokit_Client_Authorizations/_revoke_application_authorization", + "mode": "040000", + "type": "tree", + "sha": "5a5f38f20ec45b78b2a7fe89bd509216c30e57a2", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/5a5f38f20ec45b78b2a7fe89bd509216c30e57a2" + }, + { + "path": "spec/cassettes/Octokit_Client_Authorizations/_revoke_application_authorization/deletes_an_application_authorization.json", + "mode": "100644", + "type": "blob", + "sha": "1b28126b6587c6d3232fd772b41163844345d569", + "size": 3601, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/1b28126b6587c6d3232fd772b41163844345d569" + }, + { + "path": "spec/cassettes/Octokit_Client_Authorizations/_scopes", + "mode": "040000", + "type": "tree", + "sha": "b17e1daf71d5dc1b7b864d2179fcb510cfa015c7", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/b17e1daf71d5dc1b7b864d2179fcb510cfa015c7" + }, + { + "path": "spec/cassettes/Octokit_Client_Authorizations/_scopes/checks_the_scopes_on_a_one-off_token.json", + "mode": "100644", + "type": "blob", + "sha": "ad6d52042fabad0e6615d4d580c550deaea6d381", + "size": 4971, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/ad6d52042fabad0e6615d4d580c550deaea6d381" + }, + { + "path": "spec/cassettes/Octokit_Client_Authorizations/_scopes/checks_the_scopes_on_the_current_token.json", + "mode": "100644", + "type": "blob", + "sha": "63e469e5183a40b7022e3cffdf5dec47136ab3a3", + "size": 4971, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/63e469e5183a40b7022e3cffdf5dec47136ab3a3" + }, + { + "path": "spec/cassettes/Octokit_Client_Authorizations/_update_authorization", + "mode": "040000", + "type": "tree", + "sha": "6c4852c11289105f83ef72cf221bc7c7f132a600", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/6c4852c11289105f83ef72cf221bc7c7f132a600" + }, + { + "path": "spec/cassettes/Octokit_Client_Authorizations/_update_authorization/updates_and_existing_authorization.json", + "mode": "100644", + "type": "blob", + "sha": "4364d5a17cf8e542e6b8ffc2504b04f832804dd4", + "size": 3537, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/4364d5a17cf8e542e6b8ffc2504b04f832804dd4" + }, + { + "path": "spec/cassettes/Octokit_Client_CommitComments", + "mode": "040000", + "type": "tree", + "sha": "d1934059793aa829f7952c4761053fa8721a875b", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/d1934059793aa829f7952c4761053fa8721a875b" + }, + { + "path": "spec/cassettes/Octokit_Client_CommitComments/_commit_comment", + "mode": "040000", + "type": "tree", + "sha": "257e0f826cbe452f467aac3464bc9b9874bbf158", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/257e0f826cbe452f467aac3464bc9b9874bbf158" + }, + { + "path": "spec/cassettes/Octokit_Client_CommitComments/_commit_comment/returns_a_single_commit_comment.json", + "mode": "100644", + "type": "blob", + "sha": "a658f95224752d792e69c892d5549ae3647ea11f", + "size": 161710, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/a658f95224752d792e69c892d5549ae3647ea11f" + }, + { + "path": "spec/cassettes/Octokit_Client_CommitComments/_commit_comments", + "mode": "040000", + "type": "tree", + "sha": "14c0caffc75930a89fb00bb1454a6bf6ba01b662", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/14c0caffc75930a89fb00bb1454a6bf6ba01b662" + }, + { + "path": "spec/cassettes/Octokit_Client_CommitComments/_commit_comments/returns_a_list_of_comments_for_a_specific_commit.json", + "mode": "100644", + "type": "blob", + "sha": "7df0bf85e7b2d27b3d8fd0661af9475ea475f1d5", + "size": 168749, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/7df0bf85e7b2d27b3d8fd0661af9475ea475f1d5" + }, + { + "path": "spec/cassettes/Octokit_Client_CommitComments/_list_commit_comments", + "mode": "040000", + "type": "tree", + "sha": "6204925da9ab2ed5b5518ab0bf5a7cd3376cb6dd", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/6204925da9ab2ed5b5518ab0bf5a7cd3376cb6dd" + }, + { + "path": "spec/cassettes/Octokit_Client_CommitComments/_list_commit_comments/returns_a_list_of_all_commit_comments.json", + "mode": "100644", + "type": "blob", + "sha": "f7b142aa753819f4e750cc72be1b5483f8eb1cdb", + "size": 65098, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/f7b142aa753819f4e750cc72be1b5483f8eb1cdb" + }, + { + "path": "spec/cassettes/Octokit_Client_CommitComments/with_commit_comment", + "mode": "040000", + "type": "tree", + "sha": "25ce85bcd69d5bdf63e4a95fea4907f970875e9f", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/25ce85bcd69d5bdf63e4a95fea4907f970875e9f" + }, + { + "path": "spec/cassettes/Octokit_Client_CommitComments/with_commit_comment/_create_commit_comment", + "mode": "040000", + "type": "tree", + "sha": "d7f712a848f03e300abbbfb3ef66547016e138b6", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/d7f712a848f03e300abbbfb3ef66547016e138b6" + }, + { + "path": "spec/cassettes/Octokit_Client_CommitComments/with_commit_comment/_create_commit_comment/creates_a_commit_comment.json", + "mode": "100644", + "type": "blob", + "sha": "e97ed856a1a028466447ec316bbd0d0c738ac493", + "size": 176267, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/e97ed856a1a028466447ec316bbd0d0c738ac493" + }, + { + "path": "spec/cassettes/Octokit_Client_CommitComments/with_commit_comment/_delete_commit_comment", + "mode": "040000", + "type": "tree", + "sha": "64bf44ecf7a2d16e1e01d8acaaea65d366942e1d", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/64bf44ecf7a2d16e1e01d8acaaea65d366942e1d" + }, + { + "path": "spec/cassettes/Octokit_Client_CommitComments/with_commit_comment/_delete_commit_comment/deletes_a_commit_comment.json", + "mode": "100644", + "type": "blob", + "sha": "4ffb852c4d523d3edd394fb500a065244aec9919", + "size": 181516, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/4ffb852c4d523d3edd394fb500a065244aec9919" + }, + { + "path": "spec/cassettes/Octokit_Client_CommitComments/with_commit_comment/_update_commit_comment", + "mode": "040000", + "type": "tree", + "sha": "ae8431d64d910e123030da40a9940df8dcdef4f1", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/ae8431d64d910e123030da40a9940df8dcdef4f1" + }, + { + "path": "spec/cassettes/Octokit_Client_CommitComments/with_commit_comment/_update_commit_comment/updates_a_commit_comment.json", + "mode": "100644", + "type": "blob", + "sha": "e89a32e8bcdfb2d01ea4cd85b284cf80be51e426", + "size": 190457, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/e89a32e8bcdfb2d01ea4cd85b284cf80be51e426" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits", + "mode": "040000", + "type": "tree", + "sha": "293e9dcd2ab09c12a8693aa06a6fc6ce81a956e0", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/293e9dcd2ab09c12a8693aa06a6fc6ce81a956e0" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_commit", + "mode": "040000", + "type": "tree", + "sha": "f26a60396dd0fa15df8bf3b3e238df158f6017cb", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/f26a60396dd0fa15df8bf3b3e238df158f6017cb" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_commit/returns_a_commit.json", + "mode": "100644", + "type": "blob", + "sha": "d28d5322b8793043b9d605cd027b66c2d7363bed", + "size": 66318, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/d28d5322b8793043b9d605cd027b66c2d7363bed" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_commits", + "mode": "040000", + "type": "tree", + "sha": "7202e2dbb3c70110e754e69a57a0bead388cf7b1", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/7202e2dbb3c70110e754e69a57a0bead388cf7b1" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_commits/handles_branch_or_sha_argument.json", + "mode": "100644", + "type": "blob", + "sha": "89e0c20692fb196466c4c9f8bb1a96a97a023d4d", + "size": 138806, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/89e0c20692fb196466c4c9f8bb1a96a97a023d4d" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_commits/handles_the_sha_option.json", + "mode": "100644", + "type": "blob", + "sha": "ea4021355c85437557108e781ad2bb3301986930", + "size": 138806, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/ea4021355c85437557108e781ad2bb3301986930" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_commits/returns_all_commits.json", + "mode": "100644", + "type": "blob", + "sha": "4cf96bdf8d13909cafca8515026b46d7a7cbf6b2", + "size": 138784, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/4cf96bdf8d13909cafca8515026b46d7a7cbf6b2" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_commits_before", + "mode": "040000", + "type": "tree", + "sha": "6b8c56a176cb9a79958380bc95fa9f69762daef1", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/6b8c56a176cb9a79958380bc95fa9f69762daef1" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_commits_before/handles_branch_or_sha_argument.json", + "mode": "100644", + "type": "blob", + "sha": "1d068d295549ba58c9762d6c740c27df38ca7a3f", + "size": 132928, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/1d068d295549ba58c9762d6c740c27df38ca7a3f" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_commits_before/handles_the_sha_option.json", + "mode": "100644", + "type": "blob", + "sha": "add1bbd751c1ad68117ebbc1d8c59d0b464c67fb", + "size": 132928, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/add1bbd751c1ad68117ebbc1d8c59d0b464c67fb" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_commits_before/returns_all_commits_until_the_specified_date.json", + "mode": "100644", + "type": "blob", + "sha": "3111db4ec1b08eda668dd38db6eb12f54411a68e", + "size": 135448, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3111db4ec1b08eda668dd38db6eb12f54411a68e" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_commits_between", + "mode": "040000", + "type": "tree", + "sha": "6ab28d1a3fff07c9bdafa91daaa48e7c99e17a19", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/6ab28d1a3fff07c9bdafa91daaa48e7c99e17a19" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_commits_between/handles_branch_or_sha_argument.json", + "mode": "100644", + "type": "blob", + "sha": "55df495e0148eb00cc5911f1b663e5bc4120470f", + "size": 135468, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/55df495e0148eb00cc5911f1b663e5bc4120470f" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_commits_between/handles_the_sha_option.json", + "mode": "100644", + "type": "blob", + "sha": "0e6d39698812c6e06ebc7b45989cedb6371130d9", + "size": 135468, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/0e6d39698812c6e06ebc7b45989cedb6371130d9" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_commits_between/returns_all_commits_until_the_specified_date.json", + "mode": "100644", + "type": "blob", + "sha": "ec84af1da1b8a18fbafc397b1b09fb7e34c5d647", + "size": 135446, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/ec84af1da1b8a18fbafc397b1b09fb7e34c5d647" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_commits_on", + "mode": "040000", + "type": "tree", + "sha": "0654d57e42740bdd0181ee5eb9aac68b7f718d00", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/0654d57e42740bdd0181ee5eb9aac68b7f718d00" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_commits_on/handles_branch_or_sha_argument.json", + "mode": "100644", + "type": "blob", + "sha": "07b4e7662762087ef56abfc6849f6af6a6a243ef", + "size": 5773, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/07b4e7662762087ef56abfc6849f6af6a6a243ef" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_commits_on/handles_the_sha_option.json", + "mode": "100644", + "type": "blob", + "sha": "d5bb1d681691367178c63b96d2972d859c19e365", + "size": 5773, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/d5bb1d681691367178c63b96d2972d859c19e365" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_commits_on/returns_all_commits_on_the_specified_date.json", + "mode": "100644", + "type": "blob", + "sha": "2c2500e0ee3de444283e561b9693804f45f55d5f", + "size": 36961, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/2c2500e0ee3de444283e561b9693804f45f55d5f" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_commits_since", + "mode": "040000", + "type": "tree", + "sha": "fec21bf16347fb77898ed348262445fc60c2716b", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/fec21bf16347fb77898ed348262445fc60c2716b" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_commits_since/handles_branch_or_sha_argument.json", + "mode": "100644", + "type": "blob", + "sha": "df0f1ced8be9955d3b3737e779aadd95240c1631", + "size": 138920, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/df0f1ced8be9955d3b3737e779aadd95240c1631" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_commits_since/handles_the_sha_option.json", + "mode": "100644", + "type": "blob", + "sha": "dc9f7e9e0d9892d4ff837c0c297d52bc1b8332d6", + "size": 138920, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/dc9f7e9e0d9892d4ff837c0c297d52bc1b8332d6" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_commits_since/returns_all_commits_since_the_specified_date.json", + "mode": "100644", + "type": "blob", + "sha": "278925e8aaa7ed85ab0e21735f4c9b31bfeb6d53", + "size": 138898, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/278925e8aaa7ed85ab0e21735f4c9b31bfeb6d53" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_compare", + "mode": "040000", + "type": "tree", + "sha": "019e801decdad5b5180f2e43fc48e92dd4ffc674", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/019e801decdad5b5180f2e43fc48e92dd4ffc674" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_compare/returns_a_comparison.json", + "mode": "100644", + "type": "blob", + "sha": "638aa0d6ce37fbe875e9c6bf8929b0b19eae85ba", + "size": 11500, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/638aa0d6ce37fbe875e9c6bf8929b0b19eae85ba" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_create_commit", + "mode": "040000", + "type": "tree", + "sha": "0dc98230e1071e436b95cc970dfe5c27fc402e7c", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/0dc98230e1071e436b95cc970dfe5c27fc402e7c" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_create_commit/creates_a_commit.json", + "mode": "100644", + "type": "blob", + "sha": "f964045edb12cf4bda0bc12e55caec66211cb4ea", + "size": 158316, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/f964045edb12cf4bda0bc12e55caec66211cb4ea" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_git_commit", + "mode": "040000", + "type": "tree", + "sha": "d2498ec11b6cfdbd7dfc8c6492d137c9c2fc7a33", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/d2498ec11b6cfdbd7dfc8c6492d137c9c2fc7a33" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_git_commit/returns_a_detailed_git_commit.json", + "mode": "100644", + "type": "blob", + "sha": "45da14a29ad8e66320d0129c8d4dd30980398707", + "size": 3029, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/45da14a29ad8e66320d0129c8d4dd30980398707" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_merge", + "mode": "040000", + "type": "tree", + "sha": "5585319a6116beb53552e3fd65b66c8e23cf61ef", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/5585319a6116beb53552e3fd65b66c8e23cf61ef" + }, + { + "path": "spec/cassettes/Octokit_Client_Commits/_merge/merges_a_branch_into_another.json", + "mode": "100644", + "type": "blob", + "sha": "faf19e720a6f0e03e76cd28c8c14de374259b1b6", + "size": 161590, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/faf19e720a6f0e03e76cd28c8c14de374259b1b6" + }, + { + "path": "spec/cassettes/Octokit_Client_Contents", + "mode": "040000", + "type": "tree", + "sha": "7d5f812c9babd48e74f3d60bba024fd68c40e390", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/7d5f812c9babd48e74f3d60bba024fd68c40e390" + }, + { + "path": "spec/cassettes/Octokit_Client_Contents/_archive_link", + "mode": "040000", + "type": "tree", + "sha": "6bf11b127a6e00899f50daa1700db5ac8b3a570d", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/6bf11b127a6e00899f50daa1700db5ac8b3a570d" + }, + { + "path": "spec/cassettes/Octokit_Client_Contents/_archive_link/returns_the_headers_of_the_request.json", + "mode": "100644", + "type": "blob", + "sha": "19bbd70e69bf797f184d75d4337771a51f66eef6", + "size": 1225, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/19bbd70e69bf797f184d75d4337771a51f66eef6" + }, + { + "path": "spec/cassettes/Octokit_Client_Contents/_contents", + "mode": "040000", + "type": "tree", + "sha": "be57a46346c0a6f758ff8cd07f9b2572bbb3e8b5", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/be57a46346c0a6f758ff8cd07f9b2572bbb3e8b5" + }, + { + "path": "spec/cassettes/Octokit_Client_Contents/_contents/returns_the_contents_of_a_file.json", + "mode": "100644", + "type": "blob", + "sha": "776317492f1da4064662c96b21ee30ddffe2b535", + "size": 3675, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/776317492f1da4064662c96b21ee30ddffe2b535" + }, + { + "path": "spec/cassettes/Octokit_Client_Contents/_create_contents", + "mode": "040000", + "type": "tree", + "sha": "cf9d5b42552addb59e44a9f3ce48d2e20861f5ae", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/cf9d5b42552addb59e44a9f3ce48d2e20861f5ae" + }, + { + "path": "spec/cassettes/Octokit_Client_Contents/_create_contents/creates_contents_from_File_object.json", + "mode": "100644", + "type": "blob", + "sha": "9b609e87ae3663a0d15db01f356d84aed71be266", + "size": 8373, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/9b609e87ae3663a0d15db01f356d84aed71be266" + }, + { + "path": "spec/cassettes/Octokit_Client_Contents/_create_contents/creates_contents_from_Tempfile_object.json", + "mode": "100644", + "type": "blob", + "sha": "fc691f6bc4ca0f690f5e986a00c8d9fc2ae82d1a", + "size": 3976, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/fc691f6bc4ca0f690f5e986a00c8d9fc2ae82d1a" + }, + { + "path": "spec/cassettes/Octokit_Client_Contents/_create_contents/creates_contents_from_file_path.json", + "mode": "100644", + "type": "blob", + "sha": "0adb814c1cb2d6e5c183b876b81ed78820ef4bbd", + "size": 8373, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/0adb814c1cb2d6e5c183b876b81ed78820ef4bbd" + }, + { + "path": "spec/cassettes/Octokit_Client_Contents/_create_contents/creates_repository_contents_at_a_path.json", + "mode": "100644", + "type": "blob", + "sha": "497296d714c79ca9de27546f3d5e24c8936a6e56", + "size": 8281, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/497296d714c79ca9de27546f3d5e24c8936a6e56" + }, + { + "path": "spec/cassettes/Octokit_Client_Contents/_create_contents/does_not_add_new_lines.json", + "mode": "100644", + "type": "blob", + "sha": "c2ae924585df5c0a899e6615c118802b536853ce", + "size": 114649, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/c2ae924585df5c0a899e6615c118802b536853ce" + }, + { + "path": "spec/cassettes/Octokit_Client_Contents/_delete_contents", + "mode": "040000", + "type": "tree", + "sha": "281270f46dd6bc7a4f425bed1441315b227e87c3", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/281270f46dd6bc7a4f425bed1441315b227e87c3" + }, + { + "path": "spec/cassettes/Octokit_Client_Contents/_delete_contents/deletes_repository_contents_at_a_path.json", + "mode": "100644", + "type": "blob", + "sha": "22367c18ee4636ecd8548c410620ca19aa2bef9e", + "size": 14290, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/22367c18ee4636ecd8548c410620ca19aa2bef9e" + }, + { + "path": "spec/cassettes/Octokit_Client_Contents/_readme", + "mode": "040000", + "type": "tree", + "sha": "ad707c2bc172201ea2932cdb39224b33cbc77218", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/ad707c2bc172201ea2932cdb39224b33cbc77218" + }, + { + "path": "spec/cassettes/Octokit_Client_Contents/_readme/returns_the_default_readme.json", + "mode": "100644", + "type": "blob", + "sha": "f72544b78a5208c0368f3e6a0410dc135996d373", + "size": 15942, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/f72544b78a5208c0368f3e6a0410dc135996d373" + }, + { + "path": "spec/cassettes/Octokit_Client_Contents/_update_contents", + "mode": "040000", + "type": "tree", + "sha": "19f1a5bfded3aedcf9cc16e81866d455218844db", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/19f1a5bfded3aedcf9cc16e81866d455218844db" + }, + { + "path": "spec/cassettes/Octokit_Client_Contents/_update_contents/does_not_add_new_lines.json", + "mode": "100644", + "type": "blob", + "sha": "3eff73209c2f7bf8d2ca5ae2d48329b35cc853a2", + "size": 123487, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3eff73209c2f7bf8d2ca5ae2d48329b35cc853a2" + }, + { + "path": "spec/cassettes/Octokit_Client_Contents/_update_contents/updates_repository_contents_at_a_path.json", + "mode": "100644", + "type": "blob", + "sha": "a89fb804f3509a5cd2c1a039192a14cd76712348", + "size": 16684, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/a89fb804f3509a5cd2c1a039192a14cd76712348" + }, + { + "path": "spec/cassettes/Octokit_Client_Deployments", + "mode": "040000", + "type": "tree", + "sha": "b6469062531544ece431dc85d3263827fdb2a020", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/b6469062531544ece431dc85d3263827fdb2a020" + }, + { + "path": "spec/cassettes/Octokit_Client_Deployments/_create_deployment", + "mode": "040000", + "type": "tree", + "sha": "9e14d40c72059953f555e49d3c55651b4ab03792", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/9e14d40c72059953f555e49d3c55651b4ab03792" + }, + { + "path": "spec/cassettes/Octokit_Client_Deployments/_create_deployment/creates_a_deployment.json", + "mode": "100644", + "type": "blob", + "sha": "193af274c26ea16b93daee56a72bd831035261fe", + "size": 14164, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/193af274c26ea16b93daee56a72bd831035261fe" + }, + { + "path": "spec/cassettes/Octokit_Client_Deployments/_create_deployment/creates_a_deployment_with_a_payload.json", + "mode": "100644", + "type": "blob", + "sha": "6414a45949357aba23ab0d28852db48bc86174a9", + "size": 14340, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/6414a45949357aba23ab0d28852db48bc86174a9" + }, + { + "path": "spec/cassettes/Octokit_Client_Deployments/_create_deployment_status", + "mode": "040000", + "type": "tree", + "sha": "ce230332d6f691b5b26aced1a756d709b7170601", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/ce230332d6f691b5b26aced1a756d709b7170601" + }, + { + "path": "spec/cassettes/Octokit_Client_Deployments/_create_deployment_status/creates_a_deployment_status.json", + "mode": "100644", + "type": "blob", + "sha": "2b497db56c6e8ebede8e0b9097cd89b863d21f7a", + "size": 6817, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/2b497db56c6e8ebede8e0b9097cd89b863d21f7a" + }, + { + "path": "spec/cassettes/Octokit_Client_Deployments/_deployment_statuses", + "mode": "040000", + "type": "tree", + "sha": "55f0710ee5759cf36c8638d9c73611e44ba02437", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/55f0710ee5759cf36c8638d9c73611e44ba02437" + }, + { + "path": "spec/cassettes/Octokit_Client_Deployments/_deployment_statuses/lists_deployment_statuses.json", + "mode": "100644", + "type": "blob", + "sha": "7431768c0a31ea3b7cd0cae8d687c20821045dec", + "size": 10103, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/7431768c0a31ea3b7cd0cae8d687c20821045dec" + }, + { + "path": "spec/cassettes/Octokit_Client_Deployments/_deployments", + "mode": "040000", + "type": "tree", + "sha": "b089e95aeb80a2b3a7338b5e8fa320a3af509521", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/b089e95aeb80a2b3a7338b5e8fa320a3af509521" + }, + { + "path": "spec/cassettes/Octokit_Client_Deployments/_deployments/lists_deployments.json", + "mode": "100644", + "type": "blob", + "sha": "ef4614efff6e25ef5aa5043223aed7ef76bf95dc", + "size": 59707, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/ef4614efff6e25ef5aa5043223aed7ef76bf95dc" + }, + { + "path": "spec/cassettes/Octokit_Client_Downloads", + "mode": "040000", + "type": "tree", + "sha": "2e36951400cc38b5567ee65b8d2e19ef83bbcc9e", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/2e36951400cc38b5567ee65b8d2e19ef83bbcc9e" + }, + { + "path": "spec/cassettes/Octokit_Client_Downloads/_download", + "mode": "040000", + "type": "tree", + "sha": "9c9b7547b3a0c48a6ff0b431f1bf7d6303a78487", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/9c9b7547b3a0c48a6ff0b431f1bf7d6303a78487" + }, + { + "path": "spec/cassettes/Octokit_Client_Downloads/_download/gets_a_single_download.json", + "mode": "100644", + "type": "blob", + "sha": "bb42ce3dfe0d0595edf2c067351eaf2b9b891b47", + "size": 1857, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/bb42ce3dfe0d0595edf2c067351eaf2b9b891b47" + }, + { + "path": "spec/cassettes/Octokit_Client_Downloads/_downloads", + "mode": "040000", + "type": "tree", + "sha": "5dd46ca5da009af9174018f01bb13621f0599ba0", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/5dd46ca5da009af9174018f01bb13621f0599ba0" + }, + { + "path": "spec/cassettes/Octokit_Client_Downloads/_downloads/lists_available_downloads.json", + "mode": "100644", + "type": "blob", + "sha": "b5e0e66bf7ad0d5397f9e9ed876a26f44ea02f4f", + "size": 11932, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/b5e0e66bf7ad0d5397f9e9ed876a26f44ea02f4f" + }, + { + "path": "spec/cassettes/Octokit_Client_Emojis", + "mode": "040000", + "type": "tree", + "sha": "5e5c4a2a386ac323ded23e3d606d091276c14da9", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/5e5c4a2a386ac323ded23e3d606d091276c14da9" + }, + { + "path": "spec/cassettes/Octokit_Client_Emojis/_emojis", + "mode": "040000", + "type": "tree", + "sha": "1c6e058eedd5b290c950b8566dc1d1499f28411e", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/1c6e058eedd5b290c950b8566dc1d1499f28411e" + }, + { + "path": "spec/cassettes/Octokit_Client_Emojis/_emojis/returns_all_github_emojis.json", + "mode": "100644", + "type": "blob", + "sha": "a11fa432d1031b1588e18c89c535d2ed051b7d9c", + "size": 115688, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/a11fa432d1031b1588e18c89c535d2ed051b7d9c" + }, + { + "path": "spec/cassettes/Octokit_Client_Events", + "mode": "040000", + "type": "tree", + "sha": "1de1850c44a23ec6243e2b8f303b80102f99d68d", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/1de1850c44a23ec6243e2b8f303b80102f99d68d" + }, + { + "path": "spec/cassettes/Octokit_Client_Events/_issue_event", + "mode": "040000", + "type": "tree", + "sha": "3dca9ac2e1a1d650f3cfc98faa6f576b3f9a152b", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/3dca9ac2e1a1d650f3cfc98faa6f576b3f9a152b" + }, + { + "path": "spec/cassettes/Octokit_Client_Events/_issue_event/lists_issue_events_for_a_repository.json", + "mode": "100644", + "type": "blob", + "sha": "aea8c35ae8f6eebb69fe1d458cdfd3998aad9054", + "size": 5560, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/aea8c35ae8f6eebb69fe1d458cdfd3998aad9054" + }, + { + "path": "spec/cassettes/Octokit_Client_Events/_issue_events", + "mode": "040000", + "type": "tree", + "sha": "9c0cdfa6aa2e85417a900cde6297fc5a2b30d2f5", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/9c0cdfa6aa2e85417a900cde6297fc5a2b30d2f5" + }, + { + "path": "spec/cassettes/Octokit_Client_Events/_issue_events/lists_issue_events_for_a_repository.json", + "mode": "100644", + "type": "blob", + "sha": "c0a5f39d6eb5d8d7ba1c44890ba6bc949b6cc4fb", + "size": 1221, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/c0a5f39d6eb5d8d7ba1c44890ba6bc949b6cc4fb" + }, + { + "path": "spec/cassettes/Octokit_Client_Events/_organization_events", + "mode": "040000", + "type": "tree", + "sha": "fd421a9ce73361199928c1e782637f30f053bfca", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/fd421a9ce73361199928c1e782637f30f053bfca" + }, + { + "path": "spec/cassettes/Octokit_Client_Events/_organization_events/returns_all_events_for_an_organization.json", + "mode": "100644", + "type": "blob", + "sha": "ade92487ccdf9e51835030539acb7fea888bbd28", + "size": 4849, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/ade92487ccdf9e51835030539acb7fea888bbd28" + }, + { + "path": "spec/cassettes/Octokit_Client_Events/_organization_public_events", + "mode": "040000", + "type": "tree", + "sha": "bea3ee8757a1af00e36437a41999b744286578aa", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/bea3ee8757a1af00e36437a41999b744286578aa" + }, + { + "path": "spec/cassettes/Octokit_Client_Events/_organization_public_events/returns_an_organization_s_public_events.json", + "mode": "100644", + "type": "blob", + "sha": "eb3e312cdd04b2aaa7358964eb5e72e59607395d", + "size": 237991, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/eb3e312cdd04b2aaa7358964eb5e72e59607395d" + }, + { + "path": "spec/cassettes/Octokit_Client_Events/_public_events", + "mode": "040000", + "type": "tree", + "sha": "51d814ee24c31bae91ccfdbaa169c16eb8649cef", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/51d814ee24c31bae91ccfdbaa169c16eb8649cef" + }, + { + "path": "spec/cassettes/Octokit_Client_Events/_public_events/returns_all_public_events.json", + "mode": "100644", + "type": "blob", + "sha": "73a6ac63c764dd3356c4b939cafbbf9bb16f8330", + "size": 101693, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/73a6ac63c764dd3356c4b939cafbbf9bb16f8330" + }, + { + "path": "spec/cassettes/Octokit_Client_Events/_received_events", + "mode": "040000", + "type": "tree", + "sha": "4d98ea59c3ff04ffd1ad7b5203b108a3205e4663", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/4d98ea59c3ff04ffd1ad7b5203b108a3205e4663" + }, + { + "path": "spec/cassettes/Octokit_Client_Events/_received_events/returns_all_user_received_events.json", + "mode": "100644", + "type": "blob", + "sha": "2e79a7d7772539b6c1b0e5a2feec5642194bc4fe", + "size": 8506, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/2e79a7d7772539b6c1b0e5a2feec5642194bc4fe" + }, + { + "path": "spec/cassettes/Octokit_Client_Events/_received_public_events", + "mode": "040000", + "type": "tree", + "sha": "1cf749c50fe4b866398a2ee6517d5003b3ce92a1", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/1cf749c50fe4b866398a2ee6517d5003b3ce92a1" + }, + { + "path": "spec/cassettes/Octokit_Client_Events/_received_public_events/returns_public_user_received_events.json", + "mode": "100644", + "type": "blob", + "sha": "aca0f2f4b0851b9ef5021953bd426e2efb191012", + "size": 8520, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/aca0f2f4b0851b9ef5021953bd426e2efb191012" + }, + { + "path": "spec/cassettes/Octokit_Client_Events/_repo_issue_events", + "mode": "040000", + "type": "tree", + "sha": "042b9002c8773e966ca0a0d7c25f6a04a40a420e", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/042b9002c8773e966ca0a0d7c25f6a04a40a420e" + }, + { + "path": "spec/cassettes/Octokit_Client_Events/_repo_issue_events/lists_issue_events_for_a_repository.json", + "mode": "100644", + "type": "blob", + "sha": "d4dada2871d4eb0ebba658a4459f26091f917a5a", + "size": 140021, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/d4dada2871d4eb0ebba658a4459f26091f917a5a" + }, + { + "path": "spec/cassettes/Octokit_Client_Events/_repository_events", + "mode": "040000", + "type": "tree", + "sha": "206dea07f130c53a738573ffc6df7aae25cf9edb", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/206dea07f130c53a738573ffc6df7aae25cf9edb" + }, + { + "path": "spec/cassettes/Octokit_Client_Events/_repository_events/returns_events_for_a_repository.json", + "mode": "100644", + "type": "blob", + "sha": "c5837baeeb4ad08875861600a215ed28985fa3fe", + "size": 260334, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/c5837baeeb4ad08875861600a215ed28985fa3fe" + }, + { + "path": "spec/cassettes/Octokit_Client_Events/_repository_network_events", + "mode": "040000", + "type": "tree", + "sha": "5356a176fa0f42882dcdcd9b314a79e27b083351", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/5356a176fa0f42882dcdcd9b314a79e27b083351" + }, + { + "path": "spec/cassettes/Octokit_Client_Events/_repository_network_events/returns_events_for_a_repository_s_network.json", + "mode": "100644", + "type": "blob", + "sha": "30ba3029082e6393866427dfd5d2b801c2bed1bc", + "size": 133399, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/30ba3029082e6393866427dfd5d2b801c2bed1bc" + }, + { + "path": "spec/cassettes/Octokit_Client_Events/_user_events", + "mode": "040000", + "type": "tree", + "sha": "43d5341625bf74bf1a38657b8ce3032047ac288a", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/43d5341625bf74bf1a38657b8ce3032047ac288a" + }, + { + "path": "spec/cassettes/Octokit_Client_Events/_user_events/returns_all_user_events.json", + "mode": "100644", + "type": "blob", + "sha": "aa743182e790e261e89a2f4e730838203b4b1b94", + "size": 164973, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/aa743182e790e261e89a2f4e730838203b4b1b94" + }, + { + "path": "spec/cassettes/Octokit_Client_Events/_user_public_events", + "mode": "040000", + "type": "tree", + "sha": "9b87a76951467a0d9605fdbd51f825535594b84c", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/9b87a76951467a0d9605fdbd51f825535594b84c" + }, + { + "path": "spec/cassettes/Octokit_Client_Events/_user_public_events/returns_public_events_performed_by_a_user.json", + "mode": "100644", + "type": "blob", + "sha": "b4d72e1c9124a3c2a668e395187a80256363cb1a", + "size": 164987, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/b4d72e1c9124a3c2a668e395187a80256363cb1a" + }, + { + "path": "spec/cassettes/Octokit_Client_Feeds", + "mode": "040000", + "type": "tree", + "sha": "9de699c3f5d206434f1b69daf48cc9e7d411d1aa", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/9de699c3f5d206434f1b69daf48cc9e7d411d1aa" + }, + { + "path": "spec/cassettes/Octokit_Client_Feeds/_feed", + "mode": "040000", + "type": "tree", + "sha": "e7fd900793a570e2ef8c684e72950018263a1a9a", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/e7fd900793a570e2ef8c684e72950018263a1a9a" + }, + { + "path": "spec/cassettes/Octokit_Client_Feeds/_feed/returns_parsed_feed_data.json", + "mode": "100644", + "type": "blob", + "sha": "26e6d2e26fa90f1559cee3c3f49ba1e7b6f0bd3b", + "size": 76689, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/26e6d2e26fa90f1559cee3c3f49ba1e7b6f0bd3b" + }, + { + "path": "spec/cassettes/Octokit_Client_Feeds/_feeds", + "mode": "040000", + "type": "tree", + "sha": "82e32de7de46f5f745562f0e357f96887ce20926", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/82e32de7de46f5f745562f0e357f96887ce20926" + }, + { + "path": "spec/cassettes/Octokit_Client_Feeds/_feeds/when_authenticated_with_basic_auth", + "mode": "040000", + "type": "tree", + "sha": "8ae20d66a6333ed0ecde54f1a57cc63da992eb37", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/8ae20d66a6333ed0ecde54f1a57cc63da992eb37" + }, + { + "path": "spec/cassettes/Octokit_Client_Feeds/_feeds/when_authenticated_with_basic_auth/returns_private_feeds.json", + "mode": "100644", + "type": "blob", + "sha": "b812099a4b3943df3754267a8878aac00876321b", + "size": 2574, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/b812099a4b3943df3754267a8878aac00876321b" + }, + { + "path": "spec/cassettes/Octokit_Client_Feeds/_feeds/when_authenticated_with_oauth_token", + "mode": "040000", + "type": "tree", + "sha": "9c68a55fba6de5b3266221743a7c72107a404e07", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/9c68a55fba6de5b3266221743a7c72107a404e07" + }, + { + "path": "spec/cassettes/Octokit_Client_Feeds/_feeds/when_authenticated_with_oauth_token/returns_the_authenticated_users_feeds.json", + "mode": "100644", + "type": "blob", + "sha": "4ebb971c4a6f67fb952689edba3ebe61e59d3fcc", + "size": 1862, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/4ebb971c4a6f67fb952689edba3ebe61e59d3fcc" + }, + { + "path": "spec/cassettes/Octokit_Client_Feeds/_feeds/when_unauthenticated", + "mode": "040000", + "type": "tree", + "sha": "473be80ea365c45608b9c6d01d3d048a92a98e7d", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/473be80ea365c45608b9c6d01d3d048a92a98e7d" + }, + { + "path": "spec/cassettes/Octokit_Client_Feeds/_feeds/when_unauthenticated/returns_the_public_feeds_list.json", + "mode": "100644", + "type": "blob", + "sha": "01d6d6f479efb426928742187bdff678134f57db", + "size": 1553, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/01d6d6f479efb426928742187bdff678134f57db" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists", + "mode": "040000", + "type": "tree", + "sha": "a7d6bd8b15b99f55802a0fc1fbc1b3532b599c3d", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/a7d6bd8b15b99f55802a0fc1fbc1b3532b599c3d" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/unauthenticated", + "mode": "040000", + "type": "tree", + "sha": "2439b6f434d4d3d550e2623a4705734889fef17d", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/2439b6f434d4d3d550e2623a4705734889fef17d" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/unauthenticated/_gist", + "mode": "040000", + "type": "tree", + "sha": "082b5a32f6d6b127b147895eea68edc768756e39", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/082b5a32f6d6b127b147895eea68edc768756e39" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/unauthenticated/_gist/returns_the_gist_by_ID.json", + "mode": "100644", + "type": "blob", + "sha": "35babd31bfcd13aecb52a3d94c6ae079ce0836b9", + "size": 5982, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/35babd31bfcd13aecb52a3d94c6ae079ce0836b9" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/unauthenticated/_gists", + "mode": "040000", + "type": "tree", + "sha": "2d5238e56dc67f9a22775816d619402659b79337", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/2d5238e56dc67f9a22775816d619402659b79337" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/unauthenticated/_gists/with_username_passed", + "mode": "040000", + "type": "tree", + "sha": "2e22b1d90198aa80cba6618ec4e60656f41a5329", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/2e22b1d90198aa80cba6618ec4e60656f41a5329" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/unauthenticated/_gists/with_username_passed/returns_a_list_of_gists.json", + "mode": "100644", + "type": "blob", + "sha": "27de1aa5c37b54503ece6d50d0a8650d8926780a", + "size": 58750, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/27de1aa5c37b54503ece6d50d0a8650d8926780a" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/unauthenticated/_gists/without_a_username_passed", + "mode": "040000", + "type": "tree", + "sha": "dcd0ac3738d226fa001fb329f4c7a2f917272c71", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/dcd0ac3738d226fa001fb329f4c7a2f917272c71" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/unauthenticated/_gists/without_a_username_passed/returns_a_list_of_gists.json", + "mode": "100644", + "type": "blob", + "sha": "d9f15f1508c79425e19cab7550f08eb07ce02b7f", + "size": 60028, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/d9f15f1508c79425e19cab7550f08eb07ce02b7f" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/unauthenticated/_public_gists", + "mode": "040000", + "type": "tree", + "sha": "b7d77be8867c40b608cb4c5f5fd5799a9478549e", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/b7d77be8867c40b608cb4c5f5fd5799a9478549e" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/unauthenticated/_public_gists/returns_public_gists.json", + "mode": "100644", + "type": "blob", + "sha": "c55d7f2447211fb605e1706a8e45c72919d0469a", + "size": 60049, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/c55d7f2447211fb605e1706a8e45c72919d0469a" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated", + "mode": "040000", + "type": "tree", + "sha": "a83c89ff89d82fc75e2ec056205e2c860d6312a8", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/a83c89ff89d82fc75e2ec056205e2c860d6312a8" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_create_gist", + "mode": "040000", + "type": "tree", + "sha": "17f27d87b0e903b42411f336b5b39cf3c021fd58", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/17f27d87b0e903b42411f336b5b39cf3c021fd58" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_create_gist/creates_a_new_gist.json", + "mode": "100644", + "type": "blob", + "sha": "5e6a3a6fa0a24755b203fc8e6c51ad912d9d5922", + "size": 9534, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/5e6a3a6fa0a24755b203fc8e6c51ad912d9d5922" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_create_gist_comment", + "mode": "040000", + "type": "tree", + "sha": "cb550bb48da0dc52cb54c9f51119cf25814c0fa3", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/cb550bb48da0dc52cb54c9f51119cf25814c0fa3" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_create_gist_comment/creates_a_gist_comment.json", + "mode": "100644", + "type": "blob", + "sha": "1c33e8aedac65e34eba8f878a32bbc898333a8c5", + "size": 9534, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/1c33e8aedac65e34eba8f878a32bbc898333a8c5" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_delete_gist", + "mode": "040000", + "type": "tree", + "sha": "d5b170b29d411162644c2cd2476cff556950d2be", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/d5b170b29d411162644c2cd2476cff556950d2be" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_delete_gist/deletes_an_existing_gist.json", + "mode": "100644", + "type": "blob", + "sha": "2fdb61055ca82aecd7b11f8f7f58b0b416b708e3", + "size": 11032, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/2fdb61055ca82aecd7b11f8f7f58b0b416b708e3" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_delete_gist_comment", + "mode": "040000", + "type": "tree", + "sha": "667641098a21cec240ba41b67c2bf2a75ce1e96a", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/667641098a21cec240ba41b67c2bf2a75ce1e96a" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_delete_gist_comment/deletes_a_gist_comment.json", + "mode": "100644", + "type": "blob", + "sha": "7024fb4e954a6ea2639aeb6d4610272a0ae51528", + "size": 13885, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/7024fb4e954a6ea2639aeb6d4610272a0ae51528" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_edit_gist", + "mode": "040000", + "type": "tree", + "sha": "bb8388836cf504183200183277dcd0278578ec1f", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/bb8388836cf504183200183277dcd0278578ec1f" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_edit_gist/edit_an_existing_gist.json", + "mode": "100644", + "type": "blob", + "sha": "c2f4a49fa958d8fe79660e8bb54976e50d52385c", + "size": 14548, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/c2f4a49fa958d8fe79660e8bb54976e50d52385c" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_fork_gist", + "mode": "040000", + "type": "tree", + "sha": "b8b0799ba330d99869308d0bafa730d61edf7ed7", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/b8b0799ba330d99869308d0bafa730d61edf7ed7" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_fork_gist/forks_an_existing_gist.json", + "mode": "100644", + "type": "blob", + "sha": "fe65ae748f5fd86af88cded32ac0404a728d7465", + "size": 22698, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/fe65ae748f5fd86af88cded32ac0404a728d7465" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_gist_comment", + "mode": "040000", + "type": "tree", + "sha": "ff61f298800d40764d3f935c0fa2f4e1f0f74ced", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/ff61f298800d40764d3f935c0fa2f4e1f0f74ced" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_gist_comment/returns_a_gist_comment.json", + "mode": "100644", + "type": "blob", + "sha": "874a0aaef50b26f966c55a59573a425587ce7cb1", + "size": 12413, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/874a0aaef50b26f966c55a59573a425587ce7cb1" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_gist_comments", + "mode": "040000", + "type": "tree", + "sha": "1f27cc9ef67614d67438088888b01a017b670aa2", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/1f27cc9ef67614d67438088888b01a017b670aa2" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_gist_comments/returns_the_list_of_gist_comments.json", + "mode": "100644", + "type": "blob", + "sha": "336faa99089958cae175c46d8d7234805b5bbca8", + "size": 346490, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/336faa99089958cae175c46d8d7234805b5bbca8" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_gist_starred_", + "mode": "040000", + "type": "tree", + "sha": "86e810a35db352078dd65dcc422417f8f92bccf4", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/86e810a35db352078dd65dcc422417f8f92bccf4" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_gist_starred_/is_not_starred.json", + "mode": "100644", + "type": "blob", + "sha": "687e6146a13da8333f49f98ab5273feaaa2f4aa7", + "size": 10940, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/687e6146a13da8333f49f98ab5273feaaa2f4aa7" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_gist_starred_/with_starred_gist", + "mode": "040000", + "type": "tree", + "sha": "477639b42146accd8b65b16bc765adb79b0a1411", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/477639b42146accd8b65b16bc765adb79b0a1411" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_gist_starred_/with_starred_gist/is_starred.json", + "mode": "100644", + "type": "blob", + "sha": "01e12897c2d77cb43b6c1706d4b450126877f70a", + "size": 12451, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/01e12897c2d77cb43b6c1706d4b450126877f70a" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_gists", + "mode": "040000", + "type": "tree", + "sha": "1c398e3eec28523b0bc0d4a4a719407c902be387", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/1c398e3eec28523b0bc0d4a4a719407c902be387" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_gists/returns_a_list_of_gists.json", + "mode": "100644", + "type": "blob", + "sha": "265d129e44e62249c425cb9de82740fce0988736", + "size": 69874, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/265d129e44e62249c425cb9de82740fce0988736" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_star_gist", + "mode": "040000", + "type": "tree", + "sha": "b8cb4ba75123f0cc506bd5a4766247a4b9e2e073", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/b8cb4ba75123f0cc506bd5a4766247a4b9e2e073" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_star_gist/stars_an_existing_gist.json", + "mode": "100644", + "type": "blob", + "sha": "53f6bbe5d2913681fa35ba3137f85761e11638c5", + "size": 10896, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/53f6bbe5d2913681fa35ba3137f85761e11638c5" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_starred_gists", + "mode": "040000", + "type": "tree", + "sha": "56e661f806b4d486229f7eba44aee82b22919242", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/56e661f806b4d486229f7eba44aee82b22919242" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_starred_gists/returns_the_user_s_starred_gists.json", + "mode": "100644", + "type": "blob", + "sha": "6f6c806480bd6cc40f58dc9014ccae87ed83d3e9", + "size": 36486, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/6f6c806480bd6cc40f58dc9014ccae87ed83d3e9" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_unstar_gist", + "mode": "040000", + "type": "tree", + "sha": "d677e331540a9bd57558d5e4125464942c2c7076", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/d677e331540a9bd57558d5e4125464942c2c7076" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_unstar_gist/unstars_an_existing_gist.json", + "mode": "100644", + "type": "blob", + "sha": "d5d842624fb82df29d00a26cf036ebe568649346", + "size": 10899, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/d5d842624fb82df29d00a26cf036ebe568649346" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_update_gist_comment", + "mode": "040000", + "type": "tree", + "sha": "c145f3ac996774c6bc5316fe2d48653469476a24", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/c145f3ac996774c6bc5316fe2d48653469476a24" + }, + { + "path": "spec/cassettes/Octokit_Client_Gists/when_authenticated/_update_gist_comment/updates_a_gist_comment.json", + "mode": "100644", + "type": "blob", + "sha": "df1d827e69f79a00950e0553e1dc38643be33282", + "size": 12464, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/df1d827e69f79a00950e0553e1dc38643be33282" + }, + { + "path": "spec/cassettes/Octokit_Client_Gitignore", + "mode": "040000", + "type": "tree", + "sha": "2cb30a8db84a8c87ee0fc6964a3eb44685636e22", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/2cb30a8db84a8c87ee0fc6964a3eb44685636e22" + }, + { + "path": "spec/cassettes/Octokit_Client_Gitignore/_gitignore_template", + "mode": "040000", + "type": "tree", + "sha": "bf64613406f9ba53906598d97f3558c513e224e0", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/bf64613406f9ba53906598d97f3558c513e224e0" + }, + { + "path": "spec/cassettes/Octokit_Client_Gitignore/_gitignore_template/returns_the_ruby_gitignore_template.json", + "mode": "100644", + "type": "blob", + "sha": "018473a8eb727091c16dbd40629102e811b35cdf", + "size": 1490, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/018473a8eb727091c16dbd40629102e811b35cdf" + }, + { + "path": "spec/cassettes/Octokit_Client_Gitignore/_gitignore_templates", + "mode": "040000", + "type": "tree", + "sha": "6a16a922fa2d970357d29091099d6a1d8f3355c7", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/6a16a922fa2d970357d29091099d6a1d8f3355c7" + }, + { + "path": "spec/cassettes/Octokit_Client_Gitignore/_gitignore_templates/returns_all_gitignore_templates.json", + "mode": "100644", + "type": "blob", + "sha": "837ddfca0a513f6d39c5e48de8837c4fcf346439", + "size": 2249, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/837ddfca0a513f6d39c5e48de8837c4fcf346439" + }, + { + "path": "spec/cassettes/Octokit_Client_Hooks", + "mode": "040000", + "type": "tree", + "sha": "65a24b254a88a290d181a75c03b0beca5730f61d", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/65a24b254a88a290d181a75c03b0beca5730f61d" + }, + { + "path": "spec/cassettes/Octokit_Client_Hooks/_available_hooks", + "mode": "040000", + "type": "tree", + "sha": "f1ed9fa4d946a98a17a1da9e4e933a4e005475f2", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/f1ed9fa4d946a98a17a1da9e4e933a4e005475f2" + }, + { + "path": "spec/cassettes/Octokit_Client_Hooks/_available_hooks/returns_all_the_hooks_supported_by_GitHub_with_their_parameters.json", + "mode": "100644", + "type": "blob", + "sha": "14d88cae8e0c50a44f88a6afd7ce51182bf78682", + "size": 43562, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/14d88cae8e0c50a44f88a6afd7ce51182bf78682" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues", + "mode": "040000", + "type": "tree", + "sha": "14a57c9fd7938734010756780ccebba543273002", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/14a57c9fd7938734010756780ccebba543273002" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/_create_issue", + "mode": "040000", + "type": "tree", + "sha": "48d17f2ef0fdcd91d8238aba0a23a2e99a2bbe62", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/48d17f2ef0fdcd91d8238aba0a23a2e99a2bbe62" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/_create_issue/creates_an_issue.json", + "mode": "100644", + "type": "blob", + "sha": "6e6096ca29a3864aa150f8946c780282ea7a61da", + "size": 8369, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/6e6096ca29a3864aa150f8946c780282ea7a61da" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/_create_issue/creates_an_issue_with_delimited_labels.json", + "mode": "100644", + "type": "blob", + "sha": "8621c9835eb4d73e32a9e8a387f04be9286788bb", + "size": 8965, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/8621c9835eb4d73e32a9e8a387f04be9286788bb" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/_create_issue/creates_an_issue_with_labels_array.json", + "mode": "100644", + "type": "blob", + "sha": "3c96634737a5358b857f59f658e1848540dbe2ab", + "size": 8949, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3c96634737a5358b857f59f658e1848540dbe2ab" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/_issue_comment", + "mode": "040000", + "type": "tree", + "sha": "3e9a7347293f7161e10098cb869aeb215bc83953", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/3e9a7347293f7161e10098cb869aeb215bc83953" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/_issue_comment/returns_a_single_comment_for_an_issue.json", + "mode": "100644", + "type": "blob", + "sha": "6a5752acfdd18ea80580fc62df727deb6f37cc3e", + "size": 3689, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/6a5752acfdd18ea80580fc62df727deb6f37cc3e" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/_issue_comments", + "mode": "040000", + "type": "tree", + "sha": "7f36f3148de018ac856b35cc6be7acd862264c0d", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/7f36f3148de018ac856b35cc6be7acd862264c0d" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/_issue_comments/returns_comments_for_an_issue.json", + "mode": "100644", + "type": "blob", + "sha": "94ca26b0843dbb03ed5eef93f8abdab5acb59e54", + "size": 7500, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/94ca26b0843dbb03ed5eef93f8abdab5acb59e54" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/_list_issues", + "mode": "040000", + "type": "tree", + "sha": "0a03a0ee4c87cfbebb965fec35c03c6e039c7581", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/0a03a0ee4c87cfbebb965fec35c03c6e039c7581" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/_list_issues/returns_dashboard_issues_for_the_authenticated_user.json", + "mode": "100644", + "type": "blob", + "sha": "7becfc8281b8c788ac2b745ef04c4de2febed199", + "size": 1314, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/7becfc8281b8c788ac2b745ef04c4de2febed199" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/_list_issues/returns_issues_for_a_repository.json", + "mode": "100644", + "type": "blob", + "sha": "65c6f1fcf2d92cc9ff7a75082e6fb67e3aedee63", + "size": 104804, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/65c6f1fcf2d92cc9ff7a75082e6fb67e3aedee63" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/_org_issues", + "mode": "040000", + "type": "tree", + "sha": "7a86a64cef60bdd0791ddf77f01c2a27e3c8a4d5", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/7a86a64cef60bdd0791ddf77f01c2a27e3c8a4d5" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/_org_issues/returns_issues_for_the_organization_for_the_authenticated_user.json", + "mode": "100644", + "type": "blob", + "sha": "6975cb1f29e672de1fb7a785b3d16c0a7ea17299", + "size": 2765, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/6975cb1f29e672de1fb7a785b3d16c0a7ea17299" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/_repository_issues_comments", + "mode": "040000", + "type": "tree", + "sha": "a0cc3d17916a1aa59455ac9ef8ae5f81805e2ee9", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/a0cc3d17916a1aa59455ac9ef8ae5f81805e2ee9" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/_repository_issues_comments/returns_comments_for_all_issues_in_a_repository.json", + "mode": "100644", + "type": "blob", + "sha": "5bf8435a9cd42eb0046192e5bf03a4f6a00530cb", + "size": 60685, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/5bf8435a9cd42eb0046192e5bf03a4f6a00530cb" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/_user_issues", + "mode": "040000", + "type": "tree", + "sha": "73bb2b78a599aaee7f5946846476460117b99a88", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/73bb2b78a599aaee7f5946846476460117b99a88" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/_user_issues/returns_issues_for_the_authenticated_user_for_owned_and_member_repos.json", + "mode": "100644", + "type": "blob", + "sha": "99d9ae59c544fb7bb57ccd2421fe1916ee211427", + "size": 1319, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/99d9ae59c544fb7bb57ccd2421fe1916ee211427" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/with_issue", + "mode": "040000", + "type": "tree", + "sha": "d1e3939b3644f133ec6daaaa0aac71568fb96f7a", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/d1e3939b3644f133ec6daaaa0aac71568fb96f7a" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/with_issue/_add_comment", + "mode": "040000", + "type": "tree", + "sha": "4b9bd64871efdd36596b2ce7552f7fbe1a374e60", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/4b9bd64871efdd36596b2ce7552f7fbe1a374e60" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/with_issue/_add_comment/adds_a_comment.json", + "mode": "100644", + "type": "blob", + "sha": "6db2f18b693b85062d8bceadc36ce44a7284a4d0", + "size": 15508, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/6db2f18b693b85062d8bceadc36ce44a7284a4d0" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/with_issue/_close_issue", + "mode": "040000", + "type": "tree", + "sha": "4f35a9750f7d1692a6a0eb5b9ce97744640f87e7", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/4f35a9750f7d1692a6a0eb5b9ce97744640f87e7" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/with_issue/_close_issue/closes_an_issue.json", + "mode": "100644", + "type": "blob", + "sha": "0c71332dbb48ad3c7a7c985936463323f165e685", + "size": 19348, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/0c71332dbb48ad3c7a7c985936463323f165e685" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/with_issue/_issue", + "mode": "040000", + "type": "tree", + "sha": "21f42d41b1889f2a69fc659bf5fd1caff3cc6327", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/21f42d41b1889f2a69fc659bf5fd1caff3cc6327" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/with_issue/_issue/returns_a_full_issue.json", + "mode": "100644", + "type": "blob", + "sha": "d11cdc94718a3e5d775b575dc108a17e8be093a9", + "size": 16875, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/d11cdc94718a3e5d775b575dc108a17e8be093a9" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/with_issue/_issue/returns_an_issue.json", + "mode": "100644", + "type": "blob", + "sha": "5b05860384176ee26e3edf90699fe3cccc22f3e9", + "size": 16447, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/5b05860384176ee26e3edf90699fe3cccc22f3e9" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/with_issue/_reopen_issue", + "mode": "040000", + "type": "tree", + "sha": "21aaf8bc7f7c0b7c0bc3fd2c24146f67c1c04654", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/21aaf8bc7f7c0b7c0bc3fd2c24146f67c1c04654" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/with_issue/_reopen_issue/reopens_an_issue.json", + "mode": "100644", + "type": "blob", + "sha": "16d865bc46221401688860d72dc7f277e6adf7a7", + "size": 16225, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/16d865bc46221401688860d72dc7f277e6adf7a7" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/with_issue/_update_issue", + "mode": "040000", + "type": "tree", + "sha": "99f945d91010f8d270d470a1f4c553d28725974f", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/99f945d91010f8d270d470a1f4c553d28725974f" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/with_issue/_update_issue/updates_an_issue.json", + "mode": "100644", + "type": "blob", + "sha": "75cdddeff7a6ccfab2b0e2133b9cc3ce29692433", + "size": 16326, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/75cdddeff7a6ccfab2b0e2133b9cc3ce29692433" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/with_issue/_update_issue/updates_an_issue_without_positional_args.json", + "mode": "100644", + "type": "blob", + "sha": "2d60ee30e8486f15485a32d8bafe2f3c9bd94053", + "size": 16327, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/2d60ee30e8486f15485a32d8bafe2f3c9bd94053" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/with_issue/with_issue_comment", + "mode": "040000", + "type": "tree", + "sha": "94caa30199e6c3c51cdbf6cafb228a539f08d8d1", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/94caa30199e6c3c51cdbf6cafb228a539f08d8d1" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/with_issue/with_issue_comment/_delete_comment", + "mode": "040000", + "type": "tree", + "sha": "7dc3f8ec3b702d68facacfb49cd3c6af0260b185", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/7dc3f8ec3b702d68facacfb49cd3c6af0260b185" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/with_issue/with_issue_comment/_delete_comment/deletes_an_existing_comment.json", + "mode": "100644", + "type": "blob", + "sha": "1b26bdb27fff879cee2f090c0ac71a5c6537b09a", + "size": 17974, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/1b26bdb27fff879cee2f090c0ac71a5c6537b09a" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/with_issue/with_issue_comment/_update_comment", + "mode": "040000", + "type": "tree", + "sha": "cb7a2706f2c68b0658bf2d21fe817ff4b0ca613f", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/cb7a2706f2c68b0658bf2d21fe817ff4b0ca613f" + }, + { + "path": "spec/cassettes/Octokit_Client_Issues/with_issue/with_issue_comment/_update_comment/updates_an_existing_comment.json", + "mode": "100644", + "type": "blob", + "sha": "cea5e53adedf079c72f5405d5a3c42f6104fc820", + "size": 22549, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/cea5e53adedf079c72f5405d5a3c42f6104fc820" + }, + { + "path": "spec/cassettes/Octokit_Client_Labels", + "mode": "040000", + "type": "tree", + "sha": "c2c09978c40b3c5160b447512ea85a7dbe065d77", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/c2c09978c40b3c5160b447512ea85a7dbe065d77" + }, + { + "path": "spec/cassettes/Octokit_Client_Labels/_add_label", + "mode": "040000", + "type": "tree", + "sha": "fa7ff4992c88f099d441b42fdcb9218971d9fef5", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/fa7ff4992c88f099d441b42fdcb9218971d9fef5" + }, + { + "path": "spec/cassettes/Octokit_Client_Labels/_add_label/adds_a_label_with_a_color.json", + "mode": "100644", + "type": "blob", + "sha": "1e5c9fba3c57a033091fe548b4484e9b4553be6f", + "size": 6087, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/1e5c9fba3c57a033091fe548b4484e9b4553be6f" + }, + { + "path": "spec/cassettes/Octokit_Client_Labels/_add_label/adds_a_label_with_default_color.json", + "mode": "100644", + "type": "blob", + "sha": "8ba51c6e4eb094d811320a63f9ecdcd298b86b91", + "size": 5925, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/8ba51c6e4eb094d811320a63f9ecdcd298b86b91" + }, + { + "path": "spec/cassettes/Octokit_Client_Labels/_delete_label_", + "mode": "040000", + "type": "tree", + "sha": "c7ff3f2aa663165e2f98dea80a3041803456e890", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/c7ff3f2aa663165e2f98dea80a3041803456e890" + }, + { + "path": "spec/cassettes/Octokit_Client_Labels/_delete_label_/deletes_a_label_from_the_repository.json", + "mode": "100644", + "type": "blob", + "sha": "cb8e1948a19d846e17b08ae1af4710e35b7f4a0c", + "size": 5989, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/cb8e1948a19d846e17b08ae1af4710e35b7f4a0c" + }, + { + "path": "spec/cassettes/Octokit_Client_Labels/_label", + "mode": "040000", + "type": "tree", + "sha": "8bd096e4dc73eff21974b774f903cfb76e17a6cf", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/8bd096e4dc73eff21974b774f903cfb76e17a6cf" + }, + { + "path": "spec/cassettes/Octokit_Client_Labels/_label/returns_a_single_label.json", + "mode": "100644", + "type": "blob", + "sha": "29ca9d4d47d8a992f0a9f9f2a33b4aa2517bf1f8", + "size": 1440, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/29ca9d4d47d8a992f0a9f9f2a33b4aa2517bf1f8" + }, + { + "path": "spec/cassettes/Octokit_Client_Labels/_labels", + "mode": "040000", + "type": "tree", + "sha": "bb9e03bde3ee9b9c1c371d677ef9e386ab57134d", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/bb9e03bde3ee9b9c1c371d677ef9e386ab57134d" + }, + { + "path": "spec/cassettes/Octokit_Client_Labels/_labels/returns_labels.json", + "mode": "100644", + "type": "blob", + "sha": "be7e0b365d446e1cec931c290fa60f6cc272759c", + "size": 1904, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/be7e0b365d446e1cec931c290fa60f6cc272759c" + }, + { + "path": "spec/cassettes/Octokit_Client_Labels/_lables_for_milestone", + "mode": "040000", + "type": "tree", + "sha": "3fff88372d35e2cbf02c96bb8615aa5dfee94932", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/3fff88372d35e2cbf02c96bb8615aa5dfee94932" + }, + { + "path": "spec/cassettes/Octokit_Client_Labels/_lables_for_milestone/returns_all_labels_for_a_repository.json", + "mode": "100644", + "type": "blob", + "sha": "f76b06cf1ff5664b665be43a0153fff5192535f2", + "size": 1747, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/f76b06cf1ff5664b665be43a0153fff5192535f2" + }, + { + "path": "spec/cassettes/Octokit_Client_Labels/with_issue", + "mode": "040000", + "type": "tree", + "sha": "69466a7888e54c9251c125b4e409c6d7d268da69", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/69466a7888e54c9251c125b4e409c6d7d268da69" + }, + { + "path": "spec/cassettes/Octokit_Client_Labels/with_issue/_add_labels_to_an_issue", + "mode": "040000", + "type": "tree", + "sha": "c04b8f12c0d0ddbfff7b65bcab2208e8fe84b9bb", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/c04b8f12c0d0ddbfff7b65bcab2208e8fe84b9bb" + }, + { + "path": "spec/cassettes/Octokit_Client_Labels/with_issue/_add_labels_to_an_issue/adds_labels_to_a_given_issue.json", + "mode": "100644", + "type": "blob", + "sha": "bf7f056a653e128b927cbfa32676adf7cdbbbb4d", + "size": 11376, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/bf7f056a653e128b927cbfa32676adf7cdbbbb4d" + }, + { + "path": "spec/cassettes/Octokit_Client_Labels/with_issue/_labels_for_issue", + "mode": "040000", + "type": "tree", + "sha": "28111d29d596381c55b00ca9064c162d318bfe10", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/28111d29d596381c55b00ca9064c162d318bfe10" + }, + { + "path": "spec/cassettes/Octokit_Client_Labels/with_issue/_labels_for_issue/returns_all_labels_for_a_given_issue.json", + "mode": "100644", + "type": "blob", + "sha": "74ee0ed291fd6ea49aeaf6d517e42800696470eb", + "size": 11135, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/74ee0ed291fd6ea49aeaf6d517e42800696470eb" + }, + { + "path": "spec/cassettes/Octokit_Client_Labels/with_issue/_remove_all_labels", + "mode": "040000", + "type": "tree", + "sha": "664982871af8a6e8003b2b67513d9358d07654a9", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/664982871af8a6e8003b2b67513d9358d07654a9" + }, + { + "path": "spec/cassettes/Octokit_Client_Labels/with_issue/_remove_all_labels/removes_all_labels_from_the_specified_issue.json", + "mode": "100644", + "type": "blob", + "sha": "7af1a75ce1b4b4772f6fabd397ff04b953075bf0", + "size": 10639, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/7af1a75ce1b4b4772f6fabd397ff04b953075bf0" + }, + { + "path": "spec/cassettes/Octokit_Client_Labels/with_issue/_remove_label", + "mode": "040000", + "type": "tree", + "sha": "21e5275523a53d8b2b93c5cbb000d6d4ef322983", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/21e5275523a53d8b2b93c5cbb000d6d4ef322983" + }, + { + "path": "spec/cassettes/Octokit_Client_Labels/with_issue/_remove_label/removes_a_label_from_the_specified_issue.json", + "mode": "100644", + "type": "blob", + "sha": "625ef4fd81668ac2e2a9cbbf63387b058a29c2db", + "size": 11026, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/625ef4fd81668ac2e2a9cbbf63387b058a29c2db" + }, + { + "path": "spec/cassettes/Octokit_Client_Labels/with_issue/_replace_all_labels", + "mode": "040000", + "type": "tree", + "sha": "fb14fbcd49a51e8b27f64cbf8f8934b0ebe06631", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/fb14fbcd49a51e8b27f64cbf8f8934b0ebe06631" + }, + { + "path": "spec/cassettes/Octokit_Client_Labels/with_issue/_replace_all_labels/replaces_all_labels_for_an_issue.json", + "mode": "100644", + "type": "blob", + "sha": "250eb4cb021dcb9132ba164f542d749bee844963", + "size": 11722, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/250eb4cb021dcb9132ba164f542d749bee844963" + }, + { + "path": "spec/cassettes/Octokit_Client_Labels/with_label", + "mode": "040000", + "type": "tree", + "sha": "10c4287f2a7f2f2260dbdca5c6067d5503e48c98", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/10c4287f2a7f2f2260dbdca5c6067d5503e48c98" + }, + { + "path": "spec/cassettes/Octokit_Client_Labels/with_label/_update_label", + "mode": "040000", + "type": "tree", + "sha": "5d2e12ab3930e5be768efee13ae70736d7b6bde7", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/5d2e12ab3930e5be768efee13ae70736d7b6bde7" + }, + { + "path": "spec/cassettes/Octokit_Client_Labels/with_label/_update_label/updates_a_label_with_a_new_color.json", + "mode": "100644", + "type": "blob", + "sha": "54c6f4f9d363e50485d72638f9848fc9fd09b431", + "size": 9141, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/54c6f4f9d363e50485d72638f9848fc9fd09b431" + }, + { + "path": "spec/cassettes/Octokit_Client_LegacySearch", + "mode": "040000", + "type": "tree", + "sha": "54306c58836583e7fac4b466aa57a189be4458e5", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/54306c58836583e7fac4b466aa57a189be4458e5" + }, + { + "path": "spec/cassettes/Octokit_Client_LegacySearch/_legacy_search_issues", + "mode": "040000", + "type": "tree", + "sha": "957643482461b894eeaa435aaf1dbdb77004b09d", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/957643482461b894eeaa435aaf1dbdb77004b09d" + }, + { + "path": "spec/cassettes/Octokit_Client_LegacySearch/_legacy_search_issues/returns_matching_issues.json", + "mode": "100644", + "type": "blob", + "sha": "8a69a7386706bc0cdb8746cb9b3fb1ec9f078ed4", + "size": 30791, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/8a69a7386706bc0cdb8746cb9b3fb1ec9f078ed4" + }, + { + "path": "spec/cassettes/Octokit_Client_LegacySearch/_legacy_search_repos", + "mode": "040000", + "type": "tree", + "sha": "49ee2fe43c387ee928ad9c94b93877437b1b74da", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/49ee2fe43c387ee928ad9c94b93877437b1b74da" + }, + { + "path": "spec/cassettes/Octokit_Client_LegacySearch/_legacy_search_repos/returns_matching_repositories.json", + "mode": "100644", + "type": "blob", + "sha": "1af4ddec6c9596b5eb5bfb7fe2c95bccc2c19567", + "size": 1996, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/1af4ddec6c9596b5eb5bfb7fe2c95bccc2c19567" + }, + { + "path": "spec/cassettes/Octokit_Client_LegacySearch/_legacy_search_users", + "mode": "040000", + "type": "tree", + "sha": "770eb7904b0295437ba224400c1e5e4fe154fa3f", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/770eb7904b0295437ba224400c1e5e4fe154fa3f" + }, + { + "path": "spec/cassettes/Octokit_Client_LegacySearch/_legacy_search_users/returns_matching_username.json", + "mode": "100644", + "type": "blob", + "sha": "40380df1a22da1b54b223249beabf08bed5e0c6e", + "size": 1759, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/40380df1a22da1b54b223249beabf08bed5e0c6e" + }, + { + "path": "spec/cassettes/Octokit_Client_Markdown", + "mode": "040000", + "type": "tree", + "sha": "0c8e68c12b407116f7fe9f459c5da3c3dc2153ed", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/0c8e68c12b407116f7fe9f459c5da3c3dc2153ed" + }, + { + "path": "spec/cassettes/Octokit_Client_Markdown/_markdown", + "mode": "040000", + "type": "tree", + "sha": "355dc97ec6295a0b11183ded398464de3c4d125a", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/355dc97ec6295a0b11183ded398464de3c4d125a" + }, + { + "path": "spec/cassettes/Octokit_Client_Markdown/_markdown/renders_markdown.json", + "mode": "100644", + "type": "blob", + "sha": "b2f139b4c2e9ac9605dc56f2d021c66595eeb43e", + "size": 1536, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/b2f139b4c2e9ac9605dc56f2d021c66595eeb43e" + }, + { + "path": "spec/cassettes/Octokit_Client_Meta", + "mode": "040000", + "type": "tree", + "sha": "e7f4f9f837c90d588a755968a13942f61ea10399", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/e7f4f9f837c90d588a755968a13942f61ea10399" + }, + { + "path": "spec/cassettes/Octokit_Client_Meta/_github_meta", + "mode": "040000", + "type": "tree", + "sha": "cd209ef1d3052c728b8367e47408b4770745b86d", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/cd209ef1d3052c728b8367e47408b4770745b86d" + }, + { + "path": "spec/cassettes/Octokit_Client_Meta/_github_meta/returns_meta_information_about_github.json", + "mode": "100644", + "type": "blob", + "sha": "26eb1b54730b5a1b40fcb2556dcb77ac57343d6e", + "size": 1515, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/26eb1b54730b5a1b40fcb2556dcb77ac57343d6e" + }, + { + "path": "spec/cassettes/Octokit_Client_Milestones", + "mode": "040000", + "type": "tree", + "sha": "a93c05b7cfeb7c1feda22d9c41e6ff01f6f4e66f", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/a93c05b7cfeb7c1feda22d9c41e6ff01f6f4e66f" + }, + { + "path": "spec/cassettes/Octokit_Client_Milestones/_list_milestones", + "mode": "040000", + "type": "tree", + "sha": "3f8695c3e33b1a2b2e372abf1a9be7fbec5a3242", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/3f8695c3e33b1a2b2e372abf1a9be7fbec5a3242" + }, + { + "path": "spec/cassettes/Octokit_Client_Milestones/_list_milestones/lists_milestones_belonging_to_repository.json", + "mode": "100644", + "type": "blob", + "sha": "e8844fd083c6bc3bd568aefbce6366b2cf44e007", + "size": 4929, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/e8844fd083c6bc3bd568aefbce6366b2cf44e007" + }, + { + "path": "spec/cassettes/Octokit_Client_Milestones/with_milestone", + "mode": "040000", + "type": "tree", + "sha": "ad2a272cccd391b283044a64b14f93c5f8cd3e2e", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/ad2a272cccd391b283044a64b14f93c5f8cd3e2e" + }, + { + "path": "spec/cassettes/Octokit_Client_Milestones/with_milestone/_create_milestone", + "mode": "040000", + "type": "tree", + "sha": "fef7b94cec8e9d885fe88ee21c78156179e7bd69", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/fef7b94cec8e9d885fe88ee21c78156179e7bd69" + }, + { + "path": "spec/cassettes/Octokit_Client_Milestones/with_milestone/_create_milestone/creates_a_milestone.json", + "mode": "100644", + "type": "blob", + "sha": "5897cbe405e0a2460ecfb93b120f68132e2c976e", + "size": 9595, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/5897cbe405e0a2460ecfb93b120f68132e2c976e" + }, + { + "path": "spec/cassettes/Octokit_Client_Milestones/with_milestone/_delete_milestone", + "mode": "040000", + "type": "tree", + "sha": "83f7dd42c035fc589599399d2201c504c156d686", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/83f7dd42c035fc589599399d2201c504c156d686" + }, + { + "path": "spec/cassettes/Octokit_Client_Milestones/with_milestone/_delete_milestone/deletes_a_milestone_from_a_repository.json", + "mode": "100644", + "type": "blob", + "sha": "7a397232eff02b92045334d35d7dc7cbb27e6bbf", + "size": 12256, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/7a397232eff02b92045334d35d7dc7cbb27e6bbf" + }, + { + "path": "spec/cassettes/Octokit_Client_Milestones/with_milestone/_milestone", + "mode": "040000", + "type": "tree", + "sha": "b142a6985954b1ecbb157c2a19429c1e86be1bea", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/b142a6985954b1ecbb157c2a19429c1e86be1bea" + }, + { + "path": "spec/cassettes/Octokit_Client_Milestones/with_milestone/_milestone/gets_a_single_milestone_belonging_to_repository.json", + "mode": "100644", + "type": "blob", + "sha": "dd8376d1d42fa9df76544645687dadaf05542b3b", + "size": 16600, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/dd8376d1d42fa9df76544645687dadaf05542b3b" + }, + { + "path": "spec/cassettes/Octokit_Client_Milestones/with_milestone/_update_milestone", + "mode": "040000", + "type": "tree", + "sha": "5aa56f171fee85923ce7d1320001ae74e1c7cdb0", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/5aa56f171fee85923ce7d1320001ae74e1c7cdb0" + }, + { + "path": "spec/cassettes/Octokit_Client_Milestones/with_milestone/_update_milestone/updates_a_milestone.json", + "mode": "100644", + "type": "blob", + "sha": "e28d82d508ad42d64ba4b6af7a80b413a86e64f4", + "size": 16641, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/e28d82d508ad42d64ba4b6af7a80b413a86e64f4" + }, + { + "path": "spec/cassettes/Octokit_Client_Notifications", + "mode": "040000", + "type": "tree", + "sha": "ee033d0a09abcbd5e34eff6851130a02032e1d4c", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/ee033d0a09abcbd5e34eff6851130a02032e1d4c" + }, + { + "path": "spec/cassettes/Octokit_Client_Notifications/_mark_notifications_as_read", + "mode": "040000", + "type": "tree", + "sha": "b7cb770ead0b8b2ffc55173e1eab782d32cba9eb", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/b7cb770ead0b8b2ffc55173e1eab782d32cba9eb" + }, + { + "path": "spec/cassettes/Octokit_Client_Notifications/_mark_notifications_as_read/returns_true_when_notifications_are_marked_as_read.json", + "mode": "100644", + "type": "blob", + "sha": "60264a77367126054a7c6beaa33c51c88beda79f", + "size": 1175, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/60264a77367126054a7c6beaa33c51c88beda79f" + }, + { + "path": "spec/cassettes/Octokit_Client_Notifications/_mark_repository_notifications_as_read", + "mode": "040000", + "type": "tree", + "sha": "c3ede3cd6d89fff80ef2140169b6e28bd444d043", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/c3ede3cd6d89fff80ef2140169b6e28bd444d043" + }, + { + "path": "spec/cassettes/Octokit_Client_Notifications/_mark_repository_notifications_as_read/returns_true_when_notifications_for_a_repo_are_marked_as_read.json", + "mode": "100644", + "type": "blob", + "sha": "843fead0d834d2b45f7b45198ad03a1aedf4929b", + "size": 2501, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/843fead0d834d2b45f7b45198ad03a1aedf4929b" + }, + { + "path": "spec/cassettes/Octokit_Client_Notifications/_notifications", + "mode": "040000", + "type": "tree", + "sha": "dd386e9dc55ba62c1cb2a7a20f8d5fbe7f9027ed", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/dd386e9dc55ba62c1cb2a7a20f8d5fbe7f9027ed" + }, + { + "path": "spec/cassettes/Octokit_Client_Notifications/_notifications/lists_the_notifications_for_the_current_user.json", + "mode": "100644", + "type": "blob", + "sha": "d4a3fbbcab562dc13a42660e731775fa1f8275cb", + "size": 1354, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/d4a3fbbcab562dc13a42660e731775fa1f8275cb" + }, + { + "path": "spec/cassettes/Octokit_Client_Notifications/_repository_notifications", + "mode": "040000", + "type": "tree", + "sha": "303054a90095a48a5052235f642c1c1df09a031c", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/303054a90095a48a5052235f642c1c1df09a031c" + }, + { + "path": "spec/cassettes/Octokit_Client_Notifications/_repository_notifications/lists_all_notifications_for_a_repository.json", + "mode": "100644", + "type": "blob", + "sha": "c5827572d76407b03882f80d3909965eac090d37", + "size": 2902, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/c5827572d76407b03882f80d3909965eac090d37" + }, + { + "path": "spec/cassettes/Octokit_Client_Notifications/with_thread", + "mode": "040000", + "type": "tree", + "sha": "73d858b58c0e9619189e1e43063988f6efa90c07", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/73d858b58c0e9619189e1e43063988f6efa90c07" + }, + { + "path": "spec/cassettes/Octokit_Client_Notifications/with_thread/_mark_thread_as_read", + "mode": "040000", + "type": "tree", + "sha": "bfe9e226c502058edaed5bbcafeff1f6ea6f1672", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/bfe9e226c502058edaed5bbcafeff1f6ea6f1672" + }, + { + "path": "spec/cassettes/Octokit_Client_Notifications/with_thread/_mark_thread_as_read/marks_a_thread_as_read.json", + "mode": "100644", + "type": "blob", + "sha": "62ae00aac9f68378620c70f0c52b1cff4661d0cb", + "size": 101589, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/62ae00aac9f68378620c70f0c52b1cff4661d0cb" + }, + { + "path": "spec/cassettes/Octokit_Client_Notifications/with_thread/_thread_notifications", + "mode": "040000", + "type": "tree", + "sha": "5699f732777898306deb934d446ebae675a17163", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/5699f732777898306deb934d446ebae675a17163" + }, + { + "path": "spec/cassettes/Octokit_Client_Notifications/with_thread/_thread_notifications/returns_notifications_for_a_specific_thread.json", + "mode": "100644", + "type": "blob", + "sha": "15d093c0c442fe18a636d3007df8363ccc233043", + "size": 116852, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/15d093c0c442fe18a636d3007df8363ccc233043" + }, + { + "path": "spec/cassettes/Octokit_Client_Notifications/with_thread/with_subscription", + "mode": "040000", + "type": "tree", + "sha": "2477b5f2031a3d026c8ef8d184d0ccf90f66b359", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/2477b5f2031a3d026c8ef8d184d0ccf90f66b359" + }, + { + "path": "spec/cassettes/Octokit_Client_Notifications/with_thread/with_subscription/_delete_thread_subscription", + "mode": "040000", + "type": "tree", + "sha": "cc88607993a42896c60f7ecaa0e9242ababb7b1c", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/cc88607993a42896c60f7ecaa0e9242ababb7b1c" + }, + { + "path": "spec/cassettes/Octokit_Client_Notifications/with_thread/with_subscription/_delete_thread_subscription/returns_true_with_successful_thread_deletion.json", + "mode": "100644", + "type": "blob", + "sha": "5db280ea12a5b29716ce79db85f03189f5a2fd5b", + "size": 12065, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/5db280ea12a5b29716ce79db85f03189f5a2fd5b" + }, + { + "path": "spec/cassettes/Octokit_Client_Notifications/with_thread/with_subscription/_thread_subscription", + "mode": "040000", + "type": "tree", + "sha": "3924d1017c03654954be11e0015e170187bf06ab", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/3924d1017c03654954be11e0015e170187bf06ab" + }, + { + "path": "spec/cassettes/Octokit_Client_Notifications/with_thread/with_subscription/_thread_subscription/returns_a_thread_subscription.json", + "mode": "100644", + "type": "blob", + "sha": "b26c023716e0f0c9a72a3a1cb228c26bf1fd37db", + "size": 12734, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/b26c023716e0f0c9a72a3a1cb228c26bf1fd37db" + }, + { + "path": "spec/cassettes/Octokit_Client_Notifications/with_thread/with_subscription/_update_thread_subscription", + "mode": "040000", + "type": "tree", + "sha": "5950aafd49e50c1d93e96bc89a5786ff428ce0da", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/5950aafd49e50c1d93e96bc89a5786ff428ce0da" + }, + { + "path": "spec/cassettes/Octokit_Client_Notifications/with_thread/with_subscription/_update_thread_subscription/updates_a_thread_subscription.json", + "mode": "100644", + "type": "blob", + "sha": "15461bd961fa9a2e07864410c8ef3f8235ff3148", + "size": 10946, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/15461bd961fa9a2e07864410c8ef3f8235ff3148" + }, + { + "path": "spec/cassettes/Octokit_Client_Objects", + "mode": "040000", + "type": "tree", + "sha": "ded22ff0905d61dd07ea0aaf599ea2b361dc23b7", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/ded22ff0905d61dd07ea0aaf599ea2b361dc23b7" + }, + { + "path": "spec/cassettes/Octokit_Client_Objects/_blob", + "mode": "040000", + "type": "tree", + "sha": "240d3d701c5d4bba03d7f60376420cfacb18da8f", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/240d3d701c5d4bba03d7f60376420cfacb18da8f" + }, + { + "path": "spec/cassettes/Octokit_Client_Objects/_blob/returns_a_blob.json", + "mode": "100644", + "type": "blob", + "sha": "dcb59eec7b65ed980931e8b1d9e5fed8b0eb39ea", + "size": 49786, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/dcb59eec7b65ed980931e8b1d9e5fed8b0eb39ea" + }, + { + "path": "spec/cassettes/Octokit_Client_Objects/_create_blob", + "mode": "040000", + "type": "tree", + "sha": "860d3e50a7081f2ced590d64cc9fa2f050b29f62", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/860d3e50a7081f2ced590d64cc9fa2f050b29f62" + }, + { + "path": "spec/cassettes/Octokit_Client_Objects/_create_blob/creates_a_blob.json", + "mode": "100644", + "type": "blob", + "sha": "d2cb8129c9b58d8c1b7097270e49bb8576930a91", + "size": 3706, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/d2cb8129c9b58d8c1b7097270e49bb8576930a91" + }, + { + "path": "spec/cassettes/Octokit_Client_Objects/_create_tag", + "mode": "040000", + "type": "tree", + "sha": "0d86732c75acaed10460e3bac165733aa4391734", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/0d86732c75acaed10460e3bac165733aa4391734" + }, + { + "path": "spec/cassettes/Octokit_Client_Objects/_create_tag/creates_a_tag.json", + "mode": "100644", + "type": "blob", + "sha": "430241f41b1617df2aede79f8e7742371c82af30", + "size": 59137, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/430241f41b1617df2aede79f8e7742371c82af30" + }, + { + "path": "spec/cassettes/Octokit_Client_Objects/_create_tree", + "mode": "040000", + "type": "tree", + "sha": "cad8267fe7dcc180b4af81ddf8380cc50aeb01a8", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/cad8267fe7dcc180b4af81ddf8380cc50aeb01a8" + }, + { + "path": "spec/cassettes/Octokit_Client_Objects/_create_tree/creates_a_tree.json", + "mode": "100644", + "type": "blob", + "sha": "0db39f5f61d3c2b48b90f8335a31488d63d0f7a2", + "size": 4518, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/0db39f5f61d3c2b48b90f8335a31488d63d0f7a2" + }, + { + "path": "spec/cassettes/Octokit_Client_Objects/_tag", + "mode": "040000", + "type": "tree", + "sha": "f20383138ee44640af7a8a912d4f703f00082fd1", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/f20383138ee44640af7a8a912d4f703f00082fd1" + }, + { + "path": "spec/cassettes/Octokit_Client_Objects/_tag/returns_a_tag.json", + "mode": "100644", + "type": "blob", + "sha": "de0675785d504b62a07e9fed8545e154ab92c351", + "size": 2178, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/de0675785d504b62a07e9fed8545e154ab92c351" + }, + { + "path": "spec/cassettes/Octokit_Client_Objects/_tree", + "mode": "040000", + "type": "tree", + "sha": "ea5c32f1dcd8cd0178c22e7dd767eb37d045f5f0", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/ea5c32f1dcd8cd0178c22e7dd767eb37d045f5f0" + }, + { + "path": "spec/cassettes/Octokit_Client_Objects/_tree/gets_a_tree.json", + "mode": "100644", + "type": "blob", + "sha": "4b180def3d8a591526390b616f266eb18ef0945d", + "size": 5837, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/4b180def3d8a591526390b616f266eb18ef0945d" + }, + { + "path": "spec/cassettes/Octokit_Client_Objects/_tree/gets_a_tree_recursively.json", + "mode": "100644", + "type": "blob", + "sha": "bd29d6d87438ef71d4d365e28cd3ce509d3d4b38", + "size": 111410, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/bd29d6d87438ef71d4d365e28cd3ce509d3d4b38" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations", + "mode": "040000", + "type": "tree", + "sha": "f1d22a8c2273e598067898610683b660b32a2614", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/f1d22a8c2273e598067898610683b660b32a2614" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_add_team_membership", + "mode": "040000", + "type": "tree", + "sha": "48de19678597a65bdc3a3e81aec12311e7a4cf22", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/48de19678597a65bdc3a3e81aec12311e7a4cf22" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_add_team_membership/invites_a_user_to_a_team.json", + "mode": "100644", + "type": "blob", + "sha": "ba7c683337675ccacc4372cf195f1c90a11a3ff9", + "size": 1964, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/ba7c683337675ccacc4372cf195f1c90a11a3ff9" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_organization", + "mode": "040000", + "type": "tree", + "sha": "3da3664a4777cbb154812e2434f2b9a63ff985ff", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/3da3664a4777cbb154812e2434f2b9a63ff985ff" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_organization/returns_an_organization.json", + "mode": "100644", + "type": "blob", + "sha": "91383d3e2285838402ea8d11cc800a929cdeb90e", + "size": 2775, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/91383d3e2285838402ea8d11cc800a929cdeb90e" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_organization_member_", + "mode": "040000", + "type": "tree", + "sha": "85a7361219f4247af67534c2a782bf664b45ff53", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/85a7361219f4247af67534c2a782bf664b45ff53" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_organization_member_/checks_organization_membership.json", + "mode": "100644", + "type": "blob", + "sha": "265118d97040b5cbaf2fcb7c62f1a139428cdd86", + "size": 2527, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/265118d97040b5cbaf2fcb7c62f1a139428cdd86" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_organization_members", + "mode": "040000", + "type": "tree", + "sha": "38a472450469166733318dd9dd74961c3a3a9b6c", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/38a472450469166733318dd9dd74961c3a3a9b6c" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_organization_members/returns_all_public_members_of_an_organization.json", + "mode": "100644", + "type": "blob", + "sha": "764bf0efd7867d69ad905d1baafab7f54c492b0a", + "size": 42591, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/764bf0efd7867d69ad905d1baafab7f54c492b0a" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_organization_memberships", + "mode": "040000", + "type": "tree", + "sha": "53ffd9b22775656bc8c95e308a5fca5a9e7bda7a", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/53ffd9b22775656bc8c95e308a5fca5a9e7bda7a" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_organization_memberships/returns_all_organization_memberships_for_the_user.json", + "mode": "100644", + "type": "blob", + "sha": "e137054bf3583039bc86310359fa2479f7d81c8e", + "size": 2046, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/e137054bf3583039bc86310359fa2479f7d81c8e" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_organization_public_member_", + "mode": "040000", + "type": "tree", + "sha": "5e2539984e7fdf8747be104810d2869cfcb00bbe", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/5e2539984e7fdf8747be104810d2869cfcb00bbe" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_organization_public_member_/checks_publicized_org_membership.json", + "mode": "100644", + "type": "blob", + "sha": "b855bc56b8814318fee9cf6bc69e6be071fed08a", + "size": 1285, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/b855bc56b8814318fee9cf6bc69e6be071fed08a" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_organization_public_members", + "mode": "040000", + "type": "tree", + "sha": "d3e42871c8475a3993effb77305257b8bb2512fd", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/d3e42871c8475a3993effb77305257b8bb2512fd" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_organization_public_members/lists_public_members.json", + "mode": "100644", + "type": "blob", + "sha": "883c0f647136307d38e056bd8e4b8cce0188440b", + "size": 43276, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/883c0f647136307d38e056bd8e4b8cce0188440b" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_organization_repositories", + "mode": "040000", + "type": "tree", + "sha": "0287c3405ea75cd253f21e9fb7d59b58be4499a3", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/0287c3405ea75cd253f21e9fb7d59b58be4499a3" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_organization_repositories/returns_all_public_repositories_for_an_organization.json", + "mode": "100644", + "type": "blob", + "sha": "2c0a8ee22620366831198750a0a78e3c286bdd38", + "size": 218397, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/2c0a8ee22620366831198750a0a78e3c286bdd38" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_organization_teams", + "mode": "040000", + "type": "tree", + "sha": "8ae601ceebade298739938e9a431bd7a72dbfe3d", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/8ae601ceebade298739938e9a431bd7a72dbfe3d" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_organization_teams/returns_all_teams_for_an_organization.json", + "mode": "100644", + "type": "blob", + "sha": "5c6fb512e7be17e88b8e5e8857980e8d8208e3ba", + "size": 1883, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/5c6fb512e7be17e88b8e5e8857980e8d8208e3ba" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_organizations", + "mode": "040000", + "type": "tree", + "sha": "88df9ee7b66c120b2c184fc0423f815235e6ab49", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/88df9ee7b66c120b2c184fc0423f815235e6ab49" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_organizations/returns_all_organizations_for_a_user.json", + "mode": "100644", + "type": "blob", + "sha": "44ad909c7e994322653a13171816e738714592c4", + "size": 13981, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/44ad909c7e994322653a13171816e738714592c4" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_organizations/returns_all_organizations_for_the_authenticated_user.json", + "mode": "100644", + "type": "blob", + "sha": "0e57faff124fbbc9d229194ec30397d05a6ca594", + "size": 2259, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/0e57faff124fbbc9d229194ec30397d05a6ca594" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_remove_team_membership", + "mode": "040000", + "type": "tree", + "sha": "3b5b22d105b971aaeb72e771b7ae95494413a46a", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/3b5b22d105b971aaeb72e771b7ae95494413a46a" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_remove_team_membership/removes_a_user_s_membership_for_a_team.json", + "mode": "100644", + "type": "blob", + "sha": "c15776bdb0b8b1dd4a5681db668f8f8139cd3fc1", + "size": 1629, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/c15776bdb0b8b1dd4a5681db668f8f8139cd3fc1" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_team_membership", + "mode": "040000", + "type": "tree", + "sha": "3e0688e854f2089052b495c89b25ea36865cc521", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/3e0688e854f2089052b495c89b25ea36865cc521" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_team_membership/gets_a_user_s_team_membership.json", + "mode": "100644", + "type": "blob", + "sha": "20d4fdc253d31747c586d1c12063a83531854f11", + "size": 1947, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/20d4fdc253d31747c586d1c12063a83531854f11" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_update_organization", + "mode": "040000", + "type": "tree", + "sha": "3c3f168e63f19c24b06bf8e709b3d145e04aa9f3", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/3c3f168e63f19c24b06bf8e709b3d145e04aa9f3" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_update_organization/updates_an_organization.json", + "mode": "100644", + "type": "blob", + "sha": "92143c510dec7636057b4b7d31c2212bd8cd00b6", + "size": 2911, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/92143c510dec7636057b4b7d31c2212bd8cd00b6" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_user_teams", + "mode": "040000", + "type": "tree", + "sha": "b689b811cadb10121cfb1b1012efaf4283db3ef3", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/b689b811cadb10121cfb1b1012efaf4283db3ef3" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/_user_teams/lists_all_teams_for_the_authenticated_user.json", + "mode": "100644", + "type": "blob", + "sha": "542ee4476a2054710b2fcfb60a9ba38bc43f3ebb", + "size": 2964, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/542ee4476a2054710b2fcfb60a9ba38bc43f3ebb" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team", + "mode": "040000", + "type": "tree", + "sha": "f636335c2ce4674db99a421480fef27129e5e547", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/f636335c2ce4674db99a421480fef27129e5e547" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_add_team_member", + "mode": "040000", + "type": "tree", + "sha": "6e8dafa1f03d388c0d666702b91c0641820406e5", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/6e8dafa1f03d388c0d666702b91c0641820406e5" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_add_team_member/adds_a_team_member.json", + "mode": "100644", + "type": "blob", + "sha": "58943e6d34caa9bfa4c805c9313f5ec694c467f2", + "size": 5746, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/58943e6d34caa9bfa4c805c9313f5ec694c467f2" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_add_team_repository", + "mode": "040000", + "type": "tree", + "sha": "a9a71346c00e3e65e864e9f42c15f285a1db26f6", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/a9a71346c00e3e65e864e9f42c15f285a1db26f6" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_add_team_repository/adds_a_team_repository.json", + "mode": "100644", + "type": "blob", + "sha": "efa8970f9ae199c2881511d9e8b3048c371b71c5", + "size": 5838, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/efa8970f9ae199c2881511d9e8b3048c371b71c5" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_create_team", + "mode": "040000", + "type": "tree", + "sha": "8009e14cff67f8192af486ebc29be5ff39b06328", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/8009e14cff67f8192af486ebc29be5ff39b06328" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_create_team/creates_a_team.json", + "mode": "100644", + "type": "blob", + "sha": "a91dd813f1c89819cdb4a40c3dbf142789e54469", + "size": 4450, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/a91dd813f1c89819cdb4a40c3dbf142789e54469" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_delete_team", + "mode": "040000", + "type": "tree", + "sha": "a20362c1921a804098475d65ab35502fb2539f34", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/a20362c1921a804098475d65ab35502fb2539f34" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_delete_team/deletes_a_team.json", + "mode": "100644", + "type": "blob", + "sha": "a0047b52ab25ecc33a92b34368b3c2faf4db8c62", + "size": 5863, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/a0047b52ab25ecc33a92b34368b3c2faf4db8c62" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_publicize_membership", + "mode": "040000", + "type": "tree", + "sha": "015d184ae3d607d066f029c6848a4b7ec53d4210", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/015d184ae3d607d066f029c6848a4b7ec53d4210" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_publicize_membership/publicizes_membership.json", + "mode": "100644", + "type": "blob", + "sha": "994d9c4adcd5160d24c1c66ee83b5935768a9240", + "size": 5745, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/994d9c4adcd5160d24c1c66ee83b5935768a9240" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_remove_team_member", + "mode": "040000", + "type": "tree", + "sha": "3d4ecbc3351964a89204219cbef88b9bbfb78ada", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/3d4ecbc3351964a89204219cbef88b9bbfb78ada" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_remove_team_member/removes_a_team_member.json", + "mode": "100644", + "type": "blob", + "sha": "ba1975b82765e8e1528d6e136714e7bd254407f3", + "size": 5721, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/ba1975b82765e8e1528d6e136714e7bd254407f3" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_remove_team_repository", + "mode": "040000", + "type": "tree", + "sha": "fb060c783a16226d6cc9f323700902afd1813713", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/fb060c783a16226d6cc9f323700902afd1813713" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_remove_team_repository/removes_a_team_repository.json", + "mode": "100644", + "type": "blob", + "sha": "40b2e78b9556f47a26a6ea95f7833056f796d61d", + "size": 5759, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/40b2e78b9556f47a26a6ea95f7833056f796d61d" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_team", + "mode": "040000", + "type": "tree", + "sha": "d4074f34e81447ae04582cbd49d9d089f28a2936", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/d4074f34e81447ae04582cbd49d9d089f28a2936" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_team/returns_a_team.json", + "mode": "100644", + "type": "blob", + "sha": "651d7d0b84d82481c1983556a37c98f0804d4753", + "size": 7570, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/651d7d0b84d82481c1983556a37c98f0804d4753" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_team_member_", + "mode": "040000", + "type": "tree", + "sha": "cc9a941e6b21c432f3edfee0446867f1312fdf3c", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/cc9a941e6b21c432f3edfee0446867f1312fdf3c" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_team_member_/checks_if_a_user_is_member_of_a_team.json", + "mode": "100644", + "type": "blob", + "sha": "e1f15697e9b39ddd2cc66ebfae1e04cb95d95472", + "size": 5904, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/e1f15697e9b39ddd2cc66ebfae1e04cb95d95472" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_team_members", + "mode": "040000", + "type": "tree", + "sha": "f311595b34420e827a3cb486f2f294d55318eb01", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/f311595b34420e827a3cb486f2f294d55318eb01" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_team_members/returns_team_members.json", + "mode": "100644", + "type": "blob", + "sha": "2eaef9f0e8087d47c25b2126522de1078a92e36f", + "size": 5941, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/2eaef9f0e8087d47c25b2126522de1078a92e36f" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_team_repositories", + "mode": "040000", + "type": "tree", + "sha": "885b267d38d326c2166719d36fb7ddb22495a98a", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/885b267d38d326c2166719d36fb7ddb22495a98a" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_team_repositories/returns_team_repositories.json", + "mode": "100644", + "type": "blob", + "sha": "8cab4529e62625e030ac846ce38043c82bf38597", + "size": 5939, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/8cab4529e62625e030ac846ce38043c82bf38597" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_team_repository_", + "mode": "040000", + "type": "tree", + "sha": "6d0eb07d58a8b927802f2dbcacf9db8662d1f1a7", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/6d0eb07d58a8b927802f2dbcacf9db8662d1f1a7" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_team_repository_/checks_if_a_repo_is_managed_by_a_specific_team.json", + "mode": "100644", + "type": "blob", + "sha": "cd5ba61895e97ddea720b276f0860e16b40f3109", + "size": 5936, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/cd5ba61895e97ddea720b276f0860e16b40f3109" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_unpublicize_membership", + "mode": "040000", + "type": "tree", + "sha": "ce9f7eaf1524f1ea0e12650c24d8532b9d795b6a", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/ce9f7eaf1524f1ea0e12650c24d8532b9d795b6a" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_unpublicize_membership/unpublicizes_membership.json", + "mode": "100644", + "type": "blob", + "sha": "caca60f87b821e89ec7a4dea006934fa21603daf", + "size": 5748, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/caca60f87b821e89ec7a4dea006934fa21603daf" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_update_team", + "mode": "040000", + "type": "tree", + "sha": "6ccf3cba610e37c7af63943dab2586557fdf3cac", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/6ccf3cba610e37c7af63943dab2586557fdf3cac" + }, + { + "path": "spec/cassettes/Octokit_Client_Organizations/with_team/_update_team/updates_a_team.json", + "mode": "100644", + "type": "blob", + "sha": "585c6382b9843c819d5481394264be6bd49eed81", + "size": 7488, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/585c6382b9843c819d5481394264be6bd49eed81" + }, + { + "path": "spec/cassettes/Octokit_Client_Pages", + "mode": "040000", + "type": "tree", + "sha": "520ff6a4e674d055e6ac96c1399b37f5fdc5a1f6", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/520ff6a4e674d055e6ac96c1399b37f5fdc5a1f6" + }, + { + "path": "spec/cassettes/Octokit_Client_Pages/_latest_pages_build", + "mode": "040000", + "type": "tree", + "sha": "19c4c57983152796e59779e48595d56071467246", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/19c4c57983152796e59779e48595d56071467246" + }, + { + "path": "spec/cassettes/Octokit_Client_Pages/_latest_pages_build/lists_information_about_the_latest_page_build.json", + "mode": "100644", + "type": "blob", + "sha": "3617f6bdb05a772b48140f10f18394301d83b701", + "size": 3307, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3617f6bdb05a772b48140f10f18394301d83b701" + }, + { + "path": "spec/cassettes/Octokit_Client_Pages/_list_pages_builds", + "mode": "040000", + "type": "tree", + "sha": "b124e55fe47aa3674e53b15acf2a14cb33b6737b", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/b124e55fe47aa3674e53b15acf2a14cb33b6737b" + }, + { + "path": "spec/cassettes/Octokit_Client_Pages/_list_pages_builds/lists_information_about_all_the_page_builds.json", + "mode": "100644", + "type": "blob", + "sha": "1370f8c9d0903901a4e0df41023a0a48db90ea8c", + "size": 53993, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/1370f8c9d0903901a4e0df41023a0a48db90ea8c" + }, + { + "path": "spec/cassettes/Octokit_Client_Pages/_pages", + "mode": "040000", + "type": "tree", + "sha": "d209f9f617b87d8310377f0ed76405c322229894", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/d209f9f617b87d8310377f0ed76405c322229894" + }, + { + "path": "spec/cassettes/Octokit_Client_Pages/_pages/lists_page_information.json", + "mode": "100644", + "type": "blob", + "sha": "fc8b654e2d9de0b09f750ba0b056a0b693f035d2", + "size": 1739, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/fc8b654e2d9de0b09f750ba0b056a0b693f035d2" + }, + { + "path": "spec/cassettes/Octokit_Client_PubSubHubbub", + "mode": "040000", + "type": "tree", + "sha": "4dec6bb038d4aaac0d9d759db07fa49fd5605ec4", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/4dec6bb038d4aaac0d9d759db07fa49fd5605ec4" + }, + { + "path": "spec/cassettes/Octokit_Client_PubSubHubbub/_subscribe", + "mode": "040000", + "type": "tree", + "sha": "71247fbb2d3a550a80f8b9f76eab4468152e7d53", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/71247fbb2d3a550a80f8b9f76eab4468152e7d53" + }, + { + "path": "spec/cassettes/Octokit_Client_PubSubHubbub/_subscribe/raises_an_error_when_topic_is_not_recognized.json", + "mode": "100644", + "type": "blob", + "sha": "e32bc778a89fdb06508f96e1de118d6ecb7f5fd3", + "size": 1346, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/e32bc778a89fdb06508f96e1de118d6ecb7f5fd3" + }, + { + "path": "spec/cassettes/Octokit_Client_PubSubHubbub/_unsubscribe", + "mode": "040000", + "type": "tree", + "sha": "015e2601a771a53f2f2a7b724accdc58c21ac1b7", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/015e2601a771a53f2f2a7b724accdc58c21ac1b7" + }, + { + "path": "spec/cassettes/Octokit_Client_PubSubHubbub/_unsubscribe/unsubscribes_from_pull_events.json", + "mode": "100644", + "type": "blob", + "sha": "4cac716fb3ebc24a3f7ab392050d66a82363ac15", + "size": 1235, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/4cac716fb3ebc24a3f7ab392050d66a82363ac15" + }, + { + "path": "spec/cassettes/Octokit_Client_PubSubHubbub/unsubscribe_service_hook", + "mode": "040000", + "type": "tree", + "sha": "d30966db5ba2dbfd53bd3aa815a216425b47314f", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/d30966db5ba2dbfd53bd3aa815a216425b47314f" + }, + { + "path": "spec/cassettes/Octokit_Client_PubSubHubbub/unsubscribe_service_hook/unsubscribes_to_stop_receiving_events_on_specified_topic.json", + "mode": "100644", + "type": "blob", + "sha": "d3fb0b5dac7dba128405e11c5187f468dc1bfe84", + "size": 1203, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/d3fb0b5dac7dba128405e11c5187f468dc1bfe84" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests", + "mode": "040000", + "type": "tree", + "sha": "1c94ce946502e653f5700c1186fae3077e34e919", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/1c94ce946502e653f5700c1186fae3077e34e919" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/_create_pull_request_for_issue", + "mode": "040000", + "type": "tree", + "sha": "dfa3c226031036499900101854fa75d5df46c9d4", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/dfa3c226031036499900101854fa75d5df46c9d4" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/_create_pull_request_for_issue/creates_a_pull_request_and_attach_it_to_an_existing_issue.json", + "mode": "100644", + "type": "blob", + "sha": "b6a9d8f55144c67972cc0f380fc71f534e9416f8", + "size": 106029, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/b6a9d8f55144c67972cc0f380fc71f534e9416f8" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/_pull_request_comment", + "mode": "040000", + "type": "tree", + "sha": "a436f016ad5dfee47af2adc641d10f8c64421439", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/a436f016ad5dfee47af2adc641d10f8c64421439" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/_pull_request_comment/returns_a_comment_on_a_pull_request.json", + "mode": "100644", + "type": "blob", + "sha": "a281ce7b63aea3421baebc2f0e6f118ff480f517", + "size": 4363, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/a281ce7b63aea3421baebc2f0e6f118ff480f517" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/_pull_request_comments", + "mode": "040000", + "type": "tree", + "sha": "e825b1bf2e9148528f1813423aba12f8941160ca", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/e825b1bf2e9148528f1813423aba12f8941160ca" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/_pull_request_comments/returns_the_comments_for_a_pull_request.json", + "mode": "100644", + "type": "blob", + "sha": "bd4aad90c9058bb721d5ef4ef6f7446c9c69a986", + "size": 4440, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/bd4aad90c9058bb721d5ef4ef6f7446c9c69a986" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/_pull_request_commits", + "mode": "040000", + "type": "tree", + "sha": "7a53eb310b226bea9d4a8d5579dbf32a4f543d61", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/7a53eb310b226bea9d4a8d5579dbf32a4f543d61" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/_pull_request_commits/returns_the_commits_for_a_pull_request.json", + "mode": "100644", + "type": "blob", + "sha": "ed2652043444cb1a968ab1415721c23c37efd86f", + "size": 5973, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/ed2652043444cb1a968ab1415721c23c37efd86f" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/_pull_request_files", + "mode": "040000", + "type": "tree", + "sha": "1155bc79c89cda3cfee2415f30ba367af125601f", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/1155bc79c89cda3cfee2415f30ba367af125601f" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/_pull_request_files/lists_files_for_a_pull_request.json", + "mode": "100644", + "type": "blob", + "sha": "6950cca28d77204218350d85b6a81f982e8682f4", + "size": 6053, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/6950cca28d77204218350d85b6a81f982e8682f4" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/_pull_requests", + "mode": "040000", + "type": "tree", + "sha": "521d6706846c8131c19da6ab8af8dcbe8abd076c", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/521d6706846c8131c19da6ab8af8dcbe8abd076c" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/_pull_requests/lists_all_pull_requests.json", + "mode": "100644", + "type": "blob", + "sha": "ac586bbb2cda621c4212ec61ff6b3a4fc2337067", + "size": 111004, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/ac586bbb2cda621c4212ec61ff6b3a4fc2337067" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/_pull_requests/lists_all_pull_requests_with_state_argument.json", + "mode": "100644", + "type": "blob", + "sha": "4e8b3b2e988c64bd80e269c5a818502cc71264fc", + "size": 597253, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/4e8b3b2e988c64bd80e269c5a818502cc71264fc" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/_pull_requests/lists_all_pull_requests_with_state_option.json", + "mode": "100644", + "type": "blob", + "sha": "9f93041e766bb267eb0fb75c4338b79438cbbe4e", + "size": 111015, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/9f93041e766bb267eb0fb75c4338b79438cbbe4e" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/_pull_requests_comments", + "mode": "040000", + "type": "tree", + "sha": "8b8e7ad2f6c6d848c3cf3498a15a88b76b164e1a", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/8b8e7ad2f6c6d848c3cf3498a15a88b76b164e1a" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/_pull_requests_comments/returns_all_comments_on_all_pull_requests.json", + "mode": "100644", + "type": "blob", + "sha": "8ededbf510d5feecb5148f555253cd8853a2d8f1", + "size": 102382, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/8ededbf510d5feecb5148f555253cd8853a2d8f1" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/methods_that_require_a_new_pull", + "mode": "040000", + "type": "tree", + "sha": "e0e4cef552520ff2ce0c106f8f9bd6fdcf9f5a6b", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/e0e4cef552520ff2ce0c106f8f9bd6fdcf9f5a6b" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/methods_that_require_a_new_pull/_close_pull_request", + "mode": "040000", + "type": "tree", + "sha": "d45aff236054671989233135abcc9bd96f0673af", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/d45aff236054671989233135abcc9bd96f0673af" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/methods_that_require_a_new_pull/_close_pull_request/closes_a_pull_request.json", + "mode": "100644", + "type": "blob", + "sha": "6fd61e74de5ee23700e00d8ae6914d4966400be7", + "size": 146197, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/6fd61e74de5ee23700e00d8ae6914d4966400be7" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/methods_that_require_a_new_pull/_create_pull_request", + "mode": "040000", + "type": "tree", + "sha": "bf8369cea02895f4e812bde81d481eb2f514f05d", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/bf8369cea02895f4e812bde81d481eb2f514f05d" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/methods_that_require_a_new_pull/_create_pull_request/creates_a_pull_request.json", + "mode": "100644", + "type": "blob", + "sha": "2c1dba83f4546a412435e4a886294a84a575f94d", + "size": 97554, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/2c1dba83f4546a412435e4a886294a84a575f94d" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/methods_that_require_a_new_pull/_merge_pull_request", + "mode": "040000", + "type": "tree", + "sha": "5c71fcaf956e2a4e4b308ff112380b47ecfde34e", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/5c71fcaf956e2a4e4b308ff112380b47ecfde34e" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/methods_that_require_a_new_pull/_merge_pull_request/merges_the_pull_request.json", + "mode": "100644", + "type": "blob", + "sha": "39280e1f4cf585743704e5094281cd47eca481e5", + "size": 1583, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/39280e1f4cf585743704e5094281cd47eca481e5" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/methods_that_require_a_new_pull/_pull_merged_", + "mode": "040000", + "type": "tree", + "sha": "1d2e3ec25bc47893633d2584e2a9b83e6e929cb5", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/1d2e3ec25bc47893633d2584e2a9b83e6e929cb5" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/methods_that_require_a_new_pull/_pull_merged_/returns_whether_the_pull_request_has_been_merged.json", + "mode": "100644", + "type": "blob", + "sha": "0839b91192e666a9722772227cc2b9c1d337016f", + "size": 100267, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/0839b91192e666a9722772227cc2b9c1d337016f" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/methods_that_require_a_new_pull/_pull_request", + "mode": "040000", + "type": "tree", + "sha": "c19a9e5dd03b7db23ffef39e8d549f4045400a7c", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/c19a9e5dd03b7db23ffef39e8d549f4045400a7c" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/methods_that_require_a_new_pull/_pull_request/returns_a_pull_request.json", + "mode": "100644", + "type": "blob", + "sha": "005b1b70ca5734b6b9b7403d08129b776d769d6b", + "size": 146227, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/005b1b70ca5734b6b9b7403d08129b776d769d6b" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/methods_that_require_a_new_pull/_update_pull_request", + "mode": "040000", + "type": "tree", + "sha": "bd2e42f3c71537a92eb7fe166bd9e2a56d45a321", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/bd2e42f3c71537a92eb7fe166bd9e2a56d45a321" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/methods_that_require_a_new_pull/_update_pull_request/updates_a_pull_request.json", + "mode": "100644", + "type": "blob", + "sha": "29fbf4c62b9b4e92ec4f004e94cbcb7b80d2b034", + "size": 146208, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/29fbf4c62b9b4e92ec4f004e94cbcb7b80d2b034" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/methods_that_require_a_new_pull/methods_requiring_a_pull_request_comment", + "mode": "040000", + "type": "tree", + "sha": "8e1a0e95e559d7b60ee2a99471e0859099d27229", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/8e1a0e95e559d7b60ee2a99471e0859099d27229" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/methods_that_require_a_new_pull/methods_requiring_a_pull_request_comment/_create_pull_request_comment", + "mode": "040000", + "type": "tree", + "sha": "80a924e62560cb593a2cb6f7189e8a5404c217c4", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/80a924e62560cb593a2cb6f7189e8a5404c217c4" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/methods_that_require_a_new_pull/methods_requiring_a_pull_request_comment/_create_pull_request_comment/creates_a_new_comment_on_a_pull_request.json", + "mode": "100644", + "type": "blob", + "sha": "8f08cc0ddaeda0a96c6377fe2b8044e7f7dad474", + "size": 106372, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/8f08cc0ddaeda0a96c6377fe2b8044e7f7dad474" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/methods_that_require_a_new_pull/methods_requiring_a_pull_request_comment/_create_pull_request_comment_reply", + "mode": "040000", + "type": "tree", + "sha": "ec7b5db345135af0d87f34e6fff309f3eff63207", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/ec7b5db345135af0d87f34e6fff309f3eff63207" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/methods_that_require_a_new_pull/methods_requiring_a_pull_request_comment/_create_pull_request_comment_reply/creates_a_new_reply_to_a_pull_request_comment.json", + "mode": "100644", + "type": "blob", + "sha": "875564655878aac91d176267de68c2cd06fee6de", + "size": 115060, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/875564655878aac91d176267de68c2cd06fee6de" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/methods_that_require_a_new_pull/methods_requiring_a_pull_request_comment/_delete_pull_request_comment", + "mode": "040000", + "type": "tree", + "sha": "060de2e3fcf02c548f46060c1f380d84757a0beb", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/060de2e3fcf02c548f46060c1f380d84757a0beb" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/methods_that_require_a_new_pull/methods_requiring_a_pull_request_comment/_delete_pull_request_comment/deletes_a_pull_request_comment.json", + "mode": "100644", + "type": "blob", + "sha": "7b4a806f6c245edccd8c5c63deab35398140e407", + "size": 108912, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/7b4a806f6c245edccd8c5c63deab35398140e407" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/methods_that_require_a_new_pull/methods_requiring_a_pull_request_comment/_update_pull_request_comment", + "mode": "040000", + "type": "tree", + "sha": "f1e3fac98967aba66858a5153e8672aba16ff7b5", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/f1e3fac98967aba66858a5153e8672aba16ff7b5" + }, + { + "path": "spec/cassettes/Octokit_Client_PullRequests/methods_that_require_a_new_pull/methods_requiring_a_pull_request_comment/_update_pull_request_comment/updates_a_pull_request_comment.json", + "mode": "100644", + "type": "blob", + "sha": "37431297e4bca444ff020c914a7c5c1ef80589f5", + "size": 114863, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/37431297e4bca444ff020c914a7c5c1ef80589f5" + }, + { + "path": "spec/cassettes/Octokit_Client_Refs", + "mode": "040000", + "type": "tree", + "sha": "2c25fd5f8b51795eee0e86706822cb2b9faaddfb", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/2c25fd5f8b51795eee0e86706822cb2b9faaddfb" + }, + { + "path": "spec/cassettes/Octokit_Client_Refs/_ref", + "mode": "040000", + "type": "tree", + "sha": "66254d8a04aea4b51d4465898dcf08be73b43f15", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/66254d8a04aea4b51d4465898dcf08be73b43f15" + }, + { + "path": "spec/cassettes/Octokit_Client_Refs/_ref/returns_a_tags_ref.json", + "mode": "100644", + "type": "blob", + "sha": "afe2891ca059c55aa1739ff57baa9910124df14e", + "size": 1869, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/afe2891ca059c55aa1739ff57baa9910124df14e" + }, + { + "path": "spec/cassettes/Octokit_Client_Refs/_refs", + "mode": "040000", + "type": "tree", + "sha": "f7cf50ab40f14f53648a271f2bdfe2f16b3560f1", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/f7cf50ab40f14f53648a271f2bdfe2f16b3560f1" + }, + { + "path": "spec/cassettes/Octokit_Client_Refs/_refs/returns_all_refs.json", + "mode": "100644", + "type": "blob", + "sha": "03e4e851e80f9e5d0efc07a0576d614621fa74cc", + "size": 398193, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/03e4e851e80f9e5d0efc07a0576d614621fa74cc" + }, + { + "path": "spec/cassettes/Octokit_Client_Refs/_refs/returns_all_tag_refs.json", + "mode": "100644", + "type": "blob", + "sha": "a51d90014fe30b89892ce641bdc865133c94c0e4", + "size": 9272, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/a51d90014fe30b89892ce641bdc865133c94c0e4" + }, + { + "path": "spec/cassettes/Octokit_Client_Refs/with_ref", + "mode": "040000", + "type": "tree", + "sha": "a70db34f5fc17b876bf3c17fd6b7e2e147cfe0f3", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/a70db34f5fc17b876bf3c17fd6b7e2e147cfe0f3" + }, + { + "path": "spec/cassettes/Octokit_Client_Refs/with_ref/_create_ref", + "mode": "040000", + "type": "tree", + "sha": "50f7fff25a49df14fdc58a8e5aa00795259b9229", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/50f7fff25a49df14fdc58a8e5aa00795259b9229" + }, + { + "path": "spec/cassettes/Octokit_Client_Refs/with_ref/_create_ref/creates_a_ref.json", + "mode": "100644", + "type": "blob", + "sha": "df2224236cb3ade120a5d9e86145b0a8820b6b7b", + "size": 206701, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/df2224236cb3ade120a5d9e86145b0a8820b6b7b" + }, + { + "path": "spec/cassettes/Octokit_Client_Refs/with_ref/_delete_branch", + "mode": "040000", + "type": "tree", + "sha": "3d613d625f8175521279a05b5a24362ebad25116", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/3d613d625f8175521279a05b5a24362ebad25116" + }, + { + "path": "spec/cassettes/Octokit_Client_Refs/with_ref/_delete_branch/deletes_an_existing_branch.json", + "mode": "100644", + "type": "blob", + "sha": "82afc36ceb5539d98b314757fb419ecab63ef831", + "size": 210224, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/82afc36ceb5539d98b314757fb419ecab63ef831" + }, + { + "path": "spec/cassettes/Octokit_Client_Refs/with_ref/_delete_ref", + "mode": "040000", + "type": "tree", + "sha": "1ccfd944564df041fb92c04615ca30cada89a61b", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/1ccfd944564df041fb92c04615ca30cada89a61b" + }, + { + "path": "spec/cassettes/Octokit_Client_Refs/with_ref/_delete_ref/deletes_an_existing_ref.json", + "mode": "100644", + "type": "blob", + "sha": "a4a77db95b79690ef8e5cfcc7cc0c529432ca810", + "size": 209537, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/a4a77db95b79690ef8e5cfcc7cc0c529432ca810" + }, + { + "path": "spec/cassettes/Octokit_Client_Refs/with_ref/_update_branch", + "mode": "040000", + "type": "tree", + "sha": "2a731c154bdf6fc93dcfe2bfab2834438a80e971", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/2a731c154bdf6fc93dcfe2bfab2834438a80e971" + }, + { + "path": "spec/cassettes/Octokit_Client_Refs/with_ref/_update_branch/updates_a_branch.json", + "mode": "100644", + "type": "blob", + "sha": "e6658cb041157ae13852daabc8a030569faa18df", + "size": 211320, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/e6658cb041157ae13852daabc8a030569faa18df" + }, + { + "path": "spec/cassettes/Octokit_Client_Refs/with_ref/_update_ref", + "mode": "040000", + "type": "tree", + "sha": "f4ea71bea330fbdfd0c2ef4d1570819e4ac5e053", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/f4ea71bea330fbdfd0c2ef4d1570819e4ac5e053" + }, + { + "path": "spec/cassettes/Octokit_Client_Refs/with_ref/_update_ref/updates_a_ref.json", + "mode": "100644", + "type": "blob", + "sha": "c6e3d9ca938c3951f6f3b6dcfc8ba0940f84655d", + "size": 210710, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/c6e3d9ca938c3951f6f3b6dcfc8ba0940f84655d" + }, + { + "path": "spec/cassettes/Octokit_Client_Releases", + "mode": "040000", + "type": "tree", + "sha": "e38f94fde3e0cc2066c6cfc41d5dda10fc45b932", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/e38f94fde3e0cc2066c6cfc41d5dda10fc45b932" + }, + { + "path": "spec/cassettes/Octokit_Client_Releases/_create_release", + "mode": "040000", + "type": "tree", + "sha": "fa542a8efb7f2ef36c516f684a07b20fcdb7343b", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/fa542a8efb7f2ef36c516f684a07b20fcdb7343b" + }, + { + "path": "spec/cassettes/Octokit_Client_Releases/_create_release/creates_a_release.json", + "mode": "100644", + "type": "blob", + "sha": "494d622c62f58a98cb174c076fced13694f24aea", + "size": 6925, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/494d622c62f58a98cb174c076fced13694f24aea" + }, + { + "path": "spec/cassettes/Octokit_Client_Releases/_delete_release", + "mode": "040000", + "type": "tree", + "sha": "f2991e79f1f687e468f16e5b0a520e0c4a5b7e85", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/f2991e79f1f687e468f16e5b0a520e0c4a5b7e85" + }, + { + "path": "spec/cassettes/Octokit_Client_Releases/_delete_release/deletes_a_release.json", + "mode": "100644", + "type": "blob", + "sha": "6b88996325fe3d824aec8fa13f979f1eadb4782d", + "size": 12246, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/6b88996325fe3d824aec8fa13f979f1eadb4782d" + }, + { + "path": "spec/cassettes/Octokit_Client_Releases/_release", + "mode": "040000", + "type": "tree", + "sha": "82ad516fc1fd0eef0752bd20bce10775a432319a", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/82ad516fc1fd0eef0752bd20bce10775a432319a" + }, + { + "path": "spec/cassettes/Octokit_Client_Releases/_release/gets_a_single_release.json", + "mode": "100644", + "type": "blob", + "sha": "16de7f66767634ba7a9fb0181ed549739628582f", + "size": 13470, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/16de7f66767634ba7a9fb0181ed549739628582f" + }, + { + "path": "spec/cassettes/Octokit_Client_Releases/_release_assets", + "mode": "040000", + "type": "tree", + "sha": "9e1d09717ea0a6e31232ded5079687988910ead9", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/9e1d09717ea0a6e31232ded5079687988910ead9" + }, + { + "path": "spec/cassettes/Octokit_Client_Releases/_release_assets/lists_assets_for_a_release.json", + "mode": "100644", + "type": "blob", + "sha": "134f7116129562595028dac283ee7caf637bd86a", + "size": 3793, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/134f7116129562595028dac283ee7caf637bd86a" + }, + { + "path": "spec/cassettes/Octokit_Client_Releases/_releases", + "mode": "040000", + "type": "tree", + "sha": "c5c64ef80708d1b5ac18a7867bdc89b277d44846", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/c5c64ef80708d1b5ac18a7867bdc89b277d44846" + }, + { + "path": "spec/cassettes/Octokit_Client_Releases/_releases/lists_releases_for_a_repo.json", + "mode": "100644", + "type": "blob", + "sha": "64446a0fc5f52e3d434e4ff07355e48931d57445", + "size": 6440, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/64446a0fc5f52e3d434e4ff07355e48931d57445" + }, + { + "path": "spec/cassettes/Octokit_Client_Releases/_update_release", + "mode": "040000", + "type": "tree", + "sha": "b455becc1462a96962708d75b67633e00fb37fba", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/b455becc1462a96962708d75b67633e00fb37fba" + }, + { + "path": "spec/cassettes/Octokit_Client_Releases/_update_release/updates_a_release.json", + "mode": "100644", + "type": "blob", + "sha": "ee247887a4b0f9fd2cfc91a0c1d808002aa21317", + "size": 13532, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/ee247887a4b0f9fd2cfc91a0c1d808002aa21317" + }, + { + "path": "spec/cassettes/Octokit_Client_Releases/handling_release_assets", + "mode": "040000", + "type": "tree", + "sha": "8dabd718e74b23d585f82fd3879b8a1101b1ce6d", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/8dabd718e74b23d585f82fd3879b8a1101b1ce6d" + }, + { + "path": "spec/cassettes/Octokit_Client_Releases/handling_release_assets/_release_assets", + "mode": "040000", + "type": "tree", + "sha": "a60aeadb8caaff58e4e36d30f831efe7d8c1d303", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/a60aeadb8caaff58e4e36d30f831efe7d8c1d303" + }, + { + "path": "spec/cassettes/Octokit_Client_Releases/handling_release_assets/_release_assets/lists_assets_for_a_release.json", + "mode": "100644", + "type": "blob", + "sha": "93a8a228aee1510caefeb99b07de0f0063ed42da", + "size": 6041, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/93a8a228aee1510caefeb99b07de0f0063ed42da" + }, + { + "path": "spec/cassettes/Octokit_Client_Releases/handling_release_assets/_update_release_asset", + "mode": "040000", + "type": "tree", + "sha": "c848344de24869babbb7c1e2ee29903ac3bd2aa2", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/c848344de24869babbb7c1e2ee29903ac3bd2aa2" + }, + { + "path": "spec/cassettes/Octokit_Client_Releases/handling_release_assets/_update_release_asset/edits_a_release_asset.json", + "mode": "100644", + "type": "blob", + "sha": "05594662899cc452a678b0bb2c0c980fe1351b0e", + "size": 1975, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/05594662899cc452a678b0bb2c0c980fe1351b0e" + }, + { + "path": "spec/cassettes/Octokit_Client_Releases/handling_release_assets/_upload_release_asset", + "mode": "040000", + "type": "tree", + "sha": "255d1e3ab6a3783b05332f3f8f1aa15bd7bcfe86", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/255d1e3ab6a3783b05332f3f8f1aa15bd7bcfe86" + }, + { + "path": "spec/cassettes/Octokit_Client_Releases/handling_release_assets/_upload_release_asset/guesses_the_content_type_for_an_asset.json", + "mode": "100644", + "type": "blob", + "sha": "18afa9d9b46fdda8e08af4d73d0e7d9fe659937f", + "size": 64891, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/18afa9d9b46fdda8e08af4d73d0e7d9fe659937f" + }, + { + "path": "spec/cassettes/Octokit_Client_Releases/handling_release_assets/_upload_release_asset/uploads_a_release_asset_as_file_object.json", + "mode": "100644", + "type": "blob", + "sha": "9ab5765ad6878c974649fea56b58282ea86aa8f8", + "size": 64070, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/9ab5765ad6878c974649fea56b58282ea86aa8f8" + }, + { + "path": "spec/cassettes/Octokit_Client_Releases/handling_release_assets/_upload_release_asset/uploads_a_release_asset_by_path.json", + "mode": "100644", + "type": "blob", + "sha": "3bd84e2648628800066e557474fce36497af178a", + "size": 64468, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3bd84e2648628800066e557474fce36497af178a" + }, + { + "path": "spec/cassettes/Octokit_Client_Releases/handling_release_assets/_upload_release_asset/uploads_a_release_asset_with_a_default_name.json", + "mode": "100644", + "type": "blob", + "sha": "43ad4e427909a4b7983a5c4bb6c1cf8a7c76ff43", + "size": 63662, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/43ad4e427909a4b7983a5c4bb6c1cf8a7c76ff43" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories", + "mode": "040000", + "type": "tree", + "sha": "c333d6d01a69dfff28086b359ddc8c7aeb00c34c", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/c333d6d01a69dfff28086b359ddc8c7aeb00c34c" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_all_repositories", + "mode": "040000", + "type": "tree", + "sha": "659ab1ef1c998fa3065f7345711b941ea86050cc", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/659ab1ef1c998fa3065f7345711b941ea86050cc" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_all_repositories/returns_all_repositories_on_github.json", + "mode": "100644", + "type": "blob", + "sha": "d8f1eecd5672eaca4e01ff28e6a639c3c321443c", + "size": 560838, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/d8f1eecd5672eaca4e01ff28e6a639c3c321443c" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_assignees", + "mode": "040000", + "type": "tree", + "sha": "2b02ad7b724084fb176b835d4efa4c3d9ee5d694", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/2b02ad7b724084fb176b835d4efa4c3d9ee5d694" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_assignees/lists_all_the_available_assignees_owner_collaborators_.json", + "mode": "100644", + "type": "blob", + "sha": "b3539c1cb158cd9a1bf300329953c9b792fa4d56", + "size": 10975, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/b3539c1cb158cd9a1bf300329953c9b792fa4d56" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_branches", + "mode": "040000", + "type": "tree", + "sha": "7534d6faa0186699778209323f5a466c0a626a0c", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/7534d6faa0186699778209323f5a466c0a626a0c" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_branches/returns_a_repository_s_branches.json", + "mode": "100644", + "type": "blob", + "sha": "46a853dbd5e5e99631eebfd2464c75f7f518f03f", + "size": 2038, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/46a853dbd5e5e99631eebfd2464c75f7f518f03f" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_branches/returns_a_single_branch.json", + "mode": "100644", + "type": "blob", + "sha": "54f3d13f862a310474352efe967803b57889effc", + "size": 6276, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/54f3d13f862a310474352efe967803b57889effc" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_check_assignee", + "mode": "040000", + "type": "tree", + "sha": "2eb5b49ee8f3a50445acccfa4270897163e22f89", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/2eb5b49ee8f3a50445acccfa4270897163e22f89" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_check_assignee/checks_to_see_if_a_particular_user_is_an_assignee_for_a_repository.json", + "mode": "100644", + "type": "blob", + "sha": "533fa9794eb54c89f14a13d8b673f1a5e64b7376", + "size": 1142, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/533fa9794eb54c89f14a13d8b673f1a5e64b7376" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_collaborators", + "mode": "040000", + "type": "tree", + "sha": "02ad036310e88a10287f48a0936fe20ef4cf3242", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/02ad036310e88a10287f48a0936fe20ef4cf3242" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_collaborators/returns_a_repository_s_collaborators.json", + "mode": "100644", + "type": "blob", + "sha": "fcca00956eb5120fa9a6c865038721b5a48d0917", + "size": 16051, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/fcca00956eb5120fa9a6c865038721b5a48d0917" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_contributors", + "mode": "040000", + "type": "tree", + "sha": "ced84bf885a614a66ff5adb1b36b92a5f97d150c", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/ced84bf885a614a66ff5adb1b36b92a5f97d150c" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_contributors/returns_repository_contributors.json", + "mode": "100644", + "type": "blob", + "sha": "8282a91e3f8eb351ca96f43a5ca389366b594a72", + "size": 327600, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/8282a91e3f8eb351ca96f43a5ca389366b594a72" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_contributors/returns_repository_contributors_excluding_anonymous.json", + "mode": "100644", + "type": "blob", + "sha": "747bae3f5f35c22542085429d1732ecf60966e85", + "size": 324306, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/747bae3f5f35c22542085429d1732ecf60966e85" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_create_repository", + "mode": "040000", + "type": "tree", + "sha": "9dfc2ffd2d7ed693f77210aa4357901be1380a36", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/9dfc2ffd2d7ed693f77210aa4357901be1380a36" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_create_repository/creates_a_repository_for_an_organization.json", + "mode": "100644", + "type": "blob", + "sha": "5fe22af71737b691846bb18bc185a5c6270eecaa", + "size": 23400, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/5fe22af71737b691846bb18bc185a5c6270eecaa" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_delete_subscription", + "mode": "040000", + "type": "tree", + "sha": "5bb937e3f24e5fd37cc04d45409c59a7b237005c", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/5bb937e3f24e5fd37cc04d45409c59a7b237005c" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_delete_subscription/returns_true_when_repo_subscription_deleted.json", + "mode": "100644", + "type": "blob", + "sha": "b5005af49f433f7162d427e54c453f961343d820", + "size": 1052, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/b5005af49f433f7162d427e54c453f961343d820" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_fork", + "mode": "040000", + "type": "tree", + "sha": "c3385c05e37559a1030af17fbb562c6b53334089", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/c3385c05e37559a1030af17fbb562c6b53334089" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_fork/forks_a_repository.json", + "mode": "100644", + "type": "blob", + "sha": "235c090e0a904214032218be6cd3e9b132a9cd40", + "size": 22262, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/235c090e0a904214032218be6cd3e9b132a9cd40" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_languages", + "mode": "040000", + "type": "tree", + "sha": "1ca7527f0cbe7071c79a1b5b18dddb259d04bc47", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/1ca7527f0cbe7071c79a1b5b18dddb259d04bc47" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_languages/returns_a_repository_s_languages.json", + "mode": "100644", + "type": "blob", + "sha": "0d20281ad22773c7ff460353761bcbde37e1a2e4", + "size": 1353, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/0d20281ad22773c7ff460353761bcbde37e1a2e4" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_network", + "mode": "040000", + "type": "tree", + "sha": "0286649eb16b9f697781053ff9abb5d84c49ffd1", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/0286649eb16b9f697781053ff9abb5d84c49ffd1" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_network/returns_a_repository_s_network.json", + "mode": "100644", + "type": "blob", + "sha": "14bee4c10b15fc3a8f3dbfae37508e1c05d41162", + "size": 199392, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/14bee4c10b15fc3a8f3dbfae37508e1c05d41162" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_repositories", + "mode": "040000", + "type": "tree", + "sha": "2c27428f233d90f8dd7478f8bdbde726c4f80f5d", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/2c27428f233d90f8dd7478f8bdbde726c4f80f5d" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_repositories/returns_a_user_s_repositories.json", + "mode": "100644", + "type": "blob", + "sha": "39772c0d36b38bc4737bd37f6f6b34108bfb9138", + "size": 189293, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/39772c0d36b38bc4737bd37f6f6b34108bfb9138" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_repositories/returns_authenticated_user_s_repositories.json", + "mode": "100644", + "type": "blob", + "sha": "00a93745703c1b65050359d288ed2b22041d09b1", + "size": 21843, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/00a93745703c1b65050359d288ed2b22041d09b1" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_repository", + "mode": "040000", + "type": "tree", + "sha": "3c4608bdbbff4c8b930e617fc7d012135720d7aa", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/3c4608bdbbff4c8b930e617fc7d012135720d7aa" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_repository/returns_the_matching_repository.json", + "mode": "100644", + "type": "blob", + "sha": "03166513c496484584d2038e81d95460b56c3106", + "size": 7945, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/03166513c496484584d2038e81d95460b56c3106" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_repository_", + "mode": "040000", + "type": "tree", + "sha": "64f6cc52a158e23129ea0eec61f1e54ce4f55208", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/64f6cc52a158e23129ea0eec61f1e54ce4f55208" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_repository_/returns_false_if_the_repository_doesn_t_exist.json", + "mode": "100644", + "type": "blob", + "sha": "33eb568407ac2cdb1d909838f57702364e297c04", + "size": 1226, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/33eb568407ac2cdb1d909838f57702364e297c04" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_repository_/returns_true_if_the_repository_exists.json", + "mode": "100644", + "type": "blob", + "sha": "219b766cd8c41d8a46f13bfb4644aac775810c1e", + "size": 7946, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/219b766cd8c41d8a46f13bfb4644aac775810c1e" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_star", + "mode": "040000", + "type": "tree", + "sha": "6bd5603d3d2e63aa0100f450c1fdf1f28b171363", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/6bd5603d3d2e63aa0100f450c1fdf1f28b171363" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_star/stars_a_repository.json", + "mode": "100644", + "type": "blob", + "sha": "b67b86fe89e0f2a1c53fb280764925f85abf373a", + "size": 1231, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/b67b86fe89e0f2a1c53fb280764925f85abf373a" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_stargazers", + "mode": "040000", + "type": "tree", + "sha": "6c46bae13a5de39e14ea17ab1c03ae8aa49478db", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/6c46bae13a5de39e14ea17ab1c03ae8aa49478db" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_stargazers/returns_all_repository_stargazers.json", + "mode": "100644", + "type": "blob", + "sha": "1c3b5a5a25c05d381bc0a0c9dcb2dea69257fddf", + "size": 42102, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/1c3b5a5a25c05d381bc0a0c9dcb2dea69257fddf" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_subscribers", + "mode": "040000", + "type": "tree", + "sha": "d3255dae6118fbdabe4a3c23ad6b3e6f31b01238", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/d3255dae6118fbdabe4a3c23ad6b3e6f31b01238" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_subscribers/lists_all_the_users_watching_the_repository.json", + "mode": "100644", + "type": "blob", + "sha": "377927ee68afd48da97bda4735451213341a3165", + "size": 72633, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/377927ee68afd48da97bda4735451213341a3165" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_subscription", + "mode": "040000", + "type": "tree", + "sha": "f747d287c86b39cfa427bb4b794374030103ecd1", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/f747d287c86b39cfa427bb4b794374030103ecd1" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_subscription/returns_a_repository_subscription.json", + "mode": "100644", + "type": "blob", + "sha": "b19b1e4e7ca6b3711618718bf2ea06d80f5de883", + "size": 1675, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/b19b1e4e7ca6b3711618718bf2ea06d80f5de883" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_tags", + "mode": "040000", + "type": "tree", + "sha": "f4b7ed987ee4c0ec95138e8b13fcad7c60abe088", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/f4b7ed987ee4c0ec95138e8b13fcad7c60abe088" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_tags/returns_a_repository_s_tags.json", + "mode": "100644", + "type": "blob", + "sha": "cad6193cc06bb7ae02bbb46506bc5c02424b4a73", + "size": 29528, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/cad6193cc06bb7ae02bbb46506bc5c02424b4a73" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_unstar", + "mode": "040000", + "type": "tree", + "sha": "1b8615517f71d79899575ce5fe7d77a57ff861e9", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/1b8615517f71d79899575ce5fe7d77a57ff861e9" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_unstar/unstars_a_repository.json", + "mode": "100644", + "type": "blob", + "sha": "33fb99b22c84fb61a0621e09355aefc5cc8f79c0", + "size": 1234, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/33fb99b22c84fb61a0621e09355aefc5cc8f79c0" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_unwatch", + "mode": "040000", + "type": "tree", + "sha": "2610d7ccee89f16ef54316d339b35f9a59748ec3", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/2610d7ccee89f16ef54316d339b35f9a59748ec3" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_unwatch/unwatches_a_repository.json", + "mode": "100644", + "type": "blob", + "sha": "7af3dc52ef5f79aaca0dcf2ed0af75b142746a74", + "size": 1234, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/7af3dc52ef5f79aaca0dcf2ed0af75b142746a74" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_update_subscription", + "mode": "040000", + "type": "tree", + "sha": "6d48249aa145458e69bcabc69a7d9340a85cd59d", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/6d48249aa145458e69bcabc69a7d9340a85cd59d" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_update_subscription/updates_a_repository_subscription.json", + "mode": "100644", + "type": "blob", + "sha": "34fd42718c2a4a0659adf876238b99216a21e1c2", + "size": 1702, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/34fd42718c2a4a0659adf876238b99216a21e1c2" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_watch", + "mode": "040000", + "type": "tree", + "sha": "3dd2ff459040ccc13e8f71c0d0eed1d466649a44", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/3dd2ff459040ccc13e8f71c0d0eed1d466649a44" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_watch/watches_a_repository.json", + "mode": "100644", + "type": "blob", + "sha": "296b00dddda0f9a69aa3ba57c067a9e049aadff6", + "size": 1231, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/296b00dddda0f9a69aa3ba57c067a9e049aadff6" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_watchers", + "mode": "040000", + "type": "tree", + "sha": "cb9d531de4c52302d0b358f904275d764338733a", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/cb9d531de4c52302d0b358f904275d764338733a" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/_watchers/returns_all_repository_watchers.json", + "mode": "100644", + "type": "blob", + "sha": "63bfd36e025e7dbd7d641bac60d71760028dab03", + "size": 42096, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/63bfd36e025e7dbd7d641bac60d71760028dab03" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository", + "mode": "040000", + "type": "tree", + "sha": "5d205d30738bf7afcd9083da2d4d1bfafb09a8eb", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/5d205d30738bf7afcd9083da2d4d1bfafb09a8eb" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/_add_collaborator", + "mode": "040000", + "type": "tree", + "sha": "b88baa207d4ec6214af573ebcbee31666d3975eb", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/b88baa207d4ec6214af573ebcbee31666d3975eb" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/_add_collaborator/adds_a_repository_collaborators.json", + "mode": "100644", + "type": "blob", + "sha": "a582b11c80e87070a7c22bd1805e2ffc287c4053", + "size": 11705, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/a582b11c80e87070a7c22bd1805e2ffc287c4053" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/_collaborator_", + "mode": "040000", + "type": "tree", + "sha": "32fa6e980d1f8c075276bde65cbfc137ef231e8b", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/32fa6e980d1f8c075276bde65cbfc137ef231e8b" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/_collaborator_/checks_if_a_user_is_a_repository_collaborator.json", + "mode": "100644", + "type": "blob", + "sha": "dd07def4b893168fa01c3cf61d4e8d748bfdaab8", + "size": 12427, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/dd07def4b893168fa01c3cf61d4e8d748bfdaab8" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/_create_repository", + "mode": "040000", + "type": "tree", + "sha": "15d0dcb9d318c46f16bbbb2ad58c6ea1ce315466", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/15d0dcb9d318c46f16bbbb2ad58c6ea1ce315466" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/_create_repository/creates_a_repository.json", + "mode": "100644", + "type": "blob", + "sha": "9172af10f25a6608b276bf504f10b579223769c2", + "size": 9302, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/9172af10f25a6608b276bf504f10b579223769c2" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/_delete_repository", + "mode": "040000", + "type": "tree", + "sha": "a4d1296dd5b4847d9de026793322b4072916ddb4", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/a4d1296dd5b4847d9de026793322b4072916ddb4" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/_delete_repository/deletes_a_repository.json", + "mode": "100644", + "type": "blob", + "sha": "d2e200116189f90ec0c09903f557ac994541b4e2", + "size": 10484, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/d2e200116189f90ec0c09903f557ac994541b4e2" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/_deploy_keys", + "mode": "040000", + "type": "tree", + "sha": "35bafcb208221d7bac5fb3c11ced0f99935d5c45", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/35bafcb208221d7bac5fb3c11ced0f99935d5c45" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/_deploy_keys/returns_a_repository_s_deploy_keys.json", + "mode": "100644", + "type": "blob", + "sha": "a0615757007bfbc31549f9cd7e99c282fc6d21ad", + "size": 10649, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/a0615757007bfbc31549f9cd7e99c282fc6d21ad" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/_hooks", + "mode": "040000", + "type": "tree", + "sha": "bae7b711ecbe5d573d132cbeff37e0ca39251dd7", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/bae7b711ecbe5d573d132cbeff37e0ca39251dd7" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/_hooks/returns_a_repository_s_hooks.json", + "mode": "100644", + "type": "blob", + "sha": "c8efc374129e325339d0fff5807c63f31182a8a6", + "size": 10612, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/c8efc374129e325339d0fff5807c63f31182a8a6" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/_remove_collaborator", + "mode": "040000", + "type": "tree", + "sha": "39d3001a27ea8bbd589beed42d0bd021991a8794", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/39d3001a27ea8bbd589beed42d0bd021991a8794" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/_remove_collaborator/removes_a_repository_collaborators.json", + "mode": "100644", + "type": "blob", + "sha": "6c623d8617e93313ad267927c3a3df3ca5eae654", + "size": 11705, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/6c623d8617e93313ad267927c3a3df3ca5eae654" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/_repository_teams", + "mode": "040000", + "type": "tree", + "sha": "07b158968d6044e74347c2446e225fc3c73d6a44", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/07b158968d6044e74347c2446e225fc3c73d6a44" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/_repository_teams/returns_all_repository_teams.json", + "mode": "100644", + "type": "blob", + "sha": "65f9b2bb371947551efe3fe1cd46be36399d5897", + "size": 10650, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/65f9b2bb371947551efe3fe1cd46be36399d5897" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/_update_repository", + "mode": "040000", + "type": "tree", + "sha": "649435ae12e6ba783d03b5785054dbc4e81b369f", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/649435ae12e6ba783d03b5785054dbc4e81b369f" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/_update_repository/updates_the_matching_repository.json", + "mode": "100644", + "type": "blob", + "sha": "6080b4f9dff3d7166d84f121031ffe367c5a50cc", + "size": 17396, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/6080b4f9dff3d7166d84f121031ffe367c5a50cc" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/with_hook", + "mode": "040000", + "type": "tree", + "sha": "c35d996de01f0395b18f43bb9b54b80b8dba4db2", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/c35d996de01f0395b18f43bb9b54b80b8dba4db2" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/with_hook/_create_hook", + "mode": "040000", + "type": "tree", + "sha": "eef8e095698813e6881bb07f7ed5be3502e2a9d6", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/eef8e095698813e6881bb07f7ed5be3502e2a9d6" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/with_hook/_create_hook/creates_a_hook.json", + "mode": "100644", + "type": "blob", + "sha": "5e4ded4b7d48667a8b02dc6de748fc560130b537", + "size": 12604, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/5e4ded4b7d48667a8b02dc6de748fc560130b537" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/with_hook/_edit_hook", + "mode": "040000", + "type": "tree", + "sha": "37f5e26c461cf1ee2a3e4baa8986d49c157b4ae0", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/37f5e26c461cf1ee2a3e4baa8986d49c157b4ae0" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/with_hook/_edit_hook/edits_a_hook.json", + "mode": "100644", + "type": "blob", + "sha": "aee1d8290baab21ad46a6c9ec542ff1e73df0e92", + "size": 14702, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/aee1d8290baab21ad46a6c9ec542ff1e73df0e92" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/with_hook/_hook", + "mode": "040000", + "type": "tree", + "sha": "e3c2ae0574bdddaff1de8505ec7980d190292839", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/e3c2ae0574bdddaff1de8505ec7980d190292839" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/with_hook/_hook/returns_a_repository_s_single_hook.json", + "mode": "100644", + "type": "blob", + "sha": "5fcbdc206546c19dd511ccdf49af86a272528aad", + "size": 14604, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/5fcbdc206546c19dd511ccdf49af86a272528aad" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/with_hook/_remove_hook", + "mode": "040000", + "type": "tree", + "sha": "ce11b535bbd01bc57832f211aa9eaf0e09bd2963", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/ce11b535bbd01bc57832f211aa9eaf0e09bd2963" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/with_hook/_remove_hook/removes_a_hook.json", + "mode": "100644", + "type": "blob", + "sha": "386261ac34e624d3c5857178245e17d7a6399ccb", + "size": 13848, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/386261ac34e624d3c5857178245e17d7a6399ccb" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/with_hook/_test_hook", + "mode": "040000", + "type": "tree", + "sha": "3575c02f659fd2e28e6624d4a21f658f54b74d32", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/3575c02f659fd2e28e6624d4a21f658f54b74d32" + }, + { + "path": "spec/cassettes/Octokit_Client_Repositories/with_repository/with_hook/_test_hook/tests_a_hook.json", + "mode": "100644", + "type": "blob", + "sha": "515bd837ce85057be21ca92b5122abf44a0bfe03", + "size": 15853, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/515bd837ce85057be21ca92b5122abf44a0bfe03" + }, + { + "path": "spec/cassettes/Octokit_Client_Say", + "mode": "040000", + "type": "tree", + "sha": "86e87b9c2f03ffb9e14cd014b5973894c0fabe0f", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/86e87b9c2f03ffb9e14cd014b5973894c0fabe0f" + }, + { + "path": "spec/cassettes/Octokit_Client_Say/_say", + "mode": "040000", + "type": "tree", + "sha": "b92a307c67a2c4f8356d2f1ade20e6c4a54d9c7f", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/b92a307c67a2c4f8356d2f1ade20e6c4a54d9c7f" + }, + { + "path": "spec/cassettes/Octokit_Client_Say/_say/returns_an_ASCII_octocat.json", + "mode": "100644", + "type": "blob", + "sha": "21e20ede9df2a798e4cb68c1151adb6db935fcb1", + "size": 2225, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/21e20ede9df2a798e4cb68c1151adb6db935fcb1" + }, + { + "path": "spec/cassettes/Octokit_Client_Say/_say/returns_an_ASCII_octocat_with_custom_text.json", + "mode": "100644", + "type": "blob", + "sha": "aaed0fdc8419d16f50d4828db906c255d39f9d1c", + "size": 2318, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/aaed0fdc8419d16f50d4828db906c255d39f9d1c" + }, + { + "path": "spec/cassettes/Octokit_Client_Search", + "mode": "040000", + "type": "tree", + "sha": "78683eb0060a47556f3aa64a127aea87052bdf52", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/78683eb0060a47556f3aa64a127aea87052bdf52" + }, + { + "path": "spec/cassettes/Octokit_Client_Search/_search_code", + "mode": "040000", + "type": "tree", + "sha": "e13bb47f862cbfa896329e27648c86e9e27c4369", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/e13bb47f862cbfa896329e27648c86e9e27c4369" + }, + { + "path": "spec/cassettes/Octokit_Client_Search/_search_code/searches_code.json", + "mode": "100644", + "type": "blob", + "sha": "c8a1f85dea68297d8efdef64aba5df3de64b126c", + "size": 30645, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/c8a1f85dea68297d8efdef64aba5df3de64b126c" + }, + { + "path": "spec/cassettes/Octokit_Client_Search/_search_issues", + "mode": "040000", + "type": "tree", + "sha": "93b4a4c4a5cfc4a486765d578e7eb75b796a62ec", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/93b4a4c4a5cfc4a486765d578e7eb75b796a62ec" + }, + { + "path": "spec/cassettes/Octokit_Client_Search/_search_issues/searches_issues.json", + "mode": "100644", + "type": "blob", + "sha": "3c04cc9d591e1ae9ae0d13b9f545f14382b7905b", + "size": 29141, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3c04cc9d591e1ae9ae0d13b9f545f14382b7905b" + }, + { + "path": "spec/cassettes/Octokit_Client_Search/_search_repositories", + "mode": "040000", + "type": "tree", + "sha": "c6bfd2e457bb393b6eb4bb24061da4382592d62a", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/c6bfd2e457bb393b6eb4bb24061da4382592d62a" + }, + { + "path": "spec/cassettes/Octokit_Client_Search/_search_repositories/searches_repositories.json", + "mode": "100644", + "type": "blob", + "sha": "521047b55b19cb2e4c704d3a0582617921804325", + "size": 157182, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/521047b55b19cb2e4c704d3a0582617921804325" + }, + { + "path": "spec/cassettes/Octokit_Client_Search/_search_users", + "mode": "040000", + "type": "tree", + "sha": "11cccb8775efad0e6f621fb7260d75f0527d1e62", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/11cccb8775efad0e6f621fb7260d75f0527d1e62" + }, + { + "path": "spec/cassettes/Octokit_Client_Search/_search_users/searches_users.json", + "mode": "100644", + "type": "blob", + "sha": "e88bd210a5cf76e61804fd436359e8a050a324d7", + "size": 34455, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/e88bd210a5cf76e61804fd436359e8a050a324d7" + }, + { + "path": "spec/cassettes/Octokit_Client_Search/_search_users/utilizes_auto_pagination.json", + "mode": "100644", + "type": "blob", + "sha": "81243054c2faa162073b2d4c3f1f7d231e7a2127", + "size": 5249, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/81243054c2faa162073b2d4c3f1f7d231e7a2127" + }, + { + "path": "spec/cassettes/Octokit_Client_ServiceStatus", + "mode": "040000", + "type": "tree", + "sha": "5434b128861d9726d6183d77857383b8d48498ac", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/5434b128861d9726d6183d77857383b8d48498ac" + }, + { + "path": "spec/cassettes/Octokit_Client_ServiceStatus/_github_status", + "mode": "040000", + "type": "tree", + "sha": "b3d6ad5a7de5700d945a1be7f4e3850ab9ceba99", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/b3d6ad5a7de5700d945a1be7f4e3850ab9ceba99" + }, + { + "path": "spec/cassettes/Octokit_Client_ServiceStatus/_github_status/returns_the_current_system_status.json", + "mode": "100644", + "type": "blob", + "sha": "b2d4a53532a59bb0dbc6f9fb36637f94f9639e7a", + "size": 1751, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/b2d4a53532a59bb0dbc6f9fb36637f94f9639e7a" + }, + { + "path": "spec/cassettes/Octokit_Client_ServiceStatus/_github_status/returns_the_most_recent_status_messages.json", + "mode": "100644", + "type": "blob", + "sha": "e53ee5ff589d7f572499544d4406fe7071720a3d", + "size": 2348, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/e53ee5ff589d7f572499544d4406fe7071720a3d" + }, + { + "path": "spec/cassettes/Octokit_Client_ServiceStatus/_github_status_last_message", + "mode": "040000", + "type": "tree", + "sha": "9bf688618503371362d2fa2c325ff3b06383637f", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/9bf688618503371362d2fa2c325ff3b06383637f" + }, + { + "path": "spec/cassettes/Octokit_Client_ServiceStatus/_github_status_last_message/returns_the_last_human_message.json", + "mode": "100644", + "type": "blob", + "sha": "3a07301d3ec739de0f58f0f9b72dcfe31110e577", + "size": 1807, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3a07301d3ec739de0f58f0f9b72dcfe31110e577" + }, + { + "path": "spec/cassettes/Octokit_Client_Stats", + "mode": "040000", + "type": "tree", + "sha": "6c241b884c8f28ea029fe265b29aee7f10b520c5", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/6c241b884c8f28ea029fe265b29aee7f10b520c5" + }, + { + "path": "spec/cassettes/Octokit_Client_Stats/_code_frequency_stats", + "mode": "040000", + "type": "tree", + "sha": "76269633cca8574cfefcf06400e6fe405512b419", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/76269633cca8574cfefcf06400e6fe405512b419" + }, + { + "path": "spec/cassettes/Octokit_Client_Stats/_code_frequency_stats/returns_the_code_frequency_stats.json", + "mode": "100644", + "type": "blob", + "sha": "6aca425a91aa709474fbae913267e1b338808bcb", + "size": 2051, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/6aca425a91aa709474fbae913267e1b338808bcb" + }, + { + "path": "spec/cassettes/Octokit_Client_Stats/_commit_activity_stats", + "mode": "040000", + "type": "tree", + "sha": "192020e7e9e3e563c59555695742e27269846a6c", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/192020e7e9e3e563c59555695742e27269846a6c" + }, + { + "path": "spec/cassettes/Octokit_Client_Stats/_commit_activity_stats/returns_the_commit_activity_stats.json", + "mode": "100644", + "type": "blob", + "sha": "82c9589bca26571513310f544eed2a67cb35e28c", + "size": 4722, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/82c9589bca26571513310f544eed2a67cb35e28c" + }, + { + "path": "spec/cassettes/Octokit_Client_Stats/_contributors_stats", + "mode": "040000", + "type": "tree", + "sha": "acc2c6f781d45920a9540318451cb29076aeb9c3", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/acc2c6f781d45920a9540318451cb29076aeb9c3" + }, + { + "path": "spec/cassettes/Octokit_Client_Stats/_contributors_stats/returns_contributors_and_their_contribution_stats.json", + "mode": "100644", + "type": "blob", + "sha": "f553781ac98fa36be7a056eaeed14c70e63bc279", + "size": 5818, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/f553781ac98fa36be7a056eaeed14c70e63bc279" + }, + { + "path": "spec/cassettes/Octokit_Client_Stats/_participation_stats", + "mode": "040000", + "type": "tree", + "sha": "33ca337e52751e001b85b5dd294c08d22e814b36", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/33ca337e52751e001b85b5dd294c08d22e814b36" + }, + { + "path": "spec/cassettes/Octokit_Client_Stats/_participation_stats/returns_the_owner_and_contributor_participation_stats.json", + "mode": "100644", + "type": "blob", + "sha": "1f4419d8f6fd7950cad45a5826e78f22ca06f15c", + "size": 1881, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/1f4419d8f6fd7950cad45a5826e78f22ca06f15c" + }, + { + "path": "spec/cassettes/Octokit_Client_Stats/_punch_card_stats", + "mode": "040000", + "type": "tree", + "sha": "d504f13e5e7e6c7ea7ba383fa1910ec44f10bc58", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/d504f13e5e7e6c7ea7ba383fa1910ec44f10bc58" + }, + { + "path": "spec/cassettes/Octokit_Client_Stats/_punch_card_stats/returns_commit_count_by_hour_punch_card_stats.json", + "mode": "100644", + "type": "blob", + "sha": "5b2aa045d3e017fe2a30b5b673c425d81cd02239", + "size": 3091, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/5b2aa045d3e017fe2a30b5b673c425d81cd02239" + }, + { + "path": "spec/cassettes/Octokit_Client_Statuses", + "mode": "040000", + "type": "tree", + "sha": "e5d9d421982a74a7b38eedf7620e9df3f28786e3", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/e5d9d421982a74a7b38eedf7620e9df3f28786e3" + }, + { + "path": "spec/cassettes/Octokit_Client_Statuses/_combined_status", + "mode": "040000", + "type": "tree", + "sha": "8c6c6724a4f678ccaa51a17aa645f700b842e6ee", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/8c6c6724a4f678ccaa51a17aa645f700b842e6ee" + }, + { + "path": "spec/cassettes/Octokit_Client_Statuses/_combined_status/gets_a_combined_status.json", + "mode": "100644", + "type": "blob", + "sha": "4b951e4fb996e8dab830283c6bf3867813f560a6", + "size": 7378, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/4b951e4fb996e8dab830283c6bf3867813f560a6" + }, + { + "path": "spec/cassettes/Octokit_Client_Statuses/_statuses", + "mode": "040000", + "type": "tree", + "sha": "4139ccee8d86c182246f9e672be9ea025b9c89a8", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/4139ccee8d86c182246f9e672be9ea025b9c89a8" + }, + { + "path": "spec/cassettes/Octokit_Client_Statuses/_statuses/lists_commit_statuses.json", + "mode": "100644", + "type": "blob", + "sha": "96b7d816881b7f2cbb43db73e68c7c0546f73141", + "size": 4900, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/96b7d816881b7f2cbb43db73e68c7c0546f73141" + }, + { + "path": "spec/cassettes/Octokit_Client_Statuses/with_repository", + "mode": "040000", + "type": "tree", + "sha": "395a10031fa236b07d5a2cea6f91906f19d94a8e", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/395a10031fa236b07d5a2cea6f91906f19d94a8e" + }, + { + "path": "spec/cassettes/Octokit_Client_Statuses/with_repository/_create_status", + "mode": "040000", + "type": "tree", + "sha": "07173faa49fa816554ba8883fc42d2b4e7c40c99", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/07173faa49fa816554ba8883fc42d2b4e7c40c99" + }, + { + "path": "spec/cassettes/Octokit_Client_Statuses/with_repository/_create_status/creates_status.json", + "mode": "100644", + "type": "blob", + "sha": "d72830a3b69a7c2ec59541382672e13300f6824f", + "size": 9547, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/d72830a3b69a7c2ec59541382672e13300f6824f" + }, + { + "path": "spec/cassettes/Octokit_Client_Users", + "mode": "040000", + "type": "tree", + "sha": "5777aba8c38cff8fcf5c1dfdefa55140153c4f9a", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/5777aba8c38cff8fcf5c1dfdefa55140153c4f9a" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_add_email", + "mode": "040000", + "type": "tree", + "sha": "655cc1e2948f4b71d74164cbb5aec25082cf5b28", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/655cc1e2948f4b71d74164cbb5aec25082cf5b28" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_add_email/adds_an_email_address.json", + "mode": "100644", + "type": "blob", + "sha": "aee54bc197c227e734545a27eb19d16b37495942", + "size": 1555, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/aee54bc197c227e734545a27eb19d16b37495942" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_all_users", + "mode": "040000", + "type": "tree", + "sha": "a02109956b7cd60cdc1b2f1193eb6f36f5c37a53", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/a02109956b7cd60cdc1b2f1193eb6f36f5c37a53" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_all_users/returns_all_GitHub_users.json", + "mode": "100644", + "type": "blob", + "sha": "75ae316d7c976120440f9ed8c831bfd8b4900349", + "size": 137170, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/75ae316d7c976120440f9ed8c831bfd8b4900349" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_emails", + "mode": "040000", + "type": "tree", + "sha": "c6dbef330fa14f7442f93eeaa1bb6af722e9f5ee", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/c6dbef330fa14f7442f93eeaa1bb6af722e9f5ee" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_emails/returns_email_addresses.json", + "mode": "100644", + "type": "blob", + "sha": "a2b6df41d7f659bcd6cc78648dd5fcf70e0d9b11", + "size": 1556, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/a2b6df41d7f659bcd6cc78648dd5fcf70e0d9b11" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_follow", + "mode": "040000", + "type": "tree", + "sha": "6af5a017d4937a767e8cb9cb3577c439cfcbdfda", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/6af5a017d4937a767e8cb9cb3577c439cfcbdfda" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_follow/follows_a_user.json", + "mode": "100644", + "type": "blob", + "sha": "65d09a3180d77ffbe164d77867d955447fd6f41c", + "size": 1209, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/65d09a3180d77ffbe164d77867d955447fd6f41c" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_followers", + "mode": "040000", + "type": "tree", + "sha": "4059bf7947473afd9c6d629c21e68f30ea272548", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/4059bf7947473afd9c6d629c21e68f30ea272548" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_followers/returns_followers_for_a_user.json", + "mode": "100644", + "type": "blob", + "sha": "9ff4044ace8fd22537bcd42737eb53f5238b7f17", + "size": 42308, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/9ff4044ace8fd22537bcd42737eb53f5238b7f17" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_followers/returns_the_authenticated_user_s_followers.json", + "mode": "100644", + "type": "blob", + "sha": "38953eaa7c311be6cccc0001ae2899a5e0843c77", + "size": 6373, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/38953eaa7c311be6cccc0001ae2899a5e0843c77" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_following", + "mode": "040000", + "type": "tree", + "sha": "83d132420cd0213f65804834d1074e59da48af9b", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/83d132420cd0213f65804834d1074e59da48af9b" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_following/returns_following_for_a_user.json", + "mode": "100644", + "type": "blob", + "sha": "bf239fab7644a8bcd4990880a8c82323f5af3dac", + "size": 41803, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/bf239fab7644a8bcd4990880a8c82323f5af3dac" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_following/returns_the_authenticated_user_s_following.json", + "mode": "100644", + "type": "blob", + "sha": "8734014eec1be6cf8874af322b90a450bd556e02", + "size": 7725, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/8734014eec1be6cf8874af322b90a450bd556e02" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_follows_", + "mode": "040000", + "type": "tree", + "sha": "1f6023767cd5d6c85922cfcdbf7ceefdba76fe20", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/1f6023767cd5d6c85922cfcdbf7ceefdba76fe20" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_follows_/checks_if_given_user_is_following_target_user.json", + "mode": "100644", + "type": "blob", + "sha": "8eb8fa80ac27753ecd9cad552a4355fcd1650f88", + "size": 1243, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/8eb8fa80ac27753ecd9cad552a4355fcd1650f88" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_follows_/checks_if_the_authenticated_user_follows_another.json", + "mode": "100644", + "type": "blob", + "sha": "51fb02635757805a8cd936286b4706005cc440b9", + "size": 4754, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/51fb02635757805a8cd936286b4706005cc440b9" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_keys", + "mode": "040000", + "type": "tree", + "sha": "4cc6ea370b251f9b9f431ba005979850b86efc51", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/4cc6ea370b251f9b9f431ba005979850b86efc51" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_keys/returns_public_keys_for_the_authenticated_user.json", + "mode": "100644", + "type": "blob", + "sha": "06c8e139a223849c1b94d690e8a6246749838537", + "size": 2116, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/06c8e139a223849c1b94d690e8a6246749838537" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_remove_email", + "mode": "040000", + "type": "tree", + "sha": "a67b7c0662f6310074c90dd9be04600a1ed49f2b", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/a67b7c0662f6310074c90dd9be04600a1ed49f2b" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_remove_email/removes_an_email_address.json", + "mode": "100644", + "type": "blob", + "sha": "7e5798b00d4b03674cfd416ba29281014a09045d", + "size": 1248, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/7e5798b00d4b03674cfd416ba29281014a09045d" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_starred", + "mode": "040000", + "type": "tree", + "sha": "21e60d90872d9a8f9645d85bb88cc46ce81fc4a6", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/21e60d90872d9a8f9645d85bb88cc46ce81fc4a6" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_starred/authenticated", + "mode": "040000", + "type": "tree", + "sha": "98ef9b6edaa15a2ddbb1c49ba1ea556efa288ede", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/98ef9b6edaa15a2ddbb1c49ba1ea556efa288ede" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_starred/authenticated/gets_a_user_s_starred_repositories.json", + "mode": "100644", + "type": "blob", + "sha": "8eaec10121323cc3a377e1615b771758486db43f", + "size": 204732, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/8eaec10121323cc3a377e1615b771758486db43f" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_starred/authenticated/gets_the_authenticated_user_s_starred_repositories.json", + "mode": "100644", + "type": "blob", + "sha": "bf8fad64c30ba21be4dce210c35ef5721bfc4540", + "size": 207900, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/bf8fad64c30ba21be4dce210c35ef5721bfc4540" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_starred/not_authenticated", + "mode": "040000", + "type": "tree", + "sha": "2f487534bdb9552c7790e70072663cdc9c82653f", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/2f487534bdb9552c7790e70072663cdc9c82653f" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_starred/not_authenticated/gets_a_user_s_starred_repositories.json", + "mode": "100644", + "type": "blob", + "sha": "b76f26213a43e17aeb066c3b5cda34066b890724", + "size": 198538, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/b76f26213a43e17aeb066c3b5cda34066b890724" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_starred_", + "mode": "040000", + "type": "tree", + "sha": "3a230af4af696504a090a6d70e35c1f96f525f59", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/3a230af4af696504a090a6d70e35c1f96f525f59" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_starred_/checks_if_the_authenticated_user_has_starred_a_repository.json", + "mode": "100644", + "type": "blob", + "sha": "4036361c7edb1aa953d6f843dff72ef1e7a6a36a", + "size": 1316, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/4036361c7edb1aa953d6f843dff72ef1e7a6a36a" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_subscriptions", + "mode": "040000", + "type": "tree", + "sha": "745133948d2aeb2675b89b7e3cfddb474bfdcbef", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/745133948d2aeb2675b89b7e3cfddb474bfdcbef" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_subscriptions/authenticated", + "mode": "040000", + "type": "tree", + "sha": "fb713c68facd2bdea6f1b5c60475ec938b6f4134", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/fb713c68facd2bdea6f1b5c60475ec938b6f4134" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_subscriptions/authenticated/returns_the_repositories_a_user_watches_for_notifications.json", + "mode": "100644", + "type": "blob", + "sha": "2c417555715fa34bd57dc87032fd33051962844c", + "size": 203098, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/2c417555715fa34bd57dc87032fd33051962844c" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_subscriptions/authenticated/returns_the_repositories_the_authenticated_user_watches_for_notifications.json", + "mode": "100644", + "type": "blob", + "sha": "d72a9d711194151bf9316c4d71d3d3f27f8eb1d0", + "size": 191738, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/d72a9d711194151bf9316c4d71d3d3f27f8eb1d0" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_subscriptions/not_authenticated", + "mode": "040000", + "type": "tree", + "sha": "2b9902b6ec14f888190ae82d16328ebb7eab8780", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/2b9902b6ec14f888190ae82d16328ebb7eab8780" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_subscriptions/not_authenticated/returns_the_repositories_a_user_watches_for_notifications.json", + "mode": "100644", + "type": "blob", + "sha": "067fb2a971e7e8230cd177099547dbc9a3944fc9", + "size": 196906, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/067fb2a971e7e8230cd177099547dbc9a3944fc9" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_unfollow", + "mode": "040000", + "type": "tree", + "sha": "0a08499a0b3b19a6d1e491f6362d248a3eedc8a5", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/0a08499a0b3b19a6d1e491f6362d248a3eedc8a5" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_unfollow/unfollows_a_user.json", + "mode": "100644", + "type": "blob", + "sha": "55ae5811a7638e6c1903dc9e1aac9e1d23531fe2", + "size": 1212, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/55ae5811a7638e6c1903dc9e1aac9e1d23531fe2" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_update_user", + "mode": "040000", + "type": "tree", + "sha": "b7dae8aa2bf908ac9fc29a17923fde0981c7aedc", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/b7dae8aa2bf908ac9fc29a17923fde0981c7aedc" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_update_user/updates_a_user_profile.json", + "mode": "100644", + "type": "blob", + "sha": "558400851f069da225fb39316e8e2cea19115962", + "size": 3505, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/558400851f069da225fb39316e8e2cea19115962" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_user", + "mode": "040000", + "type": "tree", + "sha": "edc3b2a3bf0f32b20d59001c3eed0479e288d41b", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/edc3b2a3bf0f32b20d59001c3eed0479e288d41b" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_user/returns_a_user.json", + "mode": "100644", + "type": "blob", + "sha": "4f0f8b3208bd84e426e28b11fcf447b304a51701", + "size": 2997, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/4f0f8b3208bd84e426e28b11fcf447b304a51701" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_user/returns_the_authenticated_user.json", + "mode": "100644", + "type": "blob", + "sha": "ef627ab01d53fd4a3651f267ef96ccccb953cd31", + "size": 3513, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/ef627ab01d53fd4a3651f267ef96ccccb953cd31" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_user_keys", + "mode": "040000", + "type": "tree", + "sha": "558fa2c99d1853eee9f561bbe548a92d9930e6cc", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/558fa2c99d1853eee9f561bbe548a92d9930e6cc" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_user_keys/returns_public_keys_for_another_user.json", + "mode": "100644", + "type": "blob", + "sha": "f5b2734777bbc93906d7d2bb997671214b86390a", + "size": 1816, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/f5b2734777bbc93906d7d2bb997671214b86390a" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_validate_credentials", + "mode": "040000", + "type": "tree", + "sha": "80055f1b07cab85449aafa2c4ade8bc2313e62f5", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/80055f1b07cab85449aafa2c4ade8bc2313e62f5" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/_validate_credentials/validates_username_and_password.json", + "mode": "100644", + "type": "blob", + "sha": "e499f71980ff7efd62f6006f06900dc2abd4489d", + "size": 3380, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/e499f71980ff7efd62f6006f06900dc2abd4489d" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/methods_requiring_an_existing_public_key", + "mode": "040000", + "type": "tree", + "sha": "84c0efab1e21ebe31b7a7280850e89a1131fe91b", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/84c0efab1e21ebe31b7a7280850e89a1131fe91b" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/methods_requiring_an_existing_public_key/_add_key", + "mode": "040000", + "type": "tree", + "sha": "bbe2b9834753783ecccd08f6992a1a59c8b50eb9", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/bbe2b9834753783ecccd08f6992a1a59c8b50eb9" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/methods_requiring_an_existing_public_key/_add_key/adds_a_public_key.json", + "mode": "100644", + "type": "blob", + "sha": "9a3aa3115b2b2f9ece38493662ced57e42c1ee61", + "size": 3766, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/9a3aa3115b2b2f9ece38493662ced57e42c1ee61" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/methods_requiring_an_existing_public_key/_key", + "mode": "040000", + "type": "tree", + "sha": "2811c84d2bacf2d4867f0949b647fda122ebaa63", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/2811c84d2bacf2d4867f0949b647fda122ebaa63" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/methods_requiring_an_existing_public_key/_key/returns_a_public_key.json", + "mode": "100644", + "type": "blob", + "sha": "2d499703f32def06985bdc466ff492928931aa72", + "size": 5763, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/2d499703f32def06985bdc466ff492928931aa72" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/methods_requiring_an_existing_public_key/_remove_key", + "mode": "040000", + "type": "tree", + "sha": "a2984e88240a28b424217d6a1f0e5af35469b484", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/a2984e88240a28b424217d6a1f0e5af35469b484" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/methods_requiring_an_existing_public_key/_remove_key/removes_a_public_key.json", + "mode": "100644", + "type": "blob", + "sha": "b5254230cc5caa41d55543fe03fcae143601edfc", + "size": 4937, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/b5254230cc5caa41d55543fe03fcae143601edfc" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/methods_requiring_an_existing_public_key/_update_key", + "mode": "040000", + "type": "tree", + "sha": "0f69a24728c7e4ca44763a0d0268e88ce976c4ad", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/0f69a24728c7e4ca44763a0d0268e88ce976c4ad" + }, + { + "path": "spec/cassettes/Octokit_Client_Users/methods_requiring_an_existing_public_key/_update_key/updates_a_public_key.json", + "mode": "100644", + "type": "blob", + "sha": "c59fab13e762a0ce74cd99ddae3cba8ebe3d0005", + "size": 6407, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/c59fab13e762a0ce74cd99ddae3cba8ebe3d0005" + }, + { + "path": "spec/cassettes/delete_authorization.json", + "mode": "100644", + "type": "blob", + "sha": "450dd2fbb57c96e3afc9d256e3085c0a786733df", + "size": 2809, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/450dd2fbb57c96e3afc9d256e3085c0a786733df" + }, + { + "path": "spec/cassettes/rate_limit.json", + "mode": "100644", + "type": "blob", + "sha": "d48ad652c8168076a950ddb9eb0a92fda0d6233f", + "size": 1305, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/d48ad652c8168076a950ddb9eb0a92fda0d6233f" + }, + { + "path": "spec/cassettes/root.json", + "mode": "100644", + "type": "blob", + "sha": "17d417339923fe27c653b3dbd31a2bd6e20bbe1f", + "size": 3422, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/17d417339923fe27c653b3dbd31a2bd6e20bbe1f" + }, + { + "path": "spec/fixtures", + "mode": "040000", + "type": "tree", + "sha": "8c069ec5989dca621bb56c1a7b4644e4849c4352", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/8c069ec5989dca621bb56c1a7b4644e4849c4352" + }, + { + "path": "spec/fixtures/.netrc", + "mode": "100644", + "type": "blob", + "sha": "5c28190aacea74d8311d0ad3bd7551b5af272bf9", + "size": 111, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/5c28190aacea74d8311d0ad3bd7551b5af272bf9" + }, + { + "path": "spec/fixtures/large_file.txt", + "mode": "100644", + "type": "blob", + "sha": "bf4148939a6758c43288f61c1e9a0a8fe0fbac1f", + "size": 15996, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/bf4148939a6758c43288f61c1e9a0a8fe0fbac1f" + }, + { + "path": "spec/fixtures/new_file.txt", + "mode": "100644", + "type": "blob", + "sha": "4d149b826e7305659006eb64cfecd3be68d0f2f0", + "size": 20, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/4d149b826e7305659006eb64cfecd3be68d0f2f0" + }, + { + "path": "spec/fixtures/updated_file.txt", + "mode": "100644", + "type": "blob", + "sha": "46e50d3f73c39aeb86295d85e38b0364a0f0a1b6", + "size": 21, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/46e50d3f73c39aeb86295d85e38b0364a0f0a1b6" + }, + { + "path": "spec/fixtures/upload.png", + "mode": "100644", + "type": "blob", + "sha": "0192b0ccc22981f772e75802fa0e02ca09a64b63", + "size": 43425, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/0192b0ccc22981f772e75802fa0e02ca09a64b63" + }, + { + "path": "spec/fixtures/user.json", + "mode": "100644", + "type": "blob", + "sha": "b200d7fdab1729f23b53e84164b69df050968397", + "size": 1371, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/b200d7fdab1729f23b53e84164b69df050968397" + }, + { + "path": "spec/fixtures/web_flow_token.json", + "mode": "100644", + "type": "blob", + "sha": "8e3ceb60726814b665670074bc73d0dc33a065f9", + "size": 95, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/8e3ceb60726814b665670074bc73d0dc33a065f9" + }, + { + "path": "spec/helper.rb", + "mode": "100644", + "type": "blob", + "sha": "f9a1f2e3dd8781ed7deb60995dc8fc800568fa02", + "size": 4824, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/f9a1f2e3dd8781ed7deb60995dc8fc800568fa02" + }, + { + "path": "spec/octokit", + "mode": "040000", + "type": "tree", + "sha": "10347fd8fac4cf27b0b5128b5ae83dfd9172894e", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/10347fd8fac4cf27b0b5128b5ae83dfd9172894e" + }, + { + "path": "spec/octokit/client", + "mode": "040000", + "type": "tree", + "sha": "e633eb690e0b7e40e7a7c338baa04c3743820e7d", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/e633eb690e0b7e40e7a7c338baa04c3743820e7d" + }, + { + "path": "spec/octokit/client/authorizations_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "8b5945513ff083d4f340bf2658fcb85fada3b896", + "size": 7679, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/8b5945513ff083d4f340bf2658fcb85fada3b896" + }, + { + "path": "spec/octokit/client/commit_comments_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "6699f9c0ceadd63bf33817196bcbf63e7ddfbbd6", + "size": 2645, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/6699f9c0ceadd63bf33817196bcbf63e7ddfbbd6" + }, + { + "path": "spec/octokit/client/commits_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "ba5f50648d87669ffc3944edf10424bce87fdb24", + "size": 7181, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/ba5f50648d87669ffc3944edf10424bce87fdb24" + }, + { + "path": "spec/octokit/client/contents_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "22b8a7c90afab80efa644a833105e6f19ec1f6c0", + "size": 6566, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/22b8a7c90afab80efa644a833105e6f19ec1f6c0" + }, + { + "path": "spec/octokit/client/deployments_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "7944b90e90414a87181c0fdd5994cd4f01581787", + "size": 2469, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/7944b90e90414a87181c0fdd5994cd4f01581787" + }, + { + "path": "spec/octokit/client/downloads_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "6138e7819a538af0500444865fb7929d098def3d", + "size": 1019, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/6138e7819a538af0500444865fb7929d098def3d" + }, + { + "path": "spec/octokit/client/emojis_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "3fdc5b938bcb87afe3063f983712bf160d24dd3b", + "size": 255, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/3fdc5b938bcb87afe3063f983712bf160d24dd3b" + }, + { + "path": "spec/octokit/client/events_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "211b7483050dd5b83334a6ce86600989c6add510", + "size": 3919, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/211b7483050dd5b83334a6ce86600989c6add510" + }, + { + "path": "spec/octokit/client/feeds_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "04517845359e0bd687389d07bae32c93f2102583", + "size": 1362, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/04517845359e0bd687389d07bae32c93f2102583" + }, + { + "path": "spec/octokit/client/gists_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "cac62884fcc80adfcf9d9e48a41715081f16e752", + "size": 5703, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/cac62884fcc80adfcf9d9e48a41715081f16e752" + }, + { + "path": "spec/octokit/client/gitignore_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "9caabb618e5fa80c10164e3b4cb7455f22003875", + "size": 729, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/9caabb618e5fa80c10164e3b4cb7455f22003875" + }, + { + "path": "spec/octokit/client/hooks_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "6cf03a1833acda914b8303cc424a702a2e691eeb", + "size": 305, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/6cf03a1833acda914b8303cc424a702a2e691eeb" + }, + { + "path": "spec/octokit/client/issues_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "76f673dbb66bc0cb0add4d5c875ad6414f3f4309", + "size": 6693, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/76f673dbb66bc0cb0add4d5c875ad6414f3f4309" + }, + { + "path": "spec/octokit/client/labels_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "d3580fce6390294bec0b53a682eba49f5fb3df89", + "size": 4145, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/d3580fce6390294bec0b53a682eba49f5fb3df89" + }, + { + "path": "spec/octokit/client/legacy_search_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "b48ef015550271b8c38d4079b94b6327b69ab8e0", + "size": 1383, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/b48ef015550271b8c38d4079b94b6327b69ab8e0" + }, + { + "path": "spec/octokit/client/markdown_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "c166110f52007a619759787edfddf0d30fa5be51", + "size": 477, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/c166110f52007a619759787edfddf0d30fa5be51" + }, + { + "path": "spec/octokit/client/meta_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "4bfff5fbd1964ceaea8876498a6e828b7415ac7e", + "size": 302, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/4bfff5fbd1964ceaea8876498a6e828b7415ac7e" + }, + { + "path": "spec/octokit/client/milestones_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "6de717e99ffd169957cd15f22c68647220f3db83", + "size": 1854, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/6de717e99ffd169957cd15f22c68647220f3db83" + }, + { + "path": "spec/octokit/client/notifications_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "16f2267276ffef59ce78a794aa813e06853b1375", + "size": 3127, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/16f2267276ffef59ce78a794aa813e06853b1375" + }, + { + "path": "spec/octokit/client/objects_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "b2dbfa9ea88441859dd2896a6be25c1404bd068d", + "size": 2622, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/b2dbfa9ea88441859dd2896a6be25c1404bd068d" + }, + { + "path": "spec/octokit/client/organizations_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "d0d7cd1ab36514ba498ea429c36d2c1726ce26c5", + "size": 9884, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/d0d7cd1ab36514ba498ea429c36d2c1726ce26c5" + }, + { + "path": "spec/octokit/client/pages_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "7c579efd7bde62cbe4895c65a12b9c3c0177a058", + "size": 1187, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/7c579efd7bde62cbe4895c65a12b9c3c0177a058" + }, + { + "path": "spec/octokit/client/pub_sub_hubbub_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "6acad407210e2eb0bb5cefc77ed54e4458fcdd94", + "size": 4137, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/6acad407210e2eb0bb5cefc77ed54e4458fcdd94" + }, + { + "path": "spec/octokit/client/pull_requests_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "ca4010e906ce9d9220d3496c24c6f3098df5e2c5", + "size": 7530, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/ca4010e906ce9d9220d3496c24c6f3098df5e2c5" + }, + { + "path": "spec/octokit/client/rate_limit_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "edaaddef28e7c3b9d4530c6a23d64136b497632e", + "size": 1285, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/edaaddef28e7c3b9d4530c6a23d64136b497632e" + }, + { + "path": "spec/octokit/client/refs_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "a88d5a3564b91a5648f8ca99c223dfbec11cdf5b", + "size": 2550, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/a88d5a3564b91a5648f8ca99c223dfbec11cdf5b" + }, + { + "path": "spec/octokit/client/releases_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "f2a7aae5532f69dcf83022ad62b5416d72e5b6a9", + "size": 4585, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/f2a7aae5532f69dcf83022ad62b5416d72e5b6a9" + }, + { + "path": "spec/octokit/client/repositories_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "90fc943ab4395bb84d949fb91e1a21b1de88ca62", + "size": 15262, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/90fc943ab4395bb84d949fb91e1a21b1de88ca62" + }, + { + "path": "spec/octokit/client/say_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "9ecbacacd11e54dfb6a4ca7a942caf719b7295fc", + "size": 568, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/9ecbacacd11e54dfb6a4ca7a942caf719b7295fc" + }, + { + "path": "spec/octokit/client/search_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "9b2298a19cfc2264beb2efc3a1fa1378a7b30c7a", + "size": 2207, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/9b2298a19cfc2264beb2efc3a1fa1378a7b30c7a" + }, + { + "path": "spec/octokit/client/service_status_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "2409bece9098ce2609df84bc89414f790dcb00de", + "size": 1224, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/2409bece9098ce2609df84bc89414f790dcb00de" + }, + { + "path": "spec/octokit/client/stats_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "296eec403b2e9c93ae4eac275e6f54487eea099e", + "size": 3725, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/296eec403b2e9c93ae4eac275e6f54487eea099e" + }, + { + "path": "spec/octokit/client/statuses_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "f3ba25dc9ffddab1239d1bee804cd186c0f518c3", + "size": 1415, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/f3ba25dc9ffddab1239d1bee804cd186c0f518c3" + }, + { + "path": "spec/octokit/client/users_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "7377d695f1b3b2fed25225939867c10ebaf4ae2d", + "size": 8511, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/7377d695f1b3b2fed25225939867c10ebaf4ae2d" + }, + { + "path": "spec/octokit/client_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "f8a23daf28884f0c7c874d26898b4878397cb23b", + "size": 23621, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/f8a23daf28884f0c7c874d26898b4878397cb23b" + }, + { + "path": "spec/octokit/gist_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "9ff85ce7d544693bd69999550d03b343b76ad34a", + "size": 992, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/9ff85ce7d544693bd69999550d03b343b76ad34a" + }, + { + "path": "spec/octokit/organization_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "266e971b0619af0464e1075f6cdf959785bdf3ca", + "size": 494, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/266e971b0619af0464e1075f6cdf959785bdf3ca" + }, + { + "path": "spec/octokit/rate_limit_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "2709ac70ece70df60cad618eb6bad09372fd5892", + "size": 1208, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/2709ac70ece70df60cad618eb6bad09372fd5892" + }, + { + "path": "spec/octokit/repository_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "a7c1906964cdea5d092b15ecdbea1b709d9916d1", + "size": 2576, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/a7c1906964cdea5d092b15ecdbea1b709d9916d1" + }, + { + "path": "spec/octokit/user_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "22fd2c003e44dced736cfd2ee1729070f82661ff", + "size": 612, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/22fd2c003e44dced736cfd2ee1729070f82661ff" + }, + { + "path": "spec/octokit_spec.rb", + "mode": "100644", + "type": "blob", + "sha": "47e1fa2aa6c6de08afca48343502353ed6c82bde", + "size": 1187, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/47e1fa2aa6c6de08afca48343502353ed6c82bde" + }, + { + "path": "yard", + "mode": "040000", + "type": "tree", + "sha": "c2dcfa03b7f9e8a1942d50bc4dfc0a3adaa81a1e", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/c2dcfa03b7f9e8a1942d50bc4dfc0a3adaa81a1e" + }, + { + "path": "yard/default", + "mode": "040000", + "type": "tree", + "sha": "aad23c4c2a673629ec381f4e721b108c6163e372", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/aad23c4c2a673629ec381f4e721b108c6163e372" + }, + { + "path": "yard/default/fulldoc", + "mode": "040000", + "type": "tree", + "sha": "8987d31aa6d47bb9ca65937a6dc353273f354f1f", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/8987d31aa6d47bb9ca65937a6dc353273f354f1f" + }, + { + "path": "yard/default/fulldoc/html", + "mode": "040000", + "type": "tree", + "sha": "37bc98a1640b5528561ef500c60cd39a8161a505", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/37bc98a1640b5528561ef500c60cd39a8161a505" + }, + { + "path": "yard/default/fulldoc/html/css", + "mode": "040000", + "type": "tree", + "sha": "15214c90b3f2034a8525d4c3140877453d3e3bf6", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/15214c90b3f2034a8525d4c3140877453d3e3bf6" + }, + { + "path": "yard/default/fulldoc/html/css/common.css", + "mode": "100644", + "type": "blob", + "sha": "7f22cbbe26b75e56f9d119a9a3fd46d305215a11", + "size": 38, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/7f22cbbe26b75e56f9d119a9a3fd46d305215a11" + }, + { + "path": "yard/default/layout", + "mode": "040000", + "type": "tree", + "sha": "02aa06915a21467db8a5bbdcdd7b1075f87c7cfc", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/02aa06915a21467db8a5bbdcdd7b1075f87c7cfc" + }, + { + "path": "yard/default/layout/html", + "mode": "040000", + "type": "tree", + "sha": "f61f9e5e3a56653a47ef9f36b62a4fe120f729cf", + "url": "https://api.github.com/repos/octokit/octokit.rb/git/trees/f61f9e5e3a56653a47ef9f36b62a4fe120f729cf" + }, + { + "path": "yard/default/layout/html/setup.rb", + "mode": "100644", + "type": "blob", + "sha": "8aecfc319cd2636eecbe9ab0e3d47385ded68315", + "size": 636, + "url": "https://api.github.com/repos/octokit/octokit.rb/git/blobs/8aecfc319cd2636eecbe9ab0e3d47385ded68315" + } + ], + "truncated": false +} diff --git a/flint.go b/flint.go index 836549a..261abd3 100644 --- a/flint.go +++ b/flint.go @@ -4,79 +4,11 @@ import ( "fmt" "os" - "github.com/codegangsta/cli" - "github.com/fatih/color" "github.com/pengwynn/flint/flint" ) func main() { - app := cli.NewApp() - app.Name = "flint" - app.Usage = "Check a project for common sources of contributor friction" - app.Version = "0.0.3" - app.Flags = []cli.Flag{ - cli.BoolFlag{"skip-readme", "skip check for README", ""}, - cli.BoolFlag{"skip-contributing", "skip check for contributing guide", ""}, - cli.BoolFlag{"skip-license", "skip check for license", ""}, - cli.BoolFlag{"skip-bootstrap", "skip check for bootstrap script", ""}, - cli.BoolFlag{"skip-test", "skip check for test script", ""}, - cli.BoolFlag{"skip-scripts", "skip check for all scripts", ""}, - cli.BoolFlag{"no-color", "skip coloring the terminal output", ""}, - } - app.Action = func(c *cli.Context) { - path, _ := os.Getwd() - if len(c.Args()) > 0 { - path = c.Args()[0] - } - linter := &flint.Lint{Path: path} - - if !c.Bool("skip-readme") { - linter.CheckReadme() - } - if !c.Bool("skip-contributing") { - linter.CheckContributing() - } - if !c.Bool("skip-license") { - linter.CheckLicense() - } - if !c.Bool("skip-scripts") { - if !c.Bool("skip-bootstrap") { - linter.CheckBootstrap() - } - if !c.Bool("skip-test") { - linter.CheckTest() - } - } - - if len(linter.Errors) > 0 { - for _, element := range linter.Errors { - if !c.Bool("no-color") { // if not skipping output color - if element.Level == 0 { // if [FIXME] - color.White(element.Message) - } else { // if [ERROR] - color.Yellow(element.Message) - } - } else { - fmt.Println(element.Message) - } - } - level := linter.Severity() - if level > 0 { - if !c.Bool("no-color") { - color.Red("[CRITICAL] Some critical problems found. Please fix right away!") - } else { - fmt.Println("[CRITICAL] Some critical problems found. Please fix right away!") - } - } - os.Exit(level) - } else { - if !c.Bool("no-color") { - color.Green("[OK] All is well!") - } else { - fmt.Println("[OK] All is well!") - } - } - } + app := flint.NewApp() if err := app.Run(os.Args); err != nil { fmt.Println(err) diff --git a/flint/app.go b/flint/app.go new file mode 100644 index 0000000..a9bb414 --- /dev/null +++ b/flint/app.go @@ -0,0 +1,111 @@ +package flint + +import ( + "github.com/codegangsta/cli" + "github.com/octokit/go-octokit/octokit" + + "fmt" + "os" +) + +func NewApp() *cli.App { + app := cli.NewApp() + app.Name = "flint" + app.Usage = "Check a project for common sources of contributor friction" + app.Version = "0.0.4" + app.Flags = []cli.Flag{ + cli.BoolFlag{"skip-readme", "skip check for README", ""}, + cli.BoolFlag{"skip-contributing", "skip check for contributing guide", ""}, + cli.BoolFlag{"skip-license", "skip check for license", ""}, + cli.BoolFlag{"skip-bootstrap", "skip check for bootstrap script", ""}, + cli.BoolFlag{"skip-test-script", "skip check for test script", ""}, + cli.BoolFlag{"skip-scripts", "skip check for all scripts", ""}, + cli.BoolFlag{"no-color", "skip coloring the terminal output", ""}, + cli.StringFlag{ + Name: "github, g", + Value: "", + Usage: "GitHub repository as owner/repo", + }, + cli.StringFlag{ + Name: "token, t", + Value: "", + EnvVar: "FLINT_TOKEN", + Usage: "GitHub API access token", + }, + } + app.Action = func(c *cli.Context) { + run(c) + } + + return app +} + +type runFunc func(*cli.Context) + +var run = func(c *cli.Context) { + project := newProject(c) + flags := newFlagsFromContext(c) + linter := &Linter{} + summary, err := linter.Run(project, flags) + if err != nil { + fmt.Println(err) + os.Exit(1) + return + } + if summary != nil { + summary.Print(os.Stdout, !c.Bool("no-color")) + os.Exit(summary.Severity()) + } +} + +func newProject(c *cli.Context) Project { + github := c.String("github") + if len(github) > 0 { + project := &RemoteProject{FullName: github} + fetcher := newGitHubFetcher(c) + err := project.Fetch(fetcher) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + + return project + } else { + path, _ := os.Getwd() + if len(c.Args()) > 0 { + path = c.Args()[0] + } + return &LocalProject{Path: path} + } +} + +func newFlagsFromContext(c *cli.Context) *Flags { + runBootstrap := !c.Bool("skip-bootstrap") + runTestScript := !c.Bool("skip-test-script") + if c.Bool("skip-scripts") { + runBootstrap = false + runTestScript = false + } + + flags := &Flags{ + RunReadme: !c.Bool("skip-readme"), + RunContributing: !c.Bool("skip-contributing"), + RunLicense: !c.Bool("skip-license"), + RunBootstrap: runBootstrap, + RunTestScript: runTestScript, + } + return flags +} + +var newGitHubFetcher = func(c *cli.Context) RemoteRepositoryFetcher { + var client *octokit.Client + + token := c.String("token") + if len(token) > 0 { + client = octokit.NewClient(octokit.TokenAuth{AccessToken: token}) + } else { + client = octokit.NewClient(nil) + } + + return &GitHubFetcher{client} +} diff --git a/flint/app_test.go b/flint/app_test.go new file mode 100644 index 0000000..64c658d --- /dev/null +++ b/flint/app_test.go @@ -0,0 +1,95 @@ +package flint + +import ( + "github.com/codegangsta/cli" + "github.com/stretchr/testify/assert" + "testing" +) + +var _run runFunc + +func TestNewApp(t *testing.T) { + app := NewApp() + assert.Equal(t, "flint", app.Name) +} + +func Test_newProject_BuildsLocalProjectByDefault(t *testing.T) { + setupAppTest() + defer tearDownAppTest() + + var project Project + run = func(c *cli.Context) { + project = newProject(c) + } + app := NewApp() + app.Run([]string{""}) + assert.IsType(t, &LocalProject{}, project) +} + +func Test_newProject_BuildsRemoteProjectWithGitHubFlag(t *testing.T) { + setupAppTest() + defer tearDownAppTest() + + var project Project + run = func(c *cli.Context) { + project = newProject(c) + } + app := NewApp() + app.Run([]string{"", "--github", "pengwynn/flint"}) + assert.IsType(t, &RemoteProject{}, project) +} + +func Test_newFlagsFromContext_TranslatesBoolFlags(t *testing.T) { + setupAppTest() + defer tearDownAppTest() + + var flags *Flags + run = func(c *cli.Context) { + flags = newFlagsFromContext(c) + } + app := NewApp() + app.Run([]string{""}) + + assert.True(t, flags.RunReadme) + assert.True(t, flags.RunContributing) + assert.True(t, flags.RunLicense) + assert.True(t, flags.RunBootstrap) + assert.True(t, flags.RunTestScript) + + app.Run([]string{"", "--skip-readme", "--skip-license", "--skip-test-script"}) + + assert.False(t, flags.RunReadme) + assert.True(t, flags.RunContributing) + assert.False(t, flags.RunLicense) + assert.True(t, flags.RunBootstrap) + assert.False(t, flags.RunTestScript) + + app.Run([]string{"", "--skip-scripts"}) + + assert.True(t, flags.RunReadme) + assert.True(t, flags.RunContributing) + assert.True(t, flags.RunLicense) + assert.False(t, flags.RunBootstrap) + assert.False(t, flags.RunTestScript) +} + +type fakeGitHubFetcher struct{} + +func (f *fakeGitHubFetcher) FetchRepository(nwo string) (repo *Repository, err error) { + return &Repository{}, nil +} + +func (f *fakeGitHubFetcher) FetchTree(nwo string) ([]string, error) { + return []string{}, nil +} + +func setupAppTest() { + _run = run + newGitHubFetcher = func(c *cli.Context) RemoteRepositoryFetcher { + return &fakeGitHubFetcher{} + } +} + +func tearDownAppTest() { + run = _run +} diff --git a/flint/errors.go b/flint/errors.go new file mode 100644 index 0000000..27d022d --- /dev/null +++ b/flint/errors.go @@ -0,0 +1,53 @@ +package flint + +type LintError struct { + Level int + Message string + Fixme string +} + +func (e *LintError) FormattedMessage() string { + label := "" + if e.Level == 1 { + label = "[WARNING]" + } + if e.Level == 2 { + label = "[ERROR]" + } + + return label + " " + e.Message +} + +func (e *LintError) FormattedFixme() string { + return "[FIXME] " + e.Fixme +} + +var ReadmeNotFound = &LintError{ + 2, + "README not found", + "Every project begins with a README. http://bit.ly/1dqUYQF", +} + +var ContributingNotFound = &LintError{ + 2, + "CONTRIBUTING guide not found", + "Add a guide for potential contributors. http://git.io/z-TiGg", +} + +var LicenseNotFound = &LintError{ + 2, + "LICENSE not found", + "Add a license to protect yourself and your users. http://choosealicense.com/", +} + +var BootstrapNotFound = &LintError{ + 1, + "Bootstrap script not found", + "A bootstrap script makes setup a snap. http://bit.ly/JZjVL6", +} + +var TestScriptNotFound = &LintError{ + 1, + "Test script not found", + "Make it easy to run the test suite regardless of project type. http://bit.ly/JZjVL6", +} diff --git a/flint/flint.go b/flint/flint.go deleted file mode 100644 index b640c50..0000000 --- a/flint/flint.go +++ /dev/null @@ -1,75 +0,0 @@ -package flint - -import ( - "path/filepath" -) - -type lintError struct { - Level int - Message string -} - -type Lint struct { - Path string - Errors []*lintError - status int -} - -func (l *Lint) findFile(pattern string) bool { - search := filepath.Join(l.Path, pattern) - matches, _ := filepath.Glob(search) - return len(matches) > 0 -} - -func (l *Lint) Severity() int { - severity := 0 - for _, e := range l.Errors { - if e.Level > severity { - severity = e.Level - } - } - - return severity -} - -func (l *Lint) Check(file, message, fixme string) { - if !l.findFile(file) { - l.Errors = append(l.Errors, &lintError{2, message}) - l.Errors = append(l.Errors, &lintError{0, fixme}) - } -} - -func (l *Lint) CheckReadme() { - l.Check( - "README*", - "[ERROR] README not found", - "[FIXME] Every project begins with a README. http://bit.ly/1dqUYQF") -} - -func (l *Lint) CheckContributing() { - l.Check( - "CONTRIBUTING*", - "[ERROR] CONTRIBUTING guide not found", - "[FIXME] Add a CONTRIBUTING guide for potential contributors. http://git.io/z-TiGg") -} - -func (l *Lint) CheckLicense() { - l.Check( - "LICENSE*", - "[ERROR] LICENSE not found", - "[FIXME] Add a license to protect yourself and your users. http://choosealicense.com/") -} - -func (l *Lint) CheckBootstrap() { - l.Check( - "script/bootstrap", - "[ERROR] Bootstrap script not found", - "[FIXME] A bootstrap script makes setup a snap. http://bit.ly/JZjVL6") -} - -func (l *Lint) CheckTest() { - l.Check( - "script/test", - "[ERROR] Test script not found", - "[FIXME] Make it easy to run the test suite regardless of project type. http://bit.ly/JZjVL6") -} diff --git a/flint/flint_test.go b/flint/flint_test.go deleted file mode 100644 index c7edaea..0000000 --- a/flint/flint_test.go +++ /dev/null @@ -1,197 +0,0 @@ -package flint - -import ( - "fmt" - "github.com/bmizerany/assert" - "io/ioutil" - "os" - "path/filepath" - "testing" -) - -type scenarios struct { - path string // fixture path to write - n int // Lint.Errors count -} - -var readmeTests = []scenarios{ - {"", 2}, - {"README", 0}, - {"README.md", 0}, - {"README.rst", 0}, - {"docs/README.rst", 2}, - {"docs/README.md", 2}, -} - -func TestCheckReadme(t *testing.T) { - for _, tt := range readmeTests { - setup := Setup() - defer setup.Teardown() - - if len(tt.path) > 0 { - setup.WriteFile(tt.path, "The README") - } - - lint := &Lint{Path: setup.Path} - lint.CheckReadme() - - msg := fmt.Sprintf("Fixture: %s, Errors: %d", tt.path, tt.n) - assert.Equal(t, len(lint.Errors), tt.n, msg) - if tt.n > 0 { - assert.Equal(t, "[ERROR] README not found", lint.Errors[0].Message) - assert.Equal(t, "[FIXME] Every project begins with a README. http://bit.ly/1dqUYQF", lint.Errors[1].Message) - } - } -} - -var contributingTests = []scenarios{ - {"", 2}, - {"CONTRIBUTING", 0}, - {"CONTRIBUTING.md", 0}, - {"CONTRIBUTING.rst", 0}, - {"docs/CONTRIBUTING.rst", 2}, - {"docs/CONTRIBUTING.md", 2}, -} - -func TestCheckContributing(t *testing.T) { - for _, tt := range contributingTests { - setup := Setup() - defer setup.Teardown() - - if len(tt.path) > 0 { - setup.WriteFile(tt.path, "Patches welcome") - } - - lint := &Lint{Path: setup.Path} - lint.CheckContributing() - - msg := fmt.Sprintf("Fixture: %s, Errors: %d", tt.path, tt.n) - assert.Equal(t, len(lint.Errors), tt.n, msg) - if tt.n > 0 { - assert.Equal(t, "[ERROR] CONTRIBUTING guide not found", lint.Errors[0].Message) - assert.Equal(t, "[FIXME] Add a CONTRIBUTING guide for potential contributors. http://git.io/z-TiGg", lint.Errors[1].Message) - } - } -} - -var licenseTests = []scenarios{ - {"", 2}, - {"LICENSE", 0}, - {"LICENSE.md", 0}, - {"LICENSE.rst", 0}, - {"docs/LICENSE.rst", 2}, - {"docs/LICENSE.md", 2}, -} - -func TestCheckLicense(t *testing.T) { - for _, tt := range licenseTests { - setup := Setup() - defer setup.Teardown() - - if len(tt.path) > 0 { - setup.WriteFile(tt.path, "MIT") - } - - lint := &Lint{Path: setup.Path} - lint.CheckLicense() - - msg := fmt.Sprintf("Fixture: %s, Errors: %d", tt.path, tt.n) - assert.Equal(t, len(lint.Errors), tt.n, msg) - if tt.n > 0 { - assert.Equal(t, "[ERROR] LICENSE not found", lint.Errors[0].Message) - assert.Equal(t, "[FIXME] Add a license to protect yourself and your users. http://choosealicense.com/", lint.Errors[1].Message) - } - } -} - -var bootstrapScriptTests = []scenarios{ - {"", 2}, - {"script/bootstrap", 0}, - {"util/script/bootstrap", 2}, -} - -func TestCheckBootstrapScript(t *testing.T) { - for _, tt := range bootstrapScriptTests { - setup := Setup() - defer setup.Teardown() - - if len(tt.path) > 0 { - setup.WriteFile(tt.path, "MIT") - } - - lint := &Lint{Path: setup.Path} - lint.CheckBootstrap() - - msg := fmt.Sprintf("Fixture: %s, Errors: %d", tt.path, tt.n) - assert.Equal(t, len(lint.Errors), tt.n, msg) - if tt.n > 0 { - assert.Equal(t, "[ERROR] Bootstrap script not found", lint.Errors[0].Message) - assert.Equal(t, "[FIXME] A bootstrap script makes setup a snap. http://bit.ly/JZjVL6", lint.Errors[1].Message) - } - } -} - -var testScriptTests = []scenarios{ - {"", 2}, - {"script/test", 0}, - {"util/script/test", 2}, -} - -func TestCheckTestScript(t *testing.T) { - for _, tt := range testScriptTests { - setup := Setup() - defer setup.Teardown() - - if len(tt.path) > 0 { - setup.WriteFile(tt.path, "MIT") - } - - lint := &Lint{Path: setup.Path} - lint.CheckTest() - - msg := fmt.Sprintf("Fixture: %s, Errors: %d", tt.path, tt.n) - assert.Equal(t, len(lint.Errors), tt.n, msg) - if tt.n > 0 { - assert.Equal(t, "[ERROR] Test script not found", lint.Errors[0].Message) - assert.Equal(t, "[FIXME] Make it easy to run the test suite regardless of project type. http://bit.ly/JZjVL6", lint.Errors[1].Message) - } - } -} - -func TestSeverity(t *testing.T) { - lint := &Lint{} - lint.Errors = append(lint.Errors, &lintError{2, "[ERROR] README not found"}) - assert.Equal(t, 2, lint.Severity()) -} - -func check(err error) { - if err != nil { - panic(err) - } -} - -type SetupResult struct{ Path string } - -func (s *SetupResult) Cleanup() { - os.RemoveAll(s.Path) -} - -func (s *SetupResult) WriteFile(path string, content string) { - bytes := []byte(content) - dest := filepath.Join(s.Path, path) - os.MkdirAll(filepath.Dir(dest), 0777) - err := ioutil.WriteFile(dest, bytes, 0777) - check(err) -} - -func (s *SetupResult) Teardown() { - s.Cleanup() -} - -func Setup() *SetupResult { - fixturePath := filepath.Join("..", "tmp", "test-project") - result := &SetupResult{Path: fixturePath} - result.Cleanup() // Cleanup after previous failures - os.MkdirAll(result.Path, 0777) - return result -} diff --git a/flint/github_fetcher.go b/flint/github_fetcher.go new file mode 100644 index 0000000..3c7d7dc --- /dev/null +++ b/flint/github_fetcher.go @@ -0,0 +1,83 @@ +package flint + +import ( + "errors" + "fmt" + "github.com/octokit/go-octokit/octokit" + "strings" +) + +type GitHubFetcher struct { + *octokit.Client +} + +func (g *GitHubFetcher) FetchRepository(nwo string) (repo *Repository, err error) { + if g.Client == nil { + return nil, errors.New("GitHub client required") + } + + owner, name, err := g.ParseFullName(nwo) + if err != nil { + return nil, err + } + url, err := octokit.RepositoryURL.Expand(octokit.M{"owner": owner, "repo": name}) + if err != nil { + return nil, err + } + info, result := g.Repositories(url).One() + if result.HasError() { + return nil, result.Err + } + + repo = &Repository{info.Description, info.Homepage} + + return +} + +func (g *GitHubFetcher) FetchTree(nwo string) (paths []string, err error) { + if g.Client == nil { + return nil, errors.New("GitHub client required") + } + + owner, name, err := g.ParseFullName(nwo) + if err != nil { + return nil, err + } + url, err := octokit.GitTreesURL.Expand(octokit.M{ + "owner": owner, + "repo": name, + "sha": "master", + "recursive": 1, + }) + if err != nil { + return nil, err + } + tree, result := g.GitTrees(url).One() + if result.HasError() { + return nil, result.Err + } + + for _, entry := range tree.Tree { + paths = append(paths, entry.Path) + } + + return +} + +func (g *GitHubFetcher) ParseFullName(nwo string) (owner, name string, err error) { + parts := strings.Split(nwo, "/") + if len(parts) != 2 { + err = fmt.Errorf("Invalid GitHub repository: %s", nwo) + return + } + owner = parts[0] + name = parts[1] + + return +} + +func NewGitHubFetcherWithToken(token string) *GitHubFetcher { + client := octokit.NewClient(&octokit.TokenAuth{AccessToken: token}) + + return &GitHubFetcher{&*client} +} diff --git a/flint/github_fetcher_test.go b/flint/github_fetcher_test.go new file mode 100644 index 0000000..7b14d8e --- /dev/null +++ b/flint/github_fetcher_test.go @@ -0,0 +1,220 @@ +package flint + +import ( + "fmt" + "github.com/octokit/go-octokit/octokit" + "github.com/stretchr/testify/assert" + "io/ioutil" + "net/http" + "net/http/httptest" + "net/url" + "os" + "path" + "testing" +) + +func TestNewGitHubFetcherWithToken(t *testing.T) { + fetcher := NewGitHubFetcherWithToken("foo") + assert.IsType(t, &GitHubFetcher{}, fetcher) + assert.Equal(t, "token foo", fetcher.AuthMethod.String()) +} + +func TestGitHubFetcherRequiresClientForFetchRepository(t *testing.T) { + fetcher := &GitHubFetcher{} + repo, err := fetcher.FetchRepository("pengwynn/flint") + assert.Nil(t, repo) + assert.NotNil(t, err) +} + +func TestGitHubFetcher_FetchRepository(t *testing.T) { + setupGitHubFetcherTest() + defer tearDownGitHubFetcherTest() + + mux.HandleFunc("/repos/octokit/octokit.rb", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + respondWithJSON(w, loadFixture("octokit.rb.json")) + }) + + fetcher := &GitHubFetcher{&*client} + repo, err := fetcher.FetchRepository("octokit/octokit.rb") + if assert.NotNil(t, repo) { + assert.Equal(t, "Ruby toolkit for the GitHub API", repo.Description) + assert.Equal(t, "http://octokit.github.io/octokit.rb/", repo.Homepage) + } + assert.Nil(t, err) +} + +func TestGitHubFetcherHandlesAPIErrorsForFetchRepository(t *testing.T) { + setupGitHubFetcherTest() + defer tearDownGitHubFetcherTest() + + mux.HandleFunc("/repos/octokit/octokit.rb", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + respondWithStatus(w, 404) + }) + + fetcher := &GitHubFetcher{&*client} + repo, err := fetcher.FetchRepository("octokit/octokit.rb") + assert.Nil(t, repo) + assert.NotNil(t, err) +} + +func TestGitHubFetcherHandlesNameParsingErrorForFetchRepository(t *testing.T) { + fetcher := NewGitHubFetcherWithToken("foo") + repo, err := fetcher.FetchRepository("foo") + assert.Nil(t, repo) + if assert.NotNil(t, err) { + assert.Equal(t, "Invalid GitHub repository: foo", err.Error()) + } +} + +func TestGitHubFetcherRequiresClientForFetchTree(t *testing.T) { + fetcher := &GitHubFetcher{} + paths, err := fetcher.FetchTree("pengwynn/flint") + assert.Nil(t, paths) + assert.NotNil(t, err) +} + +func TestGitHubFetcherHandlesAPIErrorsForFetchTree(t *testing.T) { + setupGitHubFetcherTest() + defer tearDownGitHubFetcherTest() + + mux.HandleFunc("/repos/octokit/octokit.rb/git/trees/master", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + respondWithStatus(w, 404) + }) + + fetcher := &GitHubFetcher{&*client} + repo, err := fetcher.FetchTree("octokit/octokit.rb") + assert.Nil(t, repo) + assert.NotNil(t, err) +} + +func TestGitHubFetcherHandlesNameParsingErrorForFetchTree(t *testing.T) { + fetcher := NewGitHubFetcherWithToken("foo") + repo, err := fetcher.FetchTree("foo") + assert.Nil(t, repo) + if assert.NotNil(t, err) { + assert.Equal(t, "Invalid GitHub repository: foo", err.Error()) + } +} + +func TestGitHubFetcher_FetchTree(t *testing.T) { + setupGitHubFetcherTest() + defer tearDownGitHubFetcherTest() + + mux.HandleFunc("/repos/octokit/octokit.rb/git/trees/master", func(w http.ResponseWriter, r *http.Request) { + testMethod(t, r, "GET") + respondWithJSON(w, loadFixture("octokit.rb_tree.json")) + }) + + fetcher := &GitHubFetcher{&*client} + paths, err := fetcher.FetchTree("octokit/octokit.rb") + assert.Contains(t, paths, "Rakefile") + assert.Contains(t, paths, "README.md") + assert.Nil(t, err) +} + +func TestGitHubFetcher_ParseFullName(t *testing.T) { + fetcher := &GitHubFetcher{} + + owner, name, err := fetcher.ParseFullName("pengwynn/flint") + assert.Equal(t, "pengwynn", owner) + assert.Equal(t, "flint", name) + assert.Nil(t, err) + + owner, name, err = fetcher.ParseFullName("pengwynnflint") + assert.Empty(t, owner) + assert.Empty(t, name) + + if assert.NotNil(t, err) { + assert.Equal(t, "Invalid GitHub repository: pengwynnflint", err.Error()) + } +} + +var ( + mux *http.ServeMux + client *octokit.Client + server *httptest.Server +) + +const ( + gitHubAPIURL = "https://api.github.com" + userAgent = "Octokit Go " +) + +type TestTransport struct { + http.RoundTripper + overrideURL *url.URL +} + +func (t TestTransport) RoundTrip(req *http.Request) (*http.Response, error) { + req = cloneRequest(req) + req.Header.Set("X-Original-Scheme", req.URL.Scheme) + req.URL.Scheme = t.overrideURL.Scheme + req.URL.Host = t.overrideURL.Host + return t.RoundTripper.RoundTrip(req) +} + +func cloneRequest(r *http.Request) *http.Request { + r2 := new(http.Request) + *r2 = *r + r2.URL, _ = url.Parse(r.URL.String()) + r2.Header = make(http.Header) + for k, s := range r.Header { + r2.Header[k] = s + } + return r2 +} + +func setupGitHubFetcherTest() { + // test server + mux = http.NewServeMux() + server = httptest.NewServer(mux) + serverURL, _ := url.Parse(server.URL) + + httpClient := http.Client{ + Transport: TestTransport{ + RoundTripper: http.DefaultTransport, + overrideURL: serverURL, + }, + } + + // octokit client configured to use test server + client = octokit.NewClientWith( + gitHubAPIURL, + userAgent, + octokit.TokenAuth{AccessToken: "token"}, + &httpClient, + ) +} + +// teardown closes the test HTTP server. +func tearDownGitHubFetcherTest() { + server.Close() +} + +func respondWithJSON(w http.ResponseWriter, s string) { + header := w.Header() + header.Set("Content-Type", "application/json") + respondWith(w, s) +} + +func respondWithStatus(w http.ResponseWriter, statusCode int) { + w.WriteHeader(statusCode) +} + +func respondWith(w http.ResponseWriter, s string) { + fmt.Fprint(w, s) +} + +func testMethod(t *testing.T, r *http.Request, want string) { + assert.Equal(t, want, r.Method) +} + +func loadFixture(f string) string { + pwd, _ := os.Getwd() + p := path.Join(pwd, "..", "fixtures", f) + c, _ := ioutil.ReadFile(p) + return string(c) +} diff --git a/flint/linter.go b/flint/linter.go new file mode 100644 index 0000000..11e7c64 --- /dev/null +++ b/flint/linter.go @@ -0,0 +1,59 @@ +package flint + +import ( + "errors" +) + +type Flags struct { + RunReadme bool + RunContributing bool + RunLicense bool + RunBootstrap bool + RunTestScript bool +} + +type Project interface { + CheckReadme() bool + CheckContributing() bool + CheckLicense() bool + CheckBootstrap() bool + CheckTestScript() bool +} + +type Linter struct{} + +func (l *Linter) Run(p Project, flags *Flags) (summary *Summary, err error) { + if p == nil { + return nil, errors.New("Must supply a project") + } + + summary = &Summary{} + + if flags.RunReadme { + if !p.CheckReadme() { + summary.AppendError(ReadmeNotFound) + } + } + if flags.RunContributing { + if !p.CheckContributing() { + summary.AppendError(ContributingNotFound) + } + } + if flags.RunLicense { + if !p.CheckLicense() { + summary.AppendError(LicenseNotFound) + } + } + if flags.RunBootstrap { + if !p.CheckBootstrap() { + summary.AppendError(BootstrapNotFound) + } + } + if flags.RunTestScript { + if !p.CheckTestScript() { + summary.AppendError(TestScriptNotFound) + } + } + + return summary, nil +} diff --git a/flint/linter_test.go b/flint/linter_test.go new file mode 100644 index 0000000..4c6f1c2 --- /dev/null +++ b/flint/linter_test.go @@ -0,0 +1,62 @@ +package flint + +import ( + "github.com/stretchr/testify/assert" + "testing" +) + +func TestLinterRequiresProject(t *testing.T) { + linter := &Linter{} + summary, err := linter.Run(nil, nil) + assert.Nil(t, summary) + assert.NotNil(t, err) + assert.Equal(t, "Must supply a project", err.Error()) +} + +func TestLinterReturnsSummary(t *testing.T) { + linter := &Linter{} + flags := &Flags{true, true, true, true, true} // Run all + project := &FakeProject{Flags: flags} + summary, err := linter.Run(project, flags) + assert.Nil(t, err) + if assert.NotNil(t, summary) { + assert.Equal(t, 0, len(summary.Errors)) + } +} + +func TestLinterReportsErrors(t *testing.T) { + linter := &Linter{} + flags := &Flags{true, true, true, true, true} // Run all + results := &Flags{} // Return false for each check + project := &FakeProject{Flags: results} + assert.Equal(t, results.RunReadme, false) + summary, err := linter.Run(project, flags) + assert.Nil(t, err) + if assert.NotNil(t, summary) { + assert.Equal(t, 5, len(summary.Errors)) + } +} + +type FakeProject struct { + *Flags +} + +func (p *FakeProject) CheckReadme() bool { + return p.RunReadme +} + +func (p *FakeProject) CheckContributing() bool { + return p.RunContributing +} + +func (p *FakeProject) CheckLicense() bool { + return p.RunLicense +} + +func (p *FakeProject) CheckBootstrap() bool { + return p.RunBootstrap +} + +func (p *FakeProject) CheckTestScript() bool { + return p.RunTestScript +} diff --git a/flint/local_project.go b/flint/local_project.go new file mode 100644 index 0000000..35e98de --- /dev/null +++ b/flint/local_project.go @@ -0,0 +1,35 @@ +package flint + +import ( + "path/filepath" +) + +type LocalProject struct { + Path string +} + +func (l *LocalProject) searchPath(pattern string) bool { + search := filepath.Join(l.Path, pattern) + matches, _ := filepath.Glob(search) + return len(matches) > 0 +} + +func (l *LocalProject) CheckReadme() bool { + return l.searchPath("README*") +} + +func (l *LocalProject) CheckContributing() bool { + return l.searchPath("CONTRIBUTING*") +} + +func (l *LocalProject) CheckLicense() bool { + return l.searchPath("LICENSE*") +} + +func (l *LocalProject) CheckBootstrap() bool { + return l.searchPath("script/bootstrap") +} + +func (l *LocalProject) CheckTestScript() bool { + return l.searchPath("script/test") +} diff --git a/flint/local_project_test.go b/flint/local_project_test.go new file mode 100644 index 0000000..357d739 --- /dev/null +++ b/flint/local_project_test.go @@ -0,0 +1,171 @@ +package flint + +import ( + "fmt" + "github.com/stretchr/testify/assert" + "io/ioutil" + "os" + "path/filepath" + "testing" +) + +type scenarios struct { + path string + result bool +} + +var readmeTests = []scenarios{ + {"", false}, + {"README", true}, + {"README.md", true}, + {"README.rst", true}, + {"docs/README.rst", false}, + {"docs/README.md", false}, +} + +func TestLocalProjectFindsReadme(t *testing.T) { + for _, tt := range readmeTests { + setup := setupLocalProjectTest() + defer setup.Teardown() + + if len(tt.path) > 0 { + setup.WriteFile(tt.path, "The README") + } + + project := &LocalProject{Path: setup.Path} + actual := project.CheckReadme() + + msg := fmt.Sprintf("Path: '%s', Errors: %d", tt.path, tt.result) + assert.Equal(t, tt.result, actual, msg) + } +} + +var contributingTests = []scenarios{ + {"", false}, + {"CONTRIBUTING", true}, + {"CONTRIBUTING.md", true}, + {"CONTRIBUTING.rst", true}, + {"docs/CONTRIBUTING.rst", false}, + {"docs/CONTRIBUTING.md", false}, +} + +func TestLocalProjectFindsContributing(t *testing.T) { + for _, tt := range contributingTests { + setup := setupLocalProjectTest() + defer setup.Teardown() + + if len(tt.path) > 0 { + setup.WriteFile(tt.path, "The CONTRIBUTING") + } + + project := &LocalProject{Path: setup.Path} + actual := project.CheckContributing() + + msg := fmt.Sprintf("Path: '%s', Errors: %d", tt.path, tt.result) + assert.Equal(t, tt.result, actual, msg) + } +} + +var licenseTests = []scenarios{ + {"", false}, + {"LICENSE", true}, + {"LICENSE.md", true}, + {"LICENSE.rst", true}, + {"docs/LICENSE.rst", false}, + {"docs/LICENSE.md", false}, +} + +func TestLocalProjectFindsLicense(t *testing.T) { + for _, tt := range licenseTests { + setup := setupLocalProjectTest() + defer setup.Teardown() + + if len(tt.path) > 0 { + setup.WriteFile(tt.path, "The LICENSE") + } + + project := &LocalProject{Path: setup.Path} + actual := project.CheckLicense() + + msg := fmt.Sprintf("Path: '%s', Errors: %d", tt.path, tt.result) + assert.Equal(t, tt.result, actual, msg) + } +} + +var bootstrapTests = []scenarios{ + {"", false}, + {"script/bootstrap", true}, + {"util/script/bootstrap", false}, +} + +func TestLocalProjectFindsBootstrap(t *testing.T) { + for _, tt := range bootstrapTests { + setup := setupLocalProjectTest() + defer setup.Teardown() + + if len(tt.path) > 0 { + setup.WriteFile(tt.path, "#!/bin/sh") + } + + project := &LocalProject{Path: setup.Path} + actual := project.CheckBootstrap() + + msg := fmt.Sprintf("Path: '%s', Errors: %d", tt.path, tt.result) + assert.Equal(t, tt.result, actual, msg) + } +} + +var testScriptTests = []scenarios{ + {"", false}, + {"script/test", true}, + {"util/script/test", false}, +} + +func TestLocalProjectFindsTestScript(t *testing.T) { + for _, tt := range testScriptTests { + setup := setupLocalProjectTest() + defer setup.Teardown() + + if len(tt.path) > 0 { + setup.WriteFile(tt.path, "#!/bin/sh") + } + + project := &LocalProject{Path: setup.Path} + actual := project.CheckTestScript() + + msg := fmt.Sprintf("Path: '%s', Errors: %d", tt.path, tt.result) + assert.Equal(t, tt.result, actual, msg) + } +} + +func check(err error) { + if err != nil { + panic(err) + } +} + +type LocalTest struct{ Path string } + +func (s *LocalTest) Cleanup() { + os.RemoveAll(s.Path) +} + +func (s *LocalTest) WriteFile(path string, content string) { + bytes := []byte(content) + dest := filepath.Join(s.Path, path) + os.MkdirAll(filepath.Dir(dest), 0777) + err := ioutil.WriteFile(dest, bytes, 0777) + check(err) +} + +func (s *LocalTest) Teardown() { + s.Cleanup() +} + +func setupLocalProjectTest() *LocalTest { + fixturePath := filepath.Join("..", "tmp", "test-project") + result := &LocalTest{Path: fixturePath} + result.Cleanup() // Cleanup after previous failures + os.MkdirAll(result.Path, 0777) + return result +} diff --git a/flint/remote_project.go b/flint/remote_project.go new file mode 100644 index 0000000..b05e518 --- /dev/null +++ b/flint/remote_project.go @@ -0,0 +1,77 @@ +package flint + +import ( + "errors" + "regexp" +) + +type Repository struct { + Description string + Homepage string +} + +type RemoteRepositoryFetcher interface { + FetchRepository(string) (*Repository, error) + FetchTree(string) ([]string, error) +} + +type RemoteProject struct { + FullName string + paths []string + Repository +} + +func (r *RemoteProject) Fetch(fetcher RemoteRepositoryFetcher) error { + if len(r.FullName) == 0 { + return errors.New("Must supply FullName as owner/repository") + } + + info, err := fetcher.FetchRepository(r.FullName) + + if err != nil { + return err + } + + r.Repository.Description = info.Description + r.Homepage = info.Homepage + + paths, err := fetcher.FetchTree(r.FullName) + + if err != nil { + return err + + } + + r.paths = paths + + return nil +} + +func (l *RemoteProject) searchPath(re *regexp.Regexp) bool { + for _, path := range l.paths { + if re.MatchString(path) { + return true + } + } + return false +} + +func (l *RemoteProject) CheckReadme() bool { + return l.searchPath(regexp.MustCompile(`README`)) +} + +func (l *RemoteProject) CheckContributing() bool { + return l.searchPath(regexp.MustCompile(`CONTRIBUTING`)) +} + +func (l *RemoteProject) CheckLicense() bool { + return l.searchPath(regexp.MustCompile(`LICENSE`)) +} + +func (l *RemoteProject) CheckBootstrap() bool { + return l.searchPath(regexp.MustCompile(`script/bootstrap`)) +} + +func (l *RemoteProject) CheckTestScript() bool { + return l.searchPath(regexp.MustCompile(`script/test`)) +} diff --git a/flint/remote_project_test.go b/flint/remote_project_test.go new file mode 100644 index 0000000..d198351 --- /dev/null +++ b/flint/remote_project_test.go @@ -0,0 +1,149 @@ +package flint + +import ( + "github.com/stretchr/testify/assert" + "testing" +) + +func TestRemoteProjectFetchRequiresFullName(t *testing.T) { + project := &RemoteProject{} + fetcher := &FakeProjectFetcher{} + err := project.Fetch(fetcher) + if assert.NotNil(t, err) { + assert.Equal(t, "Must supply FullName as owner/repository", err.Error()) + } +} + +func TestRemoteProjectPopulatesProjectInfo(t *testing.T) { + project := &RemoteProject{FullName: "octokit/octokit.rb"} + fetcher := &FakeProjectFetcher{} + err := project.Fetch(fetcher) + assert.Nil(t, err) + assert.Equal(t, "Ruby toolkit for the GitHub API", project.Description) + assert.Equal(t, "http://octokit.github.io/octokit.rb/", project.Homepage) +} + +func TestRemoteProjectPopulatesTree(t *testing.T) { + project := &RemoteProject{FullName: "octokit/octokit.rb"} + fetcher := &FakeProjectFetcher{} + err := project.Fetch(fetcher) + assert.Nil(t, err) + assert.True(t, project.CheckReadme()) +} + +func TestRemoteProjectCheckReadme(t *testing.T) { + project := &RemoteProject{FullName: "octokit/octokit.rb"} + fetcher := &FakeProjectFetcher{} + err := project.Fetch(fetcher) + assert.Nil(t, err) + assert.True(t, project.CheckReadme()) + + project = &RemoteProject{FullName: "projects/lowercase-names"} + err = project.Fetch(fetcher) + assert.Nil(t, err) + assert.False(t, project.CheckReadme()) +} + +func TestRemoteProjectCheckContributing(t *testing.T) { + project := &RemoteProject{FullName: "octokit/octokit.rb"} + fetcher := &FakeProjectFetcher{} + err := project.Fetch(fetcher) + assert.Nil(t, err) + assert.True(t, project.CheckContributing()) + + project = &RemoteProject{FullName: "projects/lowercase-names"} + err = project.Fetch(fetcher) + assert.Nil(t, err) + assert.False(t, project.CheckContributing()) +} + +func TestRemoteProjectCheckLicense(t *testing.T) { + project := &RemoteProject{FullName: "octokit/octokit.rb"} + fetcher := &FakeProjectFetcher{} + err := project.Fetch(fetcher) + assert.Nil(t, err) + assert.True(t, project.CheckLicense()) + + project = &RemoteProject{FullName: "projects/lowercase-names"} + err = project.Fetch(fetcher) + assert.Nil(t, err) + assert.False(t, project.CheckLicense()) +} + +func TestRemoteProjectCheckBootstrap(t *testing.T) { + project := &RemoteProject{FullName: "octokit/octokit.rb"} + fetcher := &FakeProjectFetcher{} + err := project.Fetch(fetcher) + assert.Nil(t, err) + assert.True(t, project.CheckBootstrap()) + + project = &RemoteProject{FullName: "projects/lowercase-names"} + err = project.Fetch(fetcher) + assert.Nil(t, err) + assert.True(t, project.CheckBootstrap()) + + project = &RemoteProject{FullName: "projects/no-files"} + err = project.Fetch(fetcher) + assert.Nil(t, err) + assert.False(t, project.CheckBootstrap()) +} + +func TestRemoteProjectCheckTestScript(t *testing.T) { + project := &RemoteProject{FullName: "octokit/octokit.rb"} + fetcher := &FakeProjectFetcher{} + err := project.Fetch(fetcher) + assert.Nil(t, err) + assert.True(t, project.CheckTestScript()) + + project = &RemoteProject{FullName: "projects/lowercase-names"} + err = project.Fetch(fetcher) + assert.Nil(t, err) + assert.True(t, project.CheckTestScript()) + + project = &RemoteProject{FullName: "projects/no-files"} + err = project.Fetch(fetcher) + assert.Nil(t, err) + assert.False(t, project.CheckTestScript()) +} + +type FakeProjectFetcher struct { +} + +func (f *FakeProjectFetcher) FetchRepository(nwo string) (repository *Repository, err error) { + repository = &Repository{} + switch nwo { + case "octokit/octokit.rb": + repository = &Repository{ + "Ruby toolkit for the GitHub API", + "http://octokit.github.io/octokit.rb/", + } + } + + return repository, nil +} + +func (f *FakeProjectFetcher) FetchTree(nwo string) (paths []string, err error) { + switch nwo { + case "octokit/octokit.rb": + paths = []string{ + "CONTRIBUTING.md", + "LICENSE.md", + "README.md", + "lib", + "lib/octokit.rb", + "script/bootstrap", + "script/test", + } + case "projects/lowercase-names": + paths = []string{ + "contributing", + "license", + "readme", + "script/bootstrap", + "script/test", + } + case "projects/no-files": + paths = []string{} + } + return paths, nil +} diff --git a/flint/summary.go b/flint/summary.go new file mode 100644 index 0000000..8f60822 --- /dev/null +++ b/flint/summary.go @@ -0,0 +1,64 @@ +package flint + +import ( + "fmt" + "github.com/fatih/color" + "io" +) + +type Summary struct { + Errors []*LintError +} + +func (list *Summary) AppendError(err *LintError) { + list.Errors = append(list.Errors, err) +} + +func (list *Summary) Severity() int { + severity := 0 + for _, e := range list.Errors { + if e.Level > severity { + severity = e.Level + } + } + + return severity +} + +func (l *Summary) Print(out io.Writer, colored bool) { + color.Output = out + if len(l.Errors) > 0 { + for _, e := range l.Errors { + if colored { + if e.Level == 0 { // [FIXME] + color.White(e.FormattedMessage()) + } + if e.Level == 1 { // [WARNING] + color.Yellow(e.FormattedMessage()) + } + if e.Level == 2 { // [ERROR] + color.Red(e.FormattedMessage()) + } + } else { + fmt.Fprintln(out, e.FormattedMessage()) + } + fmt.Fprintln(out, e.FormattedFixme()) + } + level := l.Severity() + if level > 1 { + message := "[CRITICAL] Some critical problems found." + if colored { + color.Red(message) + } else { + fmt.Fprintln(out, message) + } + } + } else { + message := "[OK] All is well!" + if colored { + color.Green(message) + } else { + fmt.Fprintln(out, message) + } + } +} diff --git a/flint/summary_test.go b/flint/summary_test.go new file mode 100644 index 0000000..4515f22 --- /dev/null +++ b/flint/summary_test.go @@ -0,0 +1,66 @@ +package flint + +import ( + "bytes" + "github.com/stretchr/testify/assert" + "testing" +) + +func TestSeverity(t *testing.T) { + list := &Summary{} + list.Errors = append(list.Errors, &LintError{2, "README not found", "Add a README, yo"}) + assert.Equal(t, 2, list.Severity()) +} + +func TestPrintNoColor(t *testing.T) { + list := &Summary{} + list.Errors = append(list.Errors, &LintError{2, "README not found", "Add a README, yo"}) + list.Errors = append(list.Errors, &LintError{1, "Bootstrap not found", "Add a bootstrap, yo"}) + buf := &bytes.Buffer{} + + list.Print(buf, false) + expected := `[ERROR] README not found +[FIXME] Add a README, yo +[WARNING] Bootstrap not found +[FIXME] Add a bootstrap, yo +[CRITICAL] Some critical problems found. +` + + assert.Equal(t, expected, buf.String()) +} + +func TestPrintColor(t *testing.T) { + list := &Summary{} + list.Errors = append(list.Errors, &LintError{2, "README not found", "Add a README, yo"}) + list.Errors = append(list.Errors, &LintError{1, "Bootstrap not found", "Add a bootstrap, yo"}) + buf := &bytes.Buffer{} + + list.Print(buf, true) + expected := "\x1b[31m[ERROR] README not found\n\x1b[0m" + expected += "[FIXME] Add a README, yo\n" + expected += "\x1b[33m[WARNING] Bootstrap not found\n\x1b[0m" + expected += "[FIXME] Add a bootstrap, yo\n" + expected += "\x1b[31m[CRITICAL] Some critical problems found.\n\x1b[0m" + + assert.Equal(t, expected, buf.String()) +} + +func TestPrintSuccessNoColor(t *testing.T) { + list := &Summary{} + buf := &bytes.Buffer{} + + list.Print(buf, false) + expected := "[OK] All is well!\n" + + assert.Equal(t, expected, buf.String()) +} + +func TestPrintSuccessColor(t *testing.T) { + list := &Summary{} + buf := &bytes.Buffer{} + + list.Print(buf, true) + expected := "\x1b[32m[OK] All is well!\n\x1b[0m" + + assert.Equal(t, expected, buf.String()) +} From e3c9653ab22a8d6e44383745a52d4fea82a8e777 Mon Sep 17 00:00:00 2001 From: Wynn Netherland Date: Mon, 8 Dec 2014 18:03:48 -0600 Subject: [PATCH 2/9] Cleaner init for GitHubFetcher in app --- flint/app.go | 9 ++------- flint/github_fetcher.go | 6 ++++++ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/flint/app.go b/flint/app.go index a9bb414..1520dd3 100644 --- a/flint/app.go +++ b/flint/app.go @@ -2,7 +2,6 @@ package flint import ( "github.com/codegangsta/cli" - "github.com/octokit/go-octokit/octokit" "fmt" "os" @@ -98,14 +97,10 @@ func newFlagsFromContext(c *cli.Context) *Flags { } var newGitHubFetcher = func(c *cli.Context) RemoteRepositoryFetcher { - var client *octokit.Client - token := c.String("token") if len(token) > 0 { - client = octokit.NewClient(octokit.TokenAuth{AccessToken: token}) + return NewGitHubFetcherWithToken(token) } else { - client = octokit.NewClient(nil) + return NewGitHubFetcher() } - - return &GitHubFetcher{client} } diff --git a/flint/github_fetcher.go b/flint/github_fetcher.go index 3c7d7dc..9e7ff1d 100644 --- a/flint/github_fetcher.go +++ b/flint/github_fetcher.go @@ -76,6 +76,12 @@ func (g *GitHubFetcher) ParseFullName(nwo string) (owner, name string, err error return } +func NewGitHubFetcher() *GitHubFetcher { + client := octokit.NewClient(nil) + + return &GitHubFetcher{&*client} +} + func NewGitHubFetcherWithToken(token string) *GitHubFetcher { client := octokit.NewClient(&octokit.TokenAuth{AccessToken: token}) From ea93e9a98579b272b6e2d12aa86cf581504c3e74 Mon Sep 17 00:00:00 2001 From: Wynn Netherland Date: Mon, 8 Dec 2014 18:07:44 -0600 Subject: [PATCH 3/9] Update bootstrap for new test dependency --- script/bootstrap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/bootstrap b/script/bootstrap index 33240d9..158e702 100755 --- a/script/bootstrap +++ b/script/bootstrap @@ -3,4 +3,4 @@ set -e echo "Installing dependencies" go get ./... -go get github.com/bmizerany/assert +go get github.com/stretchr/testify From 5a76afb0bde790c293f39e1ce42aa638dad6f338 Mon Sep 17 00:00:00 2001 From: Wynn Netherland Date: Wed, 10 Dec 2014 18:58:13 -0600 Subject: [PATCH 4/9] Simpler struct init --- flint/github_fetcher.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flint/github_fetcher.go b/flint/github_fetcher.go index 9e7ff1d..ded9591 100644 --- a/flint/github_fetcher.go +++ b/flint/github_fetcher.go @@ -79,11 +79,11 @@ func (g *GitHubFetcher) ParseFullName(nwo string) (owner, name string, err error func NewGitHubFetcher() *GitHubFetcher { client := octokit.NewClient(nil) - return &GitHubFetcher{&*client} + return &GitHubFetcher{client} } func NewGitHubFetcherWithToken(token string) *GitHubFetcher { client := octokit.NewClient(&octokit.TokenAuth{AccessToken: token}) - return &GitHubFetcher{&*client} + return &GitHubFetcher{client} } From e082cf3063f6f596459adc6f1366d4520f529d1e Mon Sep 17 00:00:00 2001 From: Wynn Netherland Date: Wed, 10 Dec 2014 19:10:11 -0600 Subject: [PATCH 5/9] Ditch nested conditionals --- flint/linter.go | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/flint/linter.go b/flint/linter.go index 11e7c64..500d530 100644 --- a/flint/linter.go +++ b/flint/linter.go @@ -29,30 +29,20 @@ func (l *Linter) Run(p Project, flags *Flags) (summary *Summary, err error) { summary = &Summary{} - if flags.RunReadme { - if !p.CheckReadme() { - summary.AppendError(ReadmeNotFound) - } + if flags.RunReadme && !p.CheckReadme() { + summary.AppendError(ReadmeNotFound) } - if flags.RunContributing { - if !p.CheckContributing() { - summary.AppendError(ContributingNotFound) - } + if flags.RunContributing && !p.CheckContributing() { + summary.AppendError(ContributingNotFound) } - if flags.RunLicense { - if !p.CheckLicense() { - summary.AppendError(LicenseNotFound) - } + if flags.RunLicense && !p.CheckLicense() { + summary.AppendError(LicenseNotFound) } - if flags.RunBootstrap { - if !p.CheckBootstrap() { - summary.AppendError(BootstrapNotFound) - } + if flags.RunBootstrap && !p.CheckBootstrap() { + summary.AppendError(BootstrapNotFound) } - if flags.RunTestScript { - if !p.CheckTestScript() { - summary.AppendError(TestScriptNotFound) - } + if flags.RunTestScript && !p.CheckTestScript() { + summary.AppendError(TestScriptNotFound) } return summary, nil From 9ddeeb0752ea8a850d3be07f540eef826357766d Mon Sep 17 00:00:00 2001 From: Wynn Netherland Date: Thu, 11 Dec 2014 16:58:08 -0600 Subject: [PATCH 6/9] Implement Error interface --- flint/errors.go | 55 +++++++++++++++++++++++++++++-------------- flint/linter.go | 15 ++++++++---- flint/linter_test.go | 2 +- flint/summary.go | 11 ++++----- flint/summary_test.go | 23 +++++++++++------- 5 files changed, 67 insertions(+), 39 deletions(-) diff --git a/flint/errors.go b/flint/errors.go index 27d022d..8f78260 100644 --- a/flint/errors.go +++ b/flint/errors.go @@ -1,53 +1,72 @@ package flint +import ( + "fmt" +) + type LintError struct { Level int Message string - Fixme string } -func (e *LintError) FormattedMessage() string { - label := "" - if e.Level == 1 { - label = "[WARNING]" - } - if e.Level == 2 { - label = "[ERROR]" - } - - return label + " " + e.Message +var labels = map[int]string{ + 0: "INFO", + 1: "WARNING", + 2: "ERROR", } -func (e *LintError) FormattedFixme() string { - return "[FIXME] " + e.Fixme +func (e *LintError) Error() (out string) { + label := labels[e.Level] + out = fmt.Sprintf("[%s] %s", label, e.Message) + + return } -var ReadmeNotFound = &LintError{ +var ReadmeNotFoundError = &LintError{ 2, "README not found", +} +var ReadmeNotFoundInfo = &LintError{ + 0, "Every project begins with a README. http://bit.ly/1dqUYQF", } -var ContributingNotFound = &LintError{ +var ContributingNotFoundError = &LintError{ 2, "CONTRIBUTING guide not found", +} + +var ContributingNotFoundInfo = &LintError{ + 0, "Add a guide for potential contributors. http://git.io/z-TiGg", } -var LicenseNotFound = &LintError{ +var LicenseNotFoundError = &LintError{ 2, "LICENSE not found", +} + +var LicenseNotFoundInfo = &LintError{ + 0, "Add a license to protect yourself and your users. http://choosealicense.com/", } -var BootstrapNotFound = &LintError{ +var BootstrapNotFoundError = &LintError{ 1, "Bootstrap script not found", +} + +var BootstrapNotFoundInfo = &LintError{ + 0, "A bootstrap script makes setup a snap. http://bit.ly/JZjVL6", } -var TestScriptNotFound = &LintError{ +var TestScriptNotFoundError = &LintError{ 1, "Test script not found", +} + +var TestScriptNotFoundInfo = &LintError{ + 0, "Make it easy to run the test suite regardless of project type. http://bit.ly/JZjVL6", } diff --git a/flint/linter.go b/flint/linter.go index 500d530..68c84ac 100644 --- a/flint/linter.go +++ b/flint/linter.go @@ -30,19 +30,24 @@ func (l *Linter) Run(p Project, flags *Flags) (summary *Summary, err error) { summary = &Summary{} if flags.RunReadme && !p.CheckReadme() { - summary.AppendError(ReadmeNotFound) + summary.AppendError(ReadmeNotFoundError) + summary.AppendError(ReadmeNotFoundInfo) } if flags.RunContributing && !p.CheckContributing() { - summary.AppendError(ContributingNotFound) + summary.AppendError(ContributingNotFoundError) + summary.AppendError(ContributingNotFoundInfo) } if flags.RunLicense && !p.CheckLicense() { - summary.AppendError(LicenseNotFound) + summary.AppendError(LicenseNotFoundError) + summary.AppendError(LicenseNotFoundInfo) } if flags.RunBootstrap && !p.CheckBootstrap() { - summary.AppendError(BootstrapNotFound) + summary.AppendError(BootstrapNotFoundError) + summary.AppendError(BootstrapNotFoundInfo) } if flags.RunTestScript && !p.CheckTestScript() { - summary.AppendError(TestScriptNotFound) + summary.AppendError(TestScriptNotFoundError) + summary.AppendError(TestScriptNotFoundInfo) } return summary, nil diff --git a/flint/linter_test.go b/flint/linter_test.go index 4c6f1c2..dd873cd 100644 --- a/flint/linter_test.go +++ b/flint/linter_test.go @@ -33,7 +33,7 @@ func TestLinterReportsErrors(t *testing.T) { summary, err := linter.Run(project, flags) assert.Nil(t, err) if assert.NotNil(t, summary) { - assert.Equal(t, 5, len(summary.Errors)) + assert.Equal(t, 10, len(summary.Errors)) } } diff --git a/flint/summary.go b/flint/summary.go index 8f60822..0f83740 100644 --- a/flint/summary.go +++ b/flint/summary.go @@ -30,19 +30,18 @@ func (l *Summary) Print(out io.Writer, colored bool) { if len(l.Errors) > 0 { for _, e := range l.Errors { if colored { - if e.Level == 0 { // [FIXME] - color.White(e.FormattedMessage()) + if e.Level == 0 { // [INFO] + fmt.Fprintln(out, e.Error()) } if e.Level == 1 { // [WARNING] - color.Yellow(e.FormattedMessage()) + color.Yellow(e.Error()) } if e.Level == 2 { // [ERROR] - color.Red(e.FormattedMessage()) + color.Red(e.Error()) } } else { - fmt.Fprintln(out, e.FormattedMessage()) + fmt.Fprintln(out, e.Error()) } - fmt.Fprintln(out, e.FormattedFixme()) } level := l.Severity() if level > 1 { diff --git a/flint/summary_test.go b/flint/summary_test.go index 4515f22..1a678b1 100644 --- a/flint/summary_test.go +++ b/flint/summary_test.go @@ -8,21 +8,24 @@ import ( func TestSeverity(t *testing.T) { list := &Summary{} - list.Errors = append(list.Errors, &LintError{2, "README not found", "Add a README, yo"}) + list.Errors = append(list.Errors, &LintError{2, "README not found"}) + list.Errors = append(list.Errors, &LintError{0, "Add a README, yo"}) assert.Equal(t, 2, list.Severity()) } func TestPrintNoColor(t *testing.T) { list := &Summary{} - list.Errors = append(list.Errors, &LintError{2, "README not found", "Add a README, yo"}) - list.Errors = append(list.Errors, &LintError{1, "Bootstrap not found", "Add a bootstrap, yo"}) + list.Errors = append(list.Errors, &LintError{2, "README not found"}) + list.Errors = append(list.Errors, &LintError{0, "Add a README, yo"}) + list.Errors = append(list.Errors, &LintError{1, "Bootstrap not found"}) + list.Errors = append(list.Errors, &LintError{0, "Add a bootstrap, yo"}) buf := &bytes.Buffer{} list.Print(buf, false) expected := `[ERROR] README not found -[FIXME] Add a README, yo +[INFO] Add a README, yo [WARNING] Bootstrap not found -[FIXME] Add a bootstrap, yo +[INFO] Add a bootstrap, yo [CRITICAL] Some critical problems found. ` @@ -31,15 +34,17 @@ func TestPrintNoColor(t *testing.T) { func TestPrintColor(t *testing.T) { list := &Summary{} - list.Errors = append(list.Errors, &LintError{2, "README not found", "Add a README, yo"}) - list.Errors = append(list.Errors, &LintError{1, "Bootstrap not found", "Add a bootstrap, yo"}) + list.Errors = append(list.Errors, &LintError{2, "README not found"}) + list.Errors = append(list.Errors, &LintError{0, "Add a README, yo"}) + list.Errors = append(list.Errors, &LintError{1, "Bootstrap not found"}) + list.Errors = append(list.Errors, &LintError{0, "Add a bootstrap, yo"}) buf := &bytes.Buffer{} list.Print(buf, true) expected := "\x1b[31m[ERROR] README not found\n\x1b[0m" - expected += "[FIXME] Add a README, yo\n" + expected += "[INFO] Add a README, yo\n" expected += "\x1b[33m[WARNING] Bootstrap not found\n\x1b[0m" - expected += "[FIXME] Add a bootstrap, yo\n" + expected += "[INFO] Add a bootstrap, yo\n" expected += "\x1b[31m[CRITICAL] Some critical problems found.\n\x1b[0m" assert.Equal(t, expected, buf.String()) From 8d047cc2ae31d63b3f30152a4ecab9f5634d21fb Mon Sep 17 00:00:00 2001 From: Wynn Netherland Date: Fri, 12 Dec 2014 12:47:11 -0600 Subject: [PATCH 7/9] Clean up Summary printing --- flint/summary.go | 57 +++++++++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 30 deletions(-) diff --git a/flint/summary.go b/flint/summary.go index 0f83740..aaaf546 100644 --- a/flint/summary.go +++ b/flint/summary.go @@ -26,38 +26,35 @@ func (list *Summary) Severity() int { } func (l *Summary) Print(out io.Writer, colored bool) { + info := func(a ...interface{}) { fmt.Fprintln(out, a...) } + warn := info + fail := info + success := info + color.Output = out - if len(l.Errors) > 0 { - for _, e := range l.Errors { - if colored { - if e.Level == 0 { // [INFO] - fmt.Fprintln(out, e.Error()) - } - if e.Level == 1 { // [WARNING] - color.Yellow(e.Error()) - } - if e.Level == 2 { // [ERROR] - color.Red(e.Error()) - } - } else { - fmt.Fprintln(out, e.Error()) - } - } - level := l.Severity() - if level > 1 { - message := "[CRITICAL] Some critical problems found." - if colored { - color.Red(message) - } else { - fmt.Fprintln(out, message) - } - } - } else { + if colored { + warn = color.New(color.FgYellow).PrintlnFunc() + fail = color.New(color.FgRed).PrintlnFunc() + success = color.New(color.FgGreen).PrintlnFunc() + } + if len(l.Errors) == 0 { message := "[OK] All is well!" - if colored { - color.Green(message) - } else { - fmt.Fprintln(out, message) + success(message) + return + } + + for _, e := range l.Errors { + switch e.Level { + case 0: + info(e.Error()) + case 1: + warn(e.Error()) + case 2: + fail(e.Error()) } } + if l.Severity() > 1 { + message := "[CRITICAL] Some critical problems found." + fail(message) + } } From 6f8f4b2967007b17202649da8926a86a5a154efb Mon Sep 17 00:00:00 2001 From: Wynn Netherland Date: Fri, 12 Dec 2014 14:09:11 -0600 Subject: [PATCH 8/9] Write error output to stderr --- flint/app.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flint/app.go b/flint/app.go index 1520dd3..c271d3b 100644 --- a/flint/app.go +++ b/flint/app.go @@ -52,7 +52,7 @@ var run = func(c *cli.Context) { return } if summary != nil { - summary.Print(os.Stdout, !c.Bool("no-color")) + summary.Print(os.Stderr, !c.Bool("no-color")) os.Exit(summary.Severity()) } } From c0fea39b95940a8e4a347cb3c6ac673810e99e59 Mon Sep 17 00:00:00 2001 From: Wynn Netherland Date: Fri, 12 Dec 2014 14:15:47 -0600 Subject: [PATCH 9/9] Update README to reflect output changes --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index f87ba2c..f4eaec9 100644 --- a/README.md +++ b/README.md @@ -26,15 +26,15 @@ show the full gamut of suggestions: ~/projects/dream ❯ flint [ERROR] README not found -[FIXME] Every project begins with a README. http://bit.ly/1dqUYQF +[INFO] Every project begins with a README. http://bit.ly/1dqUYQF [ERROR] CONTRIBUTING guide not found -[FIXME] Add a guide for potential contributors. http://git.io/z-TiGg +[INFO] Add a guide for potential contributors. http://git.io/z-TiGg [ERROR] LICENSE not found -[FIXME] Add a license to protect yourself and your users. http://choosealicense.com/ +[INFO] Add a license to protect yourself and your users. http://choosealicense.com/ [WARNING] Bootstrap script not found -[FIXME] A bootstrap script makes setup a snap. http://bit.ly/JZjVL6 +[INFO] A bootstrap script makes setup a snap. http://bit.ly/JZjVL6 [WARNING] Test script not found -[FIXME] Make it easy to run the test suite regardless of project type. http://bit.ly/JZjVL6 +[INFO] Make it easy to run the test suite regardless of project type. http://bit.ly/JZjVL6 [CRITICAL] Some critical problems found. ``` @@ -47,9 +47,9 @@ cloning: ```sh ❯ flint --github pengwynn/dotfiles [ERROR] CONTRIBUTING guide not found -[FIXME] Add a guide for potential contributors. http://git.io/z-TiGg +[INFO] Add a guide for potential contributors. http://git.io/z-TiGg [WARNING] Test script not found -[FIXME] Make it easy to run the test suite regardless of project type. http://bit.ly/JZjVL6 +[INFO] Make it easy to run the test suite regardless of project type. http://bit.ly/JZjVL6 [CRITICAL] Some critical problems found. ``` Passing the `-h` flag will show full usage options: