geordi 2.6.0 → 2.7.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -2
- data/Gemfile +1 -0
- data/Gemfile.lock +42 -1
- data/features/commit.feature +17 -0
- data/features/cucumber.feature +27 -3
- data/features/firefox.feature +3 -3
- data/features/support/step_definitions/miscellaneous_steps.rb +8 -0
- data/lib/geordi/commands/commit.rb +8 -3
- data/lib/geordi/commands/create_database_yml.rb +4 -2
- data/lib/geordi/commands/cucumber.rb +11 -7
- data/lib/geordi/commands/tests.rb +2 -2
- data/lib/geordi/cucumber.rb +1 -1
- data/lib/geordi/gitpt.rb +41 -28
- data/lib/geordi/util.rb +9 -0
- data/lib/geordi/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 17516fcb96c1a27828c5e43eea96d1ca0d8f72df42e467ff842a70a002b86459
|
|
4
|
+
data.tar.gz: 8985476313a0c6ed93e494878e388edd3ba72a8911c7785dfe53cc9f7e17c284
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: afcfaace06ff3ee48b5165de088849c537d73dea2ac544807793f59902634e07b879ca6968c12e0df3deb375686ea377fe63fd531724dae7a2125028fa9a0189
|
|
7
|
+
data.tar.gz: 1dbac4ddff4d8c4b505756bd7ea36a2d667141268ebf90f28fd6faec32b6afb092f1f4dc32ff6442f13b07a5bc84398530bd695e1668e23ce42076752a0f7989
|
data/CHANGELOG.md
CHANGED
|
@@ -5,12 +5,20 @@ This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
## Unreleased
|
|
8
|
-
|
|
9
8
|
### Compatible changes
|
|
10
|
-
|
|
11
9
|
### Breaking changes
|
|
12
10
|
|
|
13
11
|
|
|
12
|
+
## Unreleased
|
|
13
|
+
|
|
14
|
+
### Compatible changes
|
|
15
|
+
- Fixed [#68](https://github.com/makandra/geordi/issues/68): The "cucumber" command now fails early when @solo features fail.
|
|
16
|
+
- Added: The "setup" command now prints the db adapter when prompting db credentials.
|
|
17
|
+
- Fixed [#71](https://github.com/makandra/geordi/issues/71): When used without staged changes, the "commit" command will print a warning and create an empty commit. Any arguments to the command are forwarded to Git.
|
|
18
|
+
- Fixed: The "commit" command will not print the extra message any more.
|
|
19
|
+
- Added: The "commit" command prints a (progress) loading message. The message is removed once loading is done.
|
|
20
|
+
|
|
21
|
+
|
|
14
22
|
## 2.6.0 2019-11-04
|
|
15
23
|
|
|
16
24
|
### Compatible changes
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
geordi (2.
|
|
4
|
+
geordi (2.7.0)
|
|
5
5
|
thor (>= 0.18.0)
|
|
6
6
|
|
|
7
7
|
GEM
|
|
@@ -12,27 +12,50 @@ GEM
|
|
|
12
12
|
childprocess (>= 0.3.6)
|
|
13
13
|
cucumber (>= 1.1.1)
|
|
14
14
|
rspec-expectations (>= 2.7.0)
|
|
15
|
+
axiom-types (0.1.1)
|
|
16
|
+
descendants_tracker (~> 0.0.4)
|
|
17
|
+
ice_nine (~> 0.11.0)
|
|
18
|
+
thread_safe (~> 0.3, >= 0.3.1)
|
|
15
19
|
builder (3.2.3)
|
|
16
20
|
childprocess (1.0.1)
|
|
17
21
|
rake (< 13.0)
|
|
22
|
+
coercible (1.0.0)
|
|
23
|
+
descendants_tracker (~> 0.0.1)
|
|
18
24
|
cucumber (1.3.20)
|
|
19
25
|
builder (>= 2.1.2)
|
|
20
26
|
diff-lcs (>= 1.1.3)
|
|
21
27
|
gherkin (~> 2.12)
|
|
22
28
|
multi_json (>= 1.7.5, < 2.0)
|
|
23
29
|
multi_test (>= 0.1.2)
|
|
30
|
+
declarative (0.0.10)
|
|
31
|
+
declarative-option (0.1.0)
|
|
32
|
+
descendants_tracker (0.0.4)
|
|
33
|
+
thread_safe (~> 0.3, >= 0.3.1)
|
|
24
34
|
diff-lcs (1.2.5)
|
|
35
|
+
equalizer (0.0.11)
|
|
36
|
+
excon (0.67.0)
|
|
37
|
+
faraday (0.17.0)
|
|
38
|
+
multipart-post (>= 1.2, < 3)
|
|
39
|
+
faraday_middleware (0.13.1)
|
|
40
|
+
faraday (>= 0.7.4, < 1.0)
|
|
25
41
|
gherkin (2.12.2)
|
|
26
42
|
multi_json (~> 1.3)
|
|
27
43
|
highline (1.6.21)
|
|
44
|
+
ice_nine (0.11.2)
|
|
28
45
|
launchy (2.4.3)
|
|
29
46
|
addressable (~> 2.3)
|
|
47
|
+
mimemagic (0.3.3)
|
|
30
48
|
multi_json (1.13.1)
|
|
31
49
|
multi_test (0.1.2)
|
|
50
|
+
multipart-post (2.1.1)
|
|
32
51
|
parallel (0.5.16)
|
|
33
52
|
parallel_tests (0.6.18)
|
|
34
53
|
parallel
|
|
35
54
|
rake (10.5.0)
|
|
55
|
+
representable (3.0.4)
|
|
56
|
+
declarative (< 0.1.0)
|
|
57
|
+
declarative-option (< 0.2.0)
|
|
58
|
+
uber (< 0.2.0)
|
|
36
59
|
rspec-expectations (3.4.0)
|
|
37
60
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
38
61
|
rspec-support (~> 3.4.0)
|
|
@@ -41,6 +64,23 @@ GEM
|
|
|
41
64
|
rspec-support (~> 3.4.0)
|
|
42
65
|
rspec-support (3.4.1)
|
|
43
66
|
thor (0.20.3)
|
|
67
|
+
thread_safe (0.3.6)
|
|
68
|
+
tracker_api (1.10.0)
|
|
69
|
+
addressable
|
|
70
|
+
equalizer
|
|
71
|
+
excon
|
|
72
|
+
faraday
|
|
73
|
+
faraday_middleware
|
|
74
|
+
mimemagic
|
|
75
|
+
multi_json
|
|
76
|
+
representable
|
|
77
|
+
virtus
|
|
78
|
+
uber (0.1.0)
|
|
79
|
+
virtus (1.0.5)
|
|
80
|
+
axiom-types (~> 0.1)
|
|
81
|
+
coercible (~> 1.0)
|
|
82
|
+
descendants_tracker (~> 0.0, >= 0.0.3)
|
|
83
|
+
equalizer (~> 0.0, >= 0.0.9)
|
|
44
84
|
|
|
45
85
|
PLATFORMS
|
|
46
86
|
ruby
|
|
@@ -52,6 +92,7 @@ DEPENDENCIES
|
|
|
52
92
|
launchy
|
|
53
93
|
parallel_tests
|
|
54
94
|
rspec-mocks
|
|
95
|
+
tracker_api
|
|
55
96
|
|
|
56
97
|
BUNDLED WITH
|
|
57
98
|
1.17.3
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
@announce-output
|
|
2
|
+
Feature: Creating a git commit from a Pivotal Tracker story
|
|
3
|
+
|
|
4
|
+
Scenario: Extra arguments are forwarded to "git commit"
|
|
5
|
+
Given I have staged changes
|
|
6
|
+
|
|
7
|
+
When I run `geordi commit --extra-option` interactively
|
|
8
|
+
# No optional message
|
|
9
|
+
And I type ""
|
|
10
|
+
Then the output should contain "Util.system! git, commit, --allow-empty, -m, [#12] Test Story, --extra-option"
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
Scenario: With no staged changes, a warning is printed
|
|
14
|
+
When I run `geordi commit --allow-empty` interactively
|
|
15
|
+
# No optional message
|
|
16
|
+
And I type ""
|
|
17
|
+
Then the output should contain "> No staged changes. Will create an empty commit."
|
data/features/cucumber.feature
CHANGED
|
@@ -18,6 +18,7 @@ Feature: The cucumber command
|
|
|
18
18
|
When I run `geordi cucumber features/single.feature`
|
|
19
19
|
Then the output should contain "# Running features"
|
|
20
20
|
And the output should contain "> Only: features/single.feature"
|
|
21
|
+
And the output should contain "Features green."
|
|
21
22
|
But the output should not contain "parallel"
|
|
22
23
|
|
|
23
24
|
|
|
@@ -60,6 +61,7 @@ Feature: The cucumber command
|
|
|
60
61
|
And the output should contain "Rerunning failed scenarios"
|
|
61
62
|
And the output should contain "Using the rerun profile"
|
|
62
63
|
And the exit status should be 1
|
|
64
|
+
And the output should contain "Features failed."
|
|
63
65
|
|
|
64
66
|
|
|
65
67
|
Scenario: Running all features in a given subfolder
|
|
@@ -96,10 +98,10 @@ Feature: The cucumber command
|
|
|
96
98
|
"""
|
|
97
99
|
|
|
98
100
|
When I run `geordi cucumber --verbose features`
|
|
99
|
-
Then the output should contain "# Running features"
|
|
100
|
-
And the output should match /^> .*cucumber .*--tags \"~@solo\"/
|
|
101
|
-
And the output should contain "# Running @solo features"
|
|
101
|
+
Then the output should contain "# Running @solo features"
|
|
102
102
|
And the output should match /^> .*cucumber .*--tags @solo/
|
|
103
|
+
And the output should contain "# Running features"
|
|
104
|
+
And the output should match /^> .*cucumber .*--tags \"~@solo\"/
|
|
103
105
|
|
|
104
106
|
|
|
105
107
|
Scenario: When there are no scenarios tagged @solo, the extra run is skipped
|
|
@@ -146,6 +148,28 @@ Feature: The cucumber command
|
|
|
146
148
|
And the output should not contain "No such file or directory"
|
|
147
149
|
|
|
148
150
|
|
|
151
|
+
Scenario: It does not start the full test run when the @solo run fails
|
|
152
|
+
Given a file named "features/step_definitions/test_steps.rb" with:
|
|
153
|
+
"""
|
|
154
|
+
Given 'this test fails' do
|
|
155
|
+
raise
|
|
156
|
+
end
|
|
157
|
+
"""
|
|
158
|
+
And a file named "features/failing.feature" with:
|
|
159
|
+
"""
|
|
160
|
+
Feature: Failing feature
|
|
161
|
+
@solo
|
|
162
|
+
Scenario: Failing scenario
|
|
163
|
+
And this test fails
|
|
164
|
+
Scenario: Other scenario
|
|
165
|
+
"""
|
|
166
|
+
|
|
167
|
+
When I run `geordi cucumber`
|
|
168
|
+
Then the output should contain "# Running @solo features"
|
|
169
|
+
And the output should contain "Features failed."
|
|
170
|
+
But the output should not contain "# Running features"
|
|
171
|
+
|
|
172
|
+
|
|
149
173
|
Scenario: Specifying a firefox version to use
|
|
150
174
|
Given a file named "features/sub/one.feature" with:
|
|
151
175
|
"""
|
data/features/firefox.feature
CHANGED
|
@@ -6,7 +6,7 @@ Feature: The firefox/chrome command
|
|
|
6
6
|
Given a file named "testfile" with "testcontent"
|
|
7
7
|
|
|
8
8
|
When I run `geordi firefox cat testfile`
|
|
9
|
-
Then the output should contain ">
|
|
9
|
+
Then the output should contain "> Run `geordi vnc` to view the Selenium test browsers"
|
|
10
10
|
And the output should contain "testcontent"
|
|
11
11
|
But the output should not contain "Firefox for Selenium"
|
|
12
12
|
|
|
@@ -15,7 +15,7 @@ Feature: The firefox/chrome command
|
|
|
15
15
|
Given a file named "testfile" with "testcontent"
|
|
16
16
|
|
|
17
17
|
When I run `geordi chrome cat testfile`
|
|
18
|
-
Then the output should contain ">
|
|
18
|
+
Then the output should contain "> Run `geordi vnc` to view the Selenium test browsers"
|
|
19
19
|
And the output should contain "testcontent"
|
|
20
20
|
|
|
21
21
|
|
|
@@ -48,7 +48,7 @@ Feature: The firefox/chrome command
|
|
|
48
48
|
And a file named "testfile" with "testcontent"
|
|
49
49
|
|
|
50
50
|
When I run `geordi firefox cat testfile`
|
|
51
|
-
Then the output should contain ">
|
|
51
|
+
Then the output should contain "> Run `geordi vnc`"
|
|
52
52
|
And the output should contain "testcontent"
|
|
53
53
|
But the output should not contain "Firefox for Selenium"
|
|
54
54
|
|
|
@@ -3,17 +3,22 @@ desc 'commit', 'Commit using a story title from Pivotal Tracker'
|
|
|
3
3
|
long_desc <<-LONGDESC
|
|
4
4
|
Example: `geordi commit`
|
|
5
5
|
|
|
6
|
+
Any extra arguments are forwarded to `git commit -m <message>`.
|
|
7
|
+
|
|
8
|
+
If there are no staged changes, prints a warning but will continue to create
|
|
9
|
+
an empty commit.
|
|
10
|
+
|
|
6
11
|
On the first execution we ask for your Pivotal Tracker API token. It will be
|
|
7
12
|
stored in `~/.gitpt`.
|
|
8
13
|
LONGDESC
|
|
9
14
|
|
|
10
|
-
def commit
|
|
15
|
+
def commit(*git_args)
|
|
11
16
|
raise <<-TEXT if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.1')
|
|
12
|
-
Unsupported Ruby Version #{RUBY_VERSION}. `geordi commit`
|
|
17
|
+
Unsupported Ruby Version #{RUBY_VERSION}. `geordi commit` requires Ruby 2.1+.
|
|
13
18
|
TEXT
|
|
14
19
|
|
|
15
20
|
require 'geordi/gitpt'
|
|
16
21
|
|
|
17
|
-
Gitpt.new.run
|
|
22
|
+
Gitpt.new.run(git_args)
|
|
18
23
|
end
|
|
19
24
|
|
|
@@ -6,10 +6,12 @@ def create_database_yml
|
|
|
6
6
|
if File.exists?(sample_yml) and not File.exists?(real_yml)
|
|
7
7
|
announce 'Creating ' + real_yml
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
sample = File.read(sample_yml)
|
|
10
|
+
adapter = sample.match(/adapter: (\w+)\n/).captures.first
|
|
11
|
+
|
|
12
|
+
print "Please enter your #{adapter} password: "
|
|
10
13
|
db_password = STDIN.gets.strip
|
|
11
14
|
|
|
12
|
-
sample = File.read(sample_yml)
|
|
13
15
|
real = sample.gsub(/password:.*$/, "password: #{db_password}")
|
|
14
16
|
File.open(real_yml, 'w') { |f| f.write(real) }
|
|
15
17
|
|
|
@@ -54,9 +54,7 @@ def cucumber(*args)
|
|
|
54
54
|
cmd_opts, files = args.partition { |f| f.start_with? '-' }
|
|
55
55
|
cmd_opts << '--format' << 'pretty' << '--backtrace' if options.debug
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
# Serial run of @solo scenarios
|
|
57
|
+
# Serial run of @solo scenarios ############################################
|
|
60
58
|
if files.any? { |f| f.include? ':' }
|
|
61
59
|
note '@solo run skipped when called with line numbers' if options.verbose
|
|
62
60
|
else
|
|
@@ -73,16 +71,20 @@ def cucumber(*args)
|
|
|
73
71
|
solo_cmd_opts << '--tags' << '@solo'
|
|
74
72
|
|
|
75
73
|
announce 'Running @solo features'
|
|
76
|
-
Geordi::Cucumber.new.run files, solo_cmd_opts, :verbose => options.verbose, :parallel => false
|
|
74
|
+
solo_success = Geordi::Cucumber.new.run files, solo_cmd_opts, :verbose => options.verbose, :parallel => false
|
|
75
|
+
solo_success or fail 'Features failed.'
|
|
77
76
|
end
|
|
78
77
|
end
|
|
79
78
|
|
|
80
|
-
#
|
|
81
|
-
|
|
79
|
+
# Parallel run of all given features + reruns ##############################
|
|
80
|
+
announce 'Running features'
|
|
81
|
+
normal_run_successful = Geordi::Cucumber.new.run(files, cmd_opts, :verbose => options.verbose)
|
|
82
|
+
|
|
83
|
+
unless normal_run_successful
|
|
82
84
|
cmd_opts << '--profile' << 'rerun'
|
|
83
85
|
|
|
84
86
|
# Reruns
|
|
85
|
-
(
|
|
87
|
+
(options.rerun + 1).times do |i|
|
|
86
88
|
fail 'Features failed.' if (i == options.rerun) # All reruns done?
|
|
87
89
|
|
|
88
90
|
announce "Rerun ##{ i + 1 } of #{ options.rerun }"
|
|
@@ -90,6 +92,8 @@ def cucumber(*args)
|
|
|
90
92
|
end
|
|
91
93
|
end
|
|
92
94
|
|
|
95
|
+
success 'Features green.'
|
|
96
|
+
|
|
93
97
|
else
|
|
94
98
|
note 'Cucumber not employed.'
|
|
95
99
|
end
|
|
@@ -2,9 +2,9 @@ desc 'tests', 'Run all employed tests'
|
|
|
2
2
|
def tests
|
|
3
3
|
rake_result = invoke_cmd 'with_rake'
|
|
4
4
|
|
|
5
|
+
# Since `rake` usually is configured to run all tests, only run them if `rake`
|
|
6
|
+
# did not perform
|
|
5
7
|
if rake_result == :did_not_perform
|
|
6
|
-
# Since `rake` usually runs all tests, only run them here if `rake` did not
|
|
7
|
-
# perform
|
|
8
8
|
invoke_cmd 'unit'
|
|
9
9
|
invoke_cmd 'rspec'
|
|
10
10
|
invoke_cmd 'cucumber'
|
data/lib/geordi/cucumber.rb
CHANGED
|
@@ -60,7 +60,7 @@ module Geordi
|
|
|
60
60
|
ENV["BROWSER"] = ENV["LAUNCHY_BROWSER"] = File.expand_path('../../../bin/launchy_browser', __FILE__)
|
|
61
61
|
ENV["DISPLAY"] = VNC_DISPLAY
|
|
62
62
|
|
|
63
|
-
note '
|
|
63
|
+
note 'Run `geordi vnc` to view the Selenium test browsers'
|
|
64
64
|
end
|
|
65
65
|
end
|
|
66
66
|
|
data/lib/geordi/gitpt.rb
CHANGED
|
@@ -9,22 +9,23 @@ class Gitpt
|
|
|
9
9
|
|
|
10
10
|
def initialize
|
|
11
11
|
self.highline = HighLine.new
|
|
12
|
+
self.client = build_client(read_settings)
|
|
12
13
|
end
|
|
13
14
|
|
|
14
|
-
def run
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
def run(git_args)
|
|
16
|
+
warn <<-WARNING if !Geordi::Util.staged_changes?
|
|
17
|
+
No staged changes. Will create an empty commit.
|
|
18
|
+
WARNING
|
|
17
19
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
choose_story(client.me, applicable_stories)
|
|
20
|
+
story = choose_story
|
|
21
|
+
if story
|
|
22
|
+
create_commit "[##{story.id}] #{story.name}", *git_args
|
|
23
|
+
end
|
|
23
24
|
end
|
|
24
25
|
|
|
25
26
|
private
|
|
26
27
|
|
|
27
|
-
attr_accessor :highline
|
|
28
|
+
attr_accessor :highline, :client
|
|
28
29
|
|
|
29
30
|
def read_settings
|
|
30
31
|
file_path = File.join(ENV['HOME'], SETTINGS_FILE_NAME)
|
|
@@ -51,9 +52,8 @@ class Gitpt
|
|
|
51
52
|
TrackerApi::Client.new(:token => settings.fetch(:token))
|
|
52
53
|
end
|
|
53
54
|
|
|
54
|
-
def load_projects
|
|
55
|
+
def load_projects
|
|
55
56
|
project_ids = read_project_ids
|
|
56
|
-
|
|
57
57
|
project_ids.collect { |project_id| client.project(project_id) }
|
|
58
58
|
end
|
|
59
59
|
|
|
@@ -76,19 +76,32 @@ class Gitpt
|
|
|
76
76
|
end
|
|
77
77
|
end
|
|
78
78
|
|
|
79
|
-
def
|
|
80
|
-
projects
|
|
79
|
+
def applicable_stories
|
|
80
|
+
projects = load_projects
|
|
81
|
+
projects.collect do |project|
|
|
82
|
+
project.stories(:filter => 'state:started,finished,rejected')
|
|
83
|
+
end.flatten
|
|
81
84
|
end
|
|
82
85
|
|
|
83
|
-
def choose_story
|
|
84
|
-
|
|
86
|
+
def choose_story
|
|
87
|
+
if Geordi::Util.testing?
|
|
88
|
+
return OpenStruct.new(:id => 12, :name => 'Test Story')
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
loading_message = 'Connecting to Pivotal Tracker ...'
|
|
92
|
+
print(loading_message)
|
|
93
|
+
stories = applicable_stories
|
|
94
|
+
reset_loading_message = "\r#{ ' ' * (loading_message.length + stories.length)}\r"
|
|
85
95
|
|
|
86
96
|
highline.choose do |menu|
|
|
87
|
-
menu.header =
|
|
88
|
-
|
|
97
|
+
menu.header = 'Choose a story'
|
|
98
|
+
|
|
99
|
+
stories.each do |story|
|
|
100
|
+
print '.' # Progress
|
|
101
|
+
|
|
89
102
|
state = story.current_state
|
|
90
103
|
owners = story.owners
|
|
91
|
-
owner_is_me = owners.collect(&:id).include?(me.id)
|
|
104
|
+
owner_is_me = owners.collect(&:id).include?(client.me.id)
|
|
92
105
|
|
|
93
106
|
if state == 'started'
|
|
94
107
|
state = HighLine::GREEN + state + HighLine::RESET
|
|
@@ -100,22 +113,22 @@ class Gitpt
|
|
|
100
113
|
|
|
101
114
|
label = "(#{owners.collect(&:name).join(', ')}, #{state}) #{story.name}"
|
|
102
115
|
label = bold(label) if owner_is_me
|
|
103
|
-
|
|
116
|
+
|
|
117
|
+
menu.choice(label) { return story }
|
|
104
118
|
end
|
|
119
|
+
|
|
105
120
|
menu.hidden ''
|
|
121
|
+
print reset_loading_message # Once menu is build
|
|
106
122
|
end
|
|
107
123
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
highline.say message
|
|
124
|
+
nil # Return nothing
|
|
125
|
+
end
|
|
111
126
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
end
|
|
127
|
+
def create_commit(message, *git_args)
|
|
128
|
+
extra = highline.ask("\nAdd an optional message").strip
|
|
129
|
+
message << ' - ' << extra if (extra != "")
|
|
116
130
|
|
|
117
|
-
|
|
118
|
-
end
|
|
131
|
+
Geordi::Util.system! 'git', 'commit', '--allow-empty', '-m', message, *git_args
|
|
119
132
|
end
|
|
120
133
|
|
|
121
134
|
def bold(string)
|
data/lib/geordi/util.rb
CHANGED
|
@@ -80,6 +80,15 @@ module Geordi
|
|
|
80
80
|
end
|
|
81
81
|
end
|
|
82
82
|
|
|
83
|
+
def staged_changes?
|
|
84
|
+
if testing?
|
|
85
|
+
ENV['GEORDI_TESTING_STAGED_CHANGES'] == 'true'
|
|
86
|
+
else
|
|
87
|
+
statuses = `git status --porcelain`.split("\n")
|
|
88
|
+
statuses.any? { |l| l.start_with? 'A' }
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
83
92
|
def deploy_targets
|
|
84
93
|
Dir['config/deploy/*'].map do |f|
|
|
85
94
|
File.basename f, '.rb' # Filename without .rb extension
|
data/lib/geordi/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: geordi
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.7.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Henning Koch
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2019-11-
|
|
11
|
+
date: 2019-11-25 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: thor
|
|
@@ -77,6 +77,7 @@ files:
|
|
|
77
77
|
- bin/run_tests
|
|
78
78
|
- bin/shell-for
|
|
79
79
|
- bin/tests
|
|
80
|
+
- features/commit.feature
|
|
80
81
|
- features/console.feature
|
|
81
82
|
- features/cucumber.feature
|
|
82
83
|
- features/deploy.feature
|