sah 0.0.11 → 0.0.12
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.
- checksums.yaml +4 -4
- data/README.md +13 -0
- data/lib/sah/cli.rb +16 -9
- data/lib/sah/config.rb +6 -2
- data/lib/sah/formatter.rb +38 -0
- data/lib/sah/version.rb +1 -1
- data/lib/sah.rb +1 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 393a7e6d9875efdaee240fb172dc5dc599093bb2
|
4
|
+
data.tar.gz: 26d09b3e0890833aea94d1663e4c7e5c67e14767
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9fbc09cb692d722a82a067a2fb2376e0e3b1aae0e0e2478314326dcfe8417e6c79a694128ebc3fc94e05e3f1de7931b1ec2d5f33c76759310575e75e62c872a
|
7
|
+
data.tar.gz: 4ecaa80f5c5bbc32ab86c5cf3ac5105ebd6ac5221c63ebfeb8a0f6e8659a2808f9b722fd3c44fd5964b4cdf591e4ee4fec7c71db32b5a6ccd36d9d6dcf61a8e6
|
data/README.md
CHANGED
@@ -10,6 +10,9 @@ This project was heavily inspired by the [hub](https://hub.github.com/).
|
|
10
10
|
|
11
11
|
## Configuration
|
12
12
|
|
13
|
+
|
14
|
+
### profile
|
15
|
+
|
13
16
|
git config [--global] sah.profile.default.user "f440"
|
14
17
|
git config [--global] sah.profile.default.password "freq440@gmail.com"
|
15
18
|
git config [--global] sah.profile.default.url "https://exmaple.com"
|
@@ -25,6 +28,16 @@ If you use multiple Bitbucket Server, define profile(s) and specify it.
|
|
25
28
|
export SAH_DEFAULT_PROFILE=my_company
|
26
29
|
sah SUB_COMMAND
|
27
30
|
|
31
|
+
### format
|
32
|
+
|
33
|
+
The formatting output can use either table(default) or json.
|
34
|
+
|
35
|
+
sah SUB_COMMAND --format json
|
36
|
+
or
|
37
|
+
export SAH_DEFAULT_FORMAT=json
|
38
|
+
sah SUB_COMMAND
|
39
|
+
|
40
|
+
|
28
41
|
## Usage
|
29
42
|
|
30
43
|
### browse
|
data/lib/sah/cli.rb
CHANGED
@@ -2,8 +2,6 @@ require "sah"
|
|
2
2
|
require "open3"
|
3
3
|
require "tempfile"
|
4
4
|
require "thor"
|
5
|
-
require "hirb"
|
6
|
-
require "hirb-unicode"
|
7
5
|
require "launchy"
|
8
6
|
|
9
7
|
module Sah
|
@@ -14,6 +12,9 @@ module Sah
|
|
14
12
|
class_option :verbose,
|
15
13
|
type: :boolean, default: false,
|
16
14
|
desc: "Turn on/off verbose mode"
|
15
|
+
class_option :format,
|
16
|
+
type: :string, default: (ENV["SAH_DEFAULT_FORMAT"] || "table"),
|
17
|
+
desc: "Set output format"
|
17
18
|
|
18
19
|
desc "browse [REPO]", "Browse repository"
|
19
20
|
long_desc <<-LONG_DESCRIPTION
|
@@ -203,14 +204,14 @@ module Sah
|
|
203
204
|
abort res.body["errors"].first["message"]
|
204
205
|
end
|
205
206
|
project = res.body
|
206
|
-
puts
|
207
|
+
puts formatter.render(project, headers: false)
|
207
208
|
else
|
208
209
|
res = api.list_project
|
209
210
|
if res.body.key? "errors"
|
210
211
|
abort res.body["errors"].first["message"]
|
211
212
|
end
|
212
213
|
projects = res.body["values"].sort_by{|e| e["id"].to_i }
|
213
|
-
puts
|
214
|
+
puts formatter.render(projects, fields: %w(id key name description))
|
214
215
|
end
|
215
216
|
end
|
216
217
|
|
@@ -310,14 +311,14 @@ module Sah
|
|
310
311
|
abort res.body["errors"].first["message"]
|
311
312
|
end
|
312
313
|
repository = res.body
|
313
|
-
puts
|
314
|
+
puts formatter.render(repository, headers: false)
|
314
315
|
else
|
315
316
|
res = api.list_repository(project_key)
|
316
317
|
if res.body.key? "errors"
|
317
318
|
abort res.body["errors"].first["message"]
|
318
319
|
end
|
319
320
|
repositories = (res.body["values"] || []).sort_by{|e| e["id"].to_i }
|
320
|
-
puts
|
321
|
+
puts formatter.render(repositories, fields: %w(id slug name))
|
321
322
|
end
|
322
323
|
end
|
323
324
|
|
@@ -369,14 +370,14 @@ module Sah
|
|
369
370
|
abort res.body["errors"].first["message"]
|
370
371
|
end
|
371
372
|
user = res.body
|
372
|
-
puts
|
373
|
+
puts formatter.render(user, headers: false)
|
373
374
|
else
|
374
375
|
res = api.list_user
|
375
376
|
if res.body.key? "errors"
|
376
377
|
abort res.body["errors"].first["message"]
|
377
378
|
end
|
378
379
|
users = (res.body["values"] || []).sort_by{|e| e["id"].to_i }
|
379
|
-
puts
|
380
|
+
puts formatter.render(users, fields: %w(id slug name displayName))
|
380
381
|
end
|
381
382
|
end
|
382
383
|
|
@@ -388,13 +389,19 @@ module Sah
|
|
388
389
|
private
|
389
390
|
|
390
391
|
def config
|
391
|
-
@config ||= Config.new(options[:profile],
|
392
|
+
@config ||= Config.new(options[:profile],
|
393
|
+
verbose: options[:verbose],
|
394
|
+
format: options[:format])
|
392
395
|
end
|
393
396
|
|
394
397
|
def api
|
395
398
|
@api ||= API.new(config)
|
396
399
|
end
|
397
400
|
|
401
|
+
def formatter
|
402
|
+
@formatter ||= Formatter.new(format: options[:format])
|
403
|
+
end
|
404
|
+
|
398
405
|
def open_editor
|
399
406
|
tmp = Tempfile.new('sah')
|
400
407
|
editor = ENV['GIT_EDITOR'] || ENV['EDITOR'] || 'vi'
|
data/lib/sah/config.rb
CHANGED
@@ -5,14 +5,15 @@ module Sah
|
|
5
5
|
attr_accessor :user, :password, :url,
|
6
6
|
:upstream_fetch_pull_request, :upstream_prevent_push,
|
7
7
|
:upstream_remote_name,
|
8
|
-
:protocol, :verbose
|
8
|
+
:protocol, :format, :verbose
|
9
9
|
|
10
|
-
def initialize(profile, verbose: false)
|
10
|
+
def initialize(profile, verbose: false, format: :table)
|
11
11
|
@user, @password, @url = nil, nil, nil
|
12
12
|
@upstream_fetch_pull_request = false
|
13
13
|
@upstream_prevent_push = false
|
14
14
|
@upstream_remote_name = "upstream"
|
15
15
|
@protocol = "ssh"
|
16
|
+
@format = format
|
16
17
|
@verbose = verbose
|
17
18
|
|
18
19
|
profile_prefix = "sah\.profile\.#{profile}"
|
@@ -43,6 +44,9 @@ module Sah
|
|
43
44
|
unless ["ssh", "http"].include? @protocol
|
44
45
|
abort "protocol must be set to ssh or http: #{@protocol}"
|
45
46
|
end
|
47
|
+
unless ["json", "table"].include? @format
|
48
|
+
abort "format must be set to json or table: #{@format}"
|
49
|
+
end
|
46
50
|
end
|
47
51
|
end
|
48
52
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require "hirb"
|
2
|
+
require "hirb-unicode"
|
3
|
+
|
4
|
+
module Sah
|
5
|
+
class Formatter
|
6
|
+
def initialize(format: "table")
|
7
|
+
@format = case format
|
8
|
+
when "table"
|
9
|
+
Format::Hirb
|
10
|
+
when "json"
|
11
|
+
Format::Json
|
12
|
+
else
|
13
|
+
abort "format must be set to json or table: #{format}"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def render(*args)
|
18
|
+
@format.render(*args)
|
19
|
+
end
|
20
|
+
|
21
|
+
module Format
|
22
|
+
class Hirb < Hirb::Helpers::AutoTable
|
23
|
+
end
|
24
|
+
|
25
|
+
class Json
|
26
|
+
def self.render(objects, fields: [], headers: :_)
|
27
|
+
if fields.empty?
|
28
|
+
objects.to_json
|
29
|
+
else
|
30
|
+
objects.map do |object|
|
31
|
+
object.select{ |k, v| fields.nil? || fields.include?(k) }
|
32
|
+
end.to_json
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/sah/version.rb
CHANGED
data/lib/sah.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sah
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- f440
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -185,6 +185,7 @@ files:
|
|
185
185
|
- lib/sah/api.rb
|
186
186
|
- lib/sah/cli.rb
|
187
187
|
- lib/sah/config.rb
|
188
|
+
- lib/sah/formatter.rb
|
188
189
|
- lib/sah/version.rb
|
189
190
|
- misc/zsh-completion/_sah
|
190
191
|
- sah.gemspec
|
@@ -208,7 +209,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
208
209
|
version: '0'
|
209
210
|
requirements: []
|
210
211
|
rubyforge_project:
|
211
|
-
rubygems_version: 2.
|
212
|
+
rubygems_version: 2.5.1
|
212
213
|
signing_key:
|
213
214
|
specification_version: 4
|
214
215
|
summary: Command line util for Atlassian Bitbucket Server
|