dockergsm 0.0.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 (5) hide show
  1. checksums.yaml +7 -0
  2. data/bin/dockergsm +70 -0
  3. data/lib/dockergsm.rb +9 -0
  4. data/lib/games.yml +5 -0
  5. metadata +67 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1f5d241ae004b6265fb276f4e010734e55bf1d07
4
+ data.tar.gz: 6c5c8504fe520eb857ed1fa31c5a9253c2ff7dfc
5
+ SHA512:
6
+ metadata.gz: b3c868831a1ca1f97364c585de89cf451367edb8e4ff532ca2585e49a1c46e6932e409689c547ea29ef02f6d3bf201d7f1095244aeeed8716f331deefd61a502
7
+ data.tar.gz: e7e430b0152cd4e1893a46522600cfa5d559911d2d6d5d8967715f484c31a118c278375b4a72b2043a17d30728e0abab9ead6dd115f2601be8c1b6ab7df81872
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/env ruby
2
+ require 'dockergsm'
3
+ require 'thor'
4
+
5
+ # provide yes/no dialog
6
+ def yn_dialog(message, default)
7
+ result = :initial
8
+ until ['y', 'n', 'Y', 'N', 'yes', 'no', 'Yes', 'No', ''].include? result
9
+ puts "Unable to parse response: #{result}." unless result == :initial
10
+ print message
11
+ result = STDIN.gets.chomp
12
+ end
13
+
14
+ yes_options = %w[y Y yes Yes]
15
+ yes_options.push('') if default # default: true > (Y/n), false > (y/N)
16
+ yes_options.include?(result) ? true : false
17
+ end
18
+
19
+ # run error handling
20
+ def basic_err(before, after, command)
21
+ puts before
22
+ begin
23
+ command.call
24
+ rescue RuntimeError => e
25
+ puts "ERROR: #{e.message}."
26
+ end
27
+ puts after
28
+ end
29
+
30
+ # cli class
31
+ class Engine < Thor
32
+ package_name 'DockerGSM'
33
+
34
+ # create a server (game: GAME, id: SERVER_ID)
35
+ desc 'create GAME SERVER_ID', 'create and start a new game server'
36
+ def create(game, id)
37
+ GSM.create(game, id)
38
+ end
39
+
40
+ # start a server (id: ID)
41
+ desc 'start ID', 'start an existing server'
42
+ def start(id)
43
+ GSM.start(id)
44
+ end
45
+
46
+ # stop a server (id: ID)
47
+ desc 'stop ID', 'stop an existing server'
48
+ def stop(id)
49
+ GSM.stop(id)
50
+ end
51
+
52
+ # delete a server (id: ID), requires confirmation
53
+ desc 'delete ID', 'delete an existing game server'
54
+ method_option :force, type: :boolean, default: false, aliases: '-f'
55
+ def delete(id)
56
+ unless options.force?
57
+ result = yn_dialog("Are you sure you want to delete server #{id}? (y/N) ",
58
+ false)
59
+ end
60
+
61
+ if result || options.force?
62
+ basic_err("Deleting server #{id}...", 'Successfully deleted server ' \
63
+ "#{id}.", proc { GSM.delete(id) })
64
+ else
65
+ puts 'Aborted process.'
66
+ end
67
+ end
68
+ end
69
+
70
+ Engine.start
@@ -0,0 +1,9 @@
1
+ module GSM
2
+ def self.create(name, id); end
3
+
4
+ def self.start(id); end
5
+
6
+ def self.stop(id); end
7
+
8
+ def self.delete(id); end
9
+ end
@@ -0,0 +1,5 @@
1
+ example:
2
+ name: 'Example'
3
+ version: '1.0'
4
+ image: 'foo/bar'
5
+ options: '-a -b -c -d'
metadata ADDED
@@ -0,0 +1,67 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dockergsm
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Josh Quail
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-12-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: thor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.20.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.20.0
27
+ description: |-
28
+ DockerGSM is a game server tool written in Ruby for managing
29
+ a large number of servers for a large number of games from one location. Run
30
+ `dockergsm help` to get a list of commands.
31
+ email: josh@madbean.com
32
+ executables:
33
+ - dockergsm
34
+ extensions: []
35
+ extra_rdoc_files: []
36
+ files:
37
+ - bin/dockergsm
38
+ - lib/dockergsm.rb
39
+ - lib/games.yml
40
+ homepage: http://rubygems.org/gems/dockergsm
41
+ licenses:
42
+ - MIT
43
+ metadata:
44
+ source_code_uri: https://github.com/realtable/dockergsm
45
+ bug_tracker_uri: https://github.com/realtable/dockergsm/issues
46
+ post_install_message:
47
+ rdoc_options: []
48
+ require_paths:
49
+ - lib
50
+ required_ruby_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ required_rubygems_version: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ requirements:
61
+ - Docker, v17.03 or greater
62
+ rubyforge_project:
63
+ rubygems_version: 2.5.2.3
64
+ signing_key:
65
+ specification_version: 4
66
+ summary: A CLI tool for managing localhost game servers with Docker
67
+ test_files: []