superbot-cloud 0.2.0 → 0.2.1

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 (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