sambot 0.1.213 → 0.1.214

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c9b0b31feb12f1eec5396f1a2791a54d9babbf9c
4
- data.tar.gz: 71dd1d30db522ec8ef0e49ac69352cf0e10d66de
3
+ metadata.gz: 3f2ae76a337fbddc024b5f4726e2475573fd7175
4
+ data.tar.gz: d676602ea84c172e479f693266ba273dbe622ce1
5
5
  SHA512:
6
- metadata.gz: d2eaef4a93835ce8c4194a7611628375428578b83455b68ca3a4cd971b5f4cf25af5e75dc879723d9bc7892eb032b9f572c2baf611f084ccfee00dd6a2765061
7
- data.tar.gz: 7eb99d5c944baa51653bfe8ccff70cd1efc8f50c36a6dfae150cda1e702d67c638471e29fc4ca98989ba40c7b135fe8453619e9921e910494fbc47da7f74018f
6
+ metadata.gz: 61c6cabe142666ba50b0f531a8816a3219dd42f158777fc15327bee8ad3cdd2c9b1293e46a09434fc513325f996ea0d1af5e52b984014f1bd64869d1891efdad
7
+ data.tar.gz: 831de4e46b42c972f85706a15475b7218d48e1ec2a5f1c84917e8eace5f6b4999e852b98b3be540677d8e63bbf59fb92448c469a3b66a71b2c0fdab1a4b9975f
data/lib/sambot.rb CHANGED
@@ -13,7 +13,6 @@ require_relative 'sambot/version'
13
13
  require_relative 'sambot/template'
14
14
  require_relative 'sambot/fs'
15
15
  require_relative 'sambot/source_control'
16
- require_relative 'sambot/team_city'
17
16
 
18
17
  require_relative 'sambot/testing/consul_helper'
19
18
  require_relative 'sambot/testing/vault_helper'
@@ -28,7 +27,13 @@ require_relative 'sambot/chef/generator'
28
27
  require_relative 'sambot/chef/roles'
29
28
 
30
29
  require_relative 'sambot/tasks/create'
31
-
30
+ require_relative 'sambot/tasks/verify'
31
+ require_relative 'sambot/tasks/build'
32
+ require_relative 'sambot/tasks/version'
33
+ require_relative 'sambot/tasks/up'
34
+ require_relative 'sambot/tasks/down'
35
+ require_relative 'sambot/tasks/populate'
36
+ require_relative 'sambot/tasks/test'
32
37
  require_relative 'sambot/cli'
33
38
 
34
39
  require_relative 'sambot/teamcity/faraday'
@@ -59,7 +59,7 @@ module Sambot
59
59
 
60
60
  def create_files(config)
61
61
  ['README.md'].each { |resource| FS.copy(resource) unless FS.exist?(resource) }
62
- %w[spec test attributes local_testing].each { |resource| FS.mkdir(resource) unless FS.exist?(resource) }
62
+ %w[spec test attributes].each { |resource| FS.mkdir(resource) unless FS.exist?(resource) }
63
63
  Dir.chdir('attributes') { FileUtils.touch('default.rb') unless FS.exist?('default.rb') }
64
64
  Dir.chdir('spec') { FS.copy('spec_helper.rb') unless FS.exist?('spec_helper.rb') }
65
65
  %w[recipes libraries resources files templates].each { |target| FS.mkdir(target) unless FS.exist?(target) }
@@ -43,7 +43,7 @@ module Sambot
43
43
 
44
44
  def apply_changes(contents, repository, file)
45
45
  puts 'Not stubbed'
46
- exit
46
+ raise 'error'
47
47
  msg = "Updated cookbook dependency #{dependency_name} to #{version}"
48
48
  SourceControl.edit_file(ROLE_COOKBOOK_ORGANIZATION, repository, COOKBOOK_CONFIG, contents, file, msg)
49
49
  return true
data/lib/sambot/cli.rb CHANGED
@@ -7,120 +7,46 @@ module Sambot
7
7
 
8
8
  desc 'checkout', 'Checks out or updates all the repositories in a given organization'
9
9
  def checkout(organization, dir)
10
- Dir.chdir(dir) do
11
- SourceControl.checkout(organization)
10
+ execute do
11
+ Dir.chdir(dir) do
12
+ SourceControl.checkout(organization)
13
+ end
12
14
  end
13
15
  end
14
16
 
15
17
  desc 'clean', 'Remove all generated build files from a Chef cookbook'
16
- def clean
17
- execute { Chef::Cookbook.clean }
18
- end
18
+ def clean; execute { Chef::Cookbook.clean } end
19
19
 
20
20
  desc 'up', 'Setup the Docker environment for testing cookbooks'
21
- def up
22
- execute do
23
- unless File.exist?('docker-compose.yml')
24
- UI.error("This command should only be run in a cookbook directory. Make sure you have run `chef exec sambot build --local --docker` before trying again.")
25
- exit 1
26
- end
27
- up_cmd
28
- populate_cmd
29
- end
30
- end
21
+ def up; execute { Sambot::Tasks::Up.new.run(options) } end
31
22
 
32
23
  desc 'down', 'Destroy the Docker environment for testing cookbooks'
33
- def down
34
- execute do
35
- down_cmd
36
- end
37
- end
24
+ def down; execute { Sambot::Tasks::Down.new.run(options) } end
38
25
 
39
26
  desc 'test', 'Test a cookbook using the Docker environment'
40
- def test
41
- execute do
42
- up_cmd
43
- populate_cmd
44
- down_cmd
45
- end
46
- end
27
+ def test; execute { Sambot::Tasks::Test.new.run(options) } end
47
28
 
48
29
  desc 'populate', 'Populates Vault and Consul with seed data'
49
- def populate
50
- execute do
51
- populate_cmd
52
- end
53
- end
30
+ def populate; execute { Sambot::Tasks::Populate.new.run(options) } end
54
31
 
55
32
  desc 'bump', 'Bump the patch version of a cookbook'
56
- def bump
57
- execute { Chef::Cookbook.bump }
58
- end
33
+ def bump; execute { Chef::Cookbook.bump } end
59
34
 
60
35
  desc 'build', 'Builds a Chef cookbook from its configuration file'
61
36
  option :local, type: :boolean
62
37
  option :google, type: :boolean
63
38
  option :rackspace, type: :boolean
64
39
  option :docker, type: :boolean
65
- def build
66
- execute do
67
- cloud = nil
68
- cloud = 'local' if options[:local]
69
- cloud = 'google' if options[:google]
70
- cloud = 'rackspace' if options[:rackspace]
71
- unless cloud
72
- UI.error('Please select which environment this is building for using one of the following flags: --local, --rackspace or --google')
73
- exit
74
- end
75
- local_workflow = options[:docker] ? 'docker' : 'vagrant'
76
- Chef::Cookbook.build(Config.read, cloud, local_workflow)
77
- end
78
- end
40
+ def build; execute { Sambot::Tasks::Build.new.run(options) } end
79
41
 
80
42
  desc 'create', 'Creates a new Chef cookbook'
81
- def create
82
- execute do
83
- Sambot::Tasks::Create.new.run
84
- end
85
- end
43
+ def create; execute { Sambot::Tasks::Create.new.run(options) } end
86
44
 
87
45
  desc 'version', 'Gives the cookbook version as a TeamCity service message'
88
- def version
89
- execute { puts "##teamcity[buildNumber '#{Config.read.version}']" }
90
- end
91
-
92
- desc 'pin', 'Goes through role cookbooks and updates a wrapper cookbook version'
93
- def pin
94
- end
95
-
96
- desc 'verify', 'Ensures all supporting resources i.e. cookbook structure, TeamCity build and Git repository are created'
97
- def verify
98
- # Check in cookbook directory
99
- # Check for .config.yml - if not present, raise error
100
- # Get name from .config.yml
101
- # Check Github repository exists, if not ask to create it
102
- # Check TeamCity build configuration exists, if not ask to create it
103
- # Add deploy key to Vault and TeamCity Server
104
- end
105
-
106
- no_commands do
46
+ def version; execute { Sambot::Tasks::Version.new.run(options) } end
107
47
 
108
- def populate_cmd
109
- Sambot::Testing::VaultHelper.setup
110
- Sambot::Testing::VaultHelper.load_secrets(Config.read)
111
- Sambot::Testing::ConsulHelper.load_values(Config.read)
112
- end
113
-
114
- def down_cmd
115
- `docker-compose -p local down`
116
- `docker-compose -p local rm -sf`
117
- end
118
-
119
- def up_cmd
120
- `docker-compose -p local up -d`
121
- end
122
-
123
- end
48
+ desc 'verify', 'Ensures all supporting resources i.e. TeamCity build and Git repository are created and the git origin is pointing to the correct URL'
49
+ def verify; execute { Sambot::Tasks::Verify.new.run(options) } end
124
50
 
125
51
  end
126
52
  end
@@ -11,19 +11,48 @@ module Sambot
11
11
 
12
12
  ET_GITHUB_API = 'https://github.exacttarget.com/api/v3'
13
13
  ET_GITHUB = 'https://github.exacttarget.com'
14
+ ET_GITHUB_HOST = 'github.exacttarget.com'
15
+ WRAPPER_COOKBOOKS = 'ads-wrapper-cookbooks'
16
+ ROLE_COOKBOOKS = 'ads-role-cookbooks'
14
17
 
15
- def create_repository(name, organization = nil)
16
- # Need to check whether repo already exists first and do nothing if yes
17
- api.repos.create "name": name, org: organization,
18
- "private": false,
19
- "has_issues": true,
20
- "has_wiki": false,
21
- "has_downloads": true
18
+ def set_git_remote(config)
19
+ target = identify_repository(config)
20
+ cmd = "git remote set-url origin git@#{ET_GITHUB_HOST}:#{target[:organization]}/#{target[:name]}"
21
+ UI.info("Running the following command: #{cmd}")
22
+ `#{cmd}`
22
23
  end
23
24
 
24
- def delete_repository(user, repo)
25
- # Need to check whether repo exists first
26
- api.repos.delete user, repo
25
+ def add_deploy_key(config)
26
+ # Create deploy key
27
+ # Add it to Vault
28
+ # Run Chef-Client against TeamCity
29
+ end
30
+
31
+ def create_repository(config)
32
+ target = identify_repository(config)
33
+ if api.repos.get user: target[:organization], repo: target[:name]
34
+ UI.info("The repository #{target[:organization]}/#{target[:name]} exists and will not be recreated")
35
+ return 1
36
+ else
37
+ api.repos.create "name": target[:name], org: target[:organization],
38
+ "private": false,
39
+ "has_issues": true,
40
+ "has_wiki": false,
41
+ "has_downloads": true
42
+ UI.info("The repository #{target[:organization]}/#{target[:name]} has been created")
43
+ return 0
44
+ end
45
+ end
46
+
47
+ def delete_repository(config)
48
+ target = identify_repository(config)
49
+ if api.repos.get "#{target[:organization]}/#{target[:name]}"
50
+ UI.info("The repository #{target[:organization]}/#{arget[:name]} does not exist and will not be deleted")
51
+ return 1
52
+ else
53
+ api.repos.delete organization, repo
54
+ return 0
55
+ end
27
56
  end
28
57
 
29
58
  def checkout(organization)
@@ -58,6 +87,13 @@ module Sambot
58
87
 
59
88
  private
60
89
 
90
+ def identify_repository(config)
91
+ {
92
+ name: config.name,
93
+ organization: config.is_role_cookbook? ? ROLE_COOKBOOKS : WRAPPER_COOKBOOKS
94
+ }
95
+ end
96
+
61
97
  def contents_api
62
98
  api.repos.contents
63
99
  end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../base_command'
4
+
5
+ module Sambot
6
+ module Tasks
7
+ class Build < BaseCommand
8
+
9
+ no_commands do
10
+
11
+ def run(options)
12
+ cloud = nil
13
+ cloud = 'local' if options[:local]
14
+ cloud = 'google' if options[:google]
15
+ cloud = 'rackspace' if options[:rackspace]
16
+ unless cloud
17
+ UI.error('Please select which environment this is building for using one of the following flags: --local, --rackspace or --google')
18
+ exit
19
+ end
20
+ local_workflow = options[:docker] ? 'docker' : 'vagrant'
21
+ Chef::Cookbook.build(Config.read, cloud, local_workflow)
22
+ end
23
+
24
+ end
25
+
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../base_command'
4
+
5
+ module Sambot
6
+ module Tasks
7
+ class Check < BaseCommand
8
+
9
+ no_commands do
10
+
11
+ def run(directory, options)
12
+ # For each directory
13
+ # If a wrapper cookbook
14
+ # Check if a .config.yml file is present
15
+ # Check if the .config.yml file correctly points to inspec/tests
16
+ # Check if inspec tests controls inspec.yml and controls folder
17
+ # Check if a build configuration is present in the correct location
18
+ # If a role cookbook
19
+ # Check if a .config.yml file is present
20
+ # Check as-dependencies and esure config.yml imports the compliance profiles
21
+ # Check if a build configuration is present in the correct location
22
+ end
23
+
24
+ end
25
+
26
+ end
27
+ end
28
+ end
@@ -18,7 +18,7 @@ module Sambot
18
18
 
19
19
  no_commands do
20
20
 
21
- def run
21
+ def run(options)
22
22
  opts = {
23
23
  'name' => ask(NAME_REQUEST),
24
24
  'platforms' => ask(PLATFORM_REQUEST, limited_to: PLATFORM_OPTIONS),
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../base_command'
4
+
5
+ module Sambot
6
+ module Tasks
7
+ class Down < BaseCommand
8
+
9
+ no_commands do
10
+
11
+ def run(options)
12
+ `docker-compose -p local down`
13
+ `docker-compose -p local rm -sf`
14
+ end
15
+
16
+ end
17
+
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../base_command'
4
+
5
+ module Sambot
6
+ module Tasks
7
+ class Populate < BaseCommand
8
+
9
+ no_commands do
10
+
11
+ def run(options)
12
+ Sambot::Testing::VaultHelper.setup
13
+ Sambot::Testing::VaultHelper.load_secrets(Config.read)
14
+ Sambot::Testing::ConsulHelper.load_values(Config.read)
15
+ end
16
+
17
+ end
18
+
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../base_command'
4
+
5
+ module Sambot
6
+ module Tasks
7
+ class Test < BaseCommand
8
+
9
+ no_commands do
10
+
11
+ def run(options)
12
+ Sambot::Tasks::Up.new.run(options)
13
+ `chef exec kitchen test`
14
+ Sambot::Tasks::Down.new.run(options)
15
+ end
16
+
17
+ end
18
+
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../base_command'
4
+
5
+ module Sambot
6
+ module Tasks
7
+ class Up < BaseCommand
8
+
9
+ no_commands do
10
+
11
+ def run(options)
12
+ unless File.exist?('docker-compose.yml')
13
+ UI.error("This command should only be run in a cookbook directory. Make sure you have run `chef exec sambot build --local --docker` before trying again.")
14
+ exit 1
15
+ end
16
+ `docker-compose -p local up -d`
17
+ Sambot::Tasks::Populate.new.run(options)
18
+ end
19
+
20
+ end
21
+
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../base_command'
4
+
5
+ module Sambot
6
+ module Tasks
7
+ class Verify < BaseCommand
8
+
9
+ no_commands do
10
+
11
+ def run(options)
12
+ check_configuration
13
+ config = Config.read
14
+ ::TeamCity.create_cookbook_build(config)
15
+ ::Sambot::SourceControl.create_repository(config)
16
+ ::Sambot::SourceControl.set_git_remote(config)
17
+ ::Sambot::SourceControl.add_deploy_key(config)
18
+ end
19
+
20
+ def check_configuration
21
+ unless ENV['TEAMCITY_USERNAME']
22
+ UI.error("Please ensure the TEAMCITY_USERNAME environment variable is set before running this command")
23
+ exit
24
+ end
25
+ unless ENV['TEAMCITY_PASSWORD']
26
+ UI.error("Please ensure the TEAMCITY_USERNAME environment variable is set before running this command")
27
+ exit
28
+ end
29
+ end
30
+
31
+ end
32
+
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../base_command'
4
+
5
+ module Sambot
6
+ module Tasks
7
+ class Version < BaseCommand
8
+
9
+ no_commands do
10
+
11
+ def run(options)
12
+ puts "##teamcity[buildNumber '#{Config.read.version}']"
13
+ end
14
+
15
+ end
16
+
17
+ end
18
+ end
19
+ end
@@ -2,6 +2,10 @@ module TeamCity
2
2
  class Client
3
3
  module Builds
4
4
 
5
+ LINUX_WRAPPER_COOKBOOKS_PROJECT = 'Wrapper Cookbooks - GCP'
6
+ LINUX_ROLE_COOKBOOKS_PROJECT = 'Role Cookbooks - GCP'
7
+ GCP_PROJECT = 'Google Cloud Platform'
8
+
5
9
  def attach_template(build_id, template_id)
6
10
  path = "buildTypes/#{build_id}/template"
7
11
  put(path, :content_type => :text) do |request|
@@ -17,19 +21,32 @@ module TeamCity
17
21
  end
18
22
  end
19
23
 
24
+ def build_exists?(project, build_name)
25
+ all_builds = TeamCity.project_buildtypes(id: project.id).map {|x| x.name}
26
+ all_builds.include?(build_name)
27
+ end
28
+
20
29
  def create_cookbook_build(config)
21
30
  ::TeamCity.configure do |config|
22
31
  config.endpoint = 'https://teamcity.brighter.io/httpAuth/app/rest' || ENV['TEAMCITY_URL']
23
32
  config.http_user = ENV['TEAMCITY_USERNAME']
24
33
  config.http_password = ENV['TEAMCITY_PASSWORD']
25
34
  end
26
- # Identify which projects this cookbook belongs to (ROLE OR WRAPPER)
27
- # Create a build configuration for it
28
- project = ::TeamCity.find_project_by_name(LINUX_ROLES_PROJECT_NAME)
29
- template = ::TeamCity.project_templates(id: project.id)[0]
30
- build_configuration = ::TeamCity.create_build(project.id, name)
31
- ::TeamCity.attach_template(build_configuration.id, template.id)
32
- ::TeamCity.delete_buildtype(build_configuration.id)
35
+ project_name = config.is_role_cookbook? ? LINUX_ROLE_COOKBOOKS_PROJECT : LINUX_WRAPPER_COOKBOOKS_PROJECT
36
+ ::Sambot::UI.debug("Looking for the project #{project_name}")
37
+ project = ::TeamCity.find_project_by_name(project_name)
38
+ if build_exists?(project, config.name)
39
+ ::Sambot::UI.info("The build configuration '#{config.name}' already exists in the project '#{project.name}'")
40
+ else
41
+ ::Sambot::UI.debug("Looking for the template project #{GCP_PROJECT}")
42
+ template_project = ::TeamCity.find_project_by_name(GCP_PROJECT)
43
+ template = ::TeamCity.project_templates(id: template_project.id)[0]
44
+ ::Sambot::UI.debug("Using the TeamCity template #{template.name}")
45
+ build_configuration = ::TeamCity.create_build(project.id, config.name)
46
+ ::TeamCity.attach_template(build_configuration.id, template.id)
47
+ ::Sambot::UI.info("The build configuration '#{config.name}' has been created in the project '#{project.name}'")
48
+ build_configuration
49
+ end
33
50
  end
34
51
 
35
52
  end
@@ -17,7 +17,7 @@ module TeamCity
17
17
  connection.use FaradayMiddleware::Mashify
18
18
  connection.use FaradayMiddleware::ParseJson if headers.accept =~ /json/
19
19
  connection.use FaradayMiddleware::NullResponseBody
20
- connection.use Faraday::Response::Logger
20
+ #connection.use Faraday::Response::Logger
21
21
  connection.adapter(adapter)
22
22
  connection.basic_auth(http_user, http_password)
23
23
  end
@@ -1,8 +1,3 @@
1
1
  #!/bin/sh
2
2
  chef exec sambot bump
3
3
  git add .config.yml
4
- if [ -d 'inspec' ]; then
5
- inspec archive inspec/tests --overwrite
6
- mv *-profile-*.tar.gz inspec/archives
7
- git add inspec/archives
8
- fi
@@ -13,16 +13,25 @@ module Sambot
13
13
  VAULT_CONFIG_BINARY = 'vault-config'
14
14
  WORKING_DIR = '/tmp/sambot/testing/vault'
15
15
  VAULT_POLICIES_REPO = 'git@github.exacttarget.com:ads-devops/vault-policies.git'
16
+ VAULT_ADDRESS = 'http://127.0.0.1:8200'
17
+ BOOTSTRAP_TOKEN_ROLE = 'nightswatch-ro'
18
+ BOOTSTRAP_TOKEN_TTL = '72h'
19
+ BOOTSTRAP_TOKEN = 'root'
20
+ BOOTSTRAP_TOKEN_POLICIES = ['nightswatch-ro']
16
21
 
17
- def generate_wrapped_token
22
+ def configure
18
23
  ::Vault.configure do |config|
19
- config.address = 'http://127.0.0.1:8200'
20
- config.token = 'root'
24
+ config.address = VAULT_ADDRESS
25
+ config.token = BOOTSTRAP_TOKEN
21
26
  config.ssl_verify = false
22
27
  end
28
+ end
29
+
30
+ def generate_wrapped_token
31
+ configure
23
32
  token = ''
24
33
  begin
25
- wrap_info = Vault.auth_token.create('wrap_ttl': '72h', role: 'nightswatch-ro', policies: ['nightswatch-ro']).wrap_info
34
+ wrap_info = Vault.auth_token.create('wrap_ttl': BOOTSTRAP_TOKEN_TTL, role: BOOTSTRAP_TOKEN_ROLE, policies: BOOTSTRAP_TOKEN_POLICIES).wrap_info
26
35
  token = wrap_info.token
27
36
  rescue
28
37
  end
@@ -39,7 +48,7 @@ module Sambot
39
48
  Dir.chdir 'vault-policies/dev/vault-config' do
40
49
  FS.copy(VAULT_CONFIG_BINARY)
41
50
  UI.info('Applying the Vault policies')
42
- `VC_VAULT_ADDR=http://127.0.0.1:8200 VC_VAULT_TOKEN=root ./#{VAULT_CONFIG_BINARY} config`
51
+ `VC_VAULT_ADDR=#{VAULT_ADDRESS} VC_VAULT_TOKEN=#{BOOTSTRAP_TOKEN} ./#{VAULT_CONFIG_BINARY} config`
43
52
  UI.info('The Vault policies have been applied')
44
53
  end
45
54
  end
@@ -79,6 +88,7 @@ module Sambot
79
88
  end
80
89
 
81
90
  def write_to_vault(path, key, value)
91
+ configure
82
92
  Vault.logical.write(path, key.to_sym => value)
83
93
  end
84
94
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sambot
4
- VERSION = '0.1.213'
4
+ VERSION = '0.1.214'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sambot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.213
4
+ version: 0.1.214
5
5
  platform: ruby
6
6
  authors:
7
7
  - Olivier Kouame
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-31 00:00:00.000000000 Z
11
+ date: 2017-08-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor-hollaback
@@ -415,8 +415,15 @@ files:
415
415
  - lib/sambot/fs.rb
416
416
  - lib/sambot/runtime.rb
417
417
  - lib/sambot/source_control.rb
418
+ - lib/sambot/tasks/build.rb
419
+ - lib/sambot/tasks/check.rb
418
420
  - lib/sambot/tasks/create.rb
419
- - lib/sambot/team_city.rb
421
+ - lib/sambot/tasks/down.rb
422
+ - lib/sambot/tasks/populate.rb
423
+ - lib/sambot/tasks/test.rb
424
+ - lib/sambot/tasks/up.rb
425
+ - lib/sambot/tasks/verify.rb
426
+ - lib/sambot/tasks/version.rb
420
427
  - lib/sambot/teamcity/builds.rb
421
428
  - lib/sambot/teamcity/faraday.rb
422
429
  - lib/sambot/teamcity/projects.rb
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'pry'
4
- require 'github_api'
5
- require 'git'
6
-
7
- module Sambot
8
- class TeamCity
9
-
10
- class << self
11
-
12
-
13
- end
14
-
15
- end
16
- end