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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f4ce5e276d4ed9cf5530715653dcd53ebfb3d85a
4
- data.tar.gz: cbde0a3c90358917d784c1c21809c8c8f8d7290b
3
+ metadata.gz: 393a7e6d9875efdaee240fb172dc5dc599093bb2
4
+ data.tar.gz: 26d09b3e0890833aea94d1663e4c7e5c67e14767
5
5
  SHA512:
6
- metadata.gz: 6f8a902d17c4f785a5edc0b8c73f962d325efbe2e6c303bf2796d8111b24f0925f86b8f84954e6a8c5cfc9f16b071e0569d5a3a205e374706d79bd09587b6e86
7
- data.tar.gz: b1c0c66496e0232d7d4d0fda0ecf910a523df626020f76fbfc29e01d72d1e5d93cb4baf191bf8ffa3c00b3196cd495ea767f3bd948ebd2db92b9b1ba285352f7
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 Hirb::Helpers::AutoTable.render(project, headers: false)
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 Hirb::Helpers::AutoTable.render(projects, fields: %w(id key name description))
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 Hirb::Helpers::AutoTable.render(repository, headers: false)
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 Hirb::Helpers::AutoTable.render(repositories, fields: %w(id slug name))
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 Hirb::Helpers::AutoTable.render(user, headers: false)
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 Hirb::Helpers::AutoTable.render(users, fields: %w(id slug name displayName))
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], verbose: options[:verbose])
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
@@ -1,3 +1,3 @@
1
1
  module Sah
2
- VERSION = "0.0.11"
2
+ VERSION = "0.0.12"
3
3
  end
data/lib/sah.rb CHANGED
@@ -2,5 +2,6 @@ require "sah/version"
2
2
  require "sah/api"
3
3
  require "sah/cli"
4
4
  require "sah/config"
5
+ require "sah/formatter"
5
6
 
6
7
  module Sah; end
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.11
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: 2015-12-07 00:00:00.000000000 Z
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.4.5.1
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