git-story-workflow 0.3.3 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 561a439d3accf19a1702592bd7af589740e8fcae
4
- data.tar.gz: bd18119c0f54547d96f989c28fbaa88cbb727994
3
+ metadata.gz: 0f354b91d58da485c046c3eda0a06571ee59af8b
4
+ data.tar.gz: 4e023a2278d47239f859cab5969814d5b5a2cdab
5
5
  SHA512:
6
- metadata.gz: 22dc838d3bcfae51859c4ce6f71663e20ebc5fc5009452533ba1c584adbb05bef5fccf811cb53f87f020d4266c08c7f1a40bdf8a58508eee5f9580374756677a
7
- data.tar.gz: fa3b43b63f4f4864d4f53dec07d29e52822aa8fae5dd49345d13e41470451a169374dd1c86400f818f5a804cd98a708e2cd4717b42e2a3786e6ad18b2b2b4f0e
6
+ metadata.gz: 491e64e415aa2db7afc25c3efd36fd8558f9dd8b2ce07fc3108c04ad29cc6aa7cdc031596efc325544279d35f1d0bc9c00dd7362f03402c623e7939258c566f1
7
+ data.tar.gz: 641d8a133fbabf70d320e1a078d7ff29a887307907bd11a0ce62ee99039db9d1a83a89087157e9cf4d2f870eeaf31f367d0ed6c0499a9720ee43d3c3cf479fda
data/Rakefile CHANGED
@@ -17,6 +17,7 @@ GemHadar do
17
17
  title name.camelize
18
18
  executables << 'git-story'
19
19
 
20
+ dependency 'infobar'
20
21
  dependency 'tins'
21
22
  dependency 'mize'
22
23
  dependency 'term-ansicolor'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.3
1
+ 0.3.4
@@ -1,14 +1,14 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: git-story-workflow 0.3.3 ruby lib
2
+ # stub: git-story-workflow 0.3.4 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "git-story-workflow".freeze
6
- s.version = "0.3.3"
6
+ s.version = "0.3.4"
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
9
9
  s.require_paths = ["lib".freeze]
10
10
  s.authors = ["Florian Frank".freeze]
11
- s.date = "2018-01-17"
11
+ s.date = "2018-02-12"
12
12
  s.description = "Gem abstracting a git workflow\u2026".freeze
13
13
  s.email = "flori@ping.de".freeze
14
14
  s.executables = ["git-story".freeze]
@@ -29,6 +29,7 @@ Gem::Specification.new do |s|
29
29
  s.add_development_dependency(%q<rake>.freeze, [">= 0"])
30
30
  s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
31
31
  s.add_development_dependency(%q<rspec>.freeze, [">= 0"])
32
+ s.add_runtime_dependency(%q<infobar>.freeze, [">= 0"])
32
33
  s.add_runtime_dependency(%q<tins>.freeze, [">= 0"])
33
34
  s.add_runtime_dependency(%q<mize>.freeze, [">= 0"])
34
35
  s.add_runtime_dependency(%q<term-ansicolor>.freeze, [">= 0"])
@@ -38,6 +39,7 @@ Gem::Specification.new do |s|
38
39
  s.add_dependency(%q<rake>.freeze, [">= 0"])
39
40
  s.add_dependency(%q<simplecov>.freeze, [">= 0"])
40
41
  s.add_dependency(%q<rspec>.freeze, [">= 0"])
42
+ s.add_dependency(%q<infobar>.freeze, [">= 0"])
41
43
  s.add_dependency(%q<tins>.freeze, [">= 0"])
42
44
  s.add_dependency(%q<mize>.freeze, [">= 0"])
43
45
  s.add_dependency(%q<term-ansicolor>.freeze, [">= 0"])
@@ -48,6 +50,7 @@ Gem::Specification.new do |s|
48
50
  s.add_dependency(%q<rake>.freeze, [">= 0"])
49
51
  s.add_dependency(%q<simplecov>.freeze, [">= 0"])
50
52
  s.add_dependency(%q<rspec>.freeze, [">= 0"])
53
+ s.add_dependency(%q<infobar>.freeze, [">= 0"])
51
54
  s.add_dependency(%q<tins>.freeze, [">= 0"])
52
55
  s.add_dependency(%q<mize>.freeze, [">= 0"])
53
56
  s.add_dependency(%q<term-ansicolor>.freeze, [">= 0"])
@@ -97,7 +97,7 @@ class Git::Story::App
97
97
  auth_token = complex_config.story.semaphore_auth_token
98
98
  project = complex_config.story.semaphore_project
99
99
  url = "https://semaphoreci.com/api/v1/projects/#{project}/#{branch}/status?auth_token=#{auth_token}"
100
- Git::Story::SemaphoreResponse.get(url)
100
+ Git::Story::SemaphoreResponse.get(url, debug: @debug)
101
101
  rescue => e
102
102
  "Getting #{url.inspect} => #{e.class}: #{e}".red
103
103
  end
@@ -107,7 +107,7 @@ class Git::Story::App
107
107
  auth_token = complex_config.story.semaphore_auth_token
108
108
  project = complex_config.story.semaphore_project
109
109
  url = "https://semaphoreci.com/api/v1/projects/#{project}/servers/#{server}?auth_token=#{auth_token}"
110
- server = Git::Story::SemaphoreResponse.get(url)
110
+ server = Git::Story::SemaphoreResponse.get(url, debug: @debug)
111
111
  deploys = server.deploys
112
112
  upcoming = deploys.select(&:pending?)&.last
113
113
  current = deploys.find(&:passed?)
@@ -1,12 +1,15 @@
1
1
  require 'json'
2
2
  require 'time'
3
3
  require 'open-uri'
4
+ require 'infobar'
4
5
 
5
6
  class Git::Story::SemaphoreResponse < JSON::GenericObject
6
7
  def self.get(url, debug: false)
7
8
  data = open(url).read
8
9
  debug and STDERR.puts JSON.pretty_generate(JSON(data))
9
- JSON(data, object_class: self)
10
+ result = JSON(data, object_class: self)
11
+ result.debug = debug
12
+ result
10
13
  end
11
14
 
12
15
  def duration(time = nil)
@@ -56,6 +59,25 @@ class Git::Story::SemaphoreResponse < JSON::GenericObject
56
59
  branch_name || server_name
57
60
  end
58
61
 
62
+ def branch_history
63
+ if branch_history_url
64
+ self.class.get(branch_history_url, debug: debug)&.builds
65
+ else
66
+ []
67
+ end
68
+ end
69
+
70
+ def estimated_duration
71
+ times = branch_history.select { |b| b.result == 'passed' }.map { |b|
72
+ Time.parse(b.finished_at) - Time.parse(b.started_at)
73
+ }
74
+ if times.empty?
75
+ duration
76
+ else
77
+ times.sum / times.size
78
+ end.to_f
79
+ end
80
+
59
81
  def to_s
60
82
  r = case
61
83
  when pending? && building?
@@ -69,9 +91,17 @@ class Git::Story::SemaphoreResponse < JSON::GenericObject
69
91
  else
70
92
  "#{entity_name} ##{sha1} in state #{result}".blue
71
93
  end
94
+ r = StringIO.new(r)
95
+ Infobar(
96
+ current: duration.to_f.to_i,
97
+ total: estimated_duration.to_i,
98
+ message: ' %l %c/%t seconds ',
99
+ output: r
100
+ ).update
72
101
  r <<
73
102
  "\n Semaphore: #{entity_url}" <<
74
103
  "\n Commit: #{commit.url}" <<
75
104
  "\n Authored: #{(commit.author_name + ' <' + commit.author_email + ?>).bold} @#{commit.timestamp}"
105
+ r.tap(&:rewind).read
76
106
  end
77
107
  end
@@ -1,6 +1,6 @@
1
1
  module Git::Story
2
2
  # Git::Story version
3
- VERSION = '0.3.3'
3
+ VERSION = '0.3.4'
4
4
  VERSION_ARRAY = VERSION.split('.').map(&:to_i) # :nodoc:
5
5
  VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
6
6
  VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git-story-workflow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Frank
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-17 00:00:00.000000000 Z
11
+ date: 2018-02-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gem_hadar
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: infobar
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: tins
71
85
  requirement: !ruby/object:Gem::Requirement