sct 0.1.18 → 0.1.19

Sign up to get free protection for your applications and to get access to all the features.
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