sct 0.1.18 → 0.1.19
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/sct +3 -4
- data/{.DS_Store → cluster/lib/.DS_Store} +0 -0
- data/cluster/lib/cluster.rb +6 -0
- data/cluster/lib/cluster/commands_generator.rb +95 -0
- data/cluster/lib/cluster/module.rb +7 -0
- data/{lib/sct/commands/cluster.rb → cluster/lib/cluster/runner.rb} +96 -118
- data/{lib → sct/lib}/.DS_Store +0 -0
- data/sct/lib/sct.rb +17 -0
- data/sct/lib/sct/.DS_Store +0 -0
- data/sct/lib/sct/cli_tools_distributor.rb +46 -0
- data/{lib → sct/lib}/sct/command.rb +0 -0
- data/{lib → sct/lib}/sct/commands/hostfile.rb +7 -23
- data/sct/lib/sct/commands/init.rb +37 -0
- data/sct/lib/sct/commands/mysqlproxy.rb +20 -0
- data/sct/lib/sct/commands_generator.rb +56 -0
- data/sct/lib/sct/tools.rb +12 -0
- data/sct/lib/sct/version.rb +3 -0
- data/sct_core/lib/.DS_Store +0 -0
- data/sct_core/lib/sct_core.rb +13 -0
- data/{lib/sct → sct_core/lib/sct_core}/.DS_Store +0 -0
- data/sct_core/lib/sct_core/command_executor.rb +104 -0
- data/{lib/sct → sct_core/lib/sct_core}/config.rb +3 -3
- data/sct_core/lib/sct_core/core_ext/string.rb +9 -0
- data/{lib/sct/setup/helpers.rb → sct_core/lib/sct_core/helper.rb} +2 -2
- data/sct_core/lib/sct_core/module.rb +0 -0
- data/sct_core/lib/sct_core/sct_pty.rb +53 -0
- data/sct_core/lib/sct_core/ui/implementations/shell.rb +129 -0
- data/sct_core/lib/sct_core/ui/interface.rb +120 -0
- data/sct_core/lib/sct_core/ui/ui.rb +26 -0
- data/shell/README.md +0 -0
- data/shell/lib/shell.rb +3 -0
- data/{lib/sct → shell/lib/shell}/ClassLevelInheritableAttributes.rb +0 -0
- data/shell/lib/shell/commands_generator.rb +14 -0
- data/{lib/sct → shell/lib/shell}/docker/composer.rb +4 -3
- data/{lib/sct → shell/lib/shell}/docker/docker.rb +7 -10
- data/{lib/sct → shell/lib/shell}/docker/php.rb +3 -2
- data/{lib/sct → shell/lib/shell}/docker/yarn.rb +4 -3
- data/shell/lib/shell/module.rb +9 -0
- data/shell/lib/shell/runner.rb +34 -0
- data/shell/lib/shell/tools.rb +7 -0
- metadata +89 -53
- data/.gitignore +0 -12
- data/.gitlab/merge_request_templates/DefinitionOfDone.md +0 -14
- data/.rspec +0 -3
- data/.travis.yml +0 -7
- data/CODE_OF_CONDUCT.md +0 -74
- data/Gemfile +0 -4
- data/Gemfile.lock +0 -48
- data/LICENSE.txt +0 -21
- data/README.md +0 -134
- data/Rakefile +0 -6
- data/lib/sct.rb +0 -61
- data/lib/sct/command_interface.rb +0 -18
- data/lib/sct/command_option.rb +0 -14
- data/lib/sct/commands/composer.rb +0 -29
- data/lib/sct/commands/init.rb +0 -51
- data/lib/sct/commands/mysqlproxy.rb +0 -38
- data/lib/sct/commands/php.rb +0 -37
- data/lib/sct/commands/yarn.rb +0 -26
- data/lib/sct/version.rb +0 -3
- data/resources/corefile.yml +0 -45
- data/sct.gemspec +0 -40
data/Rakefile
DELETED
data/lib/sct.rb
DELETED
@@ -1,61 +0,0 @@
|
|
1
|
-
require 'sct'
|
2
|
-
require "sct/config"
|
3
|
-
require 'sct/command'
|
4
|
-
require "sct/version"
|
5
|
-
require 'colored'
|
6
|
-
require 'commander'
|
7
|
-
|
8
|
-
module Sct
|
9
|
-
class SctCore
|
10
|
-
|
11
|
-
program :name, 'sct'
|
12
|
-
program :version, Sct::VERSION
|
13
|
-
program :summary, 'CLI helper tool for local SCT development'
|
14
|
-
program :description, 'SCT is a CLI tool for developers using the Visma Continuous Deployment Model in conjunction with the Google Cloud Platform (GCP). It provides multiple command to set up and maintain a kubernetes cluster on a machine for local development'
|
15
|
-
|
16
|
-
def self.take_off(cmds)
|
17
|
-
self.new.run
|
18
|
-
cmds.each { |cmd| registerCommand(cmd) }
|
19
|
-
end
|
20
|
-
|
21
|
-
def run
|
22
|
-
|
23
|
-
end
|
24
|
-
|
25
|
-
def self.registerCommand(cmd)
|
26
|
-
# validate Command Class
|
27
|
-
if cmd.class != Class ||
|
28
|
-
!cmd.name.end_with?('Command')
|
29
|
-
return
|
30
|
-
end
|
31
|
-
|
32
|
-
# validate if Command is meant to be public
|
33
|
-
if !cmd::IS_PUBLIC_COMMAND
|
34
|
-
return
|
35
|
-
end
|
36
|
-
|
37
|
-
# register public Commands as CLI command
|
38
|
-
command self.deduceCommandNameFromClass(cmd) do |c|
|
39
|
-
c.syntax = cmd::SYNTAX
|
40
|
-
c.summary = cmd::SUMMARY
|
41
|
-
c.description = cmd::DESCRIPTION
|
42
|
-
c.example cmd::EXAMPLE_DESCRIPTION, cmd::EXAMPLE
|
43
|
-
cmd::OPTIONS.each { |option| c.option option.name, option.type, option.description }
|
44
|
-
c.action do |args, options|
|
45
|
-
cmd.new.execute(args, options)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
# retrieves cli command-name from Command's full Class name
|
51
|
-
def self.deduceCommandNameFromClass(c)
|
52
|
-
name = c.name
|
53
|
-
if name.include?('::')
|
54
|
-
name = name.partition('::')[2]
|
55
|
-
end
|
56
|
-
# TODO replace camel-case capitals with '-'
|
57
|
-
return name.chomp('Command').downcase
|
58
|
-
end
|
59
|
-
|
60
|
-
end
|
61
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'class_interface'
|
2
|
-
|
3
|
-
class CommandInterface
|
4
|
-
IS_PUBLIC_COMMAND = true | false
|
5
|
-
SYNTAX = String
|
6
|
-
SUMMARY = String
|
7
|
-
DESCRIPTION = String
|
8
|
-
EXAMPLE = String
|
9
|
-
EXAMPLE_DESCRIPTION = String
|
10
|
-
OPTIONS = Array
|
11
|
-
|
12
|
-
def initialize
|
13
|
-
end
|
14
|
-
|
15
|
-
def execute(args, options)
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
data/lib/sct/command_option.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
require 'sct/command_interface'
|
2
|
-
require 'sct/command_option'
|
3
|
-
|
4
|
-
module Sct
|
5
|
-
|
6
|
-
class ComposerCommand
|
7
|
-
|
8
|
-
IS_PUBLIC_COMMAND = true
|
9
|
-
SYNTAX = 'sct composer'
|
10
|
-
SUMMARY = 'Run composer commands through SCT'
|
11
|
-
EXAMPLE = 'sct composer install'
|
12
|
-
EXAMPLE_DESCRIPTION = 'sct composer install will update the project with the latest dependencies'
|
13
|
-
DESCRIPTION = "sct will run composer commands through the local docker installation"
|
14
|
-
|
15
|
-
OPTIONS = [
|
16
|
-
CommandOption.new("--verbose", nil, "Increase verbosity of messages."),
|
17
|
-
CommandOption.new("--require STRING", String, "Package to require with a version constraint. Should be in format foo/bar:1.0.0"),
|
18
|
-
CommandOption.new("--require-dev STRING", String, "Development requirements, see --require."),
|
19
|
-
CommandOption.new("-V", nil, "Display this application version.")
|
20
|
-
]
|
21
|
-
|
22
|
-
def execute(args, options)
|
23
|
-
require "sct/docker/composer"
|
24
|
-
Sct::Composer.exec(ARGV[1..(ARGV.length+1)])
|
25
|
-
end
|
26
|
-
|
27
|
-
implements CommandInterface
|
28
|
-
end
|
29
|
-
end
|
data/lib/sct/commands/init.rb
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
require 'sct/command_interface'
|
2
|
-
require 'highline'
|
3
|
-
|
4
|
-
module Sct
|
5
|
-
|
6
|
-
class InitCommand
|
7
|
-
|
8
|
-
IS_PUBLIC_COMMAND = true
|
9
|
-
SYNTAX = 'sct init'
|
10
|
-
SUMMARY = 'Initialize a base configuration file for sct'
|
11
|
-
EXAMPLE = 'sct init'
|
12
|
-
EXAMPLE_DESCRIPTION = 'sct init will create a configuration file'
|
13
|
-
DESCRIPTION = "sct init will create a configuration file"
|
14
|
-
|
15
|
-
OPTIONS = []
|
16
|
-
|
17
|
-
def initialize
|
18
|
-
end
|
19
|
-
|
20
|
-
def execute(args, options)
|
21
|
-
|
22
|
-
Sct::Config.dir
|
23
|
-
|
24
|
-
cli = HighLine.new
|
25
|
-
|
26
|
-
email = cli.ask("What is your email address?") { |q|
|
27
|
-
q.validate = URI::MailTo::EMAIL_REGEXP
|
28
|
-
}
|
29
|
-
|
30
|
-
cloud_proxy_path = cli.ask("What is the path of your cloud proxy json credentials?") { |q|
|
31
|
-
q.default = "~/.config/gcloud/application_default_credentials.json"
|
32
|
-
}
|
33
|
-
|
34
|
-
contents = ""
|
35
|
-
contents << "email=#{email}\n"
|
36
|
-
contents << "cloud-proxy-path=#{File.expand_path(cloud_proxy_path)}\n"
|
37
|
-
|
38
|
-
if !File.directory?(Sct::Config.dir)
|
39
|
-
FileUtils.mkdir_p(Sct::Config.dir)
|
40
|
-
end
|
41
|
-
|
42
|
-
File.write(Sct::Config.path, contents)
|
43
|
-
|
44
|
-
puts "Generated config file at #{Sct::Config.path}"
|
45
|
-
end
|
46
|
-
|
47
|
-
implements CommandInterface
|
48
|
-
|
49
|
-
end
|
50
|
-
|
51
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
require 'sct/command_interface'
|
2
|
-
require 'sct/command_option'
|
3
|
-
require "sct/config"
|
4
|
-
require "sct/setup/helpers"
|
5
|
-
|
6
|
-
module Sct
|
7
|
-
|
8
|
-
class Mysql_proxyCommand
|
9
|
-
|
10
|
-
DEFAULT_SECRET_NAME = "gcloud-credentials"
|
11
|
-
|
12
|
-
IS_PUBLIC_COMMAND = true
|
13
|
-
SYNTAX = 'sct mysql_proxy'
|
14
|
-
SUMMARY = 'adds a secret for the mysql proxy'
|
15
|
-
DESCRIPTION = ""
|
16
|
-
EXAMPLE = ""
|
17
|
-
EXAMPLE_DESCRIPTION = ""
|
18
|
-
OPTIONS = []
|
19
|
-
|
20
|
-
def execute(args, options)
|
21
|
-
|
22
|
-
return puts "SCT has not been initialized. Run 'sct init' first.".red unless Sct::Config.exists
|
23
|
-
|
24
|
-
path = Sct::Config.get('cloud-proxy-path')
|
25
|
-
|
26
|
-
system("kubectl delete secret gcloud-credentials")
|
27
|
-
system("kubectl create secret generic gcloud-credentials --from-file=#{path}")
|
28
|
-
|
29
|
-
puts "Authenticated with secret-name: '#{DEFAULT_SECRET_NAME}'".green
|
30
|
-
|
31
|
-
return true
|
32
|
-
end
|
33
|
-
|
34
|
-
implements CommandInterface
|
35
|
-
|
36
|
-
end
|
37
|
-
|
38
|
-
end
|
data/lib/sct/commands/php.rb
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
require 'sct/command_interface'
|
2
|
-
require 'sct/command_option'
|
3
|
-
|
4
|
-
module Sct
|
5
|
-
|
6
|
-
class PhpCommand
|
7
|
-
|
8
|
-
IS_PUBLIC_COMMAND = true
|
9
|
-
SYNTAX = 'sct php'
|
10
|
-
SUMMARY = 'Run php commands through SCT'
|
11
|
-
EXAMPLE = 'sct php -r "echo \'Hello World!\';"'
|
12
|
-
EXAMPLE_DESCRIPTION = 'sct php -r will execute a command directly through the php interpreter'
|
13
|
-
DESCRIPTION = "sct will run php commands through the local docker installation"
|
14
|
-
|
15
|
-
OPTIONS = [
|
16
|
-
CommandOption.new("-r", String, "Run php code directy through the interpreter"),
|
17
|
-
CommandOption.new("-V", nil, "Get the current php version. Note that it's a capital V. The lowercase v will return the SCT tool version"),
|
18
|
-
]
|
19
|
-
|
20
|
-
def execute(args, options)
|
21
|
-
require "sct/docker/php"
|
22
|
-
|
23
|
-
# Workaround for the version option being caught by the SCT tool itself
|
24
|
-
args=ARGV[1..(ARGV.length+1)].map { |arg| arg == '-V' ? arg = '-v' : arg}
|
25
|
-
|
26
|
-
# Another workaround for the -r option to add quotes around the value
|
27
|
-
if args.include? '-r'
|
28
|
-
codeIndex = args.index('-r') + 1
|
29
|
-
args[codeIndex] = "\"#{args[codeIndex]}\""
|
30
|
-
end
|
31
|
-
|
32
|
-
Sct::Php.exec(args)
|
33
|
-
end
|
34
|
-
|
35
|
-
implements CommandInterface
|
36
|
-
end
|
37
|
-
end
|
data/lib/sct/commands/yarn.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
require 'sct/command_interface'
|
2
|
-
require 'sct/command_option'
|
3
|
-
|
4
|
-
module Sct
|
5
|
-
|
6
|
-
class YarnCommand
|
7
|
-
|
8
|
-
IS_PUBLIC_COMMAND = true
|
9
|
-
SYNTAX = 'sct yarn'
|
10
|
-
SUMMARY = 'Run yarn commands through SCT'
|
11
|
-
EXAMPLE = 'sct yarn dev'
|
12
|
-
EXAMPLE_DESCRIPTION = 'sct yarn dev will start the dev installation of the current project'
|
13
|
-
DESCRIPTION = "sct will run yarn commands through the local docker installation"
|
14
|
-
|
15
|
-
OPTIONS = [
|
16
|
-
CommandOption.new("--port PORTNUMBER", Integer, "The portnumber on which the server will be deployed")
|
17
|
-
]
|
18
|
-
|
19
|
-
def execute(args, options)
|
20
|
-
require "sct/docker/yarn"
|
21
|
-
Sct::Yarn.exec(ARGV[1..(ARGV.length+1)])
|
22
|
-
end
|
23
|
-
|
24
|
-
implements CommandInterface
|
25
|
-
end
|
26
|
-
end
|
data/lib/sct/version.rb
DELETED
data/resources/corefile.yml
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
apiVersion: v1
|
2
|
-
data:
|
3
|
-
Corefile: |
|
4
|
-
.:53 {
|
5
|
-
errors
|
6
|
-
health {
|
7
|
-
lameduck 5s
|
8
|
-
}
|
9
|
-
ready
|
10
|
-
kubernetes cluster.local in-addr.arpa ip6.arpa {
|
11
|
-
pods insecure
|
12
|
-
fallthrough in-addr.arpa ip6.arpa
|
13
|
-
ttl 30
|
14
|
-
}
|
15
|
-
prometheus :9153
|
16
|
-
forward . 8.8.8.8
|
17
|
-
cache 30
|
18
|
-
loop
|
19
|
-
reload
|
20
|
-
loadbalance
|
21
|
-
}
|
22
|
-
Corefile-backup: |
|
23
|
-
.:53 {
|
24
|
-
errors
|
25
|
-
health {
|
26
|
-
lameduck 5s
|
27
|
-
}
|
28
|
-
ready
|
29
|
-
kubernetes cluster.local in-addr.arpa ip6.arpa {
|
30
|
-
pods insecure
|
31
|
-
fallthrough in-addr.arpa ip6.arpa
|
32
|
-
ttl 30
|
33
|
-
}
|
34
|
-
prometheus :9153
|
35
|
-
forward . /etc/resolv.conf
|
36
|
-
cache 30
|
37
|
-
loop
|
38
|
-
reload
|
39
|
-
loadbalance
|
40
|
-
}
|
41
|
-
kind: ConfigMap
|
42
|
-
metadata:
|
43
|
-
creationTimestamp: null
|
44
|
-
name: coredns
|
45
|
-
selfLink: /api/v1/namespaces/kube-system/configmaps/coredns
|
data/sct.gemspec
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
lib = File.expand_path("lib", __dir__)
|
2
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
-
require "sct/version"
|
4
|
-
|
5
|
-
Gem::Specification.new do |spec|
|
6
|
-
spec.name = "sct"
|
7
|
-
spec.version = Sct::VERSION
|
8
|
-
spec.authors = ["Reshad Farid"]
|
9
|
-
spec.email = ["reshad.farid@visma.com"]
|
10
|
-
|
11
|
-
spec.summary = %q{Spend Cloud Tool.}
|
12
|
-
spec.description = %q{Spend Cloud Tool enables to setup a local development environment for the Spend Cloud.}
|
13
|
-
spec.homepage = "https://gitlab.com/proactive-software/packages/sct"
|
14
|
-
spec.license = "MIT"
|
15
|
-
|
16
|
-
# spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
|
17
|
-
|
18
|
-
spec.metadata["homepage_uri"] = spec.homepage
|
19
|
-
spec.metadata["source_code_uri"] = "https://gitlab.com/proactive-software/packages/sct"
|
20
|
-
spec.metadata["changelog_uri"] = "https://gitlab.com/proactive-software/packages/sct"
|
21
|
-
|
22
|
-
# Specify which files should be added to the gem when it is released.
|
23
|
-
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
24
|
-
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
25
|
-
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
26
|
-
end
|
27
|
-
spec.bindir = "bin"
|
28
|
-
spec.executables = ["sct"]
|
29
|
-
spec.require_paths = ["lib"]
|
30
|
-
|
31
|
-
spec.add_dependency "class_interface", "~> 0.1.1"
|
32
|
-
spec.add_dependency "colored", "~> 1.2"
|
33
|
-
spec.add_dependency "commander", "~> 4.4.7"
|
34
|
-
spec.add_dependency "highline", ">= 1.7.2"
|
35
|
-
spec.add_dependency "terminal-table", "~> 1.8"
|
36
|
-
|
37
|
-
spec.add_development_dependency "bundler", "~> 2.0"
|
38
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
39
|
-
spec.add_development_dependency "rspec", "~> 3.0"
|
40
|
-
end
|