story_branch 1.0.0 → 2.2.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/.circleci/config.yml +15 -28
- data/.github/workflows/rubocop.yml +4 -6
- data/.gitignore +1 -0
- data/.story_branch.yml +2 -2
- data/Changelog.md +13 -0
- data/README.md +114 -59
- data/lib/story_branch/commands/configure.rb +3 -6
- data/lib/story_branch/commands/create.rb +1 -0
- data/lib/story_branch/commands/finish.rb +1 -0
- data/lib/story_branch/commands/open_issue.rb +1 -0
- data/lib/story_branch/commands/start.rb +1 -0
- data/lib/story_branch/commands/unstart.rb +1 -0
- data/lib/story_branch/config_manager.rb +4 -0
- data/lib/story_branch/constants.rb +17 -0
- data/lib/story_branch/issue_base.rb +21 -0
- data/lib/story_branch/linear_app/issue.rb +18 -0
- data/lib/story_branch/linear_app/team.rb +44 -0
- data/lib/story_branch/linear_app/tracker.rb +55 -0
- data/lib/story_branch/main.rb +11 -25
- data/lib/story_branch/pivotal/project.rb +3 -3
- data/lib/story_branch/tracker_initializer.rb +27 -0
- data/lib/story_branch/url_opener.rb +4 -3
- data/lib/story_branch/version.rb +1 -1
- data/story_branch.gemspec +22 -20
- data/tools/prep_changelog.rb +2 -0
- metadata +173 -38
- data/Gemfile.lock +0 -155
data/lib/story_branch/main.rb
CHANGED
@@ -1,12 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative './pivotal/tracker'
|
4
|
-
require_relative './github/tracker'
|
5
|
-
require_relative './jira/tracker'
|
6
3
|
require_relative './git_utils'
|
7
4
|
require_relative './git_wrapper'
|
8
5
|
require_relative './config_manager'
|
9
6
|
require_relative './url_opener'
|
7
|
+
require_relative 'tracker_initializer'
|
8
|
+
|
10
9
|
require 'tty-prompt'
|
11
10
|
|
12
11
|
module StoryBranch
|
@@ -20,7 +19,7 @@ module StoryBranch
|
|
20
19
|
def initialize
|
21
20
|
@config = ConfigManager.new
|
22
21
|
abort(@config.errors.join("\n")) unless @config.valid?
|
23
|
-
@tracker = initialize_tracker
|
22
|
+
@tracker = StoryBranch::TrackerInitializer.initialize_tracker(config: @config)
|
24
23
|
abort('Invalid tracker configuration setting.') unless @tracker.valid?
|
25
24
|
end
|
26
25
|
|
@@ -114,7 +113,6 @@ module StoryBranch
|
|
114
113
|
true
|
115
114
|
end
|
116
115
|
|
117
|
-
# rubocop:disable Metrics/AbcSize
|
118
116
|
# rubocop:disable Metrics/MethodLength
|
119
117
|
def update_status(current_status, next_status, action)
|
120
118
|
stories = @tracker.stories_with_state(current_status)
|
@@ -139,7 +137,6 @@ module StoryBranch
|
|
139
137
|
story
|
140
138
|
end
|
141
139
|
# rubocop:enable Metrics/MethodLength
|
142
|
-
# rubocop:enable Metrics/AbcSize
|
143
140
|
|
144
141
|
def build_stories_structure(stories)
|
145
142
|
options = {}
|
@@ -198,30 +195,19 @@ module StoryBranch
|
|
198
195
|
# rubocop:enable Metrics/MethodLength
|
199
196
|
|
200
197
|
def build_branch_name(branch_name, story_id)
|
201
|
-
if @config.issue_placement.casecmp('beginning').zero?
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
198
|
+
branch_name = if @config.issue_placement.casecmp('beginning').zero?
|
199
|
+
"#{story_id}-#{branch_name}"
|
200
|
+
else
|
201
|
+
"#{branch_name}-#{story_id}"
|
202
|
+
end
|
203
|
+
return branch_name unless @config.branch_username
|
204
|
+
|
205
|
+
"#{@config.branch_username}/#{branch_name}"
|
206
206
|
end
|
207
207
|
|
208
208
|
def current_branch
|
209
209
|
@current_branch ||= GitWrapper.current_branch
|
210
210
|
end
|
211
|
-
|
212
|
-
def initialize_tracker
|
213
|
-
# TODO: Ideally this would be mapped out somewhere so we don't need to
|
214
|
-
# evaluate anything from the config here
|
215
|
-
tracker_type = @config.tracker_type
|
216
|
-
case tracker_type
|
217
|
-
when 'github'
|
218
|
-
StoryBranch::Github::Tracker.new(**@config.tracker_params)
|
219
|
-
when 'pivotal-tracker'
|
220
|
-
StoryBranch::Pivotal::Tracker.new(**@config.tracker_params)
|
221
|
-
when 'jira'
|
222
|
-
StoryBranch::Jira::Tracker.new(**@config.tracker_params)
|
223
|
-
end
|
224
|
-
end
|
225
211
|
end
|
226
212
|
# rubocop:enable Metrics/ClassLength
|
227
213
|
end
|
@@ -10,17 +10,17 @@ module StoryBranch
|
|
10
10
|
@project = blanket_project
|
11
11
|
end
|
12
12
|
|
13
|
+
private
|
14
|
+
|
13
15
|
# Returns an array of PT Stories (Story Class)
|
14
16
|
# TODO: add other possible args
|
15
|
-
def stories(options = {}
|
17
|
+
def stories(options = {})
|
16
18
|
stories = if options[:id]
|
17
19
|
[@project.stories(options[:id]).get.payload]
|
18
20
|
else
|
19
21
|
@project.stories.get(params: options)
|
20
22
|
end
|
21
23
|
stories = stories.map { |s| Story.new(s, @project) }
|
22
|
-
return stories if estimated == false
|
23
|
-
|
24
24
|
stories.select(&:estimated)
|
25
25
|
end
|
26
26
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative './constants'
|
4
|
+
require_relative './pivotal/tracker'
|
5
|
+
require_relative './github/tracker'
|
6
|
+
require_relative './jira/tracker'
|
7
|
+
require_relative './linear_app/tracker'
|
8
|
+
|
9
|
+
module StoryBranch
|
10
|
+
# helper class to find out which tracker should be initialized based on the
|
11
|
+
# configuration values
|
12
|
+
class TrackerInitializer
|
13
|
+
def self.initialize_tracker(config:)
|
14
|
+
tracker_class = find_tracker_class(config.tracker_type)
|
15
|
+
raise 'Invalid tracker configuration' unless tracker_class
|
16
|
+
|
17
|
+
tracker_class.new(**config.tracker_params)
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.find_tracker_class(tracker_type)
|
21
|
+
tracker_str = StoryBranch::TRACKERS_CLASSES[tracker_type]
|
22
|
+
return nil unless tracker_str
|
23
|
+
|
24
|
+
Kernel.const_get(tracker_str)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -5,11 +5,12 @@ module StoryBranch
|
|
5
5
|
class UrlOpener
|
6
6
|
def self.open_url(url)
|
7
7
|
url = "https://#{url}" unless url.start_with?('http')
|
8
|
-
|
8
|
+
case RbConfig::CONFIG['host_os']
|
9
|
+
when /mswin|mingw|cygwin/
|
9
10
|
system "start #{url}"
|
10
|
-
|
11
|
+
when /darwin/
|
11
12
|
system "open #{url}"
|
12
|
-
|
13
|
+
when /linux|bsd/
|
13
14
|
system "xdg-open #{url}"
|
14
15
|
end
|
15
16
|
end
|
data/lib/story_branch/version.rb
CHANGED
data/story_branch.gemspec
CHANGED
@@ -39,7 +39,7 @@ Gem::Specification.new do |spec|
|
|
39
39
|
'documentation_uri' => 'https://github.com/story-branch/story_branch/blob/master/README.md',
|
40
40
|
'source_code_uri' => 'https://github.com/story-branch/story_branch'
|
41
41
|
}
|
42
|
-
spec.required_ruby_version = ['>= 2.4', '< 3']
|
42
|
+
spec.required_ruby_version = ['>= 2.4', '< 3.1']
|
43
43
|
|
44
44
|
# Specify which files should be added to the gem when it is released.
|
45
45
|
# The `git ls-files -z` loads the files in the RubyGem that have been
|
@@ -53,25 +53,27 @@ Gem::Specification.new do |spec|
|
|
53
53
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
54
54
|
spec.require_paths = ['lib']
|
55
55
|
|
56
|
-
spec.add_runtime_dependency 'blanket_wrapper', '~> 3.0'
|
57
|
-
spec.add_runtime_dependency 'damerau-levenshtein', '~> 1.3'
|
58
|
-
spec.add_runtime_dependency '
|
59
|
-
spec.add_runtime_dependency '
|
60
|
-
spec.add_runtime_dependency '
|
61
|
-
spec.add_runtime_dependency '
|
62
|
-
spec.add_runtime_dependency 'tty-
|
63
|
-
spec.add_runtime_dependency 'tty-
|
64
|
-
spec.add_runtime_dependency '
|
56
|
+
spec.add_runtime_dependency 'blanket_wrapper', '~> 3.0', '> 3.0'
|
57
|
+
spec.add_runtime_dependency 'damerau-levenshtein', '~> 1.3', '> 1.3'
|
58
|
+
spec.add_runtime_dependency 'httparty', '>0'
|
59
|
+
spec.add_runtime_dependency 'jira-ruby', '> 1.7', '< 3'
|
60
|
+
spec.add_runtime_dependency 'story_branch-graphql', '~> 0.0.1'
|
61
|
+
spec.add_runtime_dependency 'thor', '> 0.20', '< 2'
|
62
|
+
spec.add_runtime_dependency 'tty-command', '~> 0.8', '> 0.8'
|
63
|
+
spec.add_runtime_dependency 'tty-config', '~> 0.2', '> 0.2'
|
64
|
+
spec.add_runtime_dependency 'tty-pager', '~> 0.12', '> 0.12'
|
65
|
+
spec.add_runtime_dependency 'tty-prompt', '~> 0.18', '> 0.18'
|
66
|
+
spec.add_runtime_dependency 'xdg', '> 3.0', '< 6'
|
65
67
|
|
66
|
-
spec.add_development_dependency 'bundler', '~> 2.1'
|
67
|
-
spec.add_development_dependency '
|
68
|
-
spec.add_development_dependency '
|
69
|
-
spec.add_development_dependency '
|
70
|
-
spec.add_development_dependency '
|
71
|
-
spec.add_development_dependency '
|
72
|
-
spec.add_development_dependency '
|
73
|
-
spec.add_development_dependency 'rspec', '~> 3'
|
74
|
-
spec.add_development_dependency '
|
75
|
-
spec.add_development_dependency '
|
68
|
+
spec.add_development_dependency 'bundler', '~> 2.1', '> 2.1'
|
69
|
+
spec.add_development_dependency 'fakefs', '> 0.14', '< 2'
|
70
|
+
spec.add_development_dependency 'git', '~> 1.5', '> 1.5'
|
71
|
+
spec.add_development_dependency 'ostruct', '~> 0.1', '> 0.1'
|
72
|
+
spec.add_development_dependency 'pry', '~> 0.11', '> 0.11'
|
73
|
+
spec.add_development_dependency 'rake', '>= 12.3.3', '< 14'
|
74
|
+
spec.add_development_dependency 'rubocop', '~> 1.22'
|
75
|
+
spec.add_development_dependency 'rspec', '~> 3', '> 3'
|
76
|
+
spec.add_development_dependency 'rspec_junit_formatter', '~> 0.4', '> 0.4'
|
77
|
+
spec.add_development_dependency 'simplecov', '~> 0.16', '> 0.16'
|
76
78
|
end
|
77
79
|
# rubocop:enable Metrics/BlockLength
|
data/tools/prep_changelog.rb
CHANGED
@@ -17,6 +17,7 @@ def grab_and_print_log(from, to)
|
|
17
17
|
end
|
18
18
|
|
19
19
|
# rubocop:disable Metrics/MethodLength
|
20
|
+
# rubocop:disable Metrics/AbcSize
|
20
21
|
def print_all_logs
|
21
22
|
all_tags = StoryBranch::GitWrapper.command_lines('tag --list')
|
22
23
|
cleanup_tags = all_tags.map do |t|
|
@@ -36,6 +37,7 @@ def print_all_logs
|
|
36
37
|
grab_and_print_log(from, to)
|
37
38
|
end
|
38
39
|
end
|
40
|
+
# rubocop:enable Metrics/AbcSize
|
39
41
|
# rubocop:enable Metrics/MethodLength
|
40
42
|
|
41
43
|
all_logs = ARGV[0] == 'all'
|