lumia-server 1.0.4.alpha → 1.0.5.alpha
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 +4 -4
- data/lib/lumia-server/cli.rb +5 -0
- data/lib/lumia-server/command/build.rb +33 -23
- data/lib/lumia-server/command/command.rb +1 -5
- data/lib/lumia-server/command/exec.rb +4 -4
- data/lib/lumia-server/platform.rb +27 -4
- data/lib/lumia-server/platform/bungeecord.rb +22 -0
- data/lib/lumia-server/platform/paper.rb +3 -3
- data/lib/lumia-server/platform/waterfall.rb +22 -0
- data/lib/lumia-server/plugin.rb +22 -2
- data/lib/lumia-server/provider.rb +4 -1
- data/lib/lumia-server/provider/direct.rb +11 -3
- data/lib/lumia-server/server.rb +3 -4
- data/lib/lumia-server/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 03e8ad8c87bc37b94d443304ec4273f84b85890290a8f46cd828d7f7688f1c26
|
|
4
|
+
data.tar.gz: fb1dfa3bd744e88de8057e3c05378b600fa1fce130bd346bc1ae00dab77d83c8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ad4532457c6d7e84b6e91d4c91939e11b905cf1da369c3f5fce718235e9bf5c41ce9eeb08a79c17747f59f6c942351949bc3e05a88710986032a0ee87ab2e78a
|
|
7
|
+
data.tar.gz: 0590c5fbbdf5c191cba84561cf3e5d32d4472f63a3786ccf4d793ed8aa9d1db1128ebd4732208bfa71464f48598222fc2b3b8985372653ffe27b02dae6980a66
|
data/lib/lumia-server/cli.rb
CHANGED
|
@@ -5,38 +5,48 @@ module LumiaServer
|
|
|
5
5
|
class Build < Command
|
|
6
6
|
|
|
7
7
|
require 'erb'
|
|
8
|
+
require 'yaml'
|
|
8
9
|
|
|
9
10
|
def run
|
|
10
|
-
error('server.json was not found') unless File.exist?('server.json')
|
|
11
|
+
LumiaServer::CLI.error('server.json was not found') unless File.exist?('server.json')
|
|
11
12
|
@data = JSON.parse(File.read('server.json'))
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
File.
|
|
23
|
-
|
|
24
|
-
File.
|
|
25
|
-
|
|
14
|
+
time = Benchmark.realtime {
|
|
15
|
+
puts 'Initialising server..'
|
|
16
|
+
yaml_file = File.join('build', '.lumia', 'server.yml')
|
|
17
|
+
yaml = File.exist?(yaml_file) ? YAML.load(File.open(yaml_file)) : nil
|
|
18
|
+
|
|
19
|
+
@server = Server.new(@data, yaml)
|
|
20
|
+
|
|
21
|
+
puts 'Copying files..'
|
|
22
|
+
Dir.glob("src/**/*").each do |file|
|
|
23
|
+
unless File.directory?(file)
|
|
24
|
+
out = file.sub('src', 'build')
|
|
25
|
+
out = File.join(File.dirname(out), File.basename(out, '.erb'))
|
|
26
|
+
FileUtils.mkdir_p File.dirname(out)
|
|
27
|
+
File.open(file) do |fh|
|
|
28
|
+
erb = ERB.new(fh.read)
|
|
29
|
+
File.open(out, 'w') do |f|
|
|
30
|
+
f.write erb.result(binding)
|
|
31
|
+
end
|
|
26
32
|
end
|
|
27
33
|
end
|
|
28
34
|
end
|
|
29
|
-
end
|
|
30
35
|
|
|
31
|
-
|
|
32
|
-
|
|
36
|
+
@server.install_platform
|
|
37
|
+
@server.install_mods
|
|
33
38
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
39
|
+
update_yaml = {}
|
|
40
|
+
update_yaml[@server.platform.name] = @server.platform.id
|
|
41
|
+
@server.mods.each { |m|
|
|
42
|
+
unless m.provider.nil?
|
|
43
|
+
update_yaml[m.name] = m.id
|
|
44
|
+
end
|
|
45
|
+
}
|
|
46
|
+
FileUtils.mkdir_p File.dirname(yaml_file)
|
|
47
|
+
File.open(yaml_file, 'w') { |f| f.write update_yaml.to_yaml }
|
|
48
|
+
}
|
|
49
|
+
puts "Done. Server has been installed (#{time.round(3)}s)."
|
|
40
50
|
end
|
|
41
51
|
end
|
|
42
52
|
end
|
|
@@ -6,6 +6,7 @@ module LumiaServer
|
|
|
6
6
|
|
|
7
7
|
require 'fileutils'
|
|
8
8
|
require 'json'
|
|
9
|
+
require 'benchmark'
|
|
9
10
|
|
|
10
11
|
attr_reader :args
|
|
11
12
|
attr_reader :options
|
|
@@ -15,11 +16,6 @@ module LumiaServer
|
|
|
15
16
|
@options = options
|
|
16
17
|
end
|
|
17
18
|
|
|
18
|
-
def error(message)
|
|
19
|
-
puts "Error: #{message}"
|
|
20
|
-
exit 1
|
|
21
|
-
end
|
|
22
|
-
|
|
23
19
|
def run; end
|
|
24
20
|
end
|
|
25
21
|
end
|
|
@@ -3,7 +3,7 @@ module LumiaServer
|
|
|
3
3
|
class Exec < Command
|
|
4
4
|
|
|
5
5
|
def run
|
|
6
|
-
error('No script name provided') unless @args[0]
|
|
6
|
+
LumiaServer::CLI.error('No script name provided') unless @args[0]
|
|
7
7
|
|
|
8
8
|
file = File.join(Dir.pwd, 'scripts', @args[0])
|
|
9
9
|
server = File.join(Dir.pwd, 'server.json')
|
|
@@ -12,11 +12,11 @@ module LumiaServer
|
|
|
12
12
|
if File.exist?(file)
|
|
13
13
|
exec "bash #{file}"
|
|
14
14
|
else
|
|
15
|
-
error('No script name provided') unless @args[0]
|
|
16
|
-
error('server.json was not found') unless File.exist?(server)
|
|
15
|
+
LumiaServer::CLI.error('No script name provided') unless @args[0]
|
|
16
|
+
LumiaServer::CLI.error('server.json was not found') unless File.exist?(server)
|
|
17
17
|
@data = JSON.parse(File.read(server))
|
|
18
18
|
line = @data['scripts'][@args[0]]
|
|
19
|
-
error("Invalid script name: #{@args[0]}") unless line
|
|
19
|
+
LumiaServer::CLI.error("Invalid script name: #{@args[0]}") unless line
|
|
20
20
|
exec line
|
|
21
21
|
end
|
|
22
22
|
end
|
|
@@ -3,27 +3,50 @@ module LumiaServer
|
|
|
3
3
|
|
|
4
4
|
require 'open-uri'
|
|
5
5
|
|
|
6
|
+
attr_reader :data
|
|
7
|
+
attr_reader :server_yaml
|
|
8
|
+
|
|
6
9
|
attr_reader :name
|
|
7
10
|
attr_reader :version
|
|
8
11
|
attr_reader :provider
|
|
12
|
+
attr_reader :id
|
|
9
13
|
|
|
10
14
|
autoload :Custom, 'lumia-server/platform/custom'
|
|
11
15
|
autoload :Paper, 'lumia-server/platform/paper'
|
|
16
|
+
autoload :BungeeCord, 'lumia-server/platform/bungeecord'
|
|
17
|
+
autoload :Waterfall, 'lumia-server/platform/waterfall'
|
|
12
18
|
|
|
13
|
-
def self.new(data)
|
|
19
|
+
def self.new(data, server_yaml)
|
|
14
20
|
return super if self < Platform
|
|
15
21
|
const = data['id'].to_s.downcase
|
|
16
22
|
raise format('Unknown platform %p', data['id']) unless (const = constants.detect { |c| c.to_s.downcase == const })
|
|
17
|
-
platform = const_get(const).new(data)
|
|
23
|
+
platform = const_get(const).new(data, server_yaml)
|
|
18
24
|
platform
|
|
19
25
|
end
|
|
20
26
|
|
|
21
|
-
def initialize(data)
|
|
27
|
+
def initialize(data, server_yaml)
|
|
22
28
|
@data = data
|
|
29
|
+
@server_yaml = server_yaml
|
|
30
|
+
|
|
23
31
|
@version = data['version']
|
|
24
32
|
@provider = data.key?('provider') ? Provider.new(@data['provider']) : nil
|
|
33
|
+
@id = provider.nil? ? version : provider.id
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def install
|
|
37
|
+
if needs_update
|
|
38
|
+
puts "#{name}: updating.."
|
|
39
|
+
install_platform
|
|
40
|
+
else
|
|
41
|
+
puts "#{name}: up-to-date"
|
|
42
|
+
end
|
|
25
43
|
end
|
|
26
44
|
|
|
27
|
-
def
|
|
45
|
+
def needs_update
|
|
46
|
+
server_yaml.nil? || server_yaml[name] != id
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def install_platform;
|
|
50
|
+
end
|
|
28
51
|
end
|
|
29
52
|
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module LumiaServer
|
|
2
|
+
class Platform
|
|
3
|
+
class BungeeCord < Platform
|
|
4
|
+
|
|
5
|
+
URL = 'https://ci.md-5.net/job/BungeeCord/lastStableBuild/artifact/bootstrap/target/BungeeCord.jar'
|
|
6
|
+
|
|
7
|
+
def initialize(data, server_yaml)
|
|
8
|
+
super
|
|
9
|
+
@name = 'BungeeCord'
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def install_platform
|
|
13
|
+
file = 'BungeeCord.jar'
|
|
14
|
+
if provider.nil?
|
|
15
|
+
IO.copy_stream(open(URL), File.join('build', file))
|
|
16
|
+
else
|
|
17
|
+
provider.install('build', file)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -3,19 +3,19 @@ module LumiaServer
|
|
|
3
3
|
class Paper < Platform
|
|
4
4
|
|
|
5
5
|
VERSIONS = {
|
|
6
|
-
'1.12.2' => 'https://ci.destroystokyo.com/job/PaperSpigot/
|
|
6
|
+
'1.12.2' => 'https://ci.destroystokyo.com/job/PaperSpigot/1294/artifact/paperclip.jar',
|
|
7
7
|
'1.11.2' => 'https://ci.destroystokyo.com/job/PaperSpigot/1104/artifact/paperclip.jar',
|
|
8
8
|
'1.10.2' => 'https://ci.destroystokyo.com/job/PaperSpigot/916/artifact/paperclip.jar',
|
|
9
9
|
'1.9.4' => 'https://ci.destroystokyo.com/job/PaperSpigot/773/artifact/paperclip.jar',
|
|
10
10
|
'1.8.8' => 'https://ci.destroystokyo.com/job/PaperSpigot/443/artifact/paperclip.jar'
|
|
11
11
|
}.freeze
|
|
12
12
|
|
|
13
|
-
def initialize(data)
|
|
13
|
+
def initialize(data, server_yaml)
|
|
14
14
|
super
|
|
15
15
|
@name = 'Paper'
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
def
|
|
18
|
+
def install_platform
|
|
19
19
|
if provider.nil?
|
|
20
20
|
if VERSIONS.key?(version)
|
|
21
21
|
file = 'paperclip.jar'
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module LumiaServer
|
|
2
|
+
class Platform
|
|
3
|
+
class Waterfall < Platform
|
|
4
|
+
|
|
5
|
+
URL = 'https://ci.destroystokyo.com/job/Waterfall/lastStableBuild/artifact/Waterfall-Proxy/bootstrap/target/Waterfall.jar'
|
|
6
|
+
|
|
7
|
+
def initialize(data, server_yaml)
|
|
8
|
+
super
|
|
9
|
+
@name = 'Waterfall'
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def install_platform
|
|
13
|
+
file = 'Waterfall.jar'
|
|
14
|
+
if provider.nil?
|
|
15
|
+
IO.copy_stream(open(URL), File.join('build', file))
|
|
16
|
+
else
|
|
17
|
+
provider.install('build', file)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
data/lib/lumia-server/plugin.rb
CHANGED
|
@@ -1,21 +1,41 @@
|
|
|
1
1
|
module LumiaServer
|
|
2
2
|
class Plugin
|
|
3
3
|
|
|
4
|
+
attr_reader :data
|
|
5
|
+
attr_reader :server_yaml
|
|
6
|
+
|
|
4
7
|
attr_reader :name
|
|
5
8
|
attr_reader :version
|
|
6
9
|
attr_reader :provider
|
|
10
|
+
attr_reader :id
|
|
7
11
|
|
|
8
|
-
def initialize(data)
|
|
12
|
+
def initialize(data, server_yaml)
|
|
9
13
|
@data = data
|
|
14
|
+
@server_yaml = server_yaml
|
|
15
|
+
|
|
10
16
|
@name = data['name']
|
|
11
17
|
@version = data['version']
|
|
12
18
|
@provider = data.key?('provider') ? Provider.new(@data['provider']) : nil
|
|
19
|
+
@id = provider.nil? ? version : provider.id
|
|
13
20
|
end
|
|
14
21
|
|
|
15
22
|
def install
|
|
16
23
|
unless provider.nil?
|
|
17
|
-
|
|
24
|
+
if needs_update
|
|
25
|
+
puts "#{name}: updating.."
|
|
26
|
+
install_mod
|
|
27
|
+
else
|
|
28
|
+
puts "#{name}: up-to-date"
|
|
29
|
+
end
|
|
18
30
|
end
|
|
19
31
|
end
|
|
32
|
+
|
|
33
|
+
def needs_update
|
|
34
|
+
server_yaml.nil? || server_yaml[name] != id
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def install_mod
|
|
38
|
+
provider.install(File.join('build', 'plugins'))
|
|
39
|
+
end
|
|
20
40
|
end
|
|
21
41
|
end
|
|
@@ -5,6 +5,9 @@ module LumiaServer
|
|
|
5
5
|
|
|
6
6
|
autoload :Direct, 'lumia-server/provider/direct'
|
|
7
7
|
|
|
8
|
+
attr_reader :data
|
|
9
|
+
attr_reader :id
|
|
10
|
+
|
|
8
11
|
def self.new(data)
|
|
9
12
|
return super if self < Provider
|
|
10
13
|
const = data['id'].to_s.downcase
|
|
@@ -17,6 +20,6 @@ module LumiaServer
|
|
|
17
20
|
@data = data
|
|
18
21
|
end
|
|
19
22
|
|
|
20
|
-
def install(dir, force = true); end
|
|
23
|
+
def install(dir, file = nil, force = true); end
|
|
21
24
|
end
|
|
22
25
|
end
|
|
@@ -2,10 +2,18 @@ module LumiaServer
|
|
|
2
2
|
class Provider
|
|
3
3
|
class Direct < Provider
|
|
4
4
|
|
|
5
|
-
def
|
|
6
|
-
|
|
5
|
+
def initialize(data)
|
|
6
|
+
super
|
|
7
|
+
@id = data['url']
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def install(dir, file = nil, force = true)
|
|
11
|
+
name = data['file'].nil? ? file : data['file']
|
|
12
|
+
LumiaServer::CLI.error('No file name provided for provider \'direct\'') if name.nil?
|
|
13
|
+
|
|
14
|
+
file = dir.nil? ? name : File.join(dir, name)
|
|
7
15
|
if !File.exist?(file) || force
|
|
8
|
-
IO.copy_stream(open(
|
|
16
|
+
IO.copy_stream(open(data['url']), file)
|
|
9
17
|
end
|
|
10
18
|
end
|
|
11
19
|
end
|
data/lib/lumia-server/server.rb
CHANGED
|
@@ -10,12 +10,12 @@ module LumiaServer
|
|
|
10
10
|
attr_reader :platform
|
|
11
11
|
attr_reader :mods
|
|
12
12
|
|
|
13
|
-
def initialize(data)
|
|
14
|
-
@platform = Platform.new(data['platform'])
|
|
13
|
+
def initialize(data, server_yaml)
|
|
14
|
+
@platform = Platform.new(data['platform'], server_yaml)
|
|
15
15
|
@mods = []
|
|
16
16
|
if data.key?('mods')
|
|
17
17
|
data['mods'].each do |mod|
|
|
18
|
-
@mods << Plugin.new(mod)
|
|
18
|
+
@mods << Plugin.new(mod, server_yaml)
|
|
19
19
|
end
|
|
20
20
|
end
|
|
21
21
|
end
|
|
@@ -39,7 +39,6 @@ module LumiaServer
|
|
|
39
39
|
|
|
40
40
|
def install_mods
|
|
41
41
|
mods.each do |mod|
|
|
42
|
-
puts "Installing #{mod.name}.."
|
|
43
42
|
mod.install
|
|
44
43
|
end
|
|
45
44
|
end
|
data/lib/lumia-server/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: lumia-server
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.5.alpha
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Conreptio
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2018-01-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|
|
@@ -54,8 +54,10 @@ files:
|
|
|
54
54
|
- lib/lumia-server/command/exec.rb
|
|
55
55
|
- lib/lumia-server/command/start.rb
|
|
56
56
|
- lib/lumia-server/platform.rb
|
|
57
|
+
- lib/lumia-server/platform/bungeecord.rb
|
|
57
58
|
- lib/lumia-server/platform/custom.rb
|
|
58
59
|
- lib/lumia-server/platform/paper.rb
|
|
60
|
+
- lib/lumia-server/platform/waterfall.rb
|
|
59
61
|
- lib/lumia-server/plugin.rb
|
|
60
62
|
- lib/lumia-server/provider.rb
|
|
61
63
|
- lib/lumia-server/provider/direct.rb
|