github_cli 0.5.9 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. data/.travis.yml +1 -0
  2. data/CHANGELOG.md +12 -1
  3. data/Gemfile.lock +12 -10
  4. data/README.md +18 -0
  5. data/features/authorization.feature +53 -0
  6. data/features/blob.feature +1 -1
  7. data/features/download.feature +13 -11
  8. data/features/gist.feature +9 -1
  9. data/features/label.feature +11 -12
  10. data/features/member.feature +5 -4
  11. data/features/merging.feature +5 -4
  12. data/features/organization.feature +5 -4
  13. data/features/repository.feature +9 -1
  14. data/features/search.feature +5 -4
  15. data/github_cli.gemspec +1 -1
  16. data/lib/github_cli/api.rb +56 -49
  17. data/lib/github_cli/apis/assignee.rb +6 -6
  18. data/lib/github_cli/apis/authorization.rb +5 -5
  19. data/lib/github_cli/apis/blob.rb +6 -6
  20. data/lib/github_cli/apis/collaborator.rb +12 -12
  21. data/lib/github_cli/apis/commit.rb +6 -6
  22. data/lib/github_cli/apis/content.rb +9 -9
  23. data/lib/github_cli/apis/download.rb +15 -15
  24. data/lib/github_cli/apis/email.rb +9 -9
  25. data/lib/github_cli/apis/event.rb +24 -24
  26. data/lib/github_cli/apis/follower.rb +16 -15
  27. data/lib/github_cli/apis/fork.rb +6 -6
  28. data/lib/github_cli/apis/gist.rb +31 -30
  29. data/lib/github_cli/apis/hook.rb +6 -6
  30. data/lib/github_cli/apis/issue.rb +12 -12
  31. data/lib/github_cli/apis/key.rb +15 -15
  32. data/lib/github_cli/apis/label.rb +24 -26
  33. data/lib/github_cli/apis/member.rb +15 -27
  34. data/lib/github_cli/apis/merging.rb +3 -3
  35. data/lib/github_cli/apis/milestone.rb +15 -15
  36. data/lib/github_cli/apis/notification.rb +18 -18
  37. data/lib/github_cli/apis/organization.rb +9 -9
  38. data/lib/github_cli/apis/pull_request.rb +24 -24
  39. data/lib/github_cli/apis/reference.rb +15 -15
  40. data/lib/github_cli/apis/repository.rb +13 -12
  41. data/lib/github_cli/apis/search.rb +12 -12
  42. data/lib/github_cli/apis/starring.rb +15 -15
  43. data/lib/github_cli/apis/status.rb +6 -6
  44. data/lib/github_cli/apis/tag.rb +6 -6
  45. data/lib/github_cli/apis/team.rb +39 -39
  46. data/lib/github_cli/apis/tree.rb +6 -6
  47. data/lib/github_cli/apis/user.rb +9 -9
  48. data/lib/github_cli/apis/watching.rb +15 -15
  49. data/lib/github_cli/cli.rb +24 -16
  50. data/lib/github_cli/commands/assignees.rb +8 -2
  51. data/lib/github_cli/commands/authorizations.rb +10 -13
  52. data/lib/github_cli/commands/blobs.rb +9 -3
  53. data/lib/github_cli/commands/collaborators.rb +16 -4
  54. data/lib/github_cli/commands/commits.rb +11 -6
  55. data/lib/github_cli/commands/contents.rb +9 -6
  56. data/lib/github_cli/commands/downloads.rb +30 -6
  57. data/lib/github_cli/commands/emails.rb +12 -3
  58. data/lib/github_cli/commands/events.rb +30 -8
  59. data/lib/github_cli/commands/followers.rb +20 -5
  60. data/lib/github_cli/commands/forks.rb +6 -4
  61. data/lib/github_cli/commands/gists.rb +39 -12
  62. data/lib/github_cli/commands/hooks.rb +1 -1
  63. data/lib/github_cli/commands/issues.rb +15 -4
  64. data/lib/github_cli/commands/keys.rb +20 -5
  65. data/lib/github_cli/commands/labels.rb +53 -14
  66. data/lib/github_cli/commands/members.rb +28 -9
  67. data/lib/github_cli/commands/merging.rb +3 -2
  68. data/lib/github_cli/commands/milestones.rb +27 -15
  69. data/lib/github_cli/commands/notifications.rb +19 -11
  70. data/lib/github_cli/commands/organizations.rb +24 -5
  71. data/lib/github_cli/commands/pull_requests.rb +30 -8
  72. data/lib/github_cli/commands/references.rb +17 -5
  73. data/lib/github_cli/commands/repositories.rb +6 -4
  74. data/lib/github_cli/commands/search.rb +24 -6
  75. data/lib/github_cli/commands/starring.rb +19 -5
  76. data/lib/github_cli/commands/statuses.rb +7 -3
  77. data/lib/github_cli/commands/tags.rb +7 -3
  78. data/lib/github_cli/commands/teams.rb +52 -17
  79. data/lib/github_cli/commands/trees.rb +6 -2
  80. data/lib/github_cli/commands/users.rb +9 -3
  81. data/lib/github_cli/commands/watching.rb +19 -5
  82. data/lib/github_cli/vendor/thor/actions/directory.rb +2 -0
  83. data/lib/github_cli/vendor/thor/actions/empty_directory.rb +3 -19
  84. data/lib/github_cli/vendor/thor/actions/file_manipulation.rb +4 -1
  85. data/lib/github_cli/vendor/thor/actions.rb +1 -1
  86. data/lib/github_cli/vendor/thor/base.rb +20 -18
  87. data/lib/github_cli/vendor/thor/command.rb +1 -1
  88. data/lib/github_cli/vendor/thor/error.rb +0 -4
  89. data/lib/github_cli/vendor/thor/group.rb +4 -9
  90. data/lib/github_cli/vendor/thor/runner.rb +1 -1
  91. data/lib/github_cli/vendor/thor/shell/basic.rb +25 -7
  92. data/lib/github_cli/vendor/thor/version.rb +1 -1
  93. data/lib/github_cli/vendor/thor.rb +17 -2
  94. data/lib/github_cli/version.rb +1 -1
  95. data/spec/github_cli/api/configure_spec.rb +50 -0
  96. data/spec/github_cli/api/github_api_spec.rb +19 -0
  97. data/spec/github_cli/commands/assignees_spec.rb +1 -1
  98. data/spec/github_cli/commands/blobs_spec.rb +1 -1
  99. data/spec/github_cli/commands/collaborators_spec.rb +1 -1
  100. data/spec/github_cli/commands/commits_spec.rb +1 -1
  101. data/spec/github_cli/commands/contents_spec.rb +1 -1
  102. data/spec/github_cli/commands/downloads_spec.rb +35 -0
  103. data/spec/github_cli/commands/emails_spec.rb +1 -1
  104. data/spec/github_cli/commands/events_spec.rb +1 -1
  105. data/spec/github_cli/commands/followers_spec.rb +1 -1
  106. data/spec/github_cli/commands/forks_spec.rb +1 -1
  107. data/spec/github_cli/commands/gists_spec.rb +6 -1
  108. data/spec/github_cli/commands/issues_spec.rb +1 -1
  109. data/spec/github_cli/commands/keys_spec.rb +1 -1
  110. data/spec/github_cli/commands/labels_spec.rb +13 -3
  111. data/spec/github_cli/commands/members_spec.rb +46 -0
  112. data/spec/github_cli/commands/merging_spec.rb +1 -1
  113. data/spec/github_cli/commands/milestones_spec.rb +1 -1
  114. data/spec/github_cli/commands/notifications_spec.rb +1 -1
  115. data/spec/github_cli/commands/organizations_spec.rb +30 -0
  116. data/spec/github_cli/commands/pull_requests_spec.rb +1 -1
  117. data/spec/github_cli/commands/references_spec.rb +1 -1
  118. data/spec/github_cli/commands/repositories_spec.rb +5 -0
  119. data/spec/github_cli/commands/starring_spec.rb +1 -1
  120. data/spec/github_cli/commands/statuses_spec.rb +1 -1
  121. data/spec/github_cli/commands/tags_spec.rb +1 -1
  122. data/spec/github_cli/commands/teams_spec.rb +1 -1
  123. data/spec/github_cli/commands/trees_spec.rb +1 -1
  124. data/spec/github_cli/commands/users_spec.rb +1 -1
  125. data/spec/github_cli/commands/watching_spec.rb +1 -1
  126. metadata +27 -17
  127. data/spec/github_cli/api_spec.rb +0 -19
@@ -5,81 +5,81 @@ module GithubCLI
5
5
 
6
6
  class << self
7
7
 
8
- def all(org, params, format)
9
- output format do
10
- github_api.orgs.teams.list org, params
8
+ def all(org, params, options)
9
+ output options do
10
+ github_api(options).orgs.teams.list org, params
11
11
  end
12
12
  end
13
13
 
14
- def get(id, params, format)
15
- output format do
16
- github_api.orgs.teams.get id, params
14
+ def get(id, params, options)
15
+ output options do
16
+ github_api(options).orgs.teams.get id, params
17
17
  end
18
18
  end
19
19
 
20
- def create(org, params, format)
21
- output format do
22
- github_api.orgs.teams.create org, params
20
+ def create(org, params, options)
21
+ output options do
22
+ github_api(options).orgs.teams.create org, params
23
23
  end
24
24
  end
25
25
 
26
- def edit(id, params, format)
27
- output format do
28
- github_api.orgs.teams.edit id, params
26
+ def edit(id, params, options)
27
+ output options do
28
+ github_api(options).orgs.teams.edit id, params
29
29
  end
30
30
  end
31
31
 
32
- def delete(id, params, format)
33
- output format do
34
- github_api.orgs.teams.delete id, params
32
+ def delete(id, params, options)
33
+ output options do
34
+ github_api(options).orgs.teams.delete id, params
35
35
  end
36
36
  end
37
37
 
38
- def all_member(id, params, format)
39
- output format do
40
- github_api.orgs.teams.list_members id, params
38
+ def all_member(id, params, options)
39
+ output options do
40
+ github_api(options).orgs.teams.list_members id, params
41
41
  end
42
42
  end
43
43
 
44
- def member(id, user, params, format)
45
- output format do
46
- github_api.orgs.teams.team_member? id, user, params
44
+ def member(id, user, params, options)
45
+ output options do
46
+ github_api(options).orgs.teams.team_member? id, user, params
47
47
  end
48
48
  end
49
49
 
50
- def add_member(id, user, params, format)
51
- output format do
52
- github_api.orgs.teams.add_member id, user, params
50
+ def add_member(id, user, params, options)
51
+ output options do
52
+ github_api(options).orgs.teams.add_member id, user, params
53
53
  end
54
54
  end
55
55
 
56
- def remove_member(id, user, params, format)
57
- output format do
58
- github_api.orgs.teams.remove_member id, user, params
56
+ def remove_member(id, user, params, options)
57
+ output options do
58
+ github_api(options).orgs.teams.remove_member id, user, params
59
59
  end
60
60
  end
61
61
 
62
- def all_repo(id, params, format)
63
- output format do
64
- github_api.orgs.teams.list_repos id, params
62
+ def all_repo(id, params, options)
63
+ output options do
64
+ github_api(options).orgs.teams.list_repos id, params
65
65
  end
66
66
  end
67
67
 
68
- def repo(id, user, repo, params, format)
69
- output format do
70
- github_api.orgs.teams.team_repo? id, user, repo, params
68
+ def repo(id, user, repo, params, options)
69
+ output options do
70
+ github_api(options).orgs.teams.team_repo? id, user, repo, params
71
71
  end
72
72
  end
73
73
 
74
- def add_repo(id, user, repo, params, format)
75
- output format do
76
- github_api.orgs.teams.add_repo id, user, repo, params
74
+ def add_repo(id, user, repo, params, options)
75
+ output options do
76
+ github_api(options).orgs.teams.add_repo id, user, repo, params
77
77
  end
78
78
  end
79
79
 
80
- def remove_repo(id, user, repo, params, format)
81
- output format do
82
- github_api.orgs.teams.remove_repo id, user, repo, params
80
+ def remove_repo(id, user, repo, params, options)
81
+ output options do
82
+ github_api(options).orgs.teams.remove_repo id, user, repo, params
83
83
  end
84
84
  end
85
85
  end
@@ -5,15 +5,15 @@ module GithubCLI
5
5
 
6
6
  class << self
7
7
 
8
- def get(user, repo, sha, params, format)
9
- output format do
10
- github_api.git_data.trees.get user, repo, sha, params
8
+ def get(user, repo, sha, params, options)
9
+ output options do
10
+ github_api(options).git_data.trees.get user, repo, sha, params
11
11
  end
12
12
  end
13
13
 
14
- def create(user, repo, params, format)
15
- output format do
16
- github_api.git_data.trees.create user, repo, params
14
+ def create(user, repo, params, options)
15
+ output options do
16
+ github_api(options).git_data.trees.create user, repo, params
17
17
  end
18
18
  end
19
19
  end
@@ -5,21 +5,21 @@ module GithubCLI
5
5
 
6
6
  class << self
7
7
 
8
- def all(params, format)
9
- output format do
10
- github_api.users.all params
8
+ def all(params, options)
9
+ output options do
10
+ github_api(options).users.all params
11
11
  end
12
12
  end
13
13
 
14
- def get(params, format)
15
- output format do
16
- github_api.users.get params
14
+ def get(params, options)
15
+ output options do
16
+ github_api(options).users.get params
17
17
  end
18
18
  end
19
19
 
20
- def update(params, format)
21
- output format do
22
- github_api.users.update params
20
+ def update(params, options)
21
+ output options do
22
+ github_api(options).users.update params
23
23
  end
24
24
  end
25
25
  end
@@ -5,33 +5,33 @@ module GithubCLI
5
5
 
6
6
  class << self
7
7
 
8
- def list(user, repo, params, format)
9
- output format do
10
- github_api.activity.watching.list user, repo, params
8
+ def list(user, repo, params, options)
9
+ output options do
10
+ github_api(options).activity.watching.list user, repo, params
11
11
  end
12
12
  end
13
13
 
14
- def watched(params, format)
15
- output format do
16
- github_api.activity.watching.watched params
14
+ def watched(params, options)
15
+ output options do
16
+ github_api(options).activity.watching.watched params
17
17
  end
18
18
  end
19
19
 
20
- def watching?(user, repo, params, format)
21
- output format do
22
- github_api.activity.watching.watching? user, repo, params
20
+ def watching?(user, repo, params, options)
21
+ output options do
22
+ github_api(options).activity.watching.watching? user, repo, params
23
23
  end
24
24
  end
25
25
 
26
- def start(user, repo, params, format)
27
- output format do
28
- github_api.activity.watching.watch user, repo, params
26
+ def start(user, repo, params, options)
27
+ output options do
28
+ github_api(options).activity.watching.watch user, repo, params
29
29
  end
30
30
  end
31
31
 
32
- def stop(user, repo, params, format)
33
- output format do
34
- github_api.activity.watching.unwatch user, repo, params
32
+ def stop(user, repo, params, options)
33
+ output options do
34
+ github_api(options).activity.watching.unwatch user, repo, params
35
35
  end
36
36
  end
37
37
  end
@@ -1,6 +1,8 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module GithubCLI
4
+
5
+ # Main command line interface
4
6
  class CLI < Thor
5
7
  include Thor::Actions
6
8
  require 'github_cli/subcommands'
@@ -58,6 +60,7 @@ module GithubCLI
58
60
  'user.repo' => nil,
59
61
  'user.org' => nil,
60
62
  'core.adapter' => :net_http,
63
+ 'core.site' => 'https://github.com',
61
64
  'core.endpoint' => 'https://api.github.com',
62
65
  'core.ssl' => nil,
63
66
  'core.mime' => :json,
@@ -65,7 +68,8 @@ module GithubCLI
65
68
  'core.pager' => 'less',
66
69
  'core.no-pager' => false,
67
70
  'core.no-color' => false,
68
- 'core.format' => 'table',
71
+ 'core.quiet' => false,
72
+ 'core.format' => :table,
69
73
  'core.auto_pagination' => false,
70
74
  'core.aliases' => nil,
71
75
  }
@@ -74,6 +78,12 @@ module GithubCLI
74
78
 
75
79
  option :local, :type => :boolean, :default => false, :aliases => "-l",
76
80
  :desc => 'Modify local configuration file, otherwise a global configuration file is changed.'
81
+ option :scopes, :type => :array, :banner => "user public_repo repo...",
82
+ :desc => "A list of scopes that this authorization is in."
83
+ option :note, :type => :string,
84
+ :desc => "A note to remind you what the OAuth token is for."
85
+ option :note_url, :type => :string,
86
+ :desc => "A URL to remind you what the OAuth token is for."
77
87
  desc 'authorize', 'Add user authentication token'
78
88
  long_desc <<-DESC
79
89
  Create authorization token for a user named <username> Save user credentials to the .githubrc file.\n
@@ -90,14 +100,12 @@ module GithubCLI
90
100
  params['note_url'] = options[:note_url] || 'https://github.com/peter-murach/github_cli'
91
101
  global_options[:params] = params
92
102
  # Need to configure client with login and password
93
- print 'OPTIONS '
94
- p options
95
103
  login = ask("login: ")
96
104
  password = ask("password: ")
97
105
 
98
- global_options['login'] = login
106
+ global_options['login'] = login
99
107
  global_options['password'] = password
100
- global_options['quiet'] = true
108
+ global_options['quiet'] = options[:quiet]
101
109
 
102
110
  res = self.invoke("auth:create", [], global_options)
103
111
  token = res.body['token']
@@ -109,7 +117,7 @@ module GithubCLI
109
117
  config['user.token'] = token
110
118
 
111
119
  GithubCLI.ui.warn <<-EOF
112
- Your #{GithubCLI.config.location} has been overwritten!
120
+ Your #{GithubCLI.config.location} configuration file has been overwritten!
113
121
  EOF
114
122
  end
115
123
 
@@ -120,6 +128,10 @@ module GithubCLI
120
128
  GithubCLI.ui.info me
121
129
  end
122
130
 
131
+ option :force, :type => :boolean, :default => false, :aliases => "-f",
132
+ :banner => "Overwrite configuration file. "
133
+ option :local, :type => :boolean, :default => false, :aliases => "-l",
134
+ :desc => 'Create local configuration file, otherwise a global configuration file in user home is created.'
123
135
  desc 'init', 'Create a configuration file or overwirte existing one'
124
136
  long_desc <<-DESC
125
137
  Initializes a configuration file where you can set default options for
@@ -129,10 +141,6 @@ module GithubCLI
129
141
  override the bult-in defaults and allow you to save typing commonly used
130
142
  command line options.
131
143
  DESC
132
- option :force, :type => :boolean, :default => false, :aliases => "-f",
133
- :banner => "Overwrite configuration file. "
134
- option :local, :type => :boolean, :default => false, :aliases => "-l",
135
- :desc => 'Create local configuration file, otherwise a global configuration file in user home is created.'
136
144
  def init(filename=nil)
137
145
  config_filename = filename ? filename : options[:filename]
138
146
  config = GithubCLI.config
@@ -148,6 +156,12 @@ module GithubCLI
148
156
  GithubCLI.ui.confirm "Writing new configuration file to #{GithubCLI.config.path}"
149
157
  end
150
158
 
159
+ option :local, :type => :boolean, :default => false,
160
+ :desc => 'use local config file'
161
+ option :list, :type => :boolean, :default => false, :aliases => '-l',
162
+ :desc => 'list all'
163
+ option :edit, :type => :boolean, :default => false, :aliases => '-e',
164
+ :desc => 'opens an editor'
151
165
  desc 'config', 'Get and set GitHub configuration options'
152
166
  long_desc <<-DESC
153
167
  You can query/set options with this command. The name is actually a hash key
@@ -158,12 +172,6 @@ module GithubCLI
158
172
  There two types of config files, global and project specific. When modifying
159
173
  options ensure that you modifying the correct config.
160
174
  DESC
161
- option :local, :type => :boolean, :default => false,
162
- :desc => 'use local config file'
163
- option :list, :type => :boolean, :default => false, :aliases => '-l',
164
- :desc => 'list all'
165
- option :edit, :type => :boolean, :default => false, :aliases => '-e',
166
- :desc => 'opens an editor'
167
175
  def config(*args)
168
176
  name, value = args.shift, args.shift
169
177
  GithubCLI.config.location = options[:local] ? 'local' : 'global'
@@ -10,12 +10,18 @@ module GithubCLI
10
10
  Lists all the available assignees (owner + collaborators) to which issues may be assigned
11
11
  DESC
12
12
  def list(user, repo)
13
- Assignee.all user, repo, options[:params], options[:format]
13
+ global_options = options.dup
14
+ params = options[:params].dup
15
+ Util.hash_without!(global_options, params.keys + ['params'])
16
+ Assignee.all user, repo, params, global_options
14
17
  end
15
18
 
16
19
  desc 'check <user> <repo> <assignee>', 'Check if <assignee> is assigned to <repo>'
17
20
  def check(user, repo, assignee)
18
- Assignee.check user, repo, assignee, options[:params], options[:format]
21
+ global_options = options.dup
22
+ params = options[:params].dup
23
+ Util.hash_without!(global_options, params.keys + ['params'])
24
+ Assignee.check user, repo, assignee, params, global_options
19
25
  end
20
26
 
21
27
  end # Assignees
@@ -11,8 +11,8 @@ module GithubCLI
11
11
  DESC
12
12
  def list
13
13
  global_options = options.dup
14
- params = global_options[:params].dup
15
- Util.hash_without!(global_options, %w[ params ])
14
+ params = options[:params].dup
15
+ Util.hash_without!(global_options, params.keys + ['params'])
16
16
  Authorization.all params, global_options
17
17
  end
18
18
 
@@ -22,8 +22,8 @@ module GithubCLI
22
22
  DESC
23
23
  def get(id)
24
24
  global_options = options.dup
25
- params = global_options[:params].dup
26
- Util.hash_without!(global_options, %w[ params ])
25
+ params = options[:params].dup
26
+ Util.hash_without!(global_options, params.keys + ['params'])
27
27
  Authorization.get id, params, global_options
28
28
  end
29
29
 
@@ -45,12 +45,11 @@ module GithubCLI
45
45
  DESC
46
46
  def create
47
47
  global_options = options.dup
48
- params = global_options[:params].dup
48
+ params = options[:params].dup
49
49
  params['scopes'] = options[:scopes] if options[:scopes]
50
50
  params['note'] = options[:note] if options[:note]
51
51
  params['note_url'] = options[:note_url] if options[:note_url]
52
-
53
- Util.hash_without!(global_options, %w[ params scopes note note_url])
52
+ Util.hash_without!(global_options, params.keys + ['params'])
54
53
 
55
54
  Authorization.create params, global_options
56
55
  end
@@ -77,15 +76,13 @@ module GithubCLI
77
76
  DESC
78
77
  def update(id)
79
78
  global_options = options.dup
80
- params = global_options[:params].dup
79
+ params = options[:params].dup
81
80
  params['scopes'] = options[:scopes] if options[:scopes]
82
81
  params['add_scopes'] = options[:add_scopes] if options[:add_scopes]
83
82
  params['remove_scopes'] = options[:remove_scopes] if options[:remove_scopes]
84
83
  params['note'] = options[:note] if options[:note]
85
84
  params['note_url'] = options[:note_url] if options[:note_url]
86
-
87
- Util.hash_without!(global_options,
88
- %w[ params scopes add_scopes remove_scopes note note_url])
85
+ Util.hash_without!(global_options, params.keys + ['params'])
89
86
 
90
87
  Authorization.update id, params, global_options
91
88
  end
@@ -93,8 +90,8 @@ module GithubCLI
93
90
  desc 'delete <id>', 'Delete an authorization'
94
91
  def delete(id)
95
92
  global_options = options.dup
96
- params = global_options[:params].dup
97
- Util.hash_without!(global_options, %w[ params ])
93
+ params = options[:params].dup
94
+ Util.hash_without!(global_options, params.keys + ['params'])
98
95
  Authorization.delete id, params, global_options
99
96
  end
100
97
 
@@ -7,7 +7,11 @@ module GithubCLI
7
7
 
8
8
  desc 'get <user> <repo> <sha>', 'Get a Blob'
9
9
  def get(user, repo, sha)
10
- Blob.get user, repo, sha, options[:params], options[:format]
10
+ global_options = options.dup
11
+ params = options[:params].dup
12
+ Util.hash_without!(global_options, params.keys + ['params'])
13
+
14
+ Blob.get user, repo, sha, params, global_options
11
15
  end
12
16
 
13
17
  option :content, :type => :string
@@ -21,11 +25,13 @@ module GithubCLI
21
25
  encoding - String containing encoding utf-8 or base64
22
26
  DESC
23
27
  def create(user, repo)
28
+ global_options = options.dup
24
29
  params = options[:params].dup
25
- params['content'] = options[:content] if options[:content]
30
+ params['content'] = options[:content] if options[:content]
26
31
  params['encoding'] = options[:encoding] if options[:encoding]
32
+ Util.hash_without!(global_options, params.keys + ['params'])
27
33
 
28
- Blob.create user, repo, params, options[:format]
34
+ Blob.create user, repo, params, global_options
29
35
  end
30
36
 
31
37
  end # Blobs
@@ -7,22 +7,34 @@ module GithubCLI
7
7
 
8
8
  desc 'list <owner> <repo>', 'Lists collaborators'
9
9
  def list(owner, repo)
10
- Collaborator.all owner, repo, options[:params], options[:format]
10
+ global_options = options.dup
11
+ params = options[:params].dup
12
+ Util.hash_without!(global_options, params.keys + ['params'])
13
+ Collaborator.all owner, repo, params, global_options
11
14
  end
12
15
 
13
16
  desc 'add <owner> <repo> <user>', 'Add a collaborator'
14
17
  def add(owner, repo, user)
15
- Collaborator.add owner, repo, user, options[:params], options[:format]
18
+ global_options = options.dup
19
+ params = options[:params].dup
20
+ Util.hash_without!(global_options, params.keys + ['params'])
21
+ Collaborator.add owner, repo, user, params, global_options
16
22
  end
17
23
 
18
24
  desc 'collab <owner> <repo> <user>', 'Checks if user is a collaborator on a given repo'
19
25
  def collab(owner, repo, user)
20
- Collaborator.collaborator? owner, repo, user, options[:params], options[:format]
26
+ global_options = options.dup
27
+ params = options[:params].dup
28
+ Util.hash_without!(global_options, params.keys + ['params'])
29
+ Collaborator.collaborator? owner, repo, user, params, global_options
21
30
  end
22
31
 
23
32
  desc 'remove <owner> <repo> <user>', 'Remove a collaborator'
24
33
  def remove(owner, repo, user)
25
- Collaborator.remove owner, repo, user, options[:params], options[:format]
34
+ global_options = options.dup
35
+ params = options[:params].dup
36
+ Util.hash_without!(global_options, params.keys + ['params'])
37
+ Collaborator.remove owner, repo, user, params, global_options
26
38
  end
27
39
 
28
40
  end # Collaborators
@@ -7,7 +7,10 @@ module GithubCLI
7
7
 
8
8
  desc 'get <user> <repo> <sha>', 'Get a Commit'
9
9
  def get(user, repo, sha)
10
- Commit.get user, repo, sha, options[:params], options[:format]
10
+ global_options = options.dup
11
+ params = options[:params].dup
12
+ Util.hash_without!(global_options, params.keys + ['params'])
13
+ Commit.get user, repo, sha, params, global_options
11
14
  end
12
15
 
13
16
  desc 'create <user> <repo>', 'Create a Commit'
@@ -40,13 +43,15 @@ module GithubCLI
40
43
  committer.date - Timestamp of when this commit was committed
41
44
  DESC
42
45
  def create(user, repo)
46
+ global_options = options.dup
43
47
  params = options[:params].dup
44
- params['message'] = options[:message] if options[:message]
45
- params['tree'] = options[:tree] if options[:tree]
46
- params['parents'] = options[:parents] if options[:parents]
47
- params['author'] = options[:author] if options[:author]
48
+ params['message'] = options[:message] if options[:message]
49
+ params['tree'] = options[:tree] if options[:tree]
50
+ params['parents'] = options[:parents] if options[:parents]
51
+ params['author'] = options[:author] if options[:author]
48
52
  params['committer'] = options[:committer] if options[:committer]
49
- Commit.create user, repo, params, options[:format]
53
+ Util.hash_without!(global_options, params.keys + ['params'])
54
+ Commit.create user, repo, params, global_options
50
55
  end
51
56
 
52
57
  end # Commit
@@ -16,10 +16,11 @@ module GithubCLI
16
16
  ref - Optional string - The String name of the Commit/Branch/Tag. Defaults to master.
17
17
  DESC
18
18
  def get(user, repo, path)
19
+ global_options = options.dup
19
20
  params = options[:params].dup
20
21
  params['ref'] = options[:ref] if options[:ref]
21
-
22
- Content.get user, repo, path, params, options[:format]
22
+ Util.hash_without!(global_options, params.keys + ['params'])
23
+ Content.get user, repo, path, params, global_options
23
24
  end
24
25
 
25
26
  option :ref, :type => :string,
@@ -31,10 +32,11 @@ module GithubCLI
31
32
  ref - Optional string - The String name of the Commit/Branch/Tag. Defaults to master.
32
33
  DESC
33
34
  def readme(user, repo)
35
+ global_options = options.dup
34
36
  params = options[:params].dup
35
37
  params['ref'] = options[:ref] if options[:ref]
36
-
37
- Content.readme user, repo, params, options[:format]
38
+ Util.hash_without!(global_options, params.keys + ['params'])
39
+ Content.readme user, repo, params, global_options
38
40
  end
39
41
 
40
42
  option :ref, :type => :string,
@@ -56,11 +58,12 @@ module GithubCLI
56
58
  ref - Optional string - valid Git reference, defaults to master\n
57
59
  DESC
58
60
  def archive(user, repo)
61
+ global_options = options.dup
59
62
  params = options[:params].dup
60
63
  params['ref'] = options[:ref] if options[:ref]
61
64
  params['archive_format'] = options[:archive_format] if options[:archive_format]
62
-
63
- Content.archive user, repo, params, options[:format]
65
+ Util.hash_without!(global_options, params.keys + ['params'])
66
+ Content.archive user, repo, params, global_options
64
67
  end
65
68
 
66
69
  end # Contents
@@ -7,14 +7,26 @@ module GithubCLI
7
7
 
8
8
  desc 'list <user> <repo>', 'Lists downloads'
9
9
  def list(user, repo)
10
- Download.all user, repo, options[:params], options[:format]
10
+ global_options = options.dup
11
+ params = options[:params].dup
12
+ Util.hash_without!(global_options, params.keys + ['params'])
13
+ Download.all user, repo, params, global_options
11
14
  end
12
15
 
13
16
  desc 'get <user> <repo> <id>', 'Get a download'
14
17
  def get(user, repo, id)
15
- Download.get user, repo, id, options[:params], options[:format]
18
+ global_options = options.dup
19
+ params = options[:params].dup
20
+ Util.hash_without!(global_options, params.keys + ['params'])
21
+ Download.get user, repo, id, params, global_options
16
22
  end
17
23
 
24
+ option :name, :type => :string, :required => true,
25
+ :desc => 'name of the file that is being created.'
26
+ option :size, :type => :numeric, :required => true,
27
+ :desc => 'size of file in bytes'
28
+ option :desc, :type => :string
29
+ option :type, :type => :string
18
30
  desc 'create <user> <repo>', 'Create a new download resource'
19
31
  long_desc <<-DESC
20
32
  Creating a new download is a two step process.
@@ -30,13 +42,20 @@ module GithubCLI
30
42
  content_type - Optional string \n
31
43
  DESC
32
44
  def create(user, repo)
33
- Download.create user, repo, options[:params], options[:format]
45
+ global_options = options.dup
46
+ params = options[:params].dup
47
+ params['name'] = options[:name]
48
+ params['size'] = options[:size]
49
+ params['descritpion'] = options[:desc] if options[:desc]
50
+ params['content_type'] = options[:type] if options[:type]
51
+ Util.hash_without!(global_options, params.keys + ['params'])
52
+ Download.create user, repo, params, global_options
34
53
  end
35
54
 
36
55
  desc 'upload <resource> <filename>', 'Upload resource to s3'
37
56
  long_desc <<-DESC
38
57
  Upload a file to Amazon, using the reponse instance from
39
- Github::Repos::Downloads#create_download.
58
+ Github::Repos::Downloads#create
40
59
 
41
60
  This can be done by passing the response object
42
61
  as an argument to upload method.
@@ -47,12 +66,17 @@ module GithubCLI
47
66
  filename - Required filename, a path to a file location. \n
48
67
  DESC
49
68
  def upload(resource, filename)
50
- Download.upload resource, filename, options[:format]
69
+ global_options = options.dup
70
+ Util.hash_without!(global_options, ['params'])
71
+ Download.upload resource, filename, global_options
51
72
  end
52
73
 
53
74
  desc 'delete <user> <repo> <id>', 'Delete a download'
54
75
  def delete(user, repo, id)
55
- Download.delete user, repo, id, options[:params], options[:format]
76
+ global_options = options.dup
77
+ params = options[:params].dup
78
+ Util.hash_without!(global_options, params.keys + ['params'])
79
+ Download.delete user, repo, id, params, global_options
56
80
  end
57
81
 
58
82
  end # Downloads