gsd-cli 0.1.28 → 0.1.29

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 304d306a5006c253986a78ac549d301cb19df7666a3c5a4229eb85d0a964897a
4
- data.tar.gz: a68b28a6c32803598670101fd377506029cb8c374f33ddd41c7c80d14d37ae1a
3
+ metadata.gz: 9ea2d0d001459a63725032b51cc7450dfa1c8a4498a7effb78fc826000bc0305
4
+ data.tar.gz: 3bfe635ddea7aa2200501410a1dbc0c33224790e20b45103008a8159db037d94
5
5
  SHA512:
6
- metadata.gz: 188538e37775c3a862981c74867d361b83d59e8c424e72408d48980edd54a97f70152c810468851fb5e1a84c3fc5a0b1c94dce7ec9374475d27b4b8335ce1eb8
7
- data.tar.gz: 34d5fd4857a90c5d4ffd9d9671b9e1a94da0e8e5b2dee47f76921fffeabc6c1a1c251e9e1b251daadbd93b404bc6f14133cdb6d7f3498d2903cfd978092596d1
6
+ metadata.gz: b02f61fdfdf7583a3653aab65c7b15b34bd6a6957231ff02614614cb0e86ad1c19d7d9dea6f97efdcebe81d774ab239d434355a312e676a4a17fe83577b909b3
7
+ data.tar.gz: 3e966eccf8ee4bb729dfe2665141bdff347e411d319ece26467d0cc27e47c161494c325d1b1a4264e4c11bae59eee0f35abdcc52a59ef52322963fe873a851b3
@@ -0,0 +1,13 @@
1
+ def game_hash
2
+ {
3
+ "rust" => Rust.new,
4
+ "sdtd" => SevenDays.new,
5
+ "gmod" => GarrysMod.new,
6
+ "aos" => AceOfSpades.new,
7
+ "tf2" => TeamFortress.new,
8
+ "ftb" => MinecraftFtb.new,
9
+ "terraria" => Terraria.new,
10
+ "starbound" => Starbound.new,
11
+ "minecraft" => MinecraftSpigot.new
12
+ }
13
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "game_template"
4
+ require "user_data"
5
+
6
+ command :install do |c|
7
+ c.syntax = "gsd install [args] [options]"
8
+ c.summary = "Install and deploy a dedicated game server as a daemon."
9
+ c.description = "Installs and deploy a dedicated game server as a daemon (systemd unit)."
10
+ c.option "--path OPTIONAL", String, "Path that the game server will be installed to."
11
+ c.option "--steamuser OPTIONAL", String, "Steam user account required to install certain games."
12
+ c.option "--steampassword OPTIONAL", String, "Steam account password for installing certain games."
13
+ c.action do |args, options|
14
+ abort("Install what? Provide a game name argument!") if (args.first().nil?)
15
+ install(game_hash[args.first()], optons.path, options.steamuser, options.steampassword)
16
+ end
17
+ end
18
+
19
+ def install(game, path, steam_user, steam_password)
20
+ puts "Beginning installation process. This may take a while...".yellow
21
+ install_path = if path.nil?
22
+ puts "Install path was not provided: installing to /opt/#{game.name}".yellow
23
+ "/opt/#{game.name}"
24
+ else
25
+ path
26
+ end
27
+ steam_login = if user.nil?
28
+ "+login anonymous"
29
+ else
30
+ "+login #{steam_user} #{steam_password}"
31
+ end
32
+ GameTemplate.new(game).install(install_path, steam_login)
33
+ puts "Server installation & deployment complete!".green
34
+ end
data/lib/cli/run.rb ADDED
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "game_template"
4
+
5
+ command :run do |c|
6
+ c.syntax = "gsd run [args]"
7
+ c.summary = "Run an installed dedicated game server as a new process."
8
+ c.description = "Runs an installed dedicated game server as a new process. This command is used by the daemon and is not designed to be run manually."
9
+ c.option "--path STRING", String, "Path that the game server will be installed to."
10
+ c.action do |args, options|
11
+ GameTemplate.new(game_hash[args.first()]).run(options.path)
12
+ end
13
+ end
data/lib/cli/update.rb ADDED
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "game_template"
4
+
5
+ command :update do |c|
6
+ c.syntax = "gsd update [args] [options]"
7
+ c.summary = "Updates an installed dedicated game server."
8
+ c.description = "Updates an installed dedicated game server."
9
+ c.option "--path OPTIONAL", String, "Path that the game server will be installed to."
10
+ c.option "--steamuser OPTIONAL", String, "Steam user account required to install certain games."
11
+ c.option "--steampassword OPTIONAL", String, "Steam account password for installing certain games."
12
+ c.action do |args, options|
13
+ GameTemplate.new(game_hash[args.first()], options.path).update(options.path)
14
+ end
15
+ end
data/lib/cli.rb CHANGED
@@ -31,121 +31,121 @@ end
31
31
  @games = userdata
32
32
 
33
33
  program :name, "gsd-cli"
34
- program :version, "0.1.28"
34
+ program :version, "0.1.29"
35
35
  program :description, "A cli tool to deploy & manage dedicated game servers on Linux"
36
36
 
37
- command :install do |c|
38
- c.syntax = "gsd install [args] [options]"
39
- c.summary = "Install and deploy a dedicated game server as a daemon."
40
- c.description = "Installs and deploy a dedicated game server as a daemon (systemd unit)."
41
- c.option "--path OPTIONAL", String, "Path that the game server will be installed to."
42
- c.option "--devmode OPTIONAL", String, "To run from source or as a Gem. ('y' to run from source)"
43
- c.option "--steamuser OPTIONAL", String, "Steam user account required to install certain games."
44
- c.option "--steampassword OPTIONAL", String, "Steam account password for installing certain games."
45
- c.action do |args, options|
46
- abort("Install what? Provide a game name argument!") if (args.first().nil?)
47
- puts "Beginning installation process. This may take a while...".yellow
48
- game = @games[args.first()]
49
- GameTemplate.new(game)
50
- .install("/opt/#{game.name}", options.steamuser, options.steampassword)
51
- puts "Server installation & deployment complete!".green
52
- end
53
- end
37
+ # command :install do |c|
38
+ # c.syntax = "gsd install [args] [options]"
39
+ # c.summary = "Install and deploy a dedicated game server as a daemon."
40
+ # c.description = "Installs and deploy a dedicated game server as a daemon (systemd unit)."
41
+ # c.option "--path OPTIONAL", String, "Path that the game server will be installed to."
42
+ # c.option "--devmode OPTIONAL", String, "To run from source or as a Gem. ('y' to run from source)"
43
+ # c.option "--steamuser OPTIONAL", String, "Steam user account required to install certain games."
44
+ # c.option "--steampassword OPTIONAL", String, "Steam account password for installing certain games."
45
+ # c.action do |args, options|
46
+ # abort("Install what? Provide a game name argument!") if (args.first().nil?)
47
+ # puts "Beginning installation process. This may take a while...".yellow
48
+ # game = @games[args.first()]
49
+ # GameTemplate.new(game)
50
+ # .install("/opt/#{game.name}", options.steamuser, options.steampassword)
51
+ # puts "Server installation & deployment complete!".green
52
+ # end
53
+ # end
54
54
 
55
- command :run do |c|
56
- c.syntax = "gsd run [args]"
57
- c.summary = "Run an installed dedicated game server as a new process."
58
- c.description = "Runs an installed dedicated game server as a new process. This command is used by the daemon and is not designed to be run manually."
59
- c.option "--path STRING", String, "Path that the game server will be installed to."
60
- c.action do |args, options|
61
- GameTemplate.new(@games[args.first()]).run(options.path)
62
- end
63
- end
55
+ # command :run do |c|
56
+ # c.syntax = "gsd run [args]"
57
+ # c.summary = "Run an installed dedicated game server as a new process."
58
+ # c.description = "Runs an installed dedicated game server as a new process. This command is used by the daemon and is not designed to be run manually."
59
+ # c.option "--path STRING", String, "Path that the game server will be installed to."
60
+ # c.action do |args, options|
61
+ # GameTemplate.new(@games[args.first()]).run(options.path)
62
+ # end
63
+ # end
64
64
 
65
- command :update do |c|
66
- c.syntax = "gsd update [args] [options]"
67
- c.summary = "Updates an installed dedicated game server."
68
- c.description = "Updates an installed dedicated game server."
69
- c.option "--path STRING", String, "Path that the game server will be update to."
70
- c.action do |args, options|
71
- GameTemplate.new(@games[args.first()], options.path).update(options.path)
72
- end
73
- end
65
+ # command :update do |c|
66
+ # c.syntax = "gsd update [args] [options]"
67
+ # c.summary = "Updates an installed dedicated game server."
68
+ # c.description = "Updates an installed dedicated game server."
69
+ # c.option "--path STRING", String, "Path that the game server will be update to."
70
+ # c.action do |args, options|
71
+ # GameTemplate.new(@games[args.first()], options.path).update(options.path)
72
+ # end
73
+ # end
74
74
 
75
- command :start do |c|
76
- c.syntax = "gsd start [args]"
77
- c.summary = "Start a installed dedicated game server."
78
- c.description = "Starts a dedicated game server daemon that has already been installed to the system."
79
- c.action do |args|
80
- GameTemplate.new(@games[args.first()]).start()
81
- end
82
- end
75
+ # command :start do |c|
76
+ # c.syntax = "gsd start [args]"
77
+ # c.summary = "Start a installed dedicated game server."
78
+ # c.description = "Starts a dedicated game server daemon that has already been installed to the system."
79
+ # c.action do |args|
80
+ # GameTemplate.new(@games[args.first()]).start()
81
+ # end
82
+ # end
83
83
 
84
- command :restart do |c|
85
- c.syntax = "gsd restart [args]"
86
- c.summary = "Restart a installed dedicated game server."
87
- c.description = "Restarts a dedicated game server daemon that has already been installed to the system."
88
- c.option "--remote OPTIONAL", String, "Connection string to a remote host server."
89
- c.action do |args, options|
90
- GameTemplate.new(@games[args.first()], options.remote).restart()
91
- end
92
- end
84
+ # command :restart do |c|
85
+ # c.syntax = "gsd restart [args]"
86
+ # c.summary = "Restart a installed dedicated game server."
87
+ # c.description = "Restarts a dedicated game server daemon that has already been installed to the system."
88
+ # c.option "--remote OPTIONAL", String, "Connection string to a remote host server."
89
+ # c.action do |args, options|
90
+ # GameTemplate.new(@games[args.first()], options.remote).restart()
91
+ # end
92
+ # end
93
93
 
94
- command :status do |c|
95
- c.syntax = "gsd status [args]"
96
- c.summary = "Display the status of a installed dedicated game server."
97
- c.description = "Requests and returns the status of a installed dedicated game server from systemd."
98
- c.action do |args|
99
- GameTemplate.new(@games[args.first()]).status()
100
- end
101
- end
94
+ # command :status do |c|
95
+ # c.syntax = "gsd status [args]"
96
+ # c.summary = "Display the status of a installed dedicated game server."
97
+ # c.description = "Requests and returns the status of a installed dedicated game server from systemd."
98
+ # c.action do |args|
99
+ # GameTemplate.new(@games[args.first()]).status()
100
+ # end
101
+ # end
102
102
 
103
- command :stop do |c|
104
- c.syntax = "gsd stop [args]"
105
- c.summary = "Stop running dedicated game server."
106
- c.description = "Stops a running dedicated game server daemon."
107
- c.action do |args|
108
- GameTemplate.new(@games[args.first()]).stop()
109
- end
110
- end
103
+ # command :stop do |c|
104
+ # c.syntax = "gsd stop [args]"
105
+ # c.summary = "Stop running dedicated game server."
106
+ # c.description = "Stops a running dedicated game server daemon."
107
+ # c.action do |args|
108
+ # GameTemplate.new(@games[args.first()]).stop()
109
+ # end
110
+ # end
111
111
 
112
- command :enable do |c|
113
- c.syntax = "gsd enable [args]"
114
- c.summary = "Force a dedicated game server daemon to launch at system start."
115
- c.description = "Enables a dedicated game server daemon to start when the system starts."
116
- c.action do |args|
117
- GameTemplate.new(@games[args.first()]).stop()
118
- end
119
- end
112
+ # command :enable do |c|
113
+ # c.syntax = "gsd enable [args]"
114
+ # c.summary = "Force a dedicated game server daemon to launch at system start."
115
+ # c.description = "Enables a dedicated game server daemon to start when the system starts."
116
+ # c.action do |args|
117
+ # GameTemplate.new(@games[args.first()]).stop()
118
+ # end
119
+ # end
120
120
 
121
- command :disable do |c|
122
- c.syntax = "gsd disable [args]"
123
- c.summary = "Disable a dedicated game server daemon from starting at system start."
124
- c.description = "Disables a dedicated game server daemon from starting when the system starts."
125
- c.action do |args|
126
- GameTemplate.new(@games[args.first()]).stop()
127
- end
128
- end
121
+ # command :disable do |c|
122
+ # c.syntax = "gsd disable [args]"
123
+ # c.summary = "Disable a dedicated game server daemon from starting at system start."
124
+ # c.description = "Disables a dedicated game server daemon from starting when the system starts."
125
+ # c.action do |args|
126
+ # GameTemplate.new(@games[args.first()]).stop()
127
+ # end
128
+ # end
129
129
 
130
- command :list do |c|
131
- c.syntax = "gsd list"
132
- c.summary = "Provides a list of supported dedicated game servers."
133
- c.description = "Provides a list of available dedicated game servers and their status."
134
- c.action do
135
- puts "The following games are currently supported by gsd:".yellow.bold
136
- YAML.safe_load(File.read("#{File.dirname(__FILE__)}/../conf/supported_games.yml"))["games"]
137
- .each do |game|
138
- puts game.light_blue
139
- end
140
- end
141
- end
130
+ # command :list do |c|
131
+ # c.syntax = "gsd list"
132
+ # c.summary = "Provides a list of supported dedicated game servers."
133
+ # c.description = "Provides a list of available dedicated game servers and their status."
134
+ # c.action do
135
+ # puts "The following games are currently supported by gsd:".yellow.bold
136
+ # YAML.safe_load(File.read("#{File.dirname(__FILE__)}/../conf/supported_games.yml"))["games"]
137
+ # .each do |game|
138
+ # puts game.light_blue
139
+ # end
140
+ # end
141
+ # end
142
142
 
143
- command :uninstall do |c|
144
- c.syntax = "gsd uninstall [args]"
145
- c.summary = "Uninstall a dedicated game server."
146
- c.description = "Uninstalls and removes all files associated with a dedicated game server."
147
- c.option "--name STRING", String, "Name of the dedicated game server."
148
- c.action do |_args, _options|
149
- puts "Not Implemented"
150
- end
151
- end
143
+ # command :uninstall do |c|
144
+ # c.syntax = "gsd uninstall [args]"
145
+ # c.summary = "Uninstall a dedicated game server."
146
+ # c.description = "Uninstalls and removes all files associated with a dedicated game server."
147
+ # c.option "--name STRING", String, "Name of the dedicated game server."
148
+ # c.action do |_args, _options|
149
+ # puts "Not Implemented"
150
+ # end
151
+ # end
data/lib/game_template.rb CHANGED
@@ -45,16 +45,14 @@ class GameTemplate
45
45
  exec(@game.launch(install_path))
46
46
  end
47
47
 
48
- def install(install_path, steamuser, steampassword)
49
- # ensure_delete_unit_file(install_path) if install_path.nil? == false
48
+ def install(install_path, steam_login)
50
49
  if @game.app_id.nil?
51
- @game.install_server(get_install_path(install_path))
50
+ @game.install_server(install_path)
52
51
  else
53
- install_steam_server(install_path, steamuser, steampassword)
52
+ install_steam_server(install_path, steam_login)
54
53
  end
55
54
  @game.post_install(install_path) if defined? @game.post_install
56
- cli_path = `which gsd-cli`.strip()
57
- create_unit_file(cli_path, install_path)
55
+ create_unit_file(`which gsd-cli`.strip(), install_path)
58
56
  end
59
57
 
60
58
  def update(install_path)
@@ -68,37 +66,16 @@ class GameTemplate
68
66
  private
69
67
 
70
68
  # Installs or Updates a dedicated game server via Steamcmd
71
- def install_steam_server(install_path = "/opt/#{@game.name}", steamuser = nil, steampassword = nil)
72
- login = if steamuser.nil?
73
- "+login anonymous"
74
- else
75
- "+login #{steamuser} #{steampassword}"
76
- end
69
+ def install_steam_server(install_path, steam_login)
77
70
  abort("STEAMCMD does not appear to be installed! Aborting...".red) if `which steamcmd`.empty?
78
- system("$(which steamcmd) +login anonymous +quit")
79
- system("$(which steamcmd) #{login} +force_install_dir #{install_path} +app_update #{@game.app_id} validate +quit")
80
- # @game.post_install(install_path) if defined? @game.post_install
81
- end
82
-
83
- def get_install_path(path)
84
- install_path = if path.nil?
85
- # puts "Install path not defined: installing to /tmp/#{@game.name}".yellow
86
- "/opt/#{@game.name}"
87
- else
88
- path
89
- end
90
- install_path
91
- end
92
-
93
- def ensure_delete_unit_file(unit_file_path)
94
- File.delete(unit_file_path) if File.file?(unit_file_path)
71
+ system("$(which steamcmd) #{steam_login} +quit")
72
+ system("$(which steamcmd) #{steam_login} +force_install_dir #{install_path} +app_update #{@game.app_id} validate +quit")
95
73
  end
96
74
 
97
75
  def create_unit_file(cli_path, install_path)
98
76
  file_path = "/tmp/#{@game.name}.service"
99
- out_file = File.new(file_path, "w")
100
- out_file.puts(unit_file_contents(cli_path, install_path)) # TODO: Pass in map with config
101
- out_file.close()
77
+ `touch #{file_path}`
78
+ `echo #{unit_file_contents} >> #{file_path}`
102
79
  system("mv -f #{"/tmp/#{@game.name}.service"} /etc/systemd/system/#{@game.name}.service")
103
80
  end
104
81
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gsd-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.28
4
+ version: 0.1.29
5
5
  platform: ruby
6
6
  authors:
7
7
  - Egee
@@ -47,6 +47,10 @@ extra_rdoc_files: []
47
47
  files:
48
48
  - bin/gsd-cli
49
49
  - lib/cli.rb
50
+ - lib/cli/game_hash.rb
51
+ - lib/cli/install.rb
52
+ - lib/cli/run.rb
53
+ - lib/cli/update.rb
50
54
  - lib/game_template.rb
51
55
  - lib/helpers.rb
52
56
  - lib/servers/ace_of_spades.rb