story_branch 0.6.1 → 1.0.0

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
  SHA256:
3
- metadata.gz: 0adf65a12d1ab52998ada7760645345d76c1dbe817ce52724005a71cf1b7bb30
4
- data.tar.gz: 63a19f6f253be9459618ecfb8d23f099c1e2ea5c65b3152394b49a6dce335094
3
+ metadata.gz: 4196567f738d9eefe7e9b689bba4a082f3604d41c7e4b198f10295e3f867a0ba
4
+ data.tar.gz: 4bd0f419c7fce7703c1b5df98d906137bfd6b3c53e400273c59caf8bea923d26
5
5
  SHA512:
6
- metadata.gz: c7a2c1923c37f423f7f2a946e6ecf19371cae814b33489ec59069567711b3de50a3c49e054d4c30042c04ebfe4b16c032584f854a758ab1f0871bb7f27d67ca7
7
- data.tar.gz: a59cb14660ed656598170978e63ccc2e51e414028d28a6af35c3e0de82d96fd9cea10c93e033c4c9a12850b880fbd922b1b60a035e700fea8b73ee292b59ad11
6
+ metadata.gz: 60993c9099b5112018ea6949ad47901bc27349473296ba96590bed89b499d96eea9ad185623d66d16ba28216b71d8efcbbd91131e89cb51e17da370037416eca
7
+ data.tar.gz: 0a5154411fdb3c53b5efc0e444af8383b9a197e241bb0ffbe0322c38ccf56d92ee5501e1f3b25026aa1b181b10c66736f9fce90fb25a1a3df1d0530defea7729
@@ -27,13 +27,21 @@ workflows:
27
27
  jobs:
28
28
  test:
29
29
  <<: *defaults
30
+
30
31
  steps:
31
32
  - checkout
32
33
 
34
+ - run:
35
+ name: Install Code Climate Test Reporter
36
+ command: |
37
+ curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
38
+ chmod +x ./cc-test-reporter
39
+ - run: ./cc-test-reporter before-build
40
+
33
41
  - restore_cache:
34
42
  keys:
35
- - v1-dependencies-{{ checksum "Gemfile.lock" }}
36
- - v1-dependencies-
43
+ - v2-dependencies-{{ checksum "Gemfile.lock" }}
44
+ - v2-dependencies-
37
45
 
38
46
  - run:
39
47
  name: install dependencies
@@ -44,7 +52,7 @@ jobs:
44
52
  - save_cache:
45
53
  paths:
46
54
  - ./vendor/bundle
47
- key: v1-dependencies-{{ checksum "Gemfile.lock" }}
55
+ key: v2-dependencies-{{ checksum "Gemfile.lock" }}
48
56
 
49
57
  - run:
50
58
  name: run tests
@@ -61,7 +69,16 @@ jobs:
61
69
  path: /tmp/test-results
62
70
  - store_artifacts:
63
71
  path: /tmp/test-results
64
- destination: test-results
72
+
73
+ - run:
74
+ name: Code Climate Test Coverage convert to json
75
+ command: |
76
+ ./cc-test-reporter format-coverage -t simplecov
77
+
78
+ - run:
79
+ name: Code Climate Test Coverage upload results
80
+ command: |
81
+ ./cc-test-reporter after-build -t simplecov --exit-code $?
65
82
 
66
83
  publish:
67
84
  <<: *defaults
@@ -70,8 +87,8 @@ jobs:
70
87
 
71
88
  - restore_cache:
72
89
  keys:
73
- - v1-dependencies-{{ checksum "Gemfile.lock" }}
74
- - v1-dependencies-
90
+ - v2-dependencies-{{ checksum "Gemfile.lock" }}
91
+ - v2-dependencies-
75
92
 
76
93
  - run:
77
94
  name: install dependencies
@@ -82,7 +99,7 @@ jobs:
82
99
  - save_cache:
83
100
  paths:
84
101
  - ./vendor/bundle
85
- key: v1-dependencies-{{ checksum "Gemfile.lock" }}
102
+ key: v2-dependencies-{{ checksum "Gemfile.lock" }}
86
103
 
87
104
  - run:
88
105
  name: Setup Rubygems
@@ -0,0 +1,7 @@
1
+ # Configuration for weekly-digest - https://github.com/apps/weekly-digest
2
+ publishDay: sun
3
+ canPublishIssues: true
4
+ canPublishPullRequests: true
5
+ canPublishContributors: true
6
+ canPublishStargazers: true
7
+ canPublishCommits: true
data/.gitignore CHANGED
@@ -2,3 +2,5 @@
2
2
  story_branch-*.gem
3
3
  /.pairs
4
4
  .byebug_history
5
+ coverage
6
+ tools/release*.*
@@ -7,3 +7,45 @@ AllCops:
7
7
  - 'exe/*'
8
8
  - '**/Gemfile'
9
9
  - '.github/**/*'
10
+
11
+ Layout/EmptyLinesAroundAttributeAccessor:
12
+ Enabled: true
13
+
14
+ Layout/SpaceAroundMethodCallOperator:
15
+ Enabled: true
16
+
17
+ Lint/DeprecatedOpenSSLConstant:
18
+ Enabled: true
19
+
20
+ Lint/MixedRegexpCaptureTypes:
21
+ Enabled: true
22
+
23
+ Lint/RaiseException:
24
+ Enabled: true
25
+
26
+ Lint/StructNewOverride:
27
+ Enabled: true
28
+
29
+ Style/ExponentialNotation:
30
+ Enabled: true
31
+
32
+ Style/HashEachMethods:
33
+ Enabled: true
34
+
35
+ Style/HashTransformKeys:
36
+ Enabled: true
37
+
38
+ Style/HashTransformValues:
39
+ Enabled: true
40
+
41
+ Style/RedundantFetchBlock:
42
+ Enabled: true
43
+
44
+ Style/RedundantRegexpCharacterClass:
45
+ Enabled: true
46
+
47
+ Style/RedundantRegexpEscape:
48
+ Enabled: true
49
+
50
+ Style/SlicingWithRange:
51
+ Enabled: true
@@ -1 +1 @@
1
- 2.6.1
1
+ 2.7.1
@@ -1,81 +1,108 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- story_branch (0.6.1)
4
+ story_branch (1.0.0)
5
5
  blanket_wrapper (~> 3.0)
6
6
  damerau-levenshtein (~> 1.3)
7
7
  jira-ruby (~> 1.7)
8
- thor (~> 0.20.0)
9
- tty-command (~> 0.8.2)
10
- tty-config (~> 0.2.0)
8
+ thor (~> 0.20)
9
+ tty-command (~> 0.8)
10
+ tty-config (~> 0.2)
11
11
  tty-pager (~> 0.12)
12
12
  tty-prompt (~> 0.18)
13
+ xdg (~> 3.0)
13
14
 
14
15
  GEM
15
16
  remote: https://rubygems.org/
16
17
  specs:
17
- activesupport (6.0.2.1)
18
+ activesupport (6.0.3.2)
18
19
  concurrent-ruby (~> 1.0, >= 1.0.2)
19
20
  i18n (>= 0.7, < 2)
20
21
  minitest (~> 5.1)
21
22
  tzinfo (~> 1.1)
22
- zeitwerk (~> 2.2)
23
+ zeitwerk (~> 2.2, >= 2.2.2)
24
+ ast (2.4.1)
23
25
  atlassian-jwt (0.2.0)
24
26
  jwt (~> 2.1.0)
25
27
  blanket_wrapper (3.0.2)
26
28
  httparty
27
29
  recursive-open-struct
28
30
  coderay (1.1.2)
29
- concurrent-ruby (1.1.5)
31
+ concurrent-ruby (1.1.6)
30
32
  damerau-levenshtein (1.3.2)
31
33
  diff-lcs (1.3)
34
+ docile (1.3.1)
32
35
  equatable (0.6.1)
33
36
  fakefs (0.20.1)
34
37
  git (1.5.0)
35
- httparty (0.17.3)
38
+ httparty (0.18.1)
36
39
  mime-types (~> 3.0)
37
40
  multi_xml (>= 0.5.2)
38
- i18n (1.7.0)
41
+ i18n (1.8.3)
39
42
  concurrent-ruby (~> 1.0)
40
- jira-ruby (1.7.1)
43
+ jira-ruby (1.8.0)
41
44
  activesupport
42
45
  atlassian-jwt
43
46
  multipart-post
44
47
  oauth (~> 0.5, >= 0.5.0)
48
+ json (2.1.0)
45
49
  jwt (2.1.0)
46
50
  method_source (0.9.2)
47
- mime-types (3.3)
51
+ mime-types (3.3.1)
48
52
  mime-types-data (~> 3.2015)
49
- mime-types-data (3.2019.1009)
50
- minitest (5.13.0)
53
+ mime-types-data (3.2020.0512)
54
+ minitest (5.14.1)
51
55
  multi_xml (0.6.0)
52
56
  multipart-post (2.1.1)
53
57
  necromancer (0.5.1)
54
58
  oauth (0.5.4)
55
59
  ostruct (0.1.0)
56
- pastel (0.7.3)
60
+ parallel (1.19.2)
61
+ parser (2.7.1.4)
62
+ ast (~> 2.4.1)
63
+ pastel (0.7.4)
57
64
  equatable (~> 0.6)
58
65
  tty-color (~> 0.5)
59
66
  pry (0.12.2)
60
67
  coderay (~> 1.1.0)
61
68
  method_source (~> 0.9.0)
62
- rake (10.5.0)
63
- recursive-open-struct (1.1.0)
69
+ rainbow (3.0.0)
70
+ rake (12.3.3)
71
+ recursive-open-struct (1.1.2)
72
+ regexp_parser (1.7.1)
73
+ rexml (3.2.4)
64
74
  rspec (3.9.0)
65
75
  rspec-core (~> 3.9.0)
66
76
  rspec-expectations (~> 3.9.0)
67
77
  rspec-mocks (~> 3.9.0)
68
- rspec-core (3.9.0)
69
- rspec-support (~> 3.9.0)
78
+ rspec-core (3.9.1)
79
+ rspec-support (~> 3.9.1)
70
80
  rspec-expectations (3.9.0)
71
81
  diff-lcs (>= 1.2.0, < 2.0)
72
82
  rspec-support (~> 3.9.0)
73
- rspec-mocks (3.9.0)
83
+ rspec-mocks (3.9.1)
74
84
  diff-lcs (>= 1.2.0, < 2.0)
75
85
  rspec-support (~> 3.9.0)
76
- rspec-support (3.9.0)
86
+ rspec-support (3.9.2)
77
87
  rspec_junit_formatter (0.4.1)
78
88
  rspec-core (>= 2, < 4, != 2.12.0)
89
+ rubocop (0.86.0)
90
+ parallel (~> 1.10)
91
+ parser (>= 2.7.0.1)
92
+ rainbow (>= 2.2.2, < 4.0)
93
+ regexp_parser (>= 1.7)
94
+ rexml
95
+ rubocop-ast (>= 0.0.3, < 1.0)
96
+ ruby-progressbar (~> 1.7)
97
+ unicode-display_width (>= 1.4.0, < 2.0)
98
+ rubocop-ast (0.0.3)
99
+ parser (>= 2.7.0.1)
100
+ ruby-progressbar (1.10.1)
101
+ simplecov (0.16.1)
102
+ docile (~> 1.1)
103
+ json (>= 1.8, < 3)
104
+ simplecov-html (~> 0.10.0)
105
+ simplecov-html (0.10.2)
79
106
  strings (0.1.8)
80
107
  strings-ansi (~> 0.1)
81
108
  unicode-display_width (~> 1.5)
@@ -83,16 +110,15 @@ GEM
83
110
  strings-ansi (0.2.0)
84
111
  thor (0.20.3)
85
112
  thread_safe (0.3.6)
86
- tty-color (0.5.0)
87
- tty-command (0.8.2)
113
+ tty-color (0.5.1)
114
+ tty-command (0.9.0)
88
115
  pastel (~> 0.7.0)
89
- tty-config (0.2.0)
90
- tty-cursor (0.7.0)
91
- tty-pager (0.12.1)
92
- strings (~> 0.1.4)
93
- tty-screen (~> 0.6)
94
- tty-which (~> 0.4)
95
- tty-prompt (0.20.0)
116
+ tty-config (0.3.2)
117
+ tty-cursor (0.7.1)
118
+ tty-pager (0.13.0)
119
+ strings (~> 0.1.8)
120
+ tty-screen (~> 0.8)
121
+ tty-prompt (0.21.0)
96
122
  necromancer (~> 0.5.0)
97
123
  pastel (~> 0.7.0)
98
124
  tty-reader (~> 0.7.0)
@@ -100,28 +126,30 @@ GEM
100
126
  tty-cursor (~> 0.7)
101
127
  tty-screen (~> 0.7)
102
128
  wisper (~> 2.0.0)
103
- tty-screen (0.7.0)
104
- tty-which (0.4.1)
105
- tzinfo (1.2.5)
129
+ tty-screen (0.8.0)
130
+ tzinfo (1.2.7)
106
131
  thread_safe (~> 0.1)
107
- unicode-display_width (1.6.0)
132
+ unicode-display_width (1.7.0)
108
133
  unicode_utils (1.4.0)
109
134
  wisper (2.0.1)
110
- zeitwerk (2.2.2)
135
+ xdg (3.1.1)
136
+ zeitwerk (2.3.0)
111
137
 
112
138
  PLATFORMS
113
139
  ruby
114
140
 
115
141
  DEPENDENCIES
116
- bundler (~> 1.16)
142
+ bundler (~> 2.1)
117
143
  fakefs (~> 0.14)
118
144
  git (~> 1.5)
119
145
  ostruct (~> 0.1)
120
146
  pry (~> 0.11)
121
- rake (~> 10.0)
147
+ rake (~> 12.3, >= 12.3.3)
122
148
  rspec (~> 3)
123
149
  rspec_junit_formatter (~> 0.4)
150
+ rubocop (~> 0.86)
151
+ simplecov (~> 0.16)
124
152
  story_branch!
125
153
 
126
154
  BUNDLED WITH
127
- 2.1.2
155
+ 2.1.4
data/README.md CHANGED
@@ -4,11 +4,17 @@
4
4
 
5
5
  # Story Branch
6
6
 
7
- Story branch is a CLI application that interacts with Pivotal Tracker or Github at the
7
+ Story branch is a CLI application that interacts with Pivotal Tracker, Github and Jira
8
8
  at the moment.
9
- It allows you to start and un-start stories in Pivotal Tracker, as well as creating
10
- branches based on the story name and id and have a final commit message marking
11
- the story as Finished.
9
+
10
+ For all the trackers it supports creating local branches from the tickets or
11
+ opening the ticket in your browser from the branch you're working on. In the future
12
+ I plan to support different workflows in order to integrate your individual
13
+ process in the tool.
14
+
15
+ As for PivotalTracker, since the flow is mostly the same for everyone, it allows
16
+ you to start and un-start stories as well.
17
+
12
18
 
13
19
  [View Changelog](Changelog.md)
14
20
 
@@ -30,8 +36,8 @@ You can see all the commands available by running
30
36
  $ story_branch -h
31
37
 
32
38
  Commands:
33
- story_branch add # Add a new story branch configuration
34
- story_branch create # Create branch from estimated stories in pivotal tracker
39
+ story_branch configure # Configure a new story branch configuration
40
+ story_branch create # Create branch from a ticket in the tracker
35
41
  story_branch finish # Creates a git commit message for the staged changes with a [Finishes] tag
36
42
  story_branch help [COMMAND] # Describe available commands or one specific command
37
43
  story_branch migrate # Migrate old story branch configuration to the new format
@@ -113,14 +119,14 @@ the full list.
113
119
 
114
120
  ## Configuring PivotalTracker
115
121
 
116
- When running the command `story_branch add` you'll be asked 3 things:
122
+ When running the command `story_branch configure` you'll be asked 3 things:
117
123
  1. tracker - You should select Pivotal Tracker
118
124
  2. project id - This can be fetched from the PivotalTracker url. E.g in the url `https://www.pivotaltracker.com/n/projects/651417`, the project id would be `651417`
119
125
  3. api key - this is your personal api key. You can get that from [your profile page](https://www.pivotaltracker.com/profile)
120
126
 
121
127
  ## Configuring Github
122
128
 
123
- When running the command `story_branch add` you'll be asked 3 things:
129
+ When running the command `story_branch configure` you'll be asked 3 things:
124
130
  1. project id - This is the github repository name in the format `<owner>/<repo_name>`. E.g. `story-branch/story_branch`.
125
131
  2. tracker - You should select Github
126
132
  3. api key - this is your personal api token. You can create one under your
@@ -0,0 +1,168 @@
1
+ # Story Branch
2
+
3
+ Story branch is a CLI application that interacts with Pivotal Tracker, Github
4
+ and JIRA.
5
+
6
+ Depending on the tracker features, it provides different approaches.
7
+
8
+ - For PivotalTracker, it allows you to start and un-start stories, as well as
9
+ creating branches based on the story name and id and have a final commit message
10
+ marking the story as Finished.
11
+
12
+ - For Github and JIRA because there is not a fixed flow, it allows you to create
13
+ the branches based on the tickets name and numbers. Similarly, it supports one
14
+ final commit with a standard message.
15
+
16
+ [View Changelog](Changelog.md)
17
+
18
+ ## Installing
19
+
20
+ Install the gem:
21
+
22
+ gem install story_branch
23
+
24
+ ## Usage
25
+
26
+ You should run story_branch from the git/project root folder.
27
+
28
+ ## Commands available
29
+
30
+ You can see all the commands available by running
31
+
32
+ ```
33
+ $ story_branch -h
34
+
35
+ Commands:
36
+ story_branch configure # Setup story branch with a new/existing project
37
+ story_branch create # Create branch from a ticket in the tracker
38
+ story_branch finish # Creates a git commit message for the staged changes with a [Finishes] tag
39
+ story_branch help [COMMAND] # Describe available commands or one specific command
40
+ story_branch migrate # Migrate old story branch configuration to the new format
41
+ story_branch start # Mark an estimated story as started [Only for Pivotal Tracker]
42
+ story_branch unstart # Mark a started story as un-started [Only for Pivotal Tracker]
43
+ story_branch version # story_branch gem version
44
+ ```
45
+
46
+ ## Settings
47
+
48
+ Story branch has a command available that will help you creating the configurations
49
+ for the projects, but essentially you'll be asked for the pivotal tracker project id and your api key.
50
+
51
+ ### Configuring the project id
52
+
53
+ The project id you can get it easily from the url when viewing the project.
54
+ This value will be stored in the local configuration file that will be committed
55
+ to the working repository
56
+
57
+ ### Configuring the api key
58
+
59
+ The api key you can get it from your account settings.
60
+ This value will be stored in your global configuration file that typically is
61
+ not shared with your co-workers in the repository. This way, each user will
62
+ be properly identified in the tracker
63
+
64
+ ### Configuring the finish tag
65
+
66
+ On your local config you can add a line with `finish_tag: <Some random word>`.
67
+ This tag will be used in the commit message when running `story_branch finish`.
68
+
69
+ E.g.
70
+ `finish_tag: Resolves`
71
+
72
+ `story_branch finish` will make a commit with the message
73
+ `[Resolves #12313] story title`
74
+
75
+
76
+ ### .story_branch files
77
+
78
+ When configuring story branch, it will create two .story_branch.yml files: one in
79
+ your home folder (`~/`) and one in your project's root (`./`).
80
+ The one in your home folder will be used to store the different project's configurations
81
+ such as which api key to use. This is done so you don't need to commit your
82
+ api key to the repository but still be able to use different keys in case you
83
+ have different accounts.
84
+
85
+ The one in your project root will keep a reference to the project configuration.
86
+ For now, this reference is the project id. This file can be safely committed to
87
+ the repository and shared amongst your co-workers.
88
+
89
+ ## Commentary
90
+
91
+ `story_branch create`: Creates a git branch with automatic reference to a
92
+ Pivotal Tracker Story. It will get started stories from your active
93
+ project. You can enter text and press TAB to search for a story
94
+ name, or TAB to show the full list. It will then suggest an editable
95
+ branch name. When the branch is created the `story_id` will
96
+ be appended to it.
97
+
98
+ e.g. `my-story-name-1234567`
99
+
100
+ `story_branch finish`: Creates a git commit message for the staged changes.
101
+
102
+ e.g: `[Finishes #1234567] My story name`
103
+
104
+ You must stage all changes (or stash them) first. Note the commit will not
105
+ be pushed. Note: You'll be able to bail out of the commit.
106
+
107
+ `story_branch start`: Start a story in Pivotal Tracker from the terminal.
108
+ It'll get all un-started stories in your current project. You can
109
+ enter text and press TAB to search for a story name, or TAB to show
110
+ the full list.
111
+
112
+ `story_branch unstart`: Un-start a story in Pivotal Tracker from the terminal.
113
+ It'll get all started stories in your current project. You can
114
+ enter text and press TAB to search for a story name, or TAB to show
115
+ the full list.
116
+
117
+ ## Configuring PivotalTracker
118
+
119
+ When running the command `story_branch configure` you'll be asked 3 things:
120
+ 1. tracker - You should select Pivotal Tracker
121
+ 2. project id - This can be fetched from the PivotalTracker url. E.g in the url `https://www.pivotaltracker.com/n/projects/651417`, the project id would be `651417`
122
+ 3. api key - this is your personal api key. You can get that from [your profile page](https://www.pivotaltracker.com/profile)
123
+
124
+ ## Configuring Github
125
+
126
+ When running the command `story_branch configure` you'll be asked 3 things:
127
+ 1. project id - This is the github repository name in the format `<owner>/<repo_name>`. E.g. `story-branch/story_branch`.
128
+ 2. tracker - You should select Github
129
+ 3. api key - this is your personal api token. You can create one under your
130
+ [developer profile tokens page](https://github.com/settings/tokens)
131
+
132
+ ## Configuring JIRA
133
+
134
+ The configuration for JIRA is slightly more complex as the endpoint changes according
135
+ to your project setup. You will need an API token, which you can create a new one in your [JIRA id management page](https://id.atlassian.com/manage/api-tokens)
136
+ 1. tracker - You should select JIRA
137
+ 2. JIRA's subdomain - you should type the JIRA's subdomain that you use to access in your browser. E.g I'd type perxtechnologies to access to https://perxtechnologies.atlassian.net
138
+ 3. JIRA's project key - this should match which project you want to fetch the issues from. E.g. PW is the key for my Project Whistler, so I'd type PW
139
+ 4. API key that you should have gotten in the first description step
140
+ 5. username used for login in the JIRA usually. If you use google email authentication, the username should be your email
141
+
142
+ ## Migrating
143
+
144
+ ### Old configuration
145
+
146
+ If your were using story branch before there are some small changes on the way the
147
+ tool works. But worry not, we've written a command that allows you to migrate your
148
+ configuration. Running
149
+
150
+ `$ story_branch migrate`
151
+
152
+ will grab your existing configuration and convert it into the new format. The only
153
+ thing you'll need to provide is the project name reference.
154
+
155
+ ### Old commands
156
+
157
+ Story branch was built providing a set of bin commands such as `git-story`, `git-finish`, `git-start` and `git-unstart`. These will be available still as
158
+ we try as much as possible to keep the updates retro-compatible, but are nothing
159
+ more than an alias for the CLI commands as follow:
160
+
161
+ - `git-story` runs `story_branch create`
162
+ - `git-finish` runs `story_branch finish`
163
+ - `git-start` runs `story_branch start`
164
+ - `git-unstart` runs `story_branch unstart`
165
+
166
+ ## Contributing
167
+
168
+ All pull requests are welcome and will be reviewed.