Class: Kontena::Command
- Inherits:
-
Clamp::Command
- Object
- Clamp::Command
- Kontena::Command
show all
- Defined in:
- lib/kontena/command.rb
Direct Known Subclasses
Kontena::Cli::AppCommand, Kontena::Cli::Apps::BuildCommand, Kontena::Cli::Apps::ConfigCommand, Kontena::Cli::Apps::DeployCommand, Kontena::Cli::Apps::InitCommand, Kontena::Cli::Apps::ListCommand, Kontena::Cli::Apps::LogsCommand, Kontena::Cli::Apps::MonitorCommand, Kontena::Cli::Apps::RemoveCommand, Kontena::Cli::Apps::RestartCommand, Kontena::Cli::Apps::ScaleCommand, Kontena::Cli::Apps::ShowCommand, Kontena::Cli::Apps::StartCommand, Kontena::Cli::Apps::StopCommand, Kontena::Cli::Certificate::AuthorizeCommand, Kontena::Cli::Certificate::GetCommand, Kontena::Cli::Certificate::RegisterCommand, Kontena::Cli::CertificateCommand, Kontena::Cli::Cloud::LoginCommand, Kontena::Cli::Cloud::LogoutCommand, Kontena::Cli::Cloud::Master::AddCommand, Kontena::Cli::Cloud::Master::ListCommand, Kontena::Cli::Cloud::Master::RemoveCommand, Kontena::Cli::Cloud::Master::ShowCommand, Kontena::Cli::Cloud::Master::UpdateCommand, Kontena::Cli::Cloud::MasterCommand, Kontena::Cli::CloudCommand, Kontena::Cli::ContainerCommand, Kontena::Cli::Containers::ExecCommand, Kontena::Cli::Containers::InspectCommand, Kontena::Cli::Containers::ListCommand, Kontena::Cli::Etcd::GetCommand, Kontena::Cli::Etcd::ListCommand, Kontena::Cli::Etcd::MkdirCommand, Kontena::Cli::Etcd::RemoveCommand, Kontena::Cli::Etcd::SetCommand, Kontena::Cli::EtcdCommand, Kontena::Cli::ExternalRegistries::AddCommand, Kontena::Cli::ExternalRegistries::DeleteCommand, Kontena::Cli::ExternalRegistries::ListCommand, Kontena::Cli::ExternalRegistries::RemoveCommand, Kontena::Cli::ExternalRegistryCommand, Kontena::Cli::GridCommand, Kontena::Cli::Grids::AuditLogCommand, Kontena::Cli::Grids::CloudConfigCommand, Kontena::Cli::Grids::CreateCommand, Kontena::Cli::Grids::CurrentCommand, Kontena::Cli::Grids::EnvCommand, Kontena::Cli::Grids::ListCommand, Kontena::Cli::Grids::LogsCommand, Kontena::Cli::Grids::RemoveCommand, Kontena::Cli::Grids::ShowCommand, Kontena::Cli::Grids::TrustedSubnetCommand, Kontena::Cli::Grids::TrustedSubnets::AddCommand, Kontena::Cli::Grids::TrustedSubnets::ListCommand, Kontena::Cli::Grids::TrustedSubnets::RemoveCommand, Kontena::Cli::Grids::UpdateCommand, Kontena::Cli::Grids::UseCommand, Kontena::Cli::Grids::UserCommand, Kontena::Cli::Grids::Users::AddCommand, Kontena::Cli::Grids::Users::ListCommand, Kontena::Cli::Grids::Users::RemoveCommand, Kontena::Cli::LoginCommand, Kontena::Cli::LogoutCommand, Kontena::Cli::Master::AuditLogCommand, Kontena::Cli::Master::Config::ExportCommand, Kontena::Cli::Master::Config::GetCommand, Kontena::Cli::Master::Config::ImportCommand, Kontena::Cli::Master::Config::SetCommand, Kontena::Cli::Master::Config::UnsetCommand, Kontena::Cli::Master::ConfigCommand, Kontena::Cli::Master::CreateCommand, Kontena::Cli::Master::CurrentCommand, Kontena::Cli::Master::InitCloudCommand, Kontena::Cli::Master::JoinCommand, Kontena::Cli::Master::ListCommand, Kontena::Cli::Master::LoginCommand, Kontena::Cli::Master::LogoutCommand, Kontena::Cli::Master::RemoveCommand, Kontena::Cli::Master::Token::CreateCommand, Kontena::Cli::Master::Token::CurrentCommand, Kontena::Cli::Master::Token::ListCommand, Kontena::Cli::Master::Token::RemoveCommand, Kontena::Cli::Master::Token::ShowCommand, Kontena::Cli::Master::TokenCommand, Kontena::Cli::Master::UseCommand, Kontena::Cli::Master::Users::InviteCommand, Kontena::Cli::Master::Users::ListCommand, Kontena::Cli::Master::Users::RemoveCommand, Kontena::Cli::Master::Users::RoleCommand, Kontena::Cli::Master::Users::Roles::AddCommand, Kontena::Cli::Master::Users::Roles::RemoveCommand, Kontena::Cli::Master::UsersCommand, Kontena::Cli::MasterCommand, Kontena::Cli::NodeCommand, Kontena::Cli::Nodes::LabelCommand, Kontena::Cli::Nodes::Labels::AddCommand, Kontena::Cli::Nodes::Labels::ListCommand, Kontena::Cli::Nodes::Labels::RemoveCommand, Kontena::Cli::Nodes::ListCommand, Kontena::Cli::Nodes::RemoveCommand, Kontena::Cli::Nodes::ShowCommand, Kontena::Cli::Nodes::SshCommand, Kontena::Cli::Nodes::UpdateCommand, Kontena::Cli::PluginCommand, Kontena::Cli::Plugins::InstallCommand, Kontena::Cli::Plugins::ListCommand, Kontena::Cli::Plugins::SearchCommand, Kontena::Cli::Plugins::UninstallCommand, Kontena::Cli::RegisterCommand, Kontena::Cli::Registry::CreateCommand, Kontena::Cli::Registry::RemoveCommand, Kontena::Cli::RegistryCommand, Kontena::Cli::ServiceCommand, Kontena::Cli::Services::ContainersCommand, Kontena::Cli::Services::CreateCommand, Kontena::Cli::Services::DeleteCommand, Kontena::Cli::Services::DeployCommand, Kontena::Cli::Services::EnvCommand, Kontena::Cli::Services::Envs::AddCommand, Kontena::Cli::Services::Envs::ListCommand, Kontena::Cli::Services::Envs::RemoveCommand, Kontena::Cli::Services::LinkCommand, Kontena::Cli::Services::ListCommand, Kontena::Cli::Services::LogsCommand, Kontena::Cli::Services::MonitorCommand, Kontena::Cli::Services::RemoveCommand, Kontena::Cli::Services::RestartCommand, Kontena::Cli::Services::ScaleCommand, Kontena::Cli::Services::SecretCommand, Kontena::Cli::Services::Secrets::LinkCommand, Kontena::Cli::Services::Secrets::UnlinkCommand, Kontena::Cli::Services::ShowCommand, Kontena::Cli::Services::StartCommand, Kontena::Cli::Services::StatsCommand, Kontena::Cli::Services::StopCommand, Kontena::Cli::Services::UnlinkCommand, Kontena::Cli::Services::UpdateCommand, Kontena::Cli::StackCommand, Kontena::Cli::Stacks::BuildCommand, Kontena::Cli::Stacks::DeployCommand, Kontena::Cli::Stacks::InstallCommand, Kontena::Cli::Stacks::ListCommand, Kontena::Cli::Stacks::LogsCommand, Kontena::Cli::Stacks::MonitorCommand, Kontena::Cli::Stacks::Registry::PullCommand, Kontena::Cli::Stacks::Registry::PushCommand, Kontena::Cli::Stacks::Registry::RemoveCommand, Kontena::Cli::Stacks::Registry::SearchCommand, Kontena::Cli::Stacks::Registry::ShowCommand, Kontena::Cli::Stacks::RegistryCommand, Kontena::Cli::Stacks::RemoveCommand, Kontena::Cli::Stacks::ShowCommand, Kontena::Cli::Stacks::UpgradeCommand, Kontena::Cli::Vault::ListCommand, Kontena::Cli::Vault::ReadCommand, Kontena::Cli::Vault::RemoveCommand, Kontena::Cli::Vault::UpdateCommand, Kontena::Cli::Vault::WriteCommand, Kontena::Cli::VaultCommand, Kontena::Cli::VersionCommand, Kontena::Cli::Vpn::ConfigCommand, Kontena::Cli::Vpn::CreateCommand, Kontena::Cli::Vpn::RemoveCommand, Kontena::Cli::VpnCommand, Kontena::Cli::WhoamiCommand, MainCommand
Defined Under Namespace
Modules: Finalizer
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Instance Attribute Details
#arguments ⇒ Object
Returns the value of attribute arguments.
5
6
7
|
# File 'lib/kontena/command.rb', line 5
def arguments
@arguments
end
|
#exit_code ⇒ Object
Returns the value of attribute exit_code.
7
8
9
|
# File 'lib/kontena/command.rb', line 7
def exit_code
@exit_code
end
|
#result ⇒ Object
Returns the value of attribute result.
6
7
8
|
# File 'lib/kontena/command.rb', line 6
def result
@result
end
|
Class Method Details
.banner(msg, extra_feed = true) ⇒ Object
Overwrite Clamp’s banner command. Calling banner multiple times will now add lines to the banner message instead of overwriting the whole message. This is useful if callbacks add banner messages.
89
90
91
|
# File 'lib/kontena/command.rb', line 89
def self.banner(msg, = true)
self.description = [self.description, ? "\n#{msg}" : msg].compact.join("\n")
end
|
.callback_matcher(cmd_class = nil, cmd_type = nil) ⇒ Object
65
66
67
68
69
70
71
72
73
74
75
76
|
# File 'lib/kontena/command.rb', line 65
def self.callback_matcher(cmd_class = nil, cmd_type = nil)
unless cmd_class
if @command_class.nil?
return nil
else
return [@command_class, @command_type]
end
end
@command_class = cmd_class.to_sym
@command_type = cmd_type.to_sym
[@command_class, @command_type]
end
|
.inherited(where) ⇒ Object
61
62
63
|
# File 'lib/kontena/command.rb', line 61
def self.inherited(where)
where.extend Finalizer
end
|
.requires_current_account_token ⇒ Object
.requires_current_account_token? ⇒ Boolean
131
132
133
|
# File 'lib/kontena/command.rb', line 131
def self.requires_current_account_token?
@requires_current_account_token ||= false
end
|
.requires_current_grid ⇒ Object
100
101
102
103
104
105
|
# File 'lib/kontena/command.rb', line 100
def self.requires_current_grid
unless Kontena::Cli::Config.current_grid
banner "#{Kontena.pastel.green("Requires current grid")}: This command requires that you have selected a grid as the current grid using 'kontena grid use' or by setting KONTENA_GRID environment variable."
end
@requires_current_grid = true
end
|
.requires_current_grid? ⇒ Boolean
123
124
125
|
# File 'lib/kontena/command.rb', line 123
def self.requires_current_grid?
@requires_current_grid ||= false
end
|
.requires_current_master ⇒ Object
93
94
95
96
97
98
|
# File 'lib/kontena/command.rb', line 93
def self.requires_current_master
unless Kontena::Cli::Config.current_master
banner "#{Kontena.pastel.green("Requires current master")}: This command requires that you have selected a current master using 'kontena master login' or 'kontena master use'. You can also use the environment variable KONTENA_URL to specify the master address or KONTENA_MASTER=master_name to override the current_master setting."
end
@requires_current_master = true
end
|
.requires_current_master? ⇒ Boolean
115
116
117
|
# File 'lib/kontena/command.rb', line 115
def self.requires_current_master?
@requires_current_master ||= false
end
|
.requires_current_master_token ⇒ Object
140
141
142
|
# File 'lib/kontena/command.rb', line 140
def self.requires_current_master_token
@requires_current_master_token = true
end
|
.requires_current_master_token? ⇒ Boolean
144
145
146
|
# File 'lib/kontena/command.rb', line 144
def self.requires_current_master_token?
@requires_current_master_token ||= false
end
|
Instance Method Details
#help_requested? ⇒ Boolean
165
166
167
168
169
|
# File 'lib/kontena/command.rb', line 165
def help_requested?
return true if @arguments.include?('--help')
return true if @arguments.include?('-h')
false
end
|
#run(arguments) ⇒ Object
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
|
# File 'lib/kontena/command.rb', line 171
def run(arguments)
ENV["DEBUG"] && puts("Running #{self} -- callback matcher = '#{self.class.callback_matcher.nil? ? "nil" : self.class.callback_matcher.map(&:to_s).join(' ')}'")
@arguments = arguments
run_callbacks :before_parse unless help_requested?
parse @arguments
unless help_requested?
verify_current_master
verify_current_master_token
verify_current_grid
run_callbacks :before
end
begin
@result = execute
@exit_code = @result.kind_of?(FalseClass) ? 1 : 0
rescue SystemExit => exc
@result = exc.status == 0
@exit_code = exc.status
end
run_callbacks :after unless help_requested?
exit(@exit_code) if @exit_code.to_i > 0
@result
end
|
#run_callbacks(state) ⇒ Object
78
79
80
81
82
|
# File 'lib/kontena/command.rb', line 78
def run_callbacks(state)
if self.class.respond_to?(:callback_matcher) && !self.class.callback_matcher.nil? && !self.class.callback_matcher.compact.empty?
Kontena::Callback.run_callbacks(self.class.callback_matcher, state, self)
end
end
|
#verify_current_account_token ⇒ Object
135
136
137
138
|
# File 'lib/kontena/command.rb', line 135
def verify_current_account_token
retried ||= false
Kontena::Cli::Config.instance.require_current_account_token if self.class.requires_current_account_token?
end
|
#verify_current_grid ⇒ Object
127
128
129
|
# File 'lib/kontena/command.rb', line 127
def verify_current_grid
Kontena::Cli::Config.instance.require_current_grid if self.class.requires_current_grid?
end
|
#verify_current_master ⇒ Object
119
120
121
|
# File 'lib/kontena/command.rb', line 119
def verify_current_master
Kontena::Cli::Config.instance.require_current_master if self.class.requires_current_master?
end
|
#verify_current_master_token ⇒ Object