42 lines
1.1 KiB
Crystal
42 lines
1.1 KiB
Crystal
require "./gitlab"
|
|
require "./list"
|
|
|
|
module AutoBoard
|
|
class Board
|
|
property project_id : Int32
|
|
property board_id : Int32
|
|
property lists : Array(List)
|
|
|
|
def initialize(@project_id : Int32, @board_id : Int32)
|
|
@lists = [] of List
|
|
end
|
|
|
|
def load_lists_from_gitlab
|
|
gitlab = Gitlab.client(endpoint: "https://gitlab.com/api/v4", private_token: "your_private_token")
|
|
board = gitlab.boards(@project_id, @board_id)
|
|
@lists = board.lists.map { |list| List.new(list.name, list.label.name) }
|
|
end
|
|
|
|
def save_lists_to_gitlab
|
|
gitlab = Gitlab.client(endpoint: "https://gitlab.com/api/v4", private_token: "your_private_token")
|
|
@lists.each do |list|
|
|
gitlab.create_list(@project_id, @board_id, list.name, label_id: list.label)
|
|
end
|
|
end
|
|
|
|
def apply_template(template : Template)
|
|
@lists = template.lists
|
|
save_lists_to_gitlab
|
|
end
|
|
|
|
def inspect
|
|
puts "Project ID: #{@project_id}"
|
|
puts "Board ID: #{@board_id}"
|
|
puts "Lists:"
|
|
@lists.each do |list|
|
|
puts "- #{list.name} (Label: #{list.label})"
|
|
end
|
|
end
|
|
end
|
|
end
|