brainiac-fizzy 0.0.18 → 0.0.19
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/lib/brainiac/plugins/fizzy/cli.rb +76 -17
- data/lib/brainiac/plugins/fizzy/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 17a740230d941e1cf3afaceba18f6828ba264e0b4ef9603e95f6ae3ae9fa1189
|
|
4
|
+
data.tar.gz: 128ada1e609fcbf9bf1708103278a12b6779d7833adad09f418d3f2545324d8f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0ddfc0b84306b839424e49a8cc8bcd7e86de1e4933712543df498cc02fe0f5c213df4a56db74a177e98d3071cec8f6d2f83e0ee97a926dff8f4c00f23bcffc9f
|
|
7
|
+
data.tar.gz: a51a4194f8f9281faae2ad5374db1f7c9218bffc9fcf882ed0e0eba9ba303641a2a020846ee16eea8d61cd87033c010a3e13c48a2107d0346d7a2d69b90d139b
|
|
@@ -133,11 +133,11 @@ module Brainiac
|
|
|
133
133
|
puts "================="
|
|
134
134
|
puts ""
|
|
135
135
|
|
|
136
|
-
board =
|
|
136
|
+
board = board_setup_select_or_create_board
|
|
137
137
|
return unless board
|
|
138
138
|
|
|
139
139
|
board_key = board_setup_choose_key(board["name"])
|
|
140
|
-
column_map =
|
|
140
|
+
column_map = board_setup_columns(board["id"], board["name"])
|
|
141
141
|
secret = board_setup_ask_secret(board_key)
|
|
142
142
|
|
|
143
143
|
config = board_setup_save(board_key, board["id"], column_map, secret)
|
|
@@ -153,7 +153,7 @@ module Brainiac
|
|
|
153
153
|
puts " brainiac fizzy board assign <project-key> #{board_key}"
|
|
154
154
|
end
|
|
155
155
|
|
|
156
|
-
def
|
|
156
|
+
def board_setup_select_or_create_board
|
|
157
157
|
boards_json = run_fizzy("board", "list", "--all", "--json")
|
|
158
158
|
unless boards_json
|
|
159
159
|
puts "Error: Could not fetch boards from Fizzy CLI."
|
|
@@ -163,21 +163,42 @@ module Brainiac
|
|
|
163
163
|
end
|
|
164
164
|
|
|
165
165
|
boards = JSON.parse(boards_json)["data"] || []
|
|
166
|
-
if boards.empty?
|
|
167
|
-
puts "No boards found in your Fizzy account."
|
|
168
|
-
return nil
|
|
169
|
-
end
|
|
170
166
|
|
|
171
167
|
puts "Available boards:"
|
|
172
168
|
boards.each_with_index do |board, i|
|
|
173
169
|
puts " #{i + 1}) #{board["name"]} (#{board["id"]})"
|
|
174
170
|
end
|
|
171
|
+
puts " #{boards.size + 1}) ✨ Create a new board"
|
|
175
172
|
puts ""
|
|
176
173
|
print "Select board number: "
|
|
177
174
|
choice = $stdin.gets&.chomp&.to_i
|
|
178
|
-
return puts("Cancelled.") unless choice&.positive? && choice <= boards.size
|
|
175
|
+
return puts("Cancelled.") unless choice&.positive? && choice <= boards.size + 1
|
|
179
176
|
|
|
180
|
-
|
|
177
|
+
if choice == boards.size + 1
|
|
178
|
+
board_setup_create_board
|
|
179
|
+
else
|
|
180
|
+
boards[choice - 1]
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
def board_setup_create_board
|
|
185
|
+
print "New board name: "
|
|
186
|
+
name = $stdin.gets&.chomp
|
|
187
|
+
return puts("Cancelled.") if name.nil? || name.empty?
|
|
188
|
+
|
|
189
|
+
print "Allow all team members access? [Y/n]: "
|
|
190
|
+
all_access = $stdin.gets&.chomp&.downcase != "n"
|
|
191
|
+
|
|
192
|
+
args = ["board", "create", "--name", name, "--all_access", all_access.to_s, "--json"]
|
|
193
|
+
output = run_fizzy(*args)
|
|
194
|
+
unless output
|
|
195
|
+
puts "Error: Failed to create board."
|
|
196
|
+
return nil
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
board_data = JSON.parse(output)["data"]
|
|
200
|
+
puts "✓ Created board \"#{name}\" (#{board_data["id"]})"
|
|
201
|
+
board_data
|
|
181
202
|
end
|
|
182
203
|
|
|
183
204
|
def board_setup_choose_key(board_name)
|
|
@@ -188,31 +209,69 @@ module Brainiac
|
|
|
188
209
|
board_key
|
|
189
210
|
end
|
|
190
211
|
|
|
191
|
-
def
|
|
212
|
+
def board_setup_columns(board_id, board_name)
|
|
192
213
|
columns_json = run_fizzy("column", "list", "--board", board_id, "--json")
|
|
193
214
|
columns = columns_json ? (JSON.parse(columns_json)["data"] || []) : []
|
|
194
215
|
custom_columns = columns.reject { |c| c["pseudo"] }
|
|
195
216
|
|
|
196
217
|
puts ""
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
puts " (no columns found)"
|
|
200
|
-
else
|
|
218
|
+
if custom_columns.any?
|
|
219
|
+
puts "Existing columns for \"#{board_name}\":"
|
|
201
220
|
columns.each do |col|
|
|
202
221
|
pseudo_tag = col["pseudo"] ? " [built-in]" : ""
|
|
203
222
|
puts " • #{col["name"]} (#{col["id"]})#{pseudo_tag}"
|
|
204
223
|
end
|
|
224
|
+
puts ""
|
|
225
|
+
print "Create brainiac lifecycle columns (right_now, needs_review, uat)? [y/N]: "
|
|
226
|
+
custom_columns = board_setup_create_lifecycle_columns(board_id, custom_columns) if $stdin.gets&.chomp&.downcase == "y"
|
|
227
|
+
else
|
|
228
|
+
puts "No custom columns on \"#{board_name}\" yet."
|
|
229
|
+
print "Create brainiac lifecycle columns (right_now, needs_review, uat)? [Y/n]: "
|
|
230
|
+
custom_columns = board_setup_create_lifecycle_columns(board_id, custom_columns) if $stdin.gets&.chomp&.downcase != "n"
|
|
205
231
|
end
|
|
206
232
|
|
|
207
233
|
puts ""
|
|
208
|
-
puts "
|
|
209
|
-
puts "(These
|
|
210
|
-
puts "Leave blank to
|
|
234
|
+
puts "Map columns to brainiac config keys:"
|
|
235
|
+
puts "(These control lifecycle transitions: right_now, needs_review, uat)"
|
|
236
|
+
puts "Leave blank to accept suggestion, '-' to skip."
|
|
211
237
|
puts ""
|
|
212
238
|
|
|
213
239
|
prompt_column_mapping(custom_columns)
|
|
214
240
|
end
|
|
215
241
|
|
|
242
|
+
def board_setup_create_lifecycle_columns(board_id, existing_columns)
|
|
243
|
+
lifecycle = [
|
|
244
|
+
{ config_key: "right_now", default_name: "Right Now", color: "blue" },
|
|
245
|
+
{ config_key: "needs_review", default_name: "Needs Review", color: "yellow" },
|
|
246
|
+
{ config_key: "uat", default_name: "UAT", color: "lime" }
|
|
247
|
+
]
|
|
248
|
+
|
|
249
|
+
existing_names = existing_columns.map { |c| c["name"].downcase }
|
|
250
|
+
|
|
251
|
+
lifecycle.each do |col_def|
|
|
252
|
+
if existing_names.include?(col_def[:default_name].downcase)
|
|
253
|
+
puts " ✓ \"#{col_def[:default_name]}\" already exists"
|
|
254
|
+
next
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
print " Name for #{col_def[:config_key]} column [#{col_def[:default_name]}]: "
|
|
258
|
+
name = $stdin.gets&.chomp
|
|
259
|
+
name = col_def[:default_name] if name.nil? || name.empty?
|
|
260
|
+
|
|
261
|
+
output = run_fizzy("column", "create", "--board", board_id,
|
|
262
|
+
"--name", name, "--color", col_def[:color], "--json")
|
|
263
|
+
if output
|
|
264
|
+
col_data = JSON.parse(output)["data"]
|
|
265
|
+
puts " ✓ Created \"#{name}\" (#{col_data["id"]})"
|
|
266
|
+
existing_columns << col_data
|
|
267
|
+
else
|
|
268
|
+
puts " ⚠ Failed to create \"#{name}\""
|
|
269
|
+
end
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
existing_columns
|
|
273
|
+
end
|
|
274
|
+
|
|
216
275
|
def board_setup_ask_secret(board_key)
|
|
217
276
|
puts ""
|
|
218
277
|
puts "Webhook setup:"
|