kontena-plugin-shell 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/kontena/plugin/shell/commands/batch_do.rb +1 -1
- data/lib/kontena/plugin/shell/commands/context_top.rb +1 -1
- data/lib/kontena/plugin/shell/commands/env.rb +27 -0
- data/lib/kontena/plugin/shell/commands/kontena.rb +5 -1
- data/lib/kontena/plugin/shell/completer.rb +2 -2
- data/lib/kontena/plugin/shell/version.rb +1 -1
- data/spec/helpers/cli_helper.rb +32 -0
- data/spec/kontena/plugin/shell/command_spec.rb +91 -0
- data/spec/kontena/plugin/shell/commands/batch_do_spec.rb +10 -0
- data/spec/kontena/plugin/shell/commands/context_top_spec.rb +22 -0
- data/spec/kontena/plugin/shell/commands/context_up_spec.rb +7 -0
- data/spec/kontena/plugin/shell/commands/debug_spec.rb +50 -0
- data/spec/kontena/plugin/shell/commands/env_spec.rb +26 -0
- data/spec/kontena/plugin/shell/commands/exit_spec.rb +5 -0
- data/spec/kontena/plugin/shell/commands/help_spec.rb +13 -0
- data/spec/kontena/plugin/shell/commands/kontena_spec.rb +30 -0
- data/spec/kontena/plugin/shell/context_spec.rb +52 -0
- data/spec/kontena/plugin/shell/session_spec.rb +14 -0
- data/spec/spec_helper.rb +23 -0
- metadata +23 -13
- data/.gitignore +0 -16
- data/.travis.yml +0 -16
- data/Gemfile +0 -8
- data/kontena-plugin-shell.gemspec +0 -26
- data/kosh.gif +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 224176b2e33d18439b83db9414b42880f81b3d2f
|
4
|
+
data.tar.gz: e17443d9aa7aad0903d601c396d88bee5e85a215
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1135d9b05e7e24d873e4b89ceed8d2de6650ee807637bc0c803c0ad2bd51cc0d20069eb9aeb7bba32cab18abad7b7a1f8d4f93b5d8fff88462e89386aa79a233
|
7
|
+
data.tar.gz: 0de7bb93ea664c32e6182c5da20abf7120a6d27e22255c301ba5c648bb231af2fb6d5963c655428cc0fd5adde12f76a820cf58397521717ddd0f7c3b69c19d1e
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'kontena/plugin/shell/command'
|
2
|
+
|
3
|
+
module Kontena::Plugin
|
4
|
+
module Shell
|
5
|
+
class EnvCommand < Command
|
6
|
+
command 'env'
|
7
|
+
description 'Show or set environment variables'
|
8
|
+
help "Use 'env' to display all environment variables.\n" +
|
9
|
+
"Use 'env HOME' to display the value of $HOME.\n" +
|
10
|
+
"Use 'env KONTENA_URL=https://foo.example.com' to set an environment variable."
|
11
|
+
completions -> (context, tokens, word) { ENV.keys.select { |k| k.start_with?(word) } }
|
12
|
+
|
13
|
+
def execute
|
14
|
+
if args[1] && args[1].include?('=')
|
15
|
+
var, val = args[1].split('=', 2)
|
16
|
+
ENV[var]=val
|
17
|
+
Kontena::Cli::Config.reset_instance
|
18
|
+
elsif args[1]
|
19
|
+
puts ENV[args[1]]
|
20
|
+
else
|
21
|
+
puts ENV.map {|k,v| "#{k}=#{v}"}.join("\n")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
@@ -21,7 +21,11 @@ module Kontena::Plugin
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def execute
|
24
|
-
cmd.
|
24
|
+
if cmd.subcommand_name && cmd.subcommand_name == 'shell'
|
25
|
+
puts Kontena.pastel.red("Already running inside KOSH")
|
26
|
+
else
|
27
|
+
cmd.run([])
|
28
|
+
end
|
25
29
|
rescue Clamp::HelpWanted => ex
|
26
30
|
unless args.include?('--help') || args.include?('-h')
|
27
31
|
context.concat(args)
|
@@ -132,10 +132,10 @@ module Kontena::Plugin::Shell
|
|
132
132
|
completion.push sub_commands
|
133
133
|
end
|
134
134
|
when 'master'
|
135
|
-
sub_commands = %w(list use
|
135
|
+
sub_commands = %w(list use user current remove rm config cfg login logout token join audit-log init-cloud)
|
136
136
|
if words[1] && words[1] == 'use'
|
137
137
|
completion.push helper.master_names
|
138
|
-
elsif words[1] && words[1] == '
|
138
|
+
elsif words[1] && words[1] == 'user'
|
139
139
|
users_sub_commands = %(invite list role)
|
140
140
|
completion.push users_sub_commands
|
141
141
|
elsif words[1] && ['config', 'cfg'].include?(words[1])
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module CliHelper
|
2
|
+
def self.included(base)
|
3
|
+
base.class_eval do
|
4
|
+
let(:client) { double(:client) }
|
5
|
+
let(:config) { double(:config) }
|
6
|
+
|
7
|
+
before(:each) do
|
8
|
+
allow(Kontena::Client).to receive(:new).and_return(client)
|
9
|
+
allow(Kontena::Cli::Config).to receive(:instance).and_return(config)
|
10
|
+
allow(config).to receive(:current_master).and_return(
|
11
|
+
Kontena::Cli::Config::Server.new(
|
12
|
+
name: 'testmaster',
|
13
|
+
grid: 'testgrid',
|
14
|
+
url: 'https://foo.example.com',
|
15
|
+
token: Kontena::Cli::Config::Token.new(
|
16
|
+
access_token: 'foo',
|
17
|
+
expires_at: 0
|
18
|
+
)
|
19
|
+
)
|
20
|
+
)
|
21
|
+
allow(config).to receive(:current_grid).and_return('testgrid')
|
22
|
+
allow(Dir).to receive(:home).and_return('/tmp/')
|
23
|
+
end
|
24
|
+
|
25
|
+
after(:each) do
|
26
|
+
RSpec::Mocks.space.proxy_for(File).reset
|
27
|
+
RSpec::Mocks.space.proxy_for(Kontena::Client).reset
|
28
|
+
RSpec::Mocks.space.proxy_for(Kontena::Cli::Config).reset
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
require 'kontena/plugin/shell/command'
|
2
|
+
require 'kontena/plugin/shell/context'
|
3
|
+
require 'kontena/plugin/shell/session'
|
4
|
+
|
5
|
+
describe Kontena::Plugin::Shell::Command do
|
6
|
+
let(:subject) { Class.new(described_class) }
|
7
|
+
|
8
|
+
it 'can register commands' do
|
9
|
+
subject.class_eval do
|
10
|
+
command 'foo'
|
11
|
+
end
|
12
|
+
expect(subject.command).to eq 'foo'
|
13
|
+
expect(Kontena::Plugin::Shell.commands['foo']).to eq subject
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'can register subcommands' do
|
17
|
+
subject.class_eval do
|
18
|
+
command 'foo'
|
19
|
+
subcommands self
|
20
|
+
end
|
21
|
+
expect(subject.has_subcommands?).to be_truthy
|
22
|
+
expect(subject.subcommands['foo']).to eq subject
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'can define a description' do
|
26
|
+
subject.class_eval do
|
27
|
+
description 'foo'
|
28
|
+
end
|
29
|
+
expect(subject.description).to eq 'foo'
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'can define help text' do
|
33
|
+
subject.class_eval do
|
34
|
+
help 'foo'
|
35
|
+
end
|
36
|
+
expect(subject.help).to eq 'foo'
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'can define completions' do
|
40
|
+
subject.class_eval do
|
41
|
+
completions 'foo', 'bar'
|
42
|
+
end
|
43
|
+
expect(subject.completions).to eq ['foo', 'bar']
|
44
|
+
end
|
45
|
+
|
46
|
+
describe '#run' do
|
47
|
+
let(:command_class) {
|
48
|
+
klass = Class.new(Kontena::Plugin::Shell::Command)
|
49
|
+
klass.class_exec do
|
50
|
+
subcommand = Class.new(Kontena::Plugin::Shell::SubCommand)
|
51
|
+
subcommand.class_exec do
|
52
|
+
command 'bar'
|
53
|
+
def execute
|
54
|
+
args.last
|
55
|
+
end
|
56
|
+
end
|
57
|
+
command 'foo'
|
58
|
+
subcommands subcommand
|
59
|
+
def execute
|
60
|
+
end
|
61
|
+
end
|
62
|
+
klass
|
63
|
+
}
|
64
|
+
|
65
|
+
it 'changes context if subcommands exist but none given' do
|
66
|
+
context = Kontena::Plugin::Shell::Context.new(nil)
|
67
|
+
command_instance = command_class.new(context, ['foo'])
|
68
|
+
command_instance.run
|
69
|
+
expect(context.to_s).to eq 'foo'
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'runs a subcommand if exists' do
|
73
|
+
command_instance = command_class.new([], ['foo', 'bar', 'test'])
|
74
|
+
expect(command_instance.run).to eq 'test'
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'outputs an error if subcommand is unknown' do
|
78
|
+
command_instance = command_class.new([], ['foo', 'bra', 'test'])
|
79
|
+
expect{command_instance.run}.to output(/Unknown/).to_stdout
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'rescues exceptions and prints out the message' do
|
83
|
+
command_class.class_exec do
|
84
|
+
instance_variable_set :@subcommands, []
|
85
|
+
end
|
86
|
+
command_instance = command_class.new([], ['foo'])
|
87
|
+
expect(command_instance).to receive(:execute).and_raise(StandardError, 'fooerror')
|
88
|
+
expect{command_instance.run}.to output(/fooerror/).to_stdout
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
describe Kontena::Plugin::Shell::BatchDoCommand do
|
2
|
+
|
3
|
+
context 'with args' do
|
4
|
+
it 'runs a batch of commands' do
|
5
|
+
allow(ENV).to receive(:[]=).with('DEBUG', 'true').and_return(nil)
|
6
|
+
allow(ENV).to receive(:delete).with('DEBUG').and_return(nil)
|
7
|
+
described_class.new([], ['do', 'debug', 'off;', 'debug', 'on'])
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
describe Kontena::Plugin::Shell::ContextTopCommand do
|
2
|
+
it 'goes to top in context' do
|
3
|
+
context = Kontena::Plugin::Shell::Context.new(['foo', 'bar'])
|
4
|
+
described_class.new(context, ['/']).run
|
5
|
+
expect(context.to_s).to eq ''
|
6
|
+
end
|
7
|
+
|
8
|
+
it 'runs commands under top context if passed and keeps current context' do
|
9
|
+
session = Kontena::Plugin::Shell::Session.new(['foo', 'bar'])
|
10
|
+
expect(session).to receive(:run_command).with('dog cat').and_return(true)
|
11
|
+
described_class.new(session.context, ['/', 'dog', 'cat'], session).run
|
12
|
+
expect(session.context.to_s).to eq 'foo bar'
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'runs commands under top context and changes to that context if it changes context' do
|
16
|
+
session = Kontena::Plugin::Shell::Session.new(['foo', 'bar'])
|
17
|
+
expect(session).to receive(:run_command).with('dog cat') { session.context.context=['dog', 'cat'] }
|
18
|
+
described_class.new(session.context, ['/', 'dog', 'cat'], session).run
|
19
|
+
expect(session.context.to_s).to eq 'dog cat'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
@@ -0,0 +1,50 @@
|
|
1
|
+
describe Kontena::Plugin::Shell::DebugCommand do
|
2
|
+
|
3
|
+
context 'without args' do
|
4
|
+
it 'displays the current state of debug when debug is on' do
|
5
|
+
expect(ENV).to receive(:[]).with('DEBUG').and_return('true')
|
6
|
+
expect{described_class.new([], ['debug']).run}.to output(/Debug.*on/).to_stdout
|
7
|
+
end
|
8
|
+
it 'displays the current state of debug when debug is off' do
|
9
|
+
expect(ENV).to receive(:[]).with('DEBUG').and_return(nil)
|
10
|
+
expect{described_class.new([], ['debug']).run}.to output(/Debug.*off/).to_stdout
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
context 'enabling' do
|
15
|
+
it 'sets debug to true with "true"' do
|
16
|
+
expect(ENV).to receive(:[]=).with('DEBUG', 'true').and_return(nil)
|
17
|
+
expect{described_class.new([], ['debug', 'true']).run}.to output(/Debug/).to_stdout
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'sets debug to true with "1"' do
|
21
|
+
expect(ENV).to receive(:[]=).with('DEBUG', 'true').and_return(nil)
|
22
|
+
expect{described_class.new([], ['debug', '1']).run}.to output(/Debug/).to_stdout
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'sets debug to true with "on"' do
|
26
|
+
expect(ENV).to receive(:[]=).with('DEBUG', 'true').and_return(nil)
|
27
|
+
expect{described_class.new([], ['debug', 'on']).run}.to output(/Debug/).to_stdout
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'sets debug to api with "api"' do
|
31
|
+
expect(ENV).to receive(:[]=).with('DEBUG', 'api').and_return(nil)
|
32
|
+
expect{described_class.new([], ['debug', 'api']).run}.to output(/Debug/).to_stdout
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context 'disabling' do
|
37
|
+
it 'sets debug off with "false"' do
|
38
|
+
expect(ENV).to receive(:delete).with('DEBUG').and_return(nil)
|
39
|
+
expect{described_class.new([], ['debug', 'false']).run}.to output(/Debug/).to_stdout
|
40
|
+
end
|
41
|
+
it 'sets debug off with "off"' do
|
42
|
+
expect(ENV).to receive(:delete).with('DEBUG').and_return(nil)
|
43
|
+
expect{described_class.new([], ['debug', 'off']).run}.to output(/Debug/).to_stdout
|
44
|
+
end
|
45
|
+
it 'sets debug off with "0"' do
|
46
|
+
expect(ENV).to receive(:delete).with('DEBUG').and_return(nil)
|
47
|
+
expect{described_class.new([], ['debug', '0']).run}.to output(/Debug/).to_stdout
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'kontena/cli/config'
|
2
|
+
|
3
|
+
describe Kontena::Plugin::Shell::EnvCommand do
|
4
|
+
context 'no args' do
|
5
|
+
it 'displays current environment' do
|
6
|
+
expect{described_class.new([], ['env']).run}.to output(/[A-Z]+=.+?\n/).to_stdout
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
context 'env variable name arg' do
|
11
|
+
it 'displays requested environment variable value' do
|
12
|
+
expect(ENV).to receive(:[]).with('FOO').and_return("bar")
|
13
|
+
expect{described_class.new([], ['env', 'FOO']).run}.to output(/^bar$/m).to_stdout
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'setting env variable' do
|
19
|
+
it 'sets env variable and reloads config' do
|
20
|
+
expect(ENV).to receive(:[]=).with('FOO', 'bar').and_return(true)
|
21
|
+
expect(Kontena::Cli::Config).to receive(:reset_instance)
|
22
|
+
described_class.new([], ['env', 'FOO=bar']).run
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
@@ -0,0 +1,13 @@
|
|
1
|
+
describe Kontena::Plugin::Shell::HelpCommand do
|
2
|
+
it 'displays help for kontena commands' do
|
3
|
+
expect{described_class.new([], ['help', 'grid', 'ls']).run}.to output(/Usage.*OPTIONS/m).to_stdout
|
4
|
+
end
|
5
|
+
|
6
|
+
it 'displays help for kosh commands' do
|
7
|
+
expect{described_class.new([], ['help', 'debug']).run}.to output(/toggle/m).to_stdout
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'displays help for current context' do
|
11
|
+
expect{described_class.new(Kontena::Plugin::Shell::Context.new('master user'), ['help']).run}.to output(/SUBCOMMAND.*invite.*list.*/m).to_stdout
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
describe Kontena::Plugin::Shell::KontenaCommand do
|
2
|
+
context '#run' do
|
3
|
+
it 'should be able to run kontena commands' do
|
4
|
+
expect{described_class.new([], ['version', '--cli']).run}.to output(/cli:/).to_stdout
|
5
|
+
end
|
6
|
+
|
7
|
+
it 'should not run a shell inside a shell' do
|
8
|
+
expect{described_class.new([], ['shell']).run}.to output(/Already/).to_stdout
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should switch context if a command with subcommands is run without args' do
|
12
|
+
context = Kontena::Plugin::Shell::Context.new(nil)
|
13
|
+
described_class.new(context, ['master', 'user']).run
|
14
|
+
expect(context.to_s).to eq 'master user'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'completions' do
|
19
|
+
it 'should be able to complete kontena commands' do
|
20
|
+
expect(described_class.completions.first.call([], ['master', 'user'], 'l')).to include('invite', 'list')
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'help' do
|
26
|
+
it 'should be able to get help for kontena commands' do
|
27
|
+
expect(described_class.help.call([], ['master', 'user'])).to match(/SUBCOMMAND.*invite.*list/m)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'kontena/plugin/shell/context'
|
2
|
+
|
3
|
+
describe Kontena::Plugin::Shell::Context do
|
4
|
+
|
5
|
+
let(:subject) { described_class.new(nil) }
|
6
|
+
|
7
|
+
it 'creates an empty context' do
|
8
|
+
expect(subject.context).to be_empty
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'creates a tokenized context from string' do
|
12
|
+
expect(described_class.new('foo "bar baz"').context).to eq(['foo', 'bar baz'])
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'creates a tokenized context from an array' do
|
16
|
+
expect(described_class.new(['foo', 'bar']).context).to eq(['foo', 'bar'])
|
17
|
+
end
|
18
|
+
|
19
|
+
describe '#up' do
|
20
|
+
it 'goes up' do
|
21
|
+
subject.concat(['foo', 'bar'])
|
22
|
+
subject.up
|
23
|
+
expect(subject.to_s).to eq 'foo'
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe '#top' do
|
28
|
+
it 'clears the context' do
|
29
|
+
subject.concat(['foo', 'bar'])
|
30
|
+
subject.top
|
31
|
+
expect(subject.to_s).to eq ''
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe '#concat' do
|
36
|
+
it 'adds to the context' do
|
37
|
+
subject.concat(['foo', 'bar'])
|
38
|
+
expect(subject.to_s).to eq 'foo bar'
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'only adds everything up to an option' do
|
42
|
+
subject.concat(['foo', 'bar', '--help'])
|
43
|
+
expect(subject.to_s).to eq 'foo bar'
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'only adds everything up to --' do
|
47
|
+
subject.concat(['foo', 'bar', '--', 'bar'])
|
48
|
+
expect(subject.to_s).to eq 'foo bar'
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'kontena/plugin/shell/session'
|
2
|
+
require 'kontena/plugin/shell/context'
|
3
|
+
|
4
|
+
describe Kontena::Plugin::Shell::Session do
|
5
|
+
include CliHelper
|
6
|
+
|
7
|
+
let(:context) { spy(Kontena::Plugin::Shell::Context.new(nil)) }
|
8
|
+
let(:subject) { described_class.new(context) }
|
9
|
+
|
10
|
+
it 'runs commands' do
|
11
|
+
expect(Readline).to receive(:readline).and_return('exit')
|
12
|
+
expect{subject.run}.to output(/Bye/).to_stdout.and raise_error(SystemExit)
|
13
|
+
end
|
14
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'kontena_cli'
|
2
|
+
require 'kontena_cli_plugin'
|
3
|
+
|
4
|
+
RSpec.configure do |config|
|
5
|
+
config.expect_with :rspec do |expectations|
|
6
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
7
|
+
end
|
8
|
+
|
9
|
+
config.mock_with :rspec do |mocks|
|
10
|
+
mocks.verify_partial_doubles = true
|
11
|
+
end
|
12
|
+
|
13
|
+
config.filter_run :focus
|
14
|
+
config.run_all_when_everything_filtered = true
|
15
|
+
config.disable_monkey_patching!
|
16
|
+
config.expose_dsl_globally = true
|
17
|
+
#config.warnings = true
|
18
|
+
config.default_formatter = 'doc' if config.files_to_run.one?
|
19
|
+
config.order = :random
|
20
|
+
Kernel.srand config.seed
|
21
|
+
end
|
22
|
+
|
23
|
+
require_relative 'helpers/cli_helper'
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kontena-plugin-shell
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kontena, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-04-
|
11
|
+
date: 2017-04-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: kontena-cli
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.0
|
19
|
+
version: '1.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.0
|
26
|
+
version: '1.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -74,15 +74,10 @@ executables:
|
|
74
74
|
extensions: []
|
75
75
|
extra_rdoc_files: []
|
76
76
|
files:
|
77
|
-
- ".gitignore"
|
78
77
|
- ".rspec"
|
79
|
-
- ".travis.yml"
|
80
|
-
- Gemfile
|
81
78
|
- LICENSE.txt
|
82
79
|
- README.md
|
83
80
|
- bin/kosh
|
84
|
-
- kontena-plugin-shell.gemspec
|
85
|
-
- kosh.gif
|
86
81
|
- lib/kontena/plugin/shell.rb
|
87
82
|
- lib/kontena/plugin/shell/callbacks/stack_file.rb
|
88
83
|
- lib/kontena/plugin/shell/command.rb
|
@@ -91,6 +86,7 @@ files:
|
|
91
86
|
- lib/kontena/plugin/shell/commands/context_top.rb
|
92
87
|
- lib/kontena/plugin/shell/commands/context_up.rb
|
93
88
|
- lib/kontena/plugin/shell/commands/debug.rb
|
89
|
+
- lib/kontena/plugin/shell/commands/env.rb
|
94
90
|
- lib/kontena/plugin/shell/commands/exit.rb
|
95
91
|
- lib/kontena/plugin/shell/commands/help.rb
|
96
92
|
- lib/kontena/plugin/shell/commands/kontena.rb
|
@@ -100,6 +96,19 @@ files:
|
|
100
96
|
- lib/kontena/plugin/shell/shell_command.rb
|
101
97
|
- lib/kontena/plugin/shell/version.rb
|
102
98
|
- lib/kontena_cli_plugin.rb
|
99
|
+
- spec/helpers/cli_helper.rb
|
100
|
+
- spec/kontena/plugin/shell/command_spec.rb
|
101
|
+
- spec/kontena/plugin/shell/commands/batch_do_spec.rb
|
102
|
+
- spec/kontena/plugin/shell/commands/context_top_spec.rb
|
103
|
+
- spec/kontena/plugin/shell/commands/context_up_spec.rb
|
104
|
+
- spec/kontena/plugin/shell/commands/debug_spec.rb
|
105
|
+
- spec/kontena/plugin/shell/commands/env_spec.rb
|
106
|
+
- spec/kontena/plugin/shell/commands/exit_spec.rb
|
107
|
+
- spec/kontena/plugin/shell/commands/help_spec.rb
|
108
|
+
- spec/kontena/plugin/shell/commands/kontena_spec.rb
|
109
|
+
- spec/kontena/plugin/shell/context_spec.rb
|
110
|
+
- spec/kontena/plugin/shell/session_spec.rb
|
111
|
+
- spec/spec_helper.rb
|
103
112
|
homepage: https://github.com/kontena/kontena-plugin-shell
|
104
113
|
licenses:
|
105
114
|
- Apache-2.0
|
@@ -120,8 +129,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
120
129
|
version: '0'
|
121
130
|
requirements: []
|
122
131
|
rubyforge_project:
|
123
|
-
rubygems_version: 2.4.
|
132
|
+
rubygems_version: 2.4.8
|
124
133
|
signing_key:
|
125
134
|
specification_version: 4
|
126
135
|
summary: Kontena interactive shell plugin
|
127
|
-
test_files:
|
136
|
+
test_files:
|
137
|
+
- ".rspec"
|
data/.gitignore
DELETED
data/.travis.yml
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
rvm:
|
3
|
-
- 2.1.10
|
4
|
-
- 2.2.6
|
5
|
-
- 2.3.3
|
6
|
-
- 2.4.1
|
7
|
-
env:
|
8
|
-
- secure: "kvAs0Ys79sVx24cxuhJW1L4ABkemMCD2G767e8Vjp8VAbmgJBOiD+hU11ADe5/1ZDrDZ5NVsTqucVI4lyLohLzLU61AwQsgpNPcsBtBqhHvWdYnTVZhRz7v9xirXa3heS/jbxJxrWBgCRdgBLj1xWBHhQALJSDynKtqm5HbDOrfsB621KQ+WsunU5swou+cxKTye3nJZVDABaH8w8qFEJ0aUkeqNT2O4Tfgbr3reu6DQGKBpBuuSAzlwW1SFjaosW2Yedp+hpRgm1j9HHbao7i8dqv3BXckeMbEv4DUCWQqOWOsj62izTMDRqULNxxU547MPG9O7sq+yW4eC6B9SV4PqyCLeZVpRAgbz/u6YQmRLCquOyoWfaEKzWkC3kqmzn84K83qbvYW7GgG9p/JOCmFXb+StyvORV8LL6iB/D/W2oII3PTG7Mtj+6yRdzRGenYWY95LOTrR78VsCEy6iuAsnwsGKJmsiW/n7Yapgqf6mFwSvCJnMe0/POioo//TkuSSc7smGWQkLOatut0CNBaceFABMRRip4xGE8LUt1j7ql0qDOVoReqKe0XzaNuDi+Eu9cPL1cCSC4g1MWxFWsprYudaiHVY+k3F4nEsV+Mivms8uck2ae+Wv4blY2F5yX7VUP/F/nY57VIaTWbo4y8+TegNNTt6BiqAEF8cI8B4="
|
9
|
-
cache: bundler
|
10
|
-
script: bundle install && bundle exec rspec spec/
|
11
|
-
deploy:
|
12
|
-
provider: rubygems
|
13
|
-
api_key: $GEM_TOKEN
|
14
|
-
gem: kontena-plugin-shell
|
15
|
-
on:
|
16
|
-
tags: true
|
data/Gemfile
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
lib = File.expand_path('../lib/', __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
|
5
|
-
require 'kontena/plugin/shell/version'
|
6
|
-
|
7
|
-
Gem::Specification.new do |spec|
|
8
|
-
spec.name = "kontena-plugin-shell"
|
9
|
-
spec.version = Kontena::Plugin::Shell::VERSION
|
10
|
-
spec.authors = ["Kontena, Inc."]
|
11
|
-
spec.email = ["info@kontena.io"]
|
12
|
-
|
13
|
-
spec.summary = "Kontena interactive shell plugin"
|
14
|
-
spec.description = "Interactive shell for Kontena CLI aka KOSH"
|
15
|
-
spec.homepage = "https://github.com/kontena/kontena-plugin-shell"
|
16
|
-
spec.license = "Apache-2.0"
|
17
|
-
|
18
|
-
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|\.gif)/}) }
|
19
|
-
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
20
|
-
spec.require_paths = ["lib"]
|
21
|
-
|
22
|
-
spec.add_runtime_dependency 'kontena-cli', '>= 1.0.0.rc1'
|
23
|
-
spec.add_development_dependency "bundler", "~> 1.11"
|
24
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
25
|
-
spec.add_development_dependency "rspec", "~> 3.5"
|
26
|
-
end
|
data/kosh.gif
DELETED
Binary file
|