yadecli 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.DS_Store +0 -0
- data/.gitignore +2 -3
- data/Gemfile +5 -0
- data/Gemfile.lock +44 -2
- data/lib/yadecli/cli/application.rb +19 -4
- data/lib/yadecli/cli/composer.rb +70 -14
- data/lib/yadecli/cli/host.rb +19 -5
- data/lib/yadecli/cli/module.rb +14 -3
- data/lib/yadecli/cli/project.rb +30 -8
- data/lib/yadecli/cli/response/project_start_response.rb +21 -0
- data/lib/yadecli/cli/task.rb +9 -5
- data/lib/yadecli/client/gitlab_client.rb +4 -6
- data/lib/yadecli/command/composer/composer_install_command.rb +166 -0
- data/lib/yadecli/command/composer/composer_list_command.rb +63 -0
- data/lib/yadecli/command/composer/composer_log_command.rb +53 -0
- data/lib/yadecli/command/composer/composer_setup_command.rb +28 -0
- data/lib/yadecli/command/composer/composer_start_command.rb +70 -0
- data/lib/yadecli/command/composer/composer_stop_command.rb +60 -0
- data/lib/yadecli/command/composer/composer_switch_command.rb +51 -0
- data/lib/yadecli/command/composer/composer_uninstall_command.rb +44 -0
- data/lib/yadecli/command/connect_command.rb +29 -0
- data/lib/yadecli/command/host/host_bootstrap_command.rb +132 -0
- data/lib/yadecli/command/host/host_list_command.rb +36 -0
- data/lib/yadecli/command/host/host_provision_command.rb +59 -0
- data/lib/yadecli/command/login_command.rb +26 -0
- data/lib/yadecli/command/module/module_install_command.rb +79 -0
- data/lib/yadecli/command/module/module_list_command.rb +47 -0
- data/lib/yadecli/command/project/project_install_command.rb +58 -0
- data/lib/yadecli/command/project/project_list_command.rb +50 -0
- data/lib/yadecli/command/project/project_setup_command.rb +66 -0
- data/lib/yadecli/command/project/project_start_command.rb +110 -0
- data/lib/yadecli/command/project/project_uninstall_command.rb +44 -0
- data/lib/yadecli/command/task/task_list_command.rb +56 -0
- data/lib/yadecli/io/user_input.rb +1 -1
- data/lib/yadecli/util/cli_util.rb +11 -1
- data/lib/yadecli/util/maven_util.rb +35 -0
- data/lib/yadecli/version.rb +1 -1
- data/lib/yadecli.rb +38 -41
- data/scripts/setup-terminal.sh +1 -1
- data/yadecli.gemspec +6 -2
- metadata +81 -46
- data/lib/.DS_Store +0 -0
- data/lib/yadecli/.DS_Store +0 -0
- data/lib/yadecli/client/authentication_client.rb +0 -24
- data/lib/yadecli/client/base_client.rb +0 -78
- data/lib/yadecli/client/composer_container_client.rb +0 -27
- data/lib/yadecli/client/composer_project_client.rb +0 -27
- data/lib/yadecli/client/composer_service_client.rb +0 -27
- data/lib/yadecli/client/domain_client.rb +0 -23
- data/lib/yadecli/client/host_client.rb +0 -45
- data/lib/yadecli/client/maven_build_step_client.rb +0 -23
- data/lib/yadecli/client/maven_build_task_client.rb +0 -23
- data/lib/yadecli/client/nvm_runtime_client.rb +0 -23
- data/lib/yadecli/client/project_client.rb +0 -28
- data/lib/yadecli/client/project_module_client.rb +0 -35
- data/lib/yadecli/client/pyenv_runtime_client.rb +0 -23
- data/lib/yadecli/client/role_client.rb +0 -23
- data/lib/yadecli/client/rvm_runtime_client.rb +0 -23
- data/lib/yadecli/client/sdk_package_client.rb +0 -28
- data/lib/yadecli/client/vcs_client.rb +0 -23
- data/lib/yadecli/config/app_config.rb +0 -70
- data/lib/yadecli/model/composer_container.rb +0 -19
- data/lib/yadecli/model/composer_project.rb +0 -37
- data/lib/yadecli/model/composer_service.rb +0 -19
- data/lib/yadecli/model/domain.rb +0 -24
- data/lib/yadecli/model/host.rb +0 -24
- data/lib/yadecli/model/ide_type.rb +0 -7
- data/lib/yadecli/model/maven_build_step.rb +0 -19
- data/lib/yadecli/model/maven_build_task.rb +0 -19
- data/lib/yadecli/model/nvm_runtime.rb +0 -18
- data/lib/yadecli/model/project.rb +0 -26
- data/lib/yadecli/model/project_module.rb +0 -29
- data/lib/yadecli/model/pyenv_runtime.rb +0 -18
- data/lib/yadecli/model/role.rb +0 -24
- data/lib/yadecli/model/rvm_runtime.rb +0 -18
- data/lib/yadecli/model/sdk_package.rb +0 -18
- data/lib/yadecli/model/vcs.rb +0 -19
- data/lib/yadecli/service/authentication_service.rb +0 -31
- data/lib/yadecli/service/build_step_service.rb +0 -24
- data/lib/yadecli/service/build_task_service.rb +0 -70
- data/lib/yadecli/service/composer_service.rb +0 -416
- data/lib/yadecli/service/connect_service.rb +0 -19
- data/lib/yadecli/service/host_service.rb +0 -191
- data/lib/yadecli/service/module_service.rb +0 -78
- data/lib/yadecli/service/project_service.rb +0 -205
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6709b5385d663fd644c167d3e225e8c0fa9909acabb9111f572b71f7baf26887
|
4
|
+
data.tar.gz: ad6776bb1dff0d7d8f0fc1124637d10df6768cd0f3e4591f64106ae328ae62a7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 98a614da2705e764cdce869d5bf396181af93995546196c796e074846a149dd9e60c84b4080dc4cfbc3c7517a73b3721766d5148749b1c33b02ee50d34885d89
|
7
|
+
data.tar.gz: f1af5277f437d9369b9ce05c9ec3536ee5497cddbe6c1b255ee5539e44fba87e4839f1ca1a7da2fe10f8de93943fbc5566c13943b185b07843264c98d0d6b24b
|
data/.DS_Store
CHANGED
Binary file
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
@@ -4,3 +4,8 @@ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
|
4
4
|
|
5
5
|
# Specify your gem's dependencies in yadecli.gemspec
|
6
6
|
gemspec
|
7
|
+
|
8
|
+
gem 'yade-common', :path => "#{ENV['HOME']}/projekte/yade/src/yade-common"
|
9
|
+
gem 'yade-composer-rest-client', :path => "#{ENV['HOME']}/projekte/yade/src/yade-composer-rest-client"
|
10
|
+
gem 'yade-domain-rest-client', :path => "#{ENV['HOME']}/projekte/yade/src/yade-domain-rest-client"
|
11
|
+
gem 'yade-project-rest-client', :path => "#{ENV['HOME']}/projekte/yade/src/yade-project-rest-client"
|
data/Gemfile.lock
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
yadecli (0.1.
|
4
|
+
yadecli (0.1.4)
|
5
5
|
activemodel (~> 5.2)
|
6
6
|
artii (~> 2.1)
|
7
7
|
colorize (~> 0.8)
|
8
8
|
dotenv (~> 2.5)
|
9
9
|
gitlab (~> 3.6)
|
10
10
|
httparty (~> 0.13)
|
11
|
+
mutations (~> 0.8)
|
11
12
|
net-ssh (~> 5.0)
|
12
13
|
rest-client (~> 2.0)
|
13
14
|
settingslogic (~> 2.0)
|
@@ -15,6 +16,41 @@ PATH
|
|
15
16
|
tty-command (~> 0.8)
|
16
17
|
tty-prompt (~> 0.16)
|
17
18
|
tty-table (~> 0.10)
|
19
|
+
yade-composer-rest-client (~> 0.1)
|
20
|
+
yade-domain-rest-client (~> 0.1)
|
21
|
+
yade-project-rest-client (~> 0.1)
|
22
|
+
|
23
|
+
PATH
|
24
|
+
remote: /Users/seba/projekte/yade/src/yade-common
|
25
|
+
specs:
|
26
|
+
yade-common (0.1.2)
|
27
|
+
activemodel (~> 5.2)
|
28
|
+
httparty (~> 0.15)
|
29
|
+
settingslogic (~> 2.0)
|
30
|
+
|
31
|
+
PATH
|
32
|
+
remote: /Users/seba/projekte/yade/src/yade-composer-rest-client
|
33
|
+
specs:
|
34
|
+
yade-composer-rest-client (0.1.2)
|
35
|
+
activemodel (~> 5.2)
|
36
|
+
httparty (~> 0.15)
|
37
|
+
yade-common (~> 0.1)
|
38
|
+
|
39
|
+
PATH
|
40
|
+
remote: /Users/seba/projekte/yade/src/yade-domain-rest-client
|
41
|
+
specs:
|
42
|
+
yade-domain-rest-client (0.1.2)
|
43
|
+
activemodel (~> 5.2)
|
44
|
+
httparty (~> 0.15)
|
45
|
+
yade-common (~> 0.1)
|
46
|
+
|
47
|
+
PATH
|
48
|
+
remote: /Users/seba/projekte/yade/src/yade-project-rest-client
|
49
|
+
specs:
|
50
|
+
yade-project-rest-client (0.1.2)
|
51
|
+
activemodel (~> 5.2)
|
52
|
+
httparty (~> 0.15)
|
53
|
+
yade-common (~> 0.1)
|
18
54
|
|
19
55
|
GEM
|
20
56
|
remote: https://rubygems.org/
|
@@ -83,6 +119,8 @@ GEM
|
|
83
119
|
multi_json (1.13.1)
|
84
120
|
multi_test (0.1.2)
|
85
121
|
multi_xml (0.6.0)
|
122
|
+
mutations (0.8.3)
|
123
|
+
activesupport
|
86
124
|
necromancer (0.4.0)
|
87
125
|
net-ssh (5.0.2)
|
88
126
|
netrc (0.11.0)
|
@@ -123,7 +161,7 @@ GEM
|
|
123
161
|
unicode-display_width (~> 1.0, >= 1.0.1)
|
124
162
|
ruby-progressbar (1.10.0)
|
125
163
|
settingslogic (2.0.9)
|
126
|
-
strings (0.1.
|
164
|
+
strings (0.1.4)
|
127
165
|
strings-ansi (~> 0.1.0)
|
128
166
|
unicode-display_width (~> 1.4.0)
|
129
167
|
unicode_utils (~> 1.4.0)
|
@@ -174,6 +212,10 @@ DEPENDENCIES
|
|
174
212
|
rspec (~> 3.0)
|
175
213
|
rspec-json_expectations (~> 2.1)
|
176
214
|
rubocop (~> 0.58.0)
|
215
|
+
yade-common!
|
216
|
+
yade-composer-rest-client!
|
217
|
+
yade-domain-rest-client!
|
218
|
+
yade-project-rest-client!
|
177
219
|
yadecli!
|
178
220
|
|
179
221
|
BUNDLED WITH
|
@@ -11,14 +11,29 @@ module Yadecli
|
|
11
11
|
|
12
12
|
class_option 'verbose', type: :boolean, default: false
|
13
13
|
|
14
|
-
desc '
|
15
|
-
def
|
16
|
-
Yadecli::
|
14
|
+
desc 'version', 'Print Version'
|
15
|
+
def version
|
16
|
+
puts Yadecli::VERSION
|
17
|
+
end
|
18
|
+
|
19
|
+
desc 'connect URL', 'Connect to a yade backend'
|
20
|
+
def connect(yade_url)
|
21
|
+
CliUtil.print_header('Yade Connect',
|
22
|
+
["Going to connect to yade backend", ''])
|
23
|
+
|
24
|
+
outcome = Yadecli::Command::ConnectCommand.run(yade_url: yade_url)
|
25
|
+
|
26
|
+
CliUtil.print_command_outcome(outcome)
|
17
27
|
end
|
18
28
|
|
19
29
|
desc 'login AUTH_URL USERNAME PASSWORD', 'Login to a yade'
|
20
30
|
def login(auth_url, username, password)
|
21
|
-
|
31
|
+
CliUtil.print_header('Yade Login',
|
32
|
+
["Going to log in user #{username}", ''])
|
33
|
+
|
34
|
+
outcome = Yadecli::Command::LoginCommand.run(auth_url: auth_url, auth_username: username, auth_password: password)
|
35
|
+
|
36
|
+
CliUtil.print_command_outcome(outcome)
|
22
37
|
end
|
23
38
|
|
24
39
|
desc 'host TYPE', 'Manage hosts'
|
data/lib/yadecli/cli/composer.rb
CHANGED
@@ -11,57 +11,113 @@ module Yadecli
|
|
11
11
|
# setup command
|
12
12
|
desc 'setup', 'Setup yade composer on this host'
|
13
13
|
def setup
|
14
|
-
|
14
|
+
CliUtil.print_header('YadeCli Composer Setup',
|
15
|
+
['Answer the following questions to setup Composer on this host:', ''])
|
16
|
+
|
17
|
+
outcome = Yadecli::Command::Composer::ComposerSetupCommand.run
|
18
|
+
|
19
|
+
CliUtil.print_command_outcome(outcome)
|
15
20
|
end
|
16
21
|
|
17
22
|
# list command
|
18
23
|
desc 'list', 'List the available Yade composer projects'
|
19
24
|
def list
|
20
|
-
|
25
|
+
CliUtil.print_header('YadeCli Composer List',
|
26
|
+
['This are the available Yade composer projects you can install', ''])
|
27
|
+
|
28
|
+
outcome = Yadecli::Command::Composer::ComposerListCommand.run
|
29
|
+
|
30
|
+
CliUtil.print_command_outcome(outcome)
|
31
|
+
|
32
|
+
puts ''
|
33
|
+
puts 'You can install any of the listed project with the following command:'
|
34
|
+
puts ''
|
35
|
+
puts ' bin/yadecli composer install <name> <branch> [--pull] [--setup] [--clean]'.colorize(:mode => :bold)
|
36
|
+
puts ''
|
21
37
|
end
|
22
38
|
|
23
39
|
# install command
|
24
40
|
desc 'install', 'Install a Yade composer project'
|
25
41
|
method_option :clean, default: false, aliases: '-c', desc: 'Clean install, will delete a existing composer project'
|
26
42
|
method_option :yes, default: false, aliases: '-y', desc: 'Will answer yes to all questions, This will run a git pull on installed projects without asking'
|
27
|
-
method_option :pull, default: false, aliases: '-p', desc: 'Will
|
43
|
+
method_option :pull, default: false, aliases: '-p', desc: 'Will pull the container belonging to the project'
|
28
44
|
def install(project_name, branch_name = nil)
|
29
|
-
|
45
|
+
CliUtil.print_header('YadeCli Composer Install',
|
46
|
+
["Going to install Yade composer project #{project_name}", ''])
|
47
|
+
|
48
|
+
outcome = Yadecli::Command::Composer::ComposerInstallCommand.run(project_name: project_name,
|
49
|
+
branch_name: branch_name,
|
50
|
+
options: options)
|
51
|
+
CliUtil.print_command_outcome(outcome)
|
30
52
|
end
|
31
53
|
|
32
54
|
# switch branch command
|
33
55
|
desc 'switch', 'Switch the branch of a installed Composer project'
|
34
56
|
method_option :pull, default: false, aliases: '-p', desc: 'Will run a git pull after switching the branch'
|
35
57
|
def switch(project_name, target_branch)
|
36
|
-
|
58
|
+
CliUtil.print_header('Composer Switch',
|
59
|
+
["Going to switch branch of composer project #{project_name} to #{target_branch}", ''])
|
60
|
+
|
61
|
+
outcome = Yadecli::Command::Composer::ComposerSwitchCommand.run(project_name: project_name,
|
62
|
+
target_branch: target_branch,
|
63
|
+
options: options)
|
64
|
+
CliUtil.print_command_outcome(outcome)
|
37
65
|
end
|
38
66
|
|
39
67
|
# uninstall command
|
40
68
|
desc 'uninstall', 'Uninstall a Yade composer project'
|
41
69
|
method_option :yes, default: false, aliases: '-y', desc: 'Will answer yes to all questions, This will uninstall the project without asking'
|
42
|
-
def uninstall(
|
43
|
-
|
70
|
+
def uninstall(project_name)
|
71
|
+
CliUtil.print_header('YadeCli Composer Uninstall',
|
72
|
+
["Going to uninstall composer project #{project_name}", ''])
|
73
|
+
|
74
|
+
outcome = Yadecli::Command::Composer::ComposerUninstallCommand.run(project_name: project_name,
|
75
|
+
options: options)
|
76
|
+
CliUtil.print_command_outcome(outcome)
|
44
77
|
end
|
45
78
|
|
46
79
|
# start command
|
47
|
-
desc 'start', 'Start a Yade
|
48
|
-
def start(project_name
|
49
|
-
|
80
|
+
desc 'start', 'Start a Yade composer service'
|
81
|
+
def start(project_name, service_name)
|
82
|
+
CliUtil.print_header('YadeCli Composer Start',
|
83
|
+
['Going to start composer service:',
|
84
|
+
" ↳ Composer Project : #{project_name}",
|
85
|
+
" ↳ Service Name : #{service_name}"])
|
86
|
+
|
87
|
+
outcome = Yadecli::Command::Composer::ComposerStartCommand.run(project_name: project_name,
|
88
|
+
service_name: service_name,
|
89
|
+
options: options)
|
90
|
+
CliUtil.print_command_outcome(outcome)
|
50
91
|
end
|
51
92
|
|
52
93
|
# stop command
|
53
94
|
desc 'stop', 'Stop a Yade Composer service'
|
54
|
-
method_option :rm, default: false, aliases: '-r', desc: '
|
95
|
+
method_option :rm, default: false, aliases: '-r', desc: 'Remove the docker container after stopping'
|
55
96
|
method_option :down, default: false, aliases: '-r', desc: 'Run docker-compose down -v'
|
56
|
-
def stop(project_name
|
57
|
-
|
97
|
+
def stop(project_name, service_name)
|
98
|
+
CliUtil.print_header('Composer Service Stop',['Going to stop composer service:',
|
99
|
+
" ↳ Composer Project : #{project_name}",
|
100
|
+
" ↳ Service Name : #{service_name}"])
|
101
|
+
|
102
|
+
outcome = Yadecli::Command::Composer::ComposerStopCommand.run(project_name: project_name,
|
103
|
+
service_name: service_name,
|
104
|
+
options: options)
|
105
|
+
|
106
|
+
CliUtil.print_command_outcome(outcome)
|
58
107
|
end
|
59
108
|
|
60
109
|
# log container output of service
|
61
110
|
desc 'log', 'Stop a Yade Composer service'
|
62
111
|
method_option :follow, default: false, aliases: '-f', desc: 'Log the docker containers output of the service'
|
63
112
|
def log(project_name, service_name)
|
64
|
-
|
113
|
+
CliUtil.print_header('Composer Service Log',["Going to show logs for composer service #{service_name}.",
|
114
|
+
'Hit ctrl + c to stop when you use the -f option'])
|
115
|
+
|
116
|
+
outcome = Yadecli::Command::Composer::ComposerLogCommand.run(project_name: project_name,
|
117
|
+
service_name: service_name,
|
118
|
+
options: options)
|
119
|
+
|
120
|
+
CliUtil.print_command_outcome(outcome)
|
65
121
|
end
|
66
122
|
end
|
67
123
|
end
|
data/lib/yadecli/cli/host.rb
CHANGED
@@ -4,24 +4,38 @@ require 'thor'
|
|
4
4
|
|
5
5
|
module Yadecli
|
6
6
|
module Cli
|
7
|
-
|
8
|
-
# Build
|
7
|
+
# Host
|
9
8
|
class Host < Thor
|
10
9
|
|
11
10
|
desc 'list', 'List available Yade hosts'
|
12
11
|
def list
|
13
|
-
|
12
|
+
CliUtil.print_header'Yade list hosts',
|
13
|
+
['This are the available hosts', '']
|
14
|
+
|
15
|
+
outcome = Yadecli::Command::Host::HostListCommand.run
|
16
|
+
|
17
|
+
CliUtil.print_command_outcome(outcome)
|
14
18
|
end
|
15
19
|
|
16
20
|
desc 'bootstrap', 'Bootstrap a Yade host to prepare it for provisioning'
|
17
21
|
method_option :setup, default: true, aliases: '-s', desc: 'Setup Yade bootstrap repository on host and install plugins'
|
18
22
|
def bootstrap(host_fqdn)
|
19
|
-
|
23
|
+
CliUtil.print_header'Yade bootstrap host',
|
24
|
+
["Going to bootstrap Yade host #{host_fqdn}", '']
|
25
|
+
|
26
|
+
outcome = Yadecli::Command::Host::HostBootstrapCommand.run(host_fqdn: host_fqdn, options: options)
|
27
|
+
|
28
|
+
CliUtil.print_command_outcome(outcome)
|
20
29
|
end
|
21
30
|
|
22
31
|
desc 'provision', 'Provision a Yade host'
|
23
32
|
def provision(host_fqdn)
|
24
|
-
|
33
|
+
CliUtil.print_header'Yade provision host',
|
34
|
+
["Going to provision Yade host #{host_fqdn}", '']
|
35
|
+
|
36
|
+
outcome = Yadecli::Command::Host::HostProvisionCommand.run(host_fqdn: host_fqdn, options: options)
|
37
|
+
|
38
|
+
CliUtil.print_command_outcome(outcome)
|
25
39
|
end
|
26
40
|
end
|
27
41
|
end
|
data/lib/yadecli/cli/module.rb
CHANGED
@@ -10,13 +10,24 @@ module Yadecli
|
|
10
10
|
|
11
11
|
desc 'list', 'List available modules'
|
12
12
|
def list(project_name)
|
13
|
-
|
13
|
+
CliUtil.print_header'YadeCli List Modules', ["This are the available modules for the Yade project #{project_name}", '']
|
14
|
+
|
15
|
+
outcome = Yadecli::Command::Module::ModuleListCommand.run(project_name: project_name)
|
16
|
+
|
17
|
+
CliUtil.print_command_outcome(outcome)
|
14
18
|
end
|
15
19
|
|
16
20
|
desc 'install', 'Install a module for the project given by name'
|
17
21
|
method_option :yes, aliases: '-y', desc: 'Answering yes to all question, will do a update if module already installed'
|
18
|
-
|
19
|
-
|
22
|
+
method_option :all, aliases: '-a', desc: 'Install all modules of the project'
|
23
|
+
def install(project_name, *module_names)
|
24
|
+
CliUtil.print_header'YadeCli Install Module',
|
25
|
+
["Going to install module #{module_names.join(', ')} for Yade project #{project_name}"]
|
26
|
+
|
27
|
+
outcome = Yadecli::Command::Module::ModuleInstallCommand.run(project_name: project_name,
|
28
|
+
module_names: module_names, options: options)
|
29
|
+
|
30
|
+
CliUtil.print_command_outcome(outcome)
|
20
31
|
end
|
21
32
|
|
22
33
|
end
|
data/lib/yadecli/cli/project.rb
CHANGED
@@ -10,31 +10,53 @@ module Yadecli
|
|
10
10
|
|
11
11
|
desc 'list', 'List available projects'
|
12
12
|
def list
|
13
|
-
|
13
|
+
CliUtil.print_header'YadeCli Projects', ['This are the available Yade projects', '']
|
14
|
+
|
15
|
+
outcome = Yadecli::Command::Project::ProjectListCommand.run
|
16
|
+
|
17
|
+
CliUtil.print_command_outcome(outcome)
|
14
18
|
end
|
15
19
|
|
16
20
|
desc 'install', 'Install a project'
|
17
21
|
method_option :yes, aliases: '-y', desc: 'Answering yes to all question, will do a update if project already installed'
|
18
22
|
def install(project_name)
|
19
|
-
|
23
|
+
CliUtil.print_header'YadeCli Install Project',
|
24
|
+
["Going to install Yade project #{project_name}", '']
|
25
|
+
|
26
|
+
outcome = Yadecli::Command::Project::ProjectInstallCommand.run(project_name: project_name, options: options)
|
27
|
+
|
28
|
+
CliUtil.print_command_outcome(outcome)
|
20
29
|
end
|
21
30
|
|
22
31
|
desc 'uninstall', 'Uninstall a project'
|
23
32
|
method_option :yes, aliases: '-y', desc: 'Answering yes to all question, will do a unattended uninstall'
|
24
33
|
def uninstall(project_name)
|
25
|
-
|
34
|
+
CliUtil.print_header'YadeCli Uninstall Project',
|
35
|
+
["Going to uninstall Yade project #{project_name}", '']
|
36
|
+
|
37
|
+
outcome = Yadecli::Command::Project::ProjectUninstallCommand.run(project_name: project_name, options: options)
|
38
|
+
|
39
|
+
CliUtil.print_command_outcome(outcome)
|
26
40
|
end
|
27
41
|
|
28
42
|
desc 'setup', 'Setup a project'
|
29
|
-
#method_option :yes, aliases: '-y', desc: 'Answering yes to all question, will do a unattended uninstall'
|
30
43
|
def setup(project_name)
|
31
|
-
|
44
|
+
CliUtil.print_header'YadeCli Project Setup',
|
45
|
+
["Going to setup Yade project #{project_name}"]
|
46
|
+
|
47
|
+
outcome = Yadecli::Command::Project::ProjectSetupCommand.run(project_name: project_name, options: options)
|
48
|
+
|
49
|
+
CliUtil.print_command_outcome(outcome)
|
32
50
|
end
|
33
51
|
|
34
52
|
desc 'start', 'Start a project'
|
35
|
-
|
36
|
-
|
37
|
-
|
53
|
+
def start(project_name, selection = nil)
|
54
|
+
CliUtil.print_header'YadeCli Project Start',['Going to start Yade Project']
|
55
|
+
|
56
|
+
outcome = Yadecli::Command::Project::ProjectStartCommand.run(project_name: project_name, selection: selection,
|
57
|
+
options: options)
|
58
|
+
|
59
|
+
CliUtil.print_command_outcome(outcome)
|
38
60
|
end
|
39
61
|
|
40
62
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
# project start response
|
6
|
+
class ProjectStartResponse
|
7
|
+
include ActiveModel::Model
|
8
|
+
include ActiveModel::Serializers::JSON
|
9
|
+
|
10
|
+
attr_accessor :project, :project_home, :selection
|
11
|
+
|
12
|
+
validates_presence_of 'project', 'project_home', 'selection'
|
13
|
+
|
14
|
+
def attributes
|
15
|
+
instance_values
|
16
|
+
end
|
17
|
+
|
18
|
+
def write(path)
|
19
|
+
File.open(path, 'w') { |file| file.write(self.as_json(include: :project).to_json) }
|
20
|
+
end
|
21
|
+
end
|
data/lib/yadecli/cli/task.rb
CHANGED
@@ -8,13 +8,17 @@ module Yadecli
|
|
8
8
|
class Task < Thor
|
9
9
|
|
10
10
|
desc 'list', 'List the available tasks of a xxx'
|
11
|
-
def list(module_name = nil)
|
12
|
-
|
11
|
+
def list(project_name, module_name = nil)
|
12
|
+
CliUtil.print_header'YadeCli Tasks', ['This are the available Yade tasks', '']
|
13
|
+
|
14
|
+
Yadecli::Command::Task::TaskListCommand.run(project_name: project_name, module_name: module_name)
|
15
|
+
|
16
|
+
#CliUtil.print_command_outcome(outcome)
|
13
17
|
end
|
14
18
|
|
15
|
-
# desc '
|
16
|
-
# def
|
17
|
-
#
|
19
|
+
# desc 'exec', 'Execute a module task'
|
20
|
+
# def exec(module_name, task_name)
|
21
|
+
# #Yadecli::Service::BuildTaskService.new.exec(module_name, task_name)
|
18
22
|
# end
|
19
23
|
end
|
20
24
|
end
|
@@ -12,16 +12,14 @@ module Yadecli
|
|
12
12
|
# request yade token
|
13
13
|
def initialize
|
14
14
|
Gitlab.configure do |config|
|
15
|
-
config.endpoint =
|
16
|
-
config.private_token =
|
15
|
+
config.endpoint = Yade::Common::Config::ComposerConfig[:git_api_url]
|
16
|
+
config.private_token = Yade::Common::Config::ComposerConfig[:git_token]
|
17
17
|
end
|
18
|
-
|
19
|
-
#Gitlab.http_proxy('squid.dzbw.de', 3128)
|
20
18
|
end
|
21
19
|
|
22
20
|
# get branch names from gitlab project given by name
|
23
21
|
def get_branch_names(repository_name)
|
24
|
-
projects = Gitlab.projects
|
22
|
+
projects = Gitlab.projects(search: repository_name)
|
25
23
|
|
26
24
|
project = projects.select { |p| repository_name == p.name }.first
|
27
25
|
|
@@ -32,7 +30,7 @@ module Yadecli
|
|
32
30
|
|
33
31
|
# get branch names from gitlab project given by name
|
34
32
|
def get_default_branch(repository_name)
|
35
|
-
projects = Gitlab.projects
|
33
|
+
projects = Gitlab.projects(search: repository_name)
|
36
34
|
|
37
35
|
project = projects.select { |p| repository_name == p.name }.first
|
38
36
|
|
@@ -0,0 +1,166 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'mutations'
|
4
|
+
require 'uri'
|
5
|
+
|
6
|
+
module Yadecli
|
7
|
+
module Command
|
8
|
+
module Composer
|
9
|
+
class ComposerInstallCommand < Mutations::Command
|
10
|
+
|
11
|
+
required do
|
12
|
+
string :project_name, empty: false
|
13
|
+
end
|
14
|
+
|
15
|
+
optional do
|
16
|
+
string :branch_name, empty: false
|
17
|
+
hash :options do
|
18
|
+
string :* # Allows any key to pass through. Useful for dynamic key / value objects
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
#
|
23
|
+
def execute
|
24
|
+
composer_project_client = Yade::Composer::Rest::Client::ComposerProjectClient.new
|
25
|
+
composer_service_client = Yade::Composer::Rest::Client::ComposerServiceClient.new
|
26
|
+
|
27
|
+
composer_project = composer_project_client.get_by_name(self.project_name)
|
28
|
+
|
29
|
+
# delete already installed when option --clean given
|
30
|
+
FileUtils.rm_rf(composer_project.install_dir) if options[:clean]
|
31
|
+
|
32
|
+
# check preconditions
|
33
|
+
check_install_preconditions(options)
|
34
|
+
|
35
|
+
# check already installed
|
36
|
+
already_installed = composer_project.installed?
|
37
|
+
|
38
|
+
# ask for branch if not given from commandline
|
39
|
+
branch_name = UserInput.select_branch(composer_project.git_repo_name) if branch_name == nil && !already_installed && !options[:yes]
|
40
|
+
|
41
|
+
if already_installed
|
42
|
+
puts "Composer project #{project_name} already installed.".colorize(color: :blue, mode: :bold)
|
43
|
+
puts ' ↳ Doing a git pull.'
|
44
|
+
|
45
|
+
pull_repository(composer_project, options)
|
46
|
+
else
|
47
|
+
puts "Composer project #{project_name} will be installed.".colorize(color: :blue, mode: :bold)
|
48
|
+
puts ' ↳ Doing a git clone.'
|
49
|
+
|
50
|
+
clone_repository(composer_project, branch_name)
|
51
|
+
end
|
52
|
+
|
53
|
+
puts ''
|
54
|
+
if already_installed
|
55
|
+
puts " Successfully updated '#{composer_project.name}' at #{composer_project.install_dir}."
|
56
|
+
else
|
57
|
+
puts " Successfully installed '#{composer_project.name}' to #{composer_project.install_dir}."
|
58
|
+
end
|
59
|
+
|
60
|
+
composer_services = composer_service_client.get_by_composer_project_id(composer_project.id)
|
61
|
+
service_names = composer_services.collect(&:name).join(' | ')
|
62
|
+
|
63
|
+
pull_container(composer_project) if options[:pull]
|
64
|
+
|
65
|
+
"""
|
66
|
+
Use the following commands to manage the service(s)
|
67
|
+
Start : bin/yadecli composer start #{composer_project.name} #{service_names}
|
68
|
+
Stop : bin/yadecli composer stop #{composer_project.name} #{service_names}
|
69
|
+
"""
|
70
|
+
end
|
71
|
+
|
72
|
+
private
|
73
|
+
|
74
|
+
# check install preconditions
|
75
|
+
def check_install_preconditions(options)
|
76
|
+
cmd = TTY::Command.new(output: Yadecli.LOGGER)
|
77
|
+
|
78
|
+
cmd.run('test -x /usr/bin/docker') if SystemUtil.os == 'linux'
|
79
|
+
cmd.run('test -x /usr/local/bin/docker') if SystemUtil.os == 'macosx'
|
80
|
+
|
81
|
+
cmd.run('test -x /usr/local/bin/docker-compose')
|
82
|
+
end
|
83
|
+
|
84
|
+
# clone repository
|
85
|
+
def clone_repository(composer_project, branch_name)
|
86
|
+
username = Yade::Common::Config::ComposerConfig[:git_username]
|
87
|
+
password = Yade::Common::Config::ComposerConfig[:git_password]
|
88
|
+
|
89
|
+
git_url = URI.parse(composer_project.gitUrl)
|
90
|
+
|
91
|
+
scheme = git_url.scheme
|
92
|
+
host = git_url.host
|
93
|
+
path = git_url.path
|
94
|
+
|
95
|
+
url_with_auth = "#{scheme}://#{username}:#{password}@#{host}#{path}"
|
96
|
+
|
97
|
+
cmd = TTY::Command.new(output: Yadecli.LOGGER)
|
98
|
+
cmdline = "git clone --depth=1 "
|
99
|
+
cmdline += "-b #{branch_name} " if branch_name != nil
|
100
|
+
cmdline += "#{url_with_auth} #{composer_project.install_dir}"
|
101
|
+
|
102
|
+
cmd.run(cmdline, only_output_on_error: true)
|
103
|
+
end
|
104
|
+
|
105
|
+
# pull repository
|
106
|
+
def pull_repository(composer_project, options)
|
107
|
+
if options[:yes]
|
108
|
+
answer = true
|
109
|
+
else
|
110
|
+
puts ''
|
111
|
+
answer = TTY::Prompt.new.yes?('Do you want to pull the changes for the repository?')
|
112
|
+
end
|
113
|
+
|
114
|
+
if answer
|
115
|
+
cmd = TTY::Command.new(output: Yadecli.LOGGER)
|
116
|
+
cmd.run('git pull', only_output_on_error: true, chdir: composer_project.install_dir)
|
117
|
+
else
|
118
|
+
puts 'There is nothing more I can do for you. Bye.'
|
119
|
+
exit(1)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
# pull container
|
124
|
+
def pull_container(composer_project)
|
125
|
+
# make shure we are logged in to the docker registry
|
126
|
+
docker_login
|
127
|
+
|
128
|
+
cmd = TTY::Command.new(output: Yadecli.LOGGER)
|
129
|
+
|
130
|
+
puts ''
|
131
|
+
puts 'Pulling docker images:'.colorize(color: :blue)
|
132
|
+
|
133
|
+
doco = YAML.load_file("#{composer_project.install_dir}/docker-compose.yml")
|
134
|
+
|
135
|
+
has_failed_pulls = false
|
136
|
+
doco['services'].each do |k, v|
|
137
|
+
cmdline = "docker-compose pull #{k}"
|
138
|
+
|
139
|
+
print " ↳ #{cmdline}... "
|
140
|
+
begin
|
141
|
+
cmd.run(cmdline, chdir: composer_project.install_dir)
|
142
|
+
|
143
|
+
puts 'done'.colorize(:green)
|
144
|
+
rescue TTY::Command::ExitError => e
|
145
|
+
puts 'failed'.colorize(:red)
|
146
|
+
has_failed_pulls = true
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
puts ''
|
151
|
+
puts 'Successfully pulled all docker containers.'.colorize(:green) unless has_failed_pulls
|
152
|
+
puts "Failed to pull for at least on container. See log at #{Dir.pwd}/composer.log".colorize(:red) if has_failed_pulls
|
153
|
+
end
|
154
|
+
|
155
|
+
# docker login
|
156
|
+
def docker_login
|
157
|
+
cmd = TTY::Command.new(output: Yadecli.LOGGER)
|
158
|
+
|
159
|
+
cmdline = "docker login #{Yade::Common::Config::ComposerConfig[:docker_registry_url]} -u #{Yade::Common::Config::ComposerConfig[:docker_registry_username]} -p #{Yade::Common::Config::ComposerConfig[:docker_registry_password]}"
|
160
|
+
|
161
|
+
cmd.run(cmdline, only_output_on_error: true)
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|