gamefic-sdk 1.7.0 → 2.0.0
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 +5 -5
- data/bin/gamefic +16 -0
- data/lib/gamefic-sdk.rb +4 -24
- data/lib/gamefic-sdk/diagram.rb +205 -0
- data/lib/gamefic-sdk/scaffold.rb +54 -0
- data/lib/gamefic-sdk/server.rb +81 -65
- data/lib/gamefic-sdk/shell.rb +22 -129
- data/lib/gamefic-sdk/tasks.rb +40 -0
- data/lib/gamefic-sdk/tasks/common.rb +21 -0
- data/lib/gamefic-sdk/tasks/ruby.rb +99 -0
- data/lib/gamefic-sdk/tasks/web.rb +82 -0
- data/lib/gamefic-sdk/version.rb +5 -5
- metadata +123 -139
- data/bin/gfk +0 -6
- data/html/core/engine.js +0 -114
- data/html/core/jquery.js +0 -5
- data/html/core/jquery.modal.css +0 -44
- data/html/core/jquery.modal.js +0 -225
- data/html/core/js.cookie.js +0 -137
- data/html/sinatra/engine.js +0 -65
- data/html/skins/hypertext/compass.png +0 -0
- data/html/skins/hypertext/index.html +0 -149
- data/html/skins/hypertext/style.css +0 -74
- data/html/skins/minimal/index.html.erb +0 -22
- data/html/skins/minimal/index.rb +0 -4
- data/html/skins/minimal/play.js +0 -36
- data/html/skins/minimal/style.css +0 -8
- data/html/skins/multimedia/close.png +0 -0
- data/html/skins/multimedia/index.html +0 -179
- data/html/skins/multimedia/mobile.css +0 -10
- data/html/skins/multimedia/spinner.gif +0 -0
- data/html/skins/multimedia/style.css +0 -186
- data/html/skins/standard/index.html.erb +0 -22
- data/html/skins/standard/index.rb +0 -4
- data/html/skins/standard/play.js +0 -18
- data/html/skins/standard/style.css +0 -73
- data/lib/gamefic-sdk/build.rb +0 -30
- data/lib/gamefic-sdk/config.rb +0 -126
- data/lib/gamefic-sdk/debug.rb +0 -4
- data/lib/gamefic-sdk/debug/action.rb +0 -30
- data/lib/gamefic-sdk/debug/plot.rb +0 -23
- data/lib/gamefic-sdk/platform.rb +0 -22
- data/lib/gamefic-sdk/platform/base.rb +0 -68
- data/lib/gamefic-sdk/platform/gfic.rb +0 -27
- data/lib/gamefic-sdk/platform/sinatra.rb +0 -98
- data/lib/gamefic-sdk/platform/web.rb +0 -176
- data/lib/gamefic-sdk/platform/web/app_config.rb +0 -81
- data/lib/gamefic-sdk/platform/web/engine.rb +0 -44
- data/lib/gamefic-sdk/platform/web/user.rb +0 -19
- data/lib/gamefic-sdk/shell/init.rb +0 -83
- data/lib/gamefic-sdk/shell/test.rb +0 -32
- data/scripts/save-restore-undo.plot.rb +0 -25
- data/scripts/snapshots.plot.rb +0 -16
- data/scripts/standard.plot.rb +0 -10
- data/scripts/standard/actions.plot.rb +0 -13
- data/scripts/standard/actions/drop.plot.rb +0 -19
- data/scripts/standard/actions/enter.plot.rb +0 -19
- data/scripts/standard/actions/go.plot.rb +0 -48
- data/scripts/standard/actions/insert.plot.rb +0 -37
- data/scripts/standard/actions/inventory.plot.rb +0 -9
- data/scripts/standard/actions/leave.plot.rb +0 -30
- data/scripts/standard/actions/look.plot.rb +0 -108
- data/scripts/standard/actions/nil.plot.rb +0 -36
- data/scripts/standard/actions/place.plot.rb +0 -41
- data/scripts/standard/actions/quit.plot.rb +0 -11
- data/scripts/standard/actions/take.plot.rb +0 -31
- data/scripts/standard/actions/talk.plot.rb +0 -27
- data/scripts/standard/actions/wait.plot.rb +0 -3
- data/scripts/standard/clothing.plot.rb +0 -4
- data/scripts/standard/clothing/actions.plot.rb +0 -4
- data/scripts/standard/clothing/actions/doff.plot.rb +0 -12
- data/scripts/standard/clothing/actions/drop.plot.rb +0 -8
- data/scripts/standard/clothing/actions/inventory.plot.rb +0 -14
- data/scripts/standard/clothing/actions/wear.plot.rb +0 -20
- data/scripts/standard/clothing/entities.plot.rb +0 -7
- data/scripts/standard/clothing/entities/clothing.plot.rb +0 -5
- data/scripts/standard/clothing/entities/coat.plot.rb +0 -3
- data/scripts/standard/clothing/entities/gloves.plot.rb +0 -3
- data/scripts/standard/clothing/entities/hat.plot.rb +0 -3
- data/scripts/standard/clothing/entities/pants.plot.rb +0 -3
- data/scripts/standard/clothing/entities/shirt.plot.rb +0 -3
- data/scripts/standard/clothing/entities/shoes.plot.rb +0 -3
- data/scripts/standard/container.plot.rb +0 -28
- data/scripts/standard/container/actions.plot.rb +0 -0
- data/scripts/standard/container/entities.plot.rb +0 -5
- data/scripts/standard/direction.plot.rb +0 -55
- data/scripts/standard/edible.plot.rb +0 -21
- data/scripts/standard/entities.plot.rb +0 -12
- data/scripts/standard/entities/character.plot.rb +0 -10
- data/scripts/standard/entities/fixture.plot.rb +0 -3
- data/scripts/standard/entities/item.plot.rb +0 -3
- data/scripts/standard/entities/portal.plot.rb +0 -44
- data/scripts/standard/entities/receptacle.plot.rb +0 -3
- data/scripts/standard/entities/room.plot.rb +0 -57
- data/scripts/standard/entities/rubble.plot.rb +0 -11
- data/scripts/standard/entities/scenery.plot.rb +0 -3
- data/scripts/standard/entities/supporter.plot.rb +0 -7
- data/scripts/standard/entities/thing.plot.rb +0 -7
- data/scripts/standard/give.plot.rb +0 -27
- data/scripts/standard/lockable.plot.rb +0 -79
- data/scripts/standard/modules.plot.rb +0 -9
- data/scripts/standard/modules/attachable.plot.rb +0 -12
- data/scripts/standard/modules/auto_takes.plot.rb +0 -50
- data/scripts/standard/modules/enterable.plot.rb +0 -15
- data/scripts/standard/modules/explicit_exits.plot.rb +0 -15
- data/scripts/standard/modules/itemizable.plot.rb +0 -18
- data/scripts/standard/modules/locale_description.plot.rb +0 -20
- data/scripts/standard/modules/parent-room.plot.rb +0 -9
- data/scripts/standard/modules/portable.plot.rb +0 -11
- data/scripts/standard/modules/use.plot.rb +0 -51
- data/scripts/standard/openable.plot.rb +0 -43
- data/scripts/standard/pathfinder.plot.rb +0 -65
- data/scripts/standard/queries.plot.rb +0 -21
- data/scripts/standard/test.plot.rb +0 -10
- data/scripts/undo.plot.rb +0 -13
data/lib/gamefic-sdk/shell.rb
CHANGED
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
require 'thor'
|
|
2
|
-
require 'gamefic-sdk/build'
|
|
3
2
|
|
|
4
3
|
module Gamefic
|
|
5
4
|
module Sdk
|
|
6
5
|
class Shell < Thor
|
|
7
|
-
autoload :Init, 'gamefic-sdk/shell/init'
|
|
8
|
-
autoload :Test, 'gamefic-sdk/shell/test'
|
|
9
|
-
|
|
10
6
|
map %w[--version -v] => :version
|
|
11
7
|
map [:create, :new] => :init
|
|
12
|
-
map ['scripts'] => :script
|
|
13
8
|
|
|
14
9
|
desc "--version, -v", "Print the version"
|
|
15
10
|
def version
|
|
@@ -17,131 +12,29 @@ module Gamefic
|
|
|
17
12
|
puts "gamefic #{Gamefic::VERSION}"
|
|
18
13
|
end
|
|
19
14
|
|
|
20
|
-
desc 'init DIRECTORY_NAME', '
|
|
21
|
-
option :
|
|
22
|
-
option :standard, type: :boolean, default: true, desc: 'Include the standard script'
|
|
23
|
-
option :scripts, type: :array, aliases: [:s, :script], desc: 'Additional scripts'
|
|
24
|
-
option :webskin, default: 'standard', aliases: [:w], desc: 'Skin to use for the Web platform'
|
|
25
|
-
option :webdir, aliases: [:d], desc: 'HTML directory to copy. This option overrides the webskin.'
|
|
26
|
-
option :title, type: :string, aliases: [:t], desc: "The game's title"
|
|
27
|
-
option :author, type: :string, aliases: [:a], desc: "The game's author"
|
|
15
|
+
desc 'init DIRECTORY_NAME', 'Create a new project in DIRECTORY_NAME'
|
|
16
|
+
option :gem, type: :boolean, aliases: [:g, :library, :rubygem], desc: 'Make a gem project'
|
|
28
17
|
def init(directory_name)
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
option :
|
|
43
|
-
def
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
Gamefic::Sdk::
|
|
48
|
-
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
desc 'build [DIRECTORY_NAME]', 'Build the game for specified platforms in DIRECTORY_NAME'
|
|
52
|
-
option :quiet, type: :boolean, aliases: :q, desc: 'Suppress output'
|
|
53
|
-
def build(directory_name = '.')
|
|
54
|
-
Gamefic::Sdk::Build.release(directory_name, options[:quiet])
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
desc 'clean [DIRECTORY_NAME]', 'Perform cleanup of DIRECTORY_NAME'
|
|
58
|
-
def clean(directory_name = '.')
|
|
59
|
-
Gamefic::Sdk::Build.clean(directory_name)
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
desc 'import [DIRECTORY_NAME]', 'Copy external scripts to the project'
|
|
63
|
-
option :quiet, type: :boolean, aliases: :q, desc: 'Suppress output'
|
|
64
|
-
def import(directory_name = '.')
|
|
65
|
-
config = Gamefic::Sdk::Config.load directory_name
|
|
66
|
-
FileUtils.remove_entry_secure config.import_path if File.exist?(config.import_path)
|
|
67
|
-
FileUtils.mkdir_p config.import_path
|
|
68
|
-
paths = [config.script_path, Gamefic::Sdk::GLOBAL_SCRIPT_PATH]
|
|
69
|
-
plot = Gamefic::Sdk::Debug::Plot.new Source::File.new(*paths)
|
|
70
|
-
plot.script 'main'
|
|
71
|
-
plot.imported_scripts.each { |s|
|
|
72
|
-
next unless s.absolute_path.start_with?(Gamefic::Sdk::GLOBAL_SCRIPT_PATH)
|
|
73
|
-
src = File.absolute_path(s.absolute_path)
|
|
74
|
-
dst = File.absolute_path(File.join(directory_name, 'imports', "#{s.path}.plot.rb"))
|
|
75
|
-
next if src == dst
|
|
76
|
-
puts "Importing #{s.path}" unless options[:quiet]
|
|
77
|
-
FileUtils.mkdir_p(File.dirname(dst))
|
|
78
|
-
FileUtils.cp_r(src, dst)
|
|
79
|
-
}
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
desc 'default-config [DIRECTORY_NAME]', 'Create or overwrite config.yml with default values'
|
|
83
|
-
def default_config(directory_name = '.')
|
|
84
|
-
File.open(File.join(directory_name, 'config.yml'), 'w') do |file|
|
|
85
|
-
file << Gamefic::Sdk::Config.generate
|
|
86
|
-
end
|
|
87
|
-
puts "Default config.yml created."
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
desc 'webskins', 'List the available skins for the Web platform'
|
|
91
|
-
def webskins
|
|
92
|
-
Dir[File.join(Gamefic::Sdk::HTML_TEMPLATE_PATH, 'skins', '*')].sort.each { |d|
|
|
93
|
-
puts File.basename(d)
|
|
94
|
-
}
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
desc 'script [PATH]', 'List or document the scripts in the SDK'
|
|
98
|
-
def script path = nil
|
|
99
|
-
if path.nil?
|
|
100
|
-
s = []
|
|
101
|
-
Dir[File.join GLOBAL_SCRIPT_PATH, '**', '*.rb'].each { |f|
|
|
102
|
-
c = File.read(f)
|
|
103
|
-
c.each_line { |l|
|
|
104
|
-
match = l.match(/[\s]*#[\s]*@gamefic.script[ ]+([a-z0-9\/]+)/)
|
|
105
|
-
unless match.nil?
|
|
106
|
-
s.push(match[1])
|
|
107
|
-
end
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
puts s.sort.join("\n")
|
|
111
|
-
else
|
|
112
|
-
document_script path
|
|
113
|
-
end
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
private
|
|
117
|
-
|
|
118
|
-
def document_script path
|
|
119
|
-
f = File.join(GLOBAL_SCRIPT_PATH, "#{path}.plot.rb")
|
|
120
|
-
if File.exist?(f)
|
|
121
|
-
c = File.read(f)
|
|
122
|
-
doc = ''
|
|
123
|
-
in_comment = false
|
|
124
|
-
c.each_line { |l|
|
|
125
|
-
if in_comment
|
|
126
|
-
break unless l.start_with?('#')
|
|
127
|
-
doc += "#{l[2..-1]}"
|
|
128
|
-
else
|
|
129
|
-
match = l.match(/[\s]*#[\s]*@gamefic.script[ ]+([a-z0-9\/]+)/)
|
|
130
|
-
in_comment = true unless match.nil?
|
|
131
|
-
end
|
|
132
|
-
}
|
|
133
|
-
if in_comment
|
|
134
|
-
puts ''
|
|
135
|
-
puts path
|
|
136
|
-
puts ''
|
|
137
|
-
puts doc unless doc == ''
|
|
138
|
-
puts '' unless doc == ''
|
|
139
|
-
else
|
|
140
|
-
puts "Path '#{path}' is not documented."
|
|
141
|
-
end
|
|
142
|
-
else
|
|
143
|
-
puts "Script path '#{path}' does not exist."
|
|
144
|
-
end
|
|
18
|
+
scaffold = options[:gem] ? 'library' : 'project'
|
|
19
|
+
Gamefic::Sdk::Scaffold.build scaffold, directory_name
|
|
20
|
+
puts "Gamefic project initialized at #{File.realpath(directory_name)}"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
desc 'diagram TYPE', 'Get diagram data'
|
|
24
|
+
long_desc %(
|
|
25
|
+
SDK "diagrams" are datasets that can be used in analysis tools and
|
|
26
|
+
graphical data representations. The dataset is provided in JSON
|
|
27
|
+
format.
|
|
28
|
+
|
|
29
|
+
The diagram types are entities, rooms, actions, verbs, syntaxes, and commands.
|
|
30
|
+
)
|
|
31
|
+
option :directory, type: :string, aliases: :d, desc: 'The project directory', default: '.'
|
|
32
|
+
def diagram type
|
|
33
|
+
main = Pathname.new(options[:directory]).join('main.rb').realpath.to_s
|
|
34
|
+
require_relative main
|
|
35
|
+
plot = Gamefic::Plot.new
|
|
36
|
+
diagram = Gamefic::Sdk::Diagram.new(plot)
|
|
37
|
+
puts diagram.get(type).to_json
|
|
145
38
|
end
|
|
146
39
|
end
|
|
147
40
|
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'gamefic-sdk'
|
|
3
|
+
require 'rake'
|
|
4
|
+
|
|
5
|
+
module Gamefic::Sdk::Tasks
|
|
6
|
+
autoload :Common, 'gamefic-sdk/tasks/common'
|
|
7
|
+
autoload :Ruby, 'gamefic-sdk/tasks/ruby'
|
|
8
|
+
autoload :Web, 'gamefic-sdk/tasks/web'
|
|
9
|
+
|
|
10
|
+
module_function
|
|
11
|
+
|
|
12
|
+
def define_all
|
|
13
|
+
define_task 'ruby:run', 'Run a Ruby CLI app' do
|
|
14
|
+
Ruby.new.run
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
define_task 'ruby:build', 'Build a distributable CLI app' do
|
|
18
|
+
Ruby.new.build
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
define_task 'web:generate', 'Generate a web app' do
|
|
22
|
+
Web.new.generate
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
define_task 'web:run', 'Run a standalone web app' do
|
|
26
|
+
Web.new.run
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
define_task 'web:build', 'Build a distributable web app' do
|
|
30
|
+
Web.new.build
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def define_task name, desc, &block
|
|
35
|
+
return if Rake::Task.task_defined?(name)
|
|
36
|
+
# @type [Rake::Task]
|
|
37
|
+
task = Rake::Task.define_task(name, &block)
|
|
38
|
+
task.add_description desc
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'pathname'
|
|
2
|
+
|
|
3
|
+
module Gamefic
|
|
4
|
+
module Sdk
|
|
5
|
+
module Tasks
|
|
6
|
+
# Common methods for Rake tasks.
|
|
7
|
+
#
|
|
8
|
+
module Common
|
|
9
|
+
attr_reader :directory
|
|
10
|
+
|
|
11
|
+
def initialize directory = '.'
|
|
12
|
+
@directory = directory
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def absolute_path
|
|
16
|
+
@absolute_path ||= Pathname.new(directory).realpath.to_s
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
require 'gamefic-tty'
|
|
2
|
+
require 'tmpdir'
|
|
3
|
+
require 'zlib'
|
|
4
|
+
require 'fileutils'
|
|
5
|
+
require 'base64'
|
|
6
|
+
|
|
7
|
+
module Gamefic
|
|
8
|
+
module Sdk
|
|
9
|
+
module Tasks
|
|
10
|
+
# Tasks for running and building Ruby apps.
|
|
11
|
+
#
|
|
12
|
+
class Ruby
|
|
13
|
+
include Common
|
|
14
|
+
|
|
15
|
+
# Run a command-line Ruby app.
|
|
16
|
+
#
|
|
17
|
+
def run
|
|
18
|
+
require_relative File.join(absolute_path, 'main')
|
|
19
|
+
Gamefic::Tty::Engine.run
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Build a distributable Ruby app.
|
|
23
|
+
#
|
|
24
|
+
def build
|
|
25
|
+
current = $LOADED_FEATURES.clone
|
|
26
|
+
require_relative File.join(absolute_path, 'main')
|
|
27
|
+
loaded = ($LOADED_FEATURES - current)
|
|
28
|
+
exports = {}
|
|
29
|
+
exports.merge! append_gem('gamefic')
|
|
30
|
+
exports.merge! append_gem('gamefic-tty')
|
|
31
|
+
loaded.each do |path|
|
|
32
|
+
exports.merge! relativize(path)
|
|
33
|
+
end
|
|
34
|
+
files = {}
|
|
35
|
+
exports.each_pair do |rel, full|
|
|
36
|
+
files[rel] = Base64.encode64(Zlib::Deflate.deflate(File.read(full)))
|
|
37
|
+
end
|
|
38
|
+
program = program_code(files)
|
|
39
|
+
FileUtils.mkdir_p File.join(absolute_path, 'builds', 'ruby')
|
|
40
|
+
File.write(File.join(absolute_path, 'builds', 'ruby', "#{File.basename(absolute_path)}.rb"), program)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
private
|
|
44
|
+
|
|
45
|
+
def append_gem name
|
|
46
|
+
result = {}
|
|
47
|
+
# @type [Gem::Specification]
|
|
48
|
+
spec = Gem::Specification.find_by_name(name)
|
|
49
|
+
spec.lib_files.each do |path|
|
|
50
|
+
full = File.join(spec.full_gem_path, path)
|
|
51
|
+
raise LoadError, "Unable to package gem file `#{path}`" unless File.file?(full)
|
|
52
|
+
rel = full.sub(/^(#{spec.load_paths.join('|')})\//, '')
|
|
53
|
+
result[rel] = full
|
|
54
|
+
end
|
|
55
|
+
result
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def relativize path
|
|
59
|
+
return { path[absolute_path.length+1..-1] => path } if path.start_with?(absolute_path)
|
|
60
|
+
# @param spec [Gem::Specification]
|
|
61
|
+
Gem::Specification.each do |spec|
|
|
62
|
+
spec.load_paths.each do |lib_path|
|
|
63
|
+
return { path[lib_path.length+1..-1] => path } if path.start_with?(lib_path)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
raise LoadError, "Unable to package loaded path `#{path}`"
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# @param zips [Hash]
|
|
70
|
+
# @return [String]
|
|
71
|
+
def program_code(zips)
|
|
72
|
+
%(#!/usr/bin/env ruby
|
|
73
|
+
|
|
74
|
+
zips = #{zips.inspect}
|
|
75
|
+
|
|
76
|
+
require 'tmpdir'
|
|
77
|
+
require 'fileutils'
|
|
78
|
+
require 'zlib'
|
|
79
|
+
require 'base64'
|
|
80
|
+
|
|
81
|
+
puts 'Loading...'
|
|
82
|
+
Dir.mktmpdir do |tmp|
|
|
83
|
+
zips.each_pair do |file, code|
|
|
84
|
+
FileUtils.mkdir_p File.join(tmp, 'lib', File.dirname(file))
|
|
85
|
+
File.write(File.join(tmp, 'lib', file), Zlib::Inflate.inflate(Base64.decode64(code)))
|
|
86
|
+
end
|
|
87
|
+
$LOAD_PATH.unshift File.join(tmp, 'lib')
|
|
88
|
+
require 'gamefic'
|
|
89
|
+
require 'gamefic-tty'
|
|
90
|
+
require 'main'
|
|
91
|
+
puts "\n"
|
|
92
|
+
Gamefic::Tty::Engine.run
|
|
93
|
+
end
|
|
94
|
+
)
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
require 'listen'
|
|
2
|
+
|
|
3
|
+
module Gamefic
|
|
4
|
+
module Sdk
|
|
5
|
+
module Tasks
|
|
6
|
+
# Tasks for running and building web apps.
|
|
7
|
+
#
|
|
8
|
+
class Web
|
|
9
|
+
include Common
|
|
10
|
+
|
|
11
|
+
# Generate a web app using NPM.
|
|
12
|
+
#
|
|
13
|
+
def generate
|
|
14
|
+
Dir.chdir absolute_path do
|
|
15
|
+
nv = `npm -v`.strip
|
|
16
|
+
puts "Node version #{nv} detected. Preparing the web app..."
|
|
17
|
+
Gamefic::Sdk::Scaffold.build 'react', '.'
|
|
18
|
+
puts 'The web app scaffold is ready.'
|
|
19
|
+
puts 'Run `npm install` to download the dependencies.'
|
|
20
|
+
end
|
|
21
|
+
rescue Errno::ENOENT => e
|
|
22
|
+
STDERR.puts "#{e.class}: #{e.message}"
|
|
23
|
+
STDERR.puts "Web app generation requires Node (https://nodejs.org)."
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Run the web app in a server.
|
|
27
|
+
#
|
|
28
|
+
def run
|
|
29
|
+
check_for_web_build
|
|
30
|
+
build_development
|
|
31
|
+
listener = Listen.to(File.join(absolute_path, 'web')) do |_mod, _add, _rem|
|
|
32
|
+
build_development
|
|
33
|
+
end
|
|
34
|
+
listener.start
|
|
35
|
+
# @todo Get the public folder from a config?
|
|
36
|
+
Gamefic::Sdk::Server.run! source_dir: absolute_path, public_folder: File.join(absolute_path, 'builds', 'web', 'development')
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Build a distributable web app using NPM.
|
|
40
|
+
#
|
|
41
|
+
def build
|
|
42
|
+
check_for_web_build
|
|
43
|
+
Dir.chdir absolute_path do
|
|
44
|
+
# exec 'npm run build'
|
|
45
|
+
pid = Process.spawn 'npm run build'
|
|
46
|
+
Process.wait pid
|
|
47
|
+
end
|
|
48
|
+
rescue Errno::ENOENT => e
|
|
49
|
+
STDERR.puts "#{e.class}: #{e.message}"
|
|
50
|
+
STDERR.puts "Web app building requires Node (https://nodejs.org)."
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
private
|
|
54
|
+
|
|
55
|
+
# True if a web build has been generated for the current project.
|
|
56
|
+
#
|
|
57
|
+
# @return [Boolean]
|
|
58
|
+
def web_build_exists?
|
|
59
|
+
File.exist?(File.join(absolute_path, 'package.json'))
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Check if a web build exists.
|
|
63
|
+
#
|
|
64
|
+
# @raise [LoadError] if a web build is not available.
|
|
65
|
+
# @return [void]
|
|
66
|
+
def check_for_web_build
|
|
67
|
+
return if web_build_exists?
|
|
68
|
+
puts 'This project does not appear to be configured for web builds.'
|
|
69
|
+
puts 'Try running `rake web:generate` first.' if Rake::Task.task_defined?('web:generate')
|
|
70
|
+
raise LoadError, 'package.json not found'
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def build_development
|
|
74
|
+
Dir.chdir absolute_path do
|
|
75
|
+
pid = Process.spawn('npm run develop')
|
|
76
|
+
Process.wait pid
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
data/lib/gamefic-sdk/version.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
module Gamefic
|
|
2
|
-
module Sdk
|
|
3
|
-
VERSION = '
|
|
4
|
-
end
|
|
5
|
-
end
|
|
1
|
+
module Gamefic
|
|
2
|
+
module Sdk
|
|
3
|
+
VERSION = '2.0.0'
|
|
4
|
+
end
|
|
5
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gamefic-sdk
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Fred Snyder
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2020-03-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: gamefic
|
|
@@ -16,229 +16,214 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
19
|
+
version: '2.0'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '
|
|
26
|
+
version: '2.0'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
|
-
name:
|
|
28
|
+
name: gamefic-standard
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '0
|
|
34
|
-
|
|
33
|
+
version: '2.0'
|
|
34
|
+
type: :runtime
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
35
39
|
- !ruby/object:Gem::Version
|
|
36
|
-
version: 0
|
|
40
|
+
version: '2.0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: gamefic-tty
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - "~>"
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '2.0'
|
|
37
48
|
type: :runtime
|
|
38
49
|
prerelease: false
|
|
39
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
40
51
|
requirements:
|
|
41
52
|
- - "~>"
|
|
42
53
|
- !ruby/object:Gem::Version
|
|
43
|
-
version: '0
|
|
44
|
-
|
|
54
|
+
version: '2.0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: listen
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
45
60
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: 0
|
|
61
|
+
version: '3.0'
|
|
62
|
+
type: :runtime
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '3.0'
|
|
47
69
|
- !ruby/object:Gem::Dependency
|
|
48
|
-
name:
|
|
70
|
+
name: opal
|
|
49
71
|
requirement: !ruby/object:Gem::Requirement
|
|
50
72
|
requirements:
|
|
51
73
|
- - "~>"
|
|
52
74
|
- !ruby/object:Gem::Version
|
|
53
|
-
version: '
|
|
75
|
+
version: '1.0'
|
|
54
76
|
type: :runtime
|
|
55
77
|
prerelease: false
|
|
56
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
57
79
|
requirements:
|
|
58
80
|
- - "~>"
|
|
59
81
|
- !ruby/object:Gem::Version
|
|
60
|
-
version: '
|
|
82
|
+
version: '1.0'
|
|
61
83
|
- !ruby/object:Gem::Dependency
|
|
62
84
|
name: sinatra
|
|
63
85
|
requirement: !ruby/object:Gem::Requirement
|
|
64
86
|
requirements:
|
|
65
87
|
- - "~>"
|
|
66
88
|
- !ruby/object:Gem::Version
|
|
67
|
-
version: '
|
|
89
|
+
version: '2'
|
|
68
90
|
type: :runtime
|
|
69
91
|
prerelease: false
|
|
70
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
71
93
|
requirements:
|
|
72
94
|
- - "~>"
|
|
73
95
|
- !ruby/object:Gem::Version
|
|
74
|
-
version: '
|
|
96
|
+
version: '2'
|
|
75
97
|
- !ruby/object:Gem::Dependency
|
|
76
|
-
name:
|
|
98
|
+
name: thor
|
|
77
99
|
requirement: !ruby/object:Gem::Requirement
|
|
78
100
|
requirements:
|
|
79
101
|
- - "~>"
|
|
80
102
|
- !ruby/object:Gem::Version
|
|
81
|
-
version: '
|
|
82
|
-
|
|
103
|
+
version: '1.0'
|
|
104
|
+
type: :runtime
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - "~>"
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '1.0'
|
|
111
|
+
- !ruby/object:Gem::Dependency
|
|
112
|
+
name: bundler
|
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
|
114
|
+
requirements:
|
|
115
|
+
- - "~>"
|
|
83
116
|
- !ruby/object:Gem::Version
|
|
84
|
-
version:
|
|
117
|
+
version: '2.0'
|
|
85
118
|
type: :development
|
|
86
119
|
prerelease: false
|
|
87
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
88
121
|
requirements:
|
|
89
122
|
- - "~>"
|
|
90
123
|
- !ruby/object:Gem::Version
|
|
91
|
-
version: '
|
|
92
|
-
- - ">="
|
|
93
|
-
- !ruby/object:Gem::Version
|
|
94
|
-
version: 3.5.0
|
|
124
|
+
version: '2.0'
|
|
95
125
|
- !ruby/object:Gem::Dependency
|
|
96
126
|
name: capybara
|
|
97
127
|
requirement: !ruby/object:Gem::Requirement
|
|
98
128
|
requirements:
|
|
99
129
|
- - "~>"
|
|
100
130
|
- !ruby/object:Gem::Version
|
|
101
|
-
version: '
|
|
102
|
-
|
|
131
|
+
version: '3.3'
|
|
132
|
+
type: :development
|
|
133
|
+
prerelease: false
|
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
+
requirements:
|
|
136
|
+
- - "~>"
|
|
103
137
|
- !ruby/object:Gem::Version
|
|
104
|
-
version: '
|
|
138
|
+
version: '3.3'
|
|
139
|
+
- !ruby/object:Gem::Dependency
|
|
140
|
+
name: puma
|
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
|
142
|
+
requirements:
|
|
143
|
+
- - "~>"
|
|
144
|
+
- !ruby/object:Gem::Version
|
|
145
|
+
version: '3'
|
|
105
146
|
type: :development
|
|
106
147
|
prerelease: false
|
|
107
148
|
version_requirements: !ruby/object:Gem::Requirement
|
|
108
149
|
requirements:
|
|
109
150
|
- - "~>"
|
|
110
151
|
- !ruby/object:Gem::Version
|
|
111
|
-
version: '
|
|
112
|
-
|
|
152
|
+
version: '3'
|
|
153
|
+
- !ruby/object:Gem::Dependency
|
|
154
|
+
name: rake
|
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
|
156
|
+
requirements:
|
|
157
|
+
- - "~>"
|
|
113
158
|
- !ruby/object:Gem::Version
|
|
114
|
-
version: '
|
|
159
|
+
version: '10.0'
|
|
160
|
+
type: :development
|
|
161
|
+
prerelease: false
|
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
163
|
+
requirements:
|
|
164
|
+
- - "~>"
|
|
165
|
+
- !ruby/object:Gem::Version
|
|
166
|
+
version: '10.0'
|
|
167
|
+
- !ruby/object:Gem::Dependency
|
|
168
|
+
name: rspec
|
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
|
170
|
+
requirements:
|
|
171
|
+
- - "~>"
|
|
172
|
+
- !ruby/object:Gem::Version
|
|
173
|
+
version: '3.0'
|
|
174
|
+
type: :development
|
|
175
|
+
prerelease: false
|
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
177
|
+
requirements:
|
|
178
|
+
- - "~>"
|
|
179
|
+
- !ruby/object:Gem::Version
|
|
180
|
+
version: '3.0'
|
|
115
181
|
- !ruby/object:Gem::Dependency
|
|
116
182
|
name: selenium-webdriver
|
|
117
183
|
requirement: !ruby/object:Gem::Requirement
|
|
118
184
|
requirements:
|
|
119
185
|
- - "~>"
|
|
120
186
|
- !ruby/object:Gem::Version
|
|
121
|
-
version: '3.
|
|
187
|
+
version: '3.13'
|
|
188
|
+
type: :development
|
|
189
|
+
prerelease: false
|
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
191
|
+
requirements:
|
|
192
|
+
- - "~>"
|
|
193
|
+
- !ruby/object:Gem::Version
|
|
194
|
+
version: '3.13'
|
|
195
|
+
- !ruby/object:Gem::Dependency
|
|
196
|
+
name: simplecov
|
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
|
198
|
+
requirements:
|
|
199
|
+
- - "~>"
|
|
200
|
+
- !ruby/object:Gem::Version
|
|
201
|
+
version: '0.14'
|
|
122
202
|
type: :development
|
|
123
203
|
prerelease: false
|
|
124
204
|
version_requirements: !ruby/object:Gem::Requirement
|
|
125
205
|
requirements:
|
|
126
206
|
- - "~>"
|
|
127
207
|
- !ruby/object:Gem::Version
|
|
128
|
-
version: '
|
|
129
|
-
description: Development tools for Gamefic
|
|
208
|
+
version: '0.14'
|
|
209
|
+
description: Development and command-line tools for Gamefic
|
|
130
210
|
email: fsnyder@gamefic.com
|
|
131
211
|
executables:
|
|
132
|
-
-
|
|
212
|
+
- gamefic
|
|
133
213
|
extensions: []
|
|
134
214
|
extra_rdoc_files: []
|
|
135
215
|
files:
|
|
136
|
-
- bin/
|
|
137
|
-
- html/core/engine.js
|
|
138
|
-
- html/core/jquery.js
|
|
139
|
-
- html/core/jquery.modal.css
|
|
140
|
-
- html/core/jquery.modal.js
|
|
141
|
-
- html/core/js.cookie.js
|
|
142
|
-
- html/sinatra/engine.js
|
|
143
|
-
- html/skins/hypertext/compass.png
|
|
144
|
-
- html/skins/hypertext/index.html
|
|
145
|
-
- html/skins/hypertext/style.css
|
|
146
|
-
- html/skins/minimal/index.html.erb
|
|
147
|
-
- html/skins/minimal/index.rb
|
|
148
|
-
- html/skins/minimal/play.js
|
|
149
|
-
- html/skins/minimal/style.css
|
|
150
|
-
- html/skins/multimedia/close.png
|
|
151
|
-
- html/skins/multimedia/index.html
|
|
152
|
-
- html/skins/multimedia/mobile.css
|
|
153
|
-
- html/skins/multimedia/spinner.gif
|
|
154
|
-
- html/skins/multimedia/style.css
|
|
155
|
-
- html/skins/standard/index.html.erb
|
|
156
|
-
- html/skins/standard/index.rb
|
|
157
|
-
- html/skins/standard/play.js
|
|
158
|
-
- html/skins/standard/style.css
|
|
216
|
+
- bin/gamefic
|
|
159
217
|
- lib/gamefic-sdk.rb
|
|
160
|
-
- lib/gamefic-sdk/
|
|
161
|
-
- lib/gamefic-sdk/
|
|
162
|
-
- lib/gamefic-sdk/debug.rb
|
|
163
|
-
- lib/gamefic-sdk/debug/action.rb
|
|
164
|
-
- lib/gamefic-sdk/debug/plot.rb
|
|
165
|
-
- lib/gamefic-sdk/platform.rb
|
|
166
|
-
- lib/gamefic-sdk/platform/base.rb
|
|
167
|
-
- lib/gamefic-sdk/platform/gfic.rb
|
|
168
|
-
- lib/gamefic-sdk/platform/sinatra.rb
|
|
169
|
-
- lib/gamefic-sdk/platform/web.rb
|
|
170
|
-
- lib/gamefic-sdk/platform/web/app_config.rb
|
|
171
|
-
- lib/gamefic-sdk/platform/web/engine.rb
|
|
172
|
-
- lib/gamefic-sdk/platform/web/user.rb
|
|
218
|
+
- lib/gamefic-sdk/diagram.rb
|
|
219
|
+
- lib/gamefic-sdk/scaffold.rb
|
|
173
220
|
- lib/gamefic-sdk/server.rb
|
|
174
221
|
- lib/gamefic-sdk/shell.rb
|
|
175
|
-
- lib/gamefic-sdk/
|
|
176
|
-
- lib/gamefic-sdk/
|
|
222
|
+
- lib/gamefic-sdk/tasks.rb
|
|
223
|
+
- lib/gamefic-sdk/tasks/common.rb
|
|
224
|
+
- lib/gamefic-sdk/tasks/ruby.rb
|
|
225
|
+
- lib/gamefic-sdk/tasks/web.rb
|
|
177
226
|
- lib/gamefic-sdk/version.rb
|
|
178
|
-
- scripts/save-restore-undo.plot.rb
|
|
179
|
-
- scripts/snapshots.plot.rb
|
|
180
|
-
- scripts/standard.plot.rb
|
|
181
|
-
- scripts/standard/actions.plot.rb
|
|
182
|
-
- scripts/standard/actions/drop.plot.rb
|
|
183
|
-
- scripts/standard/actions/enter.plot.rb
|
|
184
|
-
- scripts/standard/actions/go.plot.rb
|
|
185
|
-
- scripts/standard/actions/insert.plot.rb
|
|
186
|
-
- scripts/standard/actions/inventory.plot.rb
|
|
187
|
-
- scripts/standard/actions/leave.plot.rb
|
|
188
|
-
- scripts/standard/actions/look.plot.rb
|
|
189
|
-
- scripts/standard/actions/nil.plot.rb
|
|
190
|
-
- scripts/standard/actions/place.plot.rb
|
|
191
|
-
- scripts/standard/actions/quit.plot.rb
|
|
192
|
-
- scripts/standard/actions/take.plot.rb
|
|
193
|
-
- scripts/standard/actions/talk.plot.rb
|
|
194
|
-
- scripts/standard/actions/wait.plot.rb
|
|
195
|
-
- scripts/standard/clothing.plot.rb
|
|
196
|
-
- scripts/standard/clothing/actions.plot.rb
|
|
197
|
-
- scripts/standard/clothing/actions/doff.plot.rb
|
|
198
|
-
- scripts/standard/clothing/actions/drop.plot.rb
|
|
199
|
-
- scripts/standard/clothing/actions/inventory.plot.rb
|
|
200
|
-
- scripts/standard/clothing/actions/wear.plot.rb
|
|
201
|
-
- scripts/standard/clothing/entities.plot.rb
|
|
202
|
-
- scripts/standard/clothing/entities/clothing.plot.rb
|
|
203
|
-
- scripts/standard/clothing/entities/coat.plot.rb
|
|
204
|
-
- scripts/standard/clothing/entities/gloves.plot.rb
|
|
205
|
-
- scripts/standard/clothing/entities/hat.plot.rb
|
|
206
|
-
- scripts/standard/clothing/entities/pants.plot.rb
|
|
207
|
-
- scripts/standard/clothing/entities/shirt.plot.rb
|
|
208
|
-
- scripts/standard/clothing/entities/shoes.plot.rb
|
|
209
|
-
- scripts/standard/container.plot.rb
|
|
210
|
-
- scripts/standard/container/actions.plot.rb
|
|
211
|
-
- scripts/standard/container/entities.plot.rb
|
|
212
|
-
- scripts/standard/direction.plot.rb
|
|
213
|
-
- scripts/standard/edible.plot.rb
|
|
214
|
-
- scripts/standard/entities.plot.rb
|
|
215
|
-
- scripts/standard/entities/character.plot.rb
|
|
216
|
-
- scripts/standard/entities/fixture.plot.rb
|
|
217
|
-
- scripts/standard/entities/item.plot.rb
|
|
218
|
-
- scripts/standard/entities/portal.plot.rb
|
|
219
|
-
- scripts/standard/entities/receptacle.plot.rb
|
|
220
|
-
- scripts/standard/entities/room.plot.rb
|
|
221
|
-
- scripts/standard/entities/rubble.plot.rb
|
|
222
|
-
- scripts/standard/entities/scenery.plot.rb
|
|
223
|
-
- scripts/standard/entities/supporter.plot.rb
|
|
224
|
-
- scripts/standard/entities/thing.plot.rb
|
|
225
|
-
- scripts/standard/give.plot.rb
|
|
226
|
-
- scripts/standard/lockable.plot.rb
|
|
227
|
-
- scripts/standard/modules.plot.rb
|
|
228
|
-
- scripts/standard/modules/attachable.plot.rb
|
|
229
|
-
- scripts/standard/modules/auto_takes.plot.rb
|
|
230
|
-
- scripts/standard/modules/enterable.plot.rb
|
|
231
|
-
- scripts/standard/modules/explicit_exits.plot.rb
|
|
232
|
-
- scripts/standard/modules/itemizable.plot.rb
|
|
233
|
-
- scripts/standard/modules/locale_description.plot.rb
|
|
234
|
-
- scripts/standard/modules/parent-room.plot.rb
|
|
235
|
-
- scripts/standard/modules/portable.plot.rb
|
|
236
|
-
- scripts/standard/modules/use.plot.rb
|
|
237
|
-
- scripts/standard/openable.plot.rb
|
|
238
|
-
- scripts/standard/pathfinder.plot.rb
|
|
239
|
-
- scripts/standard/queries.plot.rb
|
|
240
|
-
- scripts/standard/test.plot.rb
|
|
241
|
-
- scripts/undo.plot.rb
|
|
242
227
|
homepage: http://gamefic.com
|
|
243
228
|
licenses:
|
|
244
229
|
- MIT
|
|
@@ -251,15 +236,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
251
236
|
requirements:
|
|
252
237
|
- - ">="
|
|
253
238
|
- !ruby/object:Gem::Version
|
|
254
|
-
version: 2.
|
|
239
|
+
version: 2.3.0
|
|
255
240
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
256
241
|
requirements:
|
|
257
242
|
- - ">="
|
|
258
243
|
- !ruby/object:Gem::Version
|
|
259
244
|
version: '0'
|
|
260
245
|
requirements: []
|
|
261
|
-
|
|
262
|
-
rubygems_version: 2.5.1
|
|
246
|
+
rubygems_version: 3.0.3
|
|
263
247
|
signing_key:
|
|
264
248
|
specification_version: 4
|
|
265
249
|
summary: Gamefic SDK
|