travis-cli-gh 0.0.2.travis.3.1 → 0.0.2.travis.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +46 -1
- data/lib/travis/cli/gh.rb +2 -1
- data/lib/travis/cli/gh/fetch.rb +1 -1
- data/lib/travis/cli/gh/github.rb +2 -1
- data/lib/travis/cli/gh/upload.rb +24 -0
- data/lib/travis/cli/gh/write.rb +74 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZGExMWMzYjk1ZWYxNmFmNDllZDg1N2U4YzJkZjRhOTA4MDE1MzZiOA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YmJjNzc4Zjk1YjRjMzVjZjA4MTM2NzFlYmZkMWFkM2IzZjE4Y2E2MQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NGJmYjY3MDU4ZTE1YWJjY2E0MDdiZjgyNDI1ZjVjNTFmYzE0YjllODMyY2U5
|
10
|
+
MTk2MDY4YjBjNDExZmJhMGM5M2UwMjk2ZjIwNDNlMzhmMjNjNmRlZDY1ZDkx
|
11
|
+
ODFhMzMxNzI4N2JlNjBiOWQwOGY5MjRlNzQ1MGQxNTQzZDRjNTU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YjNmNzg5ZjZiNGU1ZGViOGI4MDUwZTExZDRhYThlNjA3YTgyZDc3ZGM4ZGFl
|
14
|
+
ZGMwODEzMmEzM2MzZTUwOWUyZjVhYTgzOWMzZGNlOTVlZmU5MjRjMGZlZTgx
|
15
|
+
NTY1ZmNhNjM4YmY4NzJiZTU5OWRlYWEyYzQwNGQ5Nzg3YWU0Mzg=
|
data/README.md
CHANGED
@@ -4,7 +4,7 @@ This plugin for the [Travis Command Line Client](https://github.com/travis-ci/tr
|
|
4
4
|
|
5
5
|
## Usage
|
6
6
|
|
7
|
-
This plugin adds the following commands: [`gh-cat`](#gh-cat), [`gh-fetch`](#gh-fetch), [`gh-login`](#gh-login), [`gh-signature`](#gh-signature)
|
7
|
+
This plugin adds the following commands: [`gh-cat`](#gh-cat), [`gh-fetch`](#gh-fetch), [`gh-login`](#gh-login), [`gh-signature`](#gh-signature), [`gh-upload`](#gh-upload), [`gh-whoami`](#gh-whoami) and [`gh-write`](#gh-write). All these commands will use the Travis API endpoint for automatically figuring out which GitHub API endpoint to use (relevant for setups using GitHub Enterprise).
|
8
8
|
|
9
9
|
### `gh-cat`
|
10
10
|
|
@@ -42,6 +42,28 @@ Like [other commands](https://github.com/travis-ci/travis#repository-commands),
|
|
42
42
|
|
43
43
|
This signature should be kept somewhat secret, otherwise other people can send you fake web hooks.
|
44
44
|
|
45
|
+
### `gh-upload`
|
46
|
+
|
47
|
+
GitHub plugin: upload one or more files to the repository.
|
48
|
+
-h, --help Display help
|
49
|
+
-E, --[no-]explode don't rescue exceptions
|
50
|
+
--debug show API requests
|
51
|
+
-X, --enterprise [NAME] use enterprise setup (optionally takes name for multiple setups)
|
52
|
+
-r, --repo SLUG repository to use (will try to detect from current git clone)
|
53
|
+
-b, --branch BRANCH branch to write to
|
54
|
+
-m, --message MESSAGE commit message
|
55
|
+
-C, --create only create new files
|
56
|
+
-U, --update only update existing files
|
57
|
+
-c, --committer USER set committer (format: "name <email>", defaults to current user)
|
58
|
+
-a, --author USER set author (format: "name <email>", defaults to committer)
|
59
|
+
-A, --append append to file if it already exists
|
60
|
+
-p, --prefix DIR prefix to store it under
|
61
|
+
|
62
|
+
Like [`gh-write`](#gh-write), but uploads a file by the same name.
|
63
|
+
|
64
|
+
$ travis gh-upload ../somwhere/example.txt -p test
|
65
|
+
Uploading ../somwhere/example.txt as test/example.txt
|
66
|
+
|
45
67
|
### `gh-whoami`
|
46
68
|
|
47
69
|
Displays which GitHub account you are logged in with on GitHub.
|
@@ -49,6 +71,29 @@ Displays which GitHub account you are logged in with on GitHub.
|
|
49
71
|
$ travis gh-whoami
|
50
72
|
logged in as rkh
|
51
73
|
|
74
|
+
### `gh-write`
|
75
|
+
|
76
|
+
GitHub plugin: write stdin to the given path in the repository.
|
77
|
+
Usage: travis gh-write path [options]
|
78
|
+
-h, --help Display help
|
79
|
+
-E, --[no-]explode don't rescue exceptions
|
80
|
+
--debug show API requests
|
81
|
+
-X, --enterprise [NAME] use enterprise setup (optionally takes name for multiple setups)
|
82
|
+
-r, --repo SLUG repository to use (will try to detect from current git clone)
|
83
|
+
-b, --branch BRANCH branch to write to
|
84
|
+
-m, --message MESSAGE commit message
|
85
|
+
-C, --create only create new files
|
86
|
+
-U, --update only update existing files
|
87
|
+
-c, --committer USER set committer (format: "name <email>", defaults to current user)
|
88
|
+
-a, --author USER set author (format: "name <email>", defaults to committer)
|
89
|
+
-A, --append append to file if it already exists
|
90
|
+
|
91
|
+
Reads from stdin and writes it to the given file in the repository.
|
92
|
+
|
93
|
+
$ travis gh-write example -r example/repo
|
94
|
+
Hi folks!
|
95
|
+
<Ctrl+d>
|
96
|
+
|
52
97
|
## Installation
|
53
98
|
|
54
99
|
You install it like any other gem:
|
data/lib/travis/cli/gh.rb
CHANGED
@@ -10,9 +10,10 @@ module Travis
|
|
10
10
|
autoload :Login, 'travis/cli/gh/login'
|
11
11
|
autoload :Signature, 'travis/cli/gh/signature'
|
12
12
|
autoload :Subcommands, 'travis/cli/gh/subcommands'
|
13
|
+
autoload :Upload, 'travis/cli/gh/upload'
|
13
14
|
autoload :VERSION, 'travis/cli/gh/version'
|
14
15
|
autoload :Whoami, 'travis/cli/gh/whoami'
|
15
|
-
|
16
|
+
autoload :Write, 'travis/cli/gh/write'
|
16
17
|
|
17
18
|
extend self
|
18
19
|
|
data/lib/travis/cli/gh/fetch.rb
CHANGED
@@ -2,7 +2,7 @@ module Travis::CLI
|
|
2
2
|
module Gh
|
3
3
|
class Fetch < Cat
|
4
4
|
description "download a file from a repository"
|
5
|
-
on '-p', '--prefix DIR', '
|
5
|
+
on '-p', '--prefix DIR', 'prefix to store it under'
|
6
6
|
on '-f', '--force', 'override existing files'
|
7
7
|
|
8
8
|
def run(*paths)
|
data/lib/travis/cli/gh/github.rb
CHANGED
@@ -6,9 +6,10 @@ module Travis::CLI
|
|
6
6
|
module GitHub
|
7
7
|
module Error
|
8
8
|
def gh_error(e)
|
9
|
-
raise e
|
9
|
+
raise e if explode? or not e.respond_to? :info
|
10
10
|
message = e.info[:response_body].to_s
|
11
11
|
message = JSON.load(message).fetch('message') rescue nil
|
12
|
+
message = "GitHub says: #{message}"
|
12
13
|
error message
|
13
14
|
end
|
14
15
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require "base64"
|
2
|
+
|
3
|
+
module Travis::CLI
|
4
|
+
module Gh
|
5
|
+
class Upload < Write
|
6
|
+
description "upload one or more files to the repository"
|
7
|
+
on '-p', '--prefix DIR', 'prefix to store it under'
|
8
|
+
|
9
|
+
def run(*paths)
|
10
|
+
paths.each do |source|
|
11
|
+
error "cannot read #{source}" unless File.readable? source
|
12
|
+
target = File.basename(source)
|
13
|
+
target = File.join(prefix, target) if prefix
|
14
|
+
message = "Uploading " << color(source, :important)
|
15
|
+
message << " as " << color(target, :important) if target != source
|
16
|
+
say message
|
17
|
+
write(target, File.read(source))
|
18
|
+
end
|
19
|
+
rescue GH::Error => e
|
20
|
+
gh_error(e)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require "base64"
|
2
|
+
|
3
|
+
module Travis::CLI
|
4
|
+
module Gh
|
5
|
+
class Write < RepoCommand
|
6
|
+
include GitHub::Authenticated, GitHub::Error
|
7
|
+
USER_FORMAT = /^(?<name>.+) <(?<email>.+@.+)>$/
|
8
|
+
|
9
|
+
description "write stdin to the given path in the repository"
|
10
|
+
on '-b', '--branch BRANCH', 'branch to write to'
|
11
|
+
on '-m', '--message MESSAGE', 'commit message'
|
12
|
+
on '-C', '--create', 'only create new files'
|
13
|
+
on '-U', '--update', 'only update existing files'
|
14
|
+
on '-c', '--committer USER', 'set committer (format: "name <email>", defaults to current user)'
|
15
|
+
on '-a', '--author USER', 'set author (format: "name <email>", defaults to committer)'
|
16
|
+
on '-A', '--append', 'append to file if it already exists'
|
17
|
+
|
18
|
+
def run(path)
|
19
|
+
write(path, input.read)
|
20
|
+
rescue GH::Error => e
|
21
|
+
gh_error(e)
|
22
|
+
end
|
23
|
+
|
24
|
+
def write(path, content)
|
25
|
+
current = get(path)
|
26
|
+
error "file already exists" unless update?
|
27
|
+
update(path, content, current)
|
28
|
+
rescue GH::Error => e
|
29
|
+
gh_error(e) unless e.info[:response_status] == 404
|
30
|
+
error "file does not exist" unless create?
|
31
|
+
create(path, content)
|
32
|
+
end
|
33
|
+
|
34
|
+
def update(path, content, current = get(path))
|
35
|
+
error "#{path} is not a file" unless current.respond_to?(:to_hash) and current['type'] == 'file'
|
36
|
+
content = Base64.decode64(current['content']) + content if append?
|
37
|
+
put(path, content, message: "Update #{path}", sha: current['sha'])
|
38
|
+
end
|
39
|
+
|
40
|
+
def create(path, content)
|
41
|
+
put(path, content, message: "Create #{path}")
|
42
|
+
end
|
43
|
+
|
44
|
+
def put(path, content = "", encoded_content: Base64.encode64(content), **options)
|
45
|
+
options[:message] = message if message
|
46
|
+
options[:branch] = branch if branch
|
47
|
+
options[:content] = encoded_content
|
48
|
+
options[:path] = path
|
49
|
+
options[:committer] = parse_user(:committer) if committer
|
50
|
+
options[:author] = parse_user(:author) if author
|
51
|
+
gh.put("/repos/#{repository.slug}/contents/#{path}", options)
|
52
|
+
end
|
53
|
+
|
54
|
+
def get(path)
|
55
|
+
path = "repos/#{repository.slug}/contents/#{path}"
|
56
|
+
path << "?ref=#{branch}" if branch
|
57
|
+
gh[path]
|
58
|
+
end
|
59
|
+
|
60
|
+
def parse_user(field)
|
61
|
+
error "wrong format for #{field}, should be NAME <EMAIL>." unless match = USER_FORMAT.match(send(field).to_s)
|
62
|
+
{ name: match[:name], email: match[:email] }
|
63
|
+
end
|
64
|
+
|
65
|
+
def create?
|
66
|
+
@create.nil? ? @update.nil? : @create
|
67
|
+
end
|
68
|
+
|
69
|
+
def update?
|
70
|
+
@update.nil? ? @create.nil? : @update
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: travis-cli-gh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.2.travis.
|
4
|
+
version: 0.0.2.travis.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Konstantin Haase
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-12-
|
11
|
+
date: 2013-12-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: travis
|
@@ -86,8 +86,10 @@ files:
|
|
86
86
|
- lib/travis/cli/gh/login.rb
|
87
87
|
- lib/travis/cli/gh/signature.rb
|
88
88
|
- lib/travis/cli/gh/subcommands.rb
|
89
|
+
- lib/travis/cli/gh/upload.rb
|
89
90
|
- lib/travis/cli/gh/version.rb
|
90
91
|
- lib/travis/cli/gh/whoami.rb
|
92
|
+
- lib/travis/cli/gh/write.rb
|
91
93
|
- setup/extconf.rb
|
92
94
|
- spec/subcommands_spec.rb
|
93
95
|
- travis-cli-gh.gemspec
|