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.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/bin/sct +3 -4
  3. data/{.DS_Store → cluster/lib/.DS_Store} +0 -0
  4. data/cluster/lib/cluster.rb +6 -0
  5. data/cluster/lib/cluster/commands_generator.rb +95 -0
  6. data/cluster/lib/cluster/module.rb +7 -0
  7. data/{lib/sct/commands/cluster.rb → cluster/lib/cluster/runner.rb} +96 -118
  8. data/{lib → sct/lib}/.DS_Store +0 -0
  9. data/sct/lib/sct.rb +17 -0
  10. data/sct/lib/sct/.DS_Store +0 -0
  11. data/sct/lib/sct/cli_tools_distributor.rb +46 -0
  12. data/{lib → sct/lib}/sct/command.rb +0 -0
  13. data/{lib → sct/lib}/sct/commands/hostfile.rb +7 -23
  14. data/sct/lib/sct/commands/init.rb +37 -0
  15. data/sct/lib/sct/commands/mysqlproxy.rb +20 -0
  16. data/sct/lib/sct/commands_generator.rb +56 -0
  17. data/sct/lib/sct/tools.rb +12 -0
  18. data/sct/lib/sct/version.rb +3 -0
  19. data/sct_core/lib/.DS_Store +0 -0
  20. data/sct_core/lib/sct_core.rb +13 -0
  21. data/{lib/sct → sct_core/lib/sct_core}/.DS_Store +0 -0
  22. data/sct_core/lib/sct_core/command_executor.rb +104 -0
  23. data/{lib/sct → sct_core/lib/sct_core}/config.rb +3 -3
  24. data/sct_core/lib/sct_core/core_ext/string.rb +9 -0
  25. data/{lib/sct/setup/helpers.rb → sct_core/lib/sct_core/helper.rb} +2 -2
  26. data/sct_core/lib/sct_core/module.rb +0 -0
  27. data/sct_core/lib/sct_core/sct_pty.rb +53 -0
  28. data/sct_core/lib/sct_core/ui/implementations/shell.rb +129 -0
  29. data/sct_core/lib/sct_core/ui/interface.rb +120 -0
  30. data/sct_core/lib/sct_core/ui/ui.rb +26 -0
  31. data/shell/README.md +0 -0
  32. data/shell/lib/shell.rb +3 -0
  33. data/{lib/sct → shell/lib/shell}/ClassLevelInheritableAttributes.rb +0 -0
  34. data/shell/lib/shell/commands_generator.rb +14 -0
  35. data/{lib/sct → shell/lib/shell}/docker/composer.rb +4 -3
  36. data/{lib/sct → shell/lib/shell}/docker/docker.rb +7 -10
  37. data/{lib/sct → shell/lib/shell}/docker/php.rb +3 -2
  38. data/{lib/sct → shell/lib/shell}/docker/yarn.rb +4 -3
  39. data/shell/lib/shell/module.rb +9 -0
  40. data/shell/lib/shell/runner.rb +34 -0
  41. data/shell/lib/shell/tools.rb +7 -0
  42. metadata +89 -53
  43. data/.gitignore +0 -12
  44. data/.gitlab/merge_request_templates/DefinitionOfDone.md +0 -14
  45. data/.rspec +0 -3
  46. data/.travis.yml +0 -7
  47. data/CODE_OF_CONDUCT.md +0 -74
  48. data/Gemfile +0 -4
  49. data/Gemfile.lock +0 -48
  50. data/LICENSE.txt +0 -21
  51. data/README.md +0 -134
  52. data/Rakefile +0 -6
  53. data/lib/sct.rb +0 -61
  54. data/lib/sct/command_interface.rb +0 -18
  55. data/lib/sct/command_option.rb +0 -14
  56. data/lib/sct/commands/composer.rb +0 -29
  57. data/lib/sct/commands/init.rb +0 -51
  58. data/lib/sct/commands/mysqlproxy.rb +0 -38
  59. data/lib/sct/commands/php.rb +0 -37
  60. data/lib/sct/commands/yarn.rb +0 -26
  61. data/lib/sct/version.rb +0 -3
  62. data/resources/corefile.yml +0 -45
  63. data/sct.gemspec +0 -40
data/Rakefile DELETED
@@ -1,6 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
3
-
4
- RSpec::Core::RakeTask.new(:spec)
5
-
6
- task :default => :spec
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
@@ -1,14 +0,0 @@
1
- module Sct
2
-
3
- class CommandOption
4
- attr_reader :name, :type, :description
5
-
6
- def initialize(name, type, description)
7
- @name = name
8
- @type = type
9
- @description = description
10
- end
11
-
12
- end
13
-
14
- end
@@ -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
@@ -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
@@ -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
@@ -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
@@ -1,3 +0,0 @@
1
- module Sct
2
- VERSION = "0.1.18"
3
- end
@@ -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
@@ -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