27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
# File 'lib/menu.rb', line 27
def setup_variables
system('clear')
project_name = Git.execute do
"git remote -v | head -n1 | awk '{print $2}' | sed -e 's,.*:\(.*/\)\?,,' -e 's/\.git$//'"
end
file = "#{Dir.home}/.config/gitsflow/#{project_name.gsub("\n", '')}/config.yml"
config = TTY::Config.new
config.filename = file
prompt.say("\n")
box = TTY::Box.frame align: :left, width: TTY::Screen.width, height: 15,
title: { top_left: pastel.green('Olá, seja bem-vindo!') } do
pastel.green("\nVamos configurar o GitSFlow agora.\n\n") +
pastel.white("Essa informação será salva dentro da pasta home do seu usuário. Você não precisará mais do .env
\nSe você desejar apenas ver as configurações, tecle enter até o final ou acesse o conteudo do arquivo: #{file}\nEssa informação será salva dentro da pasta home do seu usuário. Você não precisará mais do .env")
end
print box
prompt.say(pastel.cyan('Agora, entre com as informações de configuração do projeto.'))
begin
result_env = config.read(file).transform_keys(&:to_sym)
result = prompt.collect do
key(:GITLAB_PROJECT_ID).ask('GITLAB_PROJECT_ID:', required: true, default: result_env[:GITLAB_PROJECT_ID])
key(:GITLAB_TOKEN).mask('GITLAB_TOKEN:', required: true, echo: true, default: result_env[:GITLAB_TOKEN])
key(:GITLAB_URL_API).ask('GITLAB_URL_API:', required: true, default: result_env[:GITLAB_URL_API] || 'https://gitlab.com/api/v4')
key(:GITLAB_EMAIL).ask('GITLAB_EMAIL:', required: true, default: result_env[:GITLAB_EMAIL]) do |q|
q.validate(/[^@ \t\r\n]+@[^@ \t\r\n]+\.[^@ \t\r\n]+/, 'Invalid email address')
end
key(:GITLAB_LISTS).ask('GITLAB_LISTS:', required: true,
default: result_env[:GITLAB_LISTS] || 'To Do,Doing,Next Release,Staging')
key(:GITLAB_NEXT_RELEASE_LIST).ask('GITLAB_NEXT_RELEASE_LIST:', required: true,
default: result_env[:GITLAB_NEXT_RELEASE_LIST] || 'Next Release')
key(:GIT_BRANCH_MASTER).ask('GIT_BRANCH_MASTER:', required: true,
default: result_env[:GIT_BRANCH_MASTER] || 'master')
key(:GIT_BRANCH_DEVELOP).ask('GIT_BRANCH_DEVELOP:', required: true,
default: result_env[:GIT_BRANCH_DEVELOP] || 'developer')
key(:GIT_BRANCHES_STAGING).ask('GIT_BRANCHES_STAGING:', required: true,
default: result_env[:GIT_BRANCHES_STAGING] || 'staging')
key(:SFLOW_TEMPLATE_RELEASE).ask('SFLOW_TEMPLATE_RELEASE:', required: true,
default: result_env[:SFLOW_TEMPLATE_RELEASE] || 'Version {version} - {date}')
key(:SFLOW_TEMPLATE_RELEASE_DATE_FORMAT).ask('SFLOW_TEMPLATE_RELEASE_DATE_FORMAT:', required: true,
default: result_env['SFLOW_TEMPLATE_RELEASE_DATE_FORMAT'] || 'Y/m/d')
end
rescue TTY::Config::ReadError => e
prompt.say(pastel.cyan("\n\nPor favor configure as variáveis .env"))
result = prompt.collect do
key(:GITLAB_PROJECT_ID).ask('GITLAB_PROJECT_ID:', required: true, default: ENV['GITLAB_PROJECT_ID'])
key(:GITLAB_TOKEN).mask('GITLAB_TOKEN:', required: true, echo: true, default: ENV['GITLAB_TOKEN'])
key(:GITLAB_URL_API).ask('GITLAB_URL_API:', required: true, default: ENV['GITLAB_URL_API'] || 'https://gitlab.com/api/v4')
key(:GITLAB_EMAIL).ask('GITLAB_EMAIL:', required: true, default: ENV['GITLAB_EMAIL']) do |q|
q.validate(/[^@ \t\r\n]+@[^@ \t\r\n]+\.[^@ \t\r\n]+/, 'Invalid email address')
end
key(:GITLAB_LISTS).ask('GITLAB_LISTS:', required: true,
default: ENV['GITLAB_LISTS'] || 'To Do,Doing,Staging,Next Release')
key(:GITLAB_NEXT_RELEASE_LIST).ask('GITLAB_NEXT_RELEASE_LIST:', required: true,
default: ENV['GITLAB_NEXT_RELEASE_LIST'] || 'Next Release')
key(:GIT_BRANCH_MASTER).ask('GIT_BRANCH_MASTER:', required: true, default: ENV['GIT_BRANCH_MASTER'] || 'master')
key(:GIT_BRANCH_DEVELOP).ask('GIT_BRANCH_DEVELOP:', required: true,
default: ENV['GIT_BRANCH_DEVELOP'] || 'developer')
key(:GIT_BRANCHES_STAGING).ask('GIT_BRANCHES_STAGING:', required: true,
default: ENV['GIT_BRANCHES_STAGING'] || 'staging')
key(:SFLOW_TEMPLATE_RELEASE).ask('SFLOW_TEMPLATE_RELEASE:', required: true,
default: ENV['SFLOW_TEMPLATE_RELEASE'] || 'Version {version} - {date}')
key(:SFLOW_TEMPLATE_RELEASE_DATE_FORMAT).ask('SFLOW_TEMPLATE_RELEASE_DATE_FORMAT:', required: true,
default: ENV['SFLOW_TEMPLATE_RELEASE_DATE_FORMAT'] || 'Y/m/d')
end
config.set(:GITLAB_PROJECT_ID, value: result[:GITLAB_PROJECT_ID])
config.set(:GITLAB_TOKEN, value: result[:GITLAB_TOKEN])
config.set(:GITLAB_URL_API, value: result[:GITLAB_URL_API])
config.set(:GITLAB_EMAIL, value: result[:GITLAB_EMAIL])
config.set(:GITLAB_LISTS, value: result[:GITLAB_LISTS])
config.set(:GITLAB_NEXT_RELEASE_LIST, value: result[:GITLAB_NEXT_RELEASE_LIST])
config.set(:GIT_BRANCH_MASTER, value: result[:GIT_BRANCH_MASTER])
config.set(:GIT_BRANCH_DEVELOP, value: result[:GIT_BRANCH_DEVELOP])
config.set(:GIT_BRANCHES_STAGING, value: result[:GIT_BRANCHES_STAGING])
config.set(:SFLOW_TEMPLATE_RELEASE, value: result[:SFLOW_TEMPLATE_RELEASE])
config.set(:SFLOW_TEMPLATE_RELEASE_DATE_FORMAT, value: result[:SFLOW_TEMPLATE_RELEASE_DATE_FORMAT])
config.write(file, force: true, create: true)
end
prompt.say(pastel.cyan("\n"))
prompt.say(pastel.cyan(file.gsub(Dir.home, '~')))
prompt.say(pastel.cyan("\n\n"))
$GITLAB_PROJECT_ID = result[:GITLAB_PROJECT_ID]
$GITLAB_TOKEN = result[:GITLAB_TOKEN]
$GITLAB_URL_API = result[:GITLAB_URL_API]
$GITLAB_EMAIL = result[:GITLAB_EMAIL]
$GITLAB_LISTS = result[:GITLAB_LISTS].split(',')
$GITLAB_NEXT_RELEASE_LIST = result[:GITLAB_NEXT_RELEASE_LIST]
$GIT_BRANCH_MASTER = result[:GIT_BRANCH_MASTER]
$GIT_BRANCH_DEVELOP = result[:GIT_BRANCH_DEVELOP]
$GIT_BRANCHES_STAGING = result[:GIT_BRANCHES_STAGING].split(',')
$SFLOW_TEMPLATE_RELEASE = result[:SFLOW_TEMPLATE_RELEASE]
$SFLOW_TEMPLATE_RELEASE_DATE_FORMAT = result[:SFLOW_TEMPLATE_RELEASE_DATE_FORMAT]
GitLab.create_labels
GitLab.create_board_lists
success('GitSFlow coonfigurado com sucesso!')
principal if prompt.yes?('Vocẽ gostaria de voltar ao menu principal?')
prompt.say(pastel.cyan('Até logo!'))
end
|