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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 962a0ccef4e61eb0a933249f828c528da90444a00c3f885a652ab1167789f96c
4
- data.tar.gz: 40bbf8835d19b139ae02197ab13b6e2e5f361c9583b3f084356220cc14c861f4
3
+ metadata.gz: 03e8ad8c87bc37b94d443304ec4273f84b85890290a8f46cd828d7f7688f1c26
4
+ data.tar.gz: fb1dfa3bd744e88de8057e3c05378b600fa1fce130bd346bc1ae00dab77d83c8
5
5
  SHA512:
6
- metadata.gz: 9eb531810c643aac59ec5304a7596883bcc0495367389488df528907496ac84eda90e5e9d868b24295339ea6ac1ce8ec57425b9e003450cb637e96e706d3e32a
7
- data.tar.gz: 0514ca9ad735797496592184d90f5c934c72be3dfdccf7dae78534aeff997d2c13d0eb21aa9a9b005844faf3787029c2c1cc098bb8ef9d15fd725ccc2c48bdfe
6
+ metadata.gz: ad4532457c6d7e84b6e91d4c91939e11b905cf1da369c3f5fce718235e9bf5c41ce9eeb08a79c17747f59f6c942351949bc3e05a88710986032a0ee87ab2e78a
7
+ data.tar.gz: 0590c5fbbdf5c191cba84561cf3e5d32d4472f63a3786ccf4d793ed8aa9d1db1128ebd4732208bfa71464f48598222fc2b3b8985372653ffe27b02dae6980a66
@@ -25,5 +25,10 @@ module LumiaServer
25
25
  end
26
26
  const_get(name)
27
27
  end
28
+
29
+ def error(message)
30
+ puts "Error: #{message}"
31
+ exit 1
32
+ end
28
33
  end
29
34
  end
@@ -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
- puts 'Initialising server..'
14
- @server = Server.new(@data)
15
-
16
- puts 'Copying files..'
17
- Dir.glob("src/**/*").each do |file|
18
- unless File.directory?(file)
19
- out = file.sub('src', 'build')
20
- out = File.join(File.dirname(out), File.basename(out, '.erb'))
21
- FileUtils.mkdir_p File.dirname(out)
22
- File.open(file) do |fh|
23
- erb = ERB.new(fh.read)
24
- File.open(out, 'w') do |f|
25
- f.write erb.result(binding)
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
- puts 'Installing platform..'
32
- @server.install_platform
36
+ @server.install_platform
37
+ @server.install_mods
33
38
 
34
- puts 'Installing mods..'
35
- @server.install_mods
36
-
37
- @server.info
38
-
39
- puts 'Done. Server has been installed.'
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 install; end
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/1288/artifact/paperclip.jar',
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 install
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
@@ -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
- provider.install(File.join('build', 'plugins'))
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 install(dir, force = false)
6
- file = dir.nil? ? @data['file'] : File.join(dir, @data['file'])
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(@data['url']), file)
16
+ IO.copy_stream(open(data['url']), file)
9
17
  end
10
18
  end
11
19
  end
@@ -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
@@ -1,3 +1,3 @@
1
1
  module LumiaServer
2
- VERSION = "1.0.4.alpha".freeze
2
+ VERSION = "1.0.5.alpha".freeze
3
3
  end
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.alpha
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: 2017-12-30 00:00:00.000000000 Z
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