sct 0.1.18 → 0.1.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|