superbot-cloud 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/Gemfile.lock +1 -1
  4. data/lib/superbot/cloud/api.rb +3 -0
  5. data/lib/superbot/cloud/cli/login_required_command.rb +24 -0
  6. data/lib/superbot/cloud/cli/member/add_command.rb +0 -3
  7. data/lib/superbot/cloud/cli/member/base_command.rb +1 -2
  8. data/lib/superbot/cloud/cli/member/list_command.rb +0 -3
  9. data/lib/superbot/cloud/cli/member/remove_command.rb +0 -3
  10. data/lib/superbot/cloud/cli/member_command.rb +1 -12
  11. data/lib/superbot/cloud/cli/organization/list_command.rb +0 -3
  12. data/lib/superbot/cloud/cli/organization_based_command.rb +11 -0
  13. data/lib/superbot/cloud/cli/organization_command.rb +1 -8
  14. data/lib/superbot/cloud/cli/root_command.rb +5 -1
  15. data/lib/superbot/cloud/cli/schedule/base_command.rb +12 -0
  16. data/lib/superbot/cloud/cli/schedule/cancel_command.rb +28 -0
  17. data/lib/superbot/cloud/cli/schedule/list_command.rb +49 -0
  18. data/lib/superbot/cloud/cli/schedule_command.rb +16 -0
  19. data/lib/superbot/cloud/cli/test/base_command.rb +1 -2
  20. data/lib/superbot/cloud/cli/test/delete_command.rb +0 -3
  21. data/lib/superbot/cloud/cli/test/download_command.rb +0 -3
  22. data/lib/superbot/cloud/cli/test/list_command.rb +0 -3
  23. data/lib/superbot/cloud/cli/test/schedule_command.rb +33 -0
  24. data/lib/superbot/cloud/cli/test/upload_command.rb +1 -4
  25. data/lib/superbot/cloud/cli/test_command.rb +3 -8
  26. data/lib/superbot/cloud/cli/webdriver/base_command.rb +12 -0
  27. data/lib/superbot/cloud/cli/webdriver/delete_command.rb +11 -15
  28. data/lib/superbot/cloud/cli/webdriver/list_command.rb +4 -5
  29. data/lib/superbot/cloud/cli/webdriver_command.rb +2 -8
  30. data/lib/superbot/cloud/version.rb +1 -1
  31. data/lib/superbot/cloud/web.rb +4 -1
  32. metadata +10 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 19bbd2c960d6aa5d1568b2466d3aa330bf3a83df27778f0d94443feb29359f4a
4
- data.tar.gz: 5378ef953d8a0179fbfae3eeab75fc82d66ffdd58dd3acf77493f4b07fee49ce
3
+ metadata.gz: 614054f58998b305958b0bca9bcb88ab2c51df2453808252ff37c4ba322aafad
4
+ data.tar.gz: 337f44708673aac80e59b915d137b134f330da8c142fd7e2fd5c6cffae38fe25
5
5
  SHA512:
6
- metadata.gz: 2cc5c6baa79028c830533b1bedbcc85012efe39e9514a745483b03278494599cd3709a357a558b56048d0cd338a55adc80e5b8a062466e4b6dc39b2cd4883f9c
7
- data.tar.gz: 33f7cf07f72ff70ba63d5a9993545ee449fdf8b038cdf03557776f03cb2c3d49f8f2f80b12668c61f691bd8962455be9e820b6c00351d6e7c4d93bb101e18cf1
6
+ metadata.gz: 57494354cffc30fc8eea756a42f58dceb6b5f60d735d34aaa43973b37f9388ebc1f94080d71ace476b8fbd39df666e503dd3d4ff5f8411aeb5261d1361c29dbd
7
+ data.tar.gz: 52da377337dee2ca37ec0d4342653a65b8f3779dbbdde262bca0306c9fe48c2a8ce096274787f836d291e20ecc4e9c70f24f07eeb0d54a8fdf63f6731e131492
data/.rubocop.yml CHANGED
@@ -8,7 +8,7 @@ AllCops:
8
8
  - "*.gemspec"
9
9
  - bundler/**/*
10
10
  - vendor/bundle/**/* # travis with --deployment
11
- TargetRubyVersion: 2.4
11
+ TargetRubyVersion: 2.5
12
12
 
13
13
  Style/PercentLiteralDelimiters:
14
14
  PreferredDelimiters:
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- superbot-cloud (0.2.0)
4
+ superbot-cloud (0.2.1)
5
5
  marcel (= 0.3.3)
6
6
  multipart-post (= 2.0.0)
7
7
 
@@ -14,6 +14,9 @@ module Superbot
14
14
  test_upload: { method: :post_multipart, endpoint: 'tests' },
15
15
  test_download: { method: :get, endpoint: 'tests', required_param: :name },
16
16
  delete_test: { method: :delete, endpoint: 'tests', required_param: :name },
17
+ schedule_test: { method: :post, endpoint: 'schedules' },
18
+ schedule_list: { method: :get, endpoint: 'schedules' },
19
+ cancel_schedule: { method: :delete, endpoint: 'schedules', required_param: :id },
17
20
  webdriver_session_list: { method: :get, endpoint: 'webdriver_sessions' },
18
21
  delete_webdriver_session: { method: :delete, endpoint: 'webdriver_sessions', required_param: :session_id },
19
22
  organization_members_list: { method: :get, endpoint: 'members' },
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Superbot
4
+ module Cloud
5
+ module CLI
6
+ class LoginRequiredCommand < Clamp::Command
7
+ include Superbot::Cloud::Validations
8
+
9
+ def run(args)
10
+ require_login
11
+ super
12
+ end
13
+
14
+ def self.run
15
+ require_login
16
+ super
17
+ rescue StandardError => exc
18
+ warn exc.message
19
+ warn exc.backtrace.join("\n")
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -5,12 +5,9 @@ module Superbot
5
5
  module CLI
6
6
  module Member
7
7
  class AddCommand < BaseCommand
8
- include Superbot::Cloud::Validations
9
-
10
8
  parameter "USERNAME", "Username of a user to add", required: true
11
9
 
12
10
  def execute
13
- require_login
14
11
  add_member
15
12
  end
16
13
 
@@ -4,8 +4,7 @@ module Superbot
4
4
  module Cloud
5
5
  module CLI
6
6
  module Member
7
- class BaseCommand < Clamp::Command
8
- option ["--org"], "ORGANIZATION", "Organization to to take actions on", attribute_name: :organization
7
+ class BaseCommand < OrganizationBasedCommand
9
8
  end
10
9
  end
11
10
  end
@@ -5,10 +5,7 @@ module Superbot
5
5
  module CLI
6
6
  module Member
7
7
  class ListCommand < BaseCommand
8
- include Superbot::Cloud::Validations
9
-
10
8
  def execute
11
- require_login
12
9
  list_members
13
10
  end
14
11
 
@@ -5,12 +5,9 @@ module Superbot
5
5
  module CLI
6
6
  module Member
7
7
  class RemoveCommand < BaseCommand
8
- include Superbot::Cloud::Validations
9
-
10
8
  parameter "USERNAME", "Username of a user to remove"
11
9
 
12
10
  def execute
13
- require_login
14
11
  remove_member
15
12
  end
16
13
 
@@ -8,21 +8,10 @@ require_relative 'member/list_command'
8
8
  module Superbot
9
9
  module Cloud
10
10
  module CLI
11
- class MemberCommand < Clamp::Command
12
- include Superbot::Cloud::Validations
13
-
11
+ class MemberCommand < LoginRequiredCommand
14
12
  subcommand ['add'], "Add member to organization", Member::AddCommand
15
13
  subcommand ['remove'], "Remove member from organization", Member::RemoveCommand
16
14
  subcommand ['list'], "List your organization members", Member::ListCommand
17
-
18
-
19
- def self.run
20
- require_login
21
- super
22
- rescue StandardError => exc
23
- warn exc.message
24
- warn exc.backtrace.join("\n")
25
- end
26
15
  end
27
16
  end
28
17
  end
@@ -5,10 +5,7 @@ module Superbot
5
5
  module CLI
6
6
  module Organization
7
7
  class ListCommand < Clamp::Command
8
- include Superbot::Cloud::Validations
9
-
10
8
  def execute
11
- require_login
12
9
  list_organizations
13
10
  end
14
11
 
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Superbot
4
+ module Cloud
5
+ module CLI
6
+ class OrganizationBasedCommand < LoginRequiredCommand
7
+ option ["--org"], "ORGANIZATION", "Organization to to take actions on", attribute_name: :organization
8
+ end
9
+ end
10
+ end
11
+ end
@@ -5,15 +5,8 @@ require_relative 'organization/list_command'
5
5
  module Superbot
6
6
  module Cloud
7
7
  module CLI
8
- class OrganizationCommand < Clamp::Command
8
+ class OrganizationCommand < LoginRequiredCommand
9
9
  subcommand ['list'], "List user organizations from the cloud", Organization::ListCommand
10
-
11
- def self.run
12
- super
13
- rescue StandardError => exc
14
- warn exc.message
15
- warn exc.backtrace.join("\n")
16
- end
17
10
  end
18
11
  end
19
12
  end
@@ -4,10 +4,13 @@ require_relative 'validations'
4
4
  require_relative 'version_command'
5
5
  require_relative 'login_command'
6
6
  require_relative 'logout_command'
7
+ require_relative 'login_required_command'
8
+ require_relative 'organization_based_command'
7
9
  require_relative 'organization_command'
8
10
  require_relative 'test_command'
9
11
  require_relative 'webdriver_command'
10
12
  require_relative 'member_command'
13
+ require_relative 'schedule_command'
11
14
 
12
15
  module Superbot
13
16
  module Cloud
@@ -16,10 +19,11 @@ module Superbot
16
19
  subcommand ['version'], 'Superbot cloud version', VersionCommand
17
20
  subcommand ['login'], 'Authorize superbot to access cloud API with Superbot Cloud user credentials', LoginCommand
18
21
  subcommand ['logout'], 'Revoke credentials for an account', LogoutCommand
19
- subcommand(['org'], 'Manage your organizations', OrganizationCommand)
22
+ subcommand ['org'], 'Manage your organizations', OrganizationCommand
20
23
  subcommand ['test'], "Manage your tests", TestCommand
21
24
  subcommand ['webdriver'], "Manage your webdriver sessions", WebdriverCommand
22
25
  subcommand ['member'], "Manage your organization members", MemberCommand
26
+ subcommand(['schedule'], "Manage your test schedules", ScheduleCommand) if ENV['SUPERBOT_FEAT_SCHEDULE'] == 'true'
23
27
 
24
28
  option ['-v', '--version'], :flag, "Show version information" do
25
29
  puts Superbot::Cloud::VERSION
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Superbot
4
+ module Cloud
5
+ module CLI
6
+ module Schedule
7
+ class BaseCommand < OrganizationBasedCommand
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Superbot
4
+ module Cloud
5
+ module CLI
6
+ module Schedule
7
+ class CancelCommand < BaseCommand
8
+ parameter "ID ...", "the IDs of the schedule to cancel", required: true
9
+
10
+ def execute
11
+ delete_schedule
12
+ end
13
+
14
+ def delete_schedule
15
+ id_list.each do |schedule_id|
16
+ begin
17
+ Superbot::Cloud::Api.request(:cancel_schedule, params: { id: schedule_id, organization_name: organization })
18
+ puts "Test schedule #{schedule_id} successfully cancelled"
19
+ rescue SystemExit
20
+ p # skip to next schedule
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Superbot
4
+ module Cloud
5
+ module CLI
6
+ module Schedule
7
+ class ListCommand < BaseCommand
8
+ OUTPUT_HEADERS = {
9
+ id: { name: "ID", column_size: 10 },
10
+ test_name: { name: "Test", column_size: 25 },
11
+ starts_at: { name: "Scheduled Time", column_size: 25 },
12
+ region: { name: "Region", column_size: 20 },
13
+ status: { name: "Status", column_size: 10 },
14
+ parallel: { name: "User load", column_size: 10 }
15
+ }.freeze
16
+
17
+ option %w[-q --quiet], :flag, "Only show schedule IDs"
18
+ option %w[-a --all], :flag, "Show all the schedules (including finished)"
19
+
20
+ def execute
21
+ list_schedules
22
+ end
23
+
24
+ def list_schedules
25
+ states = all? ? nil : %w[initial processing]
26
+ api_response = Superbot::Cloud::Api.request(:schedule_list, params: { organization_name: organization, 'aasm_state[]': states })
27
+
28
+ abort api_response[:error] if api_response[:error]
29
+ abort "No active schedules found for organization #{api_response[:organization]}" if api_response[:schedules].empty?
30
+
31
+ if quiet?
32
+ puts(api_response[:schedules].map { |schedule| schedule[:id] })
33
+ else
34
+ puts "Organization: #{api_response[:organization]}"
35
+ puts "Schedules:"
36
+ puts OUTPUT_HEADERS.values.map { |header| header[:name].ljust(header[:column_size]) }.join
37
+ api_response[:schedules].each do |schedule|
38
+ row = schedule.slice(*OUTPUT_HEADERS.keys).map do |key, value|
39
+ value.to_s.ljust(OUTPUT_HEADERS.dig(key, :column_size))
40
+ end.join
41
+ puts row
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'schedule/base_command'
4
+ require_relative 'schedule/list_command'
5
+ require_relative 'schedule/cancel_command'
6
+
7
+ module Superbot
8
+ module Cloud
9
+ module CLI
10
+ class ScheduleCommand < LoginRequiredCommand
11
+ subcommand ['list'], "List your schedules", Schedule::ListCommand
12
+ subcommand ['cancel'], "Cancel your schedule", Schedule::CancelCommand
13
+ end
14
+ end
15
+ end
16
+ end
@@ -4,8 +4,7 @@ module Superbot
4
4
  module Cloud
5
5
  module CLI
6
6
  module Test
7
- class BaseCommand < Clamp::Command
8
- option ["--org"], "ORGANIZATION", "Organization to to take actions on", attribute_name: :organization
7
+ class BaseCommand < OrganizationBasedCommand
9
8
  end
10
9
  end
11
10
  end
@@ -5,12 +5,9 @@ module Superbot
5
5
  module CLI
6
6
  module Test
7
7
  class DeleteCommand < BaseCommand
8
- include Superbot::Cloud::Validations
9
-
10
8
  parameter "NAME", "the name of the test to delete", required: true
11
9
 
12
10
  def execute
13
- require_login
14
11
  delete_test
15
12
  end
16
13
 
@@ -8,12 +8,9 @@ module Superbot
8
8
  module CLI
9
9
  module Test
10
10
  class DownloadCommand < BaseCommand
11
- include Superbot::Cloud::Validations
12
-
13
11
  parameter "NAME", "the name of test to download"
14
12
 
15
13
  def execute
16
- require_login
17
14
  download_test
18
15
  end
19
16
 
@@ -5,10 +5,7 @@ module Superbot
5
5
  module CLI
6
6
  module Test
7
7
  class ListCommand < BaseCommand
8
- include Superbot::Cloud::Validations
9
-
10
8
  def execute
11
- require_login
12
9
  list_tests
13
10
  end
14
11
 
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Superbot
4
+ module Cloud
5
+ module CLI
6
+ module Test
7
+ class ScheduleCommand < BaseCommand
8
+ parameter "NAME", "the name of the test to delete", required: true
9
+ option ['--region'], 'REGION', 'Region for remote webdriver'
10
+ option ['--user-load'], 'USER_LOAD', 'Number of concurrent users'
11
+
12
+ def execute
13
+ schedule_test
14
+ end
15
+
16
+ def schedule_test
17
+ Superbot::Cloud::Api.request(:schedule_test, params: schedule_params)
18
+ puts "Tests successfully scheduled"
19
+ end
20
+
21
+ def schedule_params
22
+ {
23
+ test_name: name,
24
+ region: region,
25
+ organization_name: organization,
26
+ parallel: user_load
27
+ }.compact
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -10,12 +10,9 @@ module Superbot
10
10
  module CLI
11
11
  module Test
12
12
  class UploadCommand < BaseCommand
13
- include Superbot::Cloud::Validations
14
-
15
13
  parameter "PATH", "the path to folder containing tests to upload"
16
14
 
17
15
  def execute
18
- require_login
19
16
  upload_tests
20
17
  end
21
18
 
@@ -29,7 +26,7 @@ module Superbot
29
26
  api_response = Superbot::Cloud::Api.request(
30
27
  :test_upload,
31
28
  params: {
32
- name: Zaru.sanitize!(path),
29
+ name: Zaru.sanitize!(File.basename(path)),
33
30
  organization_name: organization,
34
31
  file: UploadIO.new(file, content_type, filename)
35
32
  }
@@ -5,22 +5,17 @@ require_relative 'test/list_command'
5
5
  require_relative 'test/upload_command'
6
6
  require_relative 'test/download_command'
7
7
  require_relative 'test/delete_command'
8
+ require_relative 'test/schedule_command'
8
9
 
9
10
  module Superbot
10
11
  module Cloud
11
12
  module CLI
12
- class TestCommand < Clamp::Command
13
+ class TestCommand < OrganizationBasedCommand
13
14
  subcommand ['list'], "List user tests from the cloud", Test::ListCommand
14
15
  subcommand ['upload'], "Upload test to the cloud", Test::UploadCommand
15
16
  subcommand ['download'], "Download test from the cloud", Test::DownloadCommand
16
17
  subcommand ['delete'], "Delete test from the cloud", Test::DeleteCommand
17
-
18
- def self.run
19
- super
20
- rescue StandardError => exc
21
- warn exc.message
22
- warn exc.backtrace.join("\n")
23
- end
18
+ subcommand(['schedule'], "Schedule a test", Test::ScheduleCommand) if ENV['SUPERBOT_FEAT_SCHEDULE'] == 'true'
24
19
  end
25
20
  end
26
21
  end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Superbot
4
+ module Cloud
5
+ module CLI
6
+ module Webdriver
7
+ class BaseCommand < OrganizationBasedCommand
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -4,30 +4,26 @@ module Superbot
4
4
  module Cloud
5
5
  module CLI
6
6
  module Webdriver
7
- class DeleteCommand < Clamp::Command
8
- include Superbot::Cloud::Validations
9
-
7
+ class DeleteCommand < BaseCommand
10
8
  parameter "SESSION_ID ...", "webdriver session ID", required: true
11
9
 
12
10
  def execute
13
- require_login
14
11
  delete_session
15
12
  end
16
13
 
17
14
  def delete_session
18
15
  session_id_list.each do |session_id|
19
- begin
20
- Superbot::Cloud::Api.request(
21
- :delete_webdriver_session,
22
- params: {
23
- session_id: session_id
24
- }
25
- )
16
+ Superbot::Cloud::Api.request(
17
+ :delete_webdriver_session,
18
+ params: {
19
+ session_id: session_id,
20
+ organization_name: organization
21
+ }
22
+ )
26
23
 
27
- puts "Webdriver session #{session_id} removal has been requested."
28
- rescue SystemExit
29
- p # skip to next webdriver session
30
- end
24
+ puts "Webdriver session #{session_id} removal has been requested."
25
+ rescue SystemExit
26
+ p # skip to next webdriver session
31
27
  end
32
28
  end
33
29
  end
@@ -4,8 +4,7 @@ module Superbot
4
4
  module Cloud
5
5
  module CLI
6
6
  module Webdriver
7
- class ListCommand < Clamp::Command
8
- include Superbot::Cloud::Validations
7
+ class ListCommand < BaseCommand
9
8
  OUTPUT_HEADERS = {
10
9
  session_id: "Session ID",
11
10
  created_at: "Created at",
@@ -16,20 +15,20 @@ module Superbot
16
15
  option %w[-a --all], :flag, "Show all the sessions (including finished)"
17
16
 
18
17
  def execute
19
- require_login
20
18
  list_sessions
21
19
  end
22
20
 
23
21
  def list_sessions
24
22
  states = all? ? nil : %w[idle proxying]
25
- api_response = Superbot::Cloud::Api.request(:webdriver_session_list, params: { 'aasm_state[]': states })
23
+ api_response = Superbot::Cloud::Api.request(:webdriver_session_list, params: { organization_name: organization, 'aasm_state[]': states })
26
24
  abort api_response[:error] if api_response[:error]
27
25
 
28
- abort "No sessions found" if api_response[:webdriver_sessions].empty?
26
+ abort "No active sessions found for #{api_response[:organization]} organization" if api_response[:webdriver_sessions].empty?
29
27
 
30
28
  if quiet?
31
29
  puts(api_response[:webdriver_sessions].map { |session| session[:session_id] })
32
30
  else
31
+ puts "Organization: #{api_response[:organization]}"
33
32
  puts OUTPUT_HEADERS.values.map { |header| header.ljust(35) }.join
34
33
  puts ''.ljust(35 * OUTPUT_HEADERS.length, '-')
35
34
  api_response[:webdriver_sessions].each do |webdriver_session|
@@ -1,21 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'webdriver/base_command'
3
4
  require_relative 'webdriver/list_command'
4
5
  require_relative 'webdriver/delete_command'
5
6
 
6
7
  module Superbot
7
8
  module Cloud
8
9
  module CLI
9
- class WebdriverCommand < Clamp::Command
10
+ class WebdriverCommand < LoginRequiredCommand
10
11
  subcommand ['list'], "List all webdriver sessions", Webdriver::ListCommand
11
12
  subcommand ['delete'], "Terminate and finish specific session", Webdriver::DeleteCommand
12
-
13
- def self.run
14
- super
15
- rescue StandardError => exc
16
- warn exc.message
17
- warn exc.backtrace.join("\n")
18
- end
19
13
  end
20
14
  end
21
15
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Superbot
4
4
  module Cloud
5
- VERSION = "0.2.0"
5
+ VERSION = "0.2.1"
6
6
  end
7
7
  end
@@ -7,8 +7,11 @@ module Superbot
7
7
  sinatra.get "/login" do
8
8
  credentials = request.params.slice('username', 'email', 'token')
9
9
  Superbot::Cloud.save_credentials(credentials)
10
+ redirect "#{Superbot::Cloud::LOGIN_URI}/success"
11
+ end
12
+
13
+ sinatra.after "/login" do
10
14
  sinatra.quit!
11
- redirect "#{Superbot::Cloud::LOGIN_URI}/success?username=#{Superbot::Cloud.credentials[:username]}"
12
15
  end
13
16
  end
14
17
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: superbot-cloud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Superbots
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-12-20 00:00:00.000000000 Z
11
+ date: 2019-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multipart-post
@@ -137,6 +137,7 @@ files:
137
137
  - lib/superbot/cloud/api.rb
138
138
  - lib/superbot/cloud/cli.rb
139
139
  - lib/superbot/cloud/cli/login_command.rb
140
+ - lib/superbot/cloud/cli/login_required_command.rb
140
141
  - lib/superbot/cloud/cli/logout_command.rb
141
142
  - lib/superbot/cloud/cli/member/add_command.rb
142
143
  - lib/superbot/cloud/cli/member/base_command.rb
@@ -144,16 +145,23 @@ files:
144
145
  - lib/superbot/cloud/cli/member/remove_command.rb
145
146
  - lib/superbot/cloud/cli/member_command.rb
146
147
  - lib/superbot/cloud/cli/organization/list_command.rb
148
+ - lib/superbot/cloud/cli/organization_based_command.rb
147
149
  - lib/superbot/cloud/cli/organization_command.rb
148
150
  - lib/superbot/cloud/cli/root_command.rb
151
+ - lib/superbot/cloud/cli/schedule/base_command.rb
152
+ - lib/superbot/cloud/cli/schedule/cancel_command.rb
153
+ - lib/superbot/cloud/cli/schedule/list_command.rb
154
+ - lib/superbot/cloud/cli/schedule_command.rb
149
155
  - lib/superbot/cloud/cli/test/base_command.rb
150
156
  - lib/superbot/cloud/cli/test/delete_command.rb
151
157
  - lib/superbot/cloud/cli/test/download_command.rb
152
158
  - lib/superbot/cloud/cli/test/list_command.rb
159
+ - lib/superbot/cloud/cli/test/schedule_command.rb
153
160
  - lib/superbot/cloud/cli/test/upload_command.rb
154
161
  - lib/superbot/cloud/cli/test_command.rb
155
162
  - lib/superbot/cloud/cli/validations.rb
156
163
  - lib/superbot/cloud/cli/version_command.rb
164
+ - lib/superbot/cloud/cli/webdriver/base_command.rb
157
165
  - lib/superbot/cloud/cli/webdriver/delete_command.rb
158
166
  - lib/superbot/cloud/cli/webdriver/list_command.rb
159
167
  - lib/superbot/cloud/cli/webdriver_command.rb