dragonruby-egg 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/app/arguments.rb +60 -0
- data/app/configuration.rb +36 -0
- data/app/inputs.rb +14 -0
- data/app/main.rb +49 -0
- data/bin/dre +6 -0
- data/lib/dragonruby_egg/constants.rb +13 -0
- data/lib/dragonruby_egg/database.rb +21 -0
- data/lib/dragonruby_egg/event.rb +28 -0
- data/lib/dragonruby_egg/executable.rb +81 -0
- data/lib/dragonruby_egg/modules.rb +24 -0
- data/lib/dragonruby_egg.rb +8 -0
- data/lib/json_parser.rb +107 -0
- data/lib/option_parser.rb +91 -0
- metadata +59 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: dbdcd93f1ddb45e46dda6c8ea2cb44eeace67558a04a417367fd6c7cc50d1e93
|
4
|
+
data.tar.gz: f3d41e967e4b7c6001b3b050a0329a23940db9ac574c285551f0107473176163
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 283be22db3317bf2de5cfea3c914e19c78b53599f21d91f8e28371a3f86f041caf19cd9a159d5e84f51471c40713eaa6ef616b97bfca8f1ef6ff5ae497068da0
|
7
|
+
data.tar.gz: 831e2537cccd96361543fd1e2b6700d5381fab124af774befe6aee210ca9363b16761e3a0fdd6605ca94eb87dcef54c1b21ddf8a99676f9dbeeaa89b28166f73
|
data/app/arguments.rb
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
module Dre
|
2
|
+
@options = {
|
3
|
+
is_docs: false,
|
4
|
+
is_egg: false,
|
5
|
+
root_path: nil,
|
6
|
+
path: nil,
|
7
|
+
install: nil,
|
8
|
+
new: nil
|
9
|
+
}
|
10
|
+
@options[:path] = OptionParser.last_arg if Dir.exist?(OptionParser.last_arg)
|
11
|
+
|
12
|
+
OptionParser.parse do |parser|
|
13
|
+
parser.banner(
|
14
|
+
"#{DragonrubyEgg::Constants::APP_FULL_NAME} is a tool for managing DragonRuby.\n" +
|
15
|
+
"Usage: #{APP_NAME} [options] [path]\n" +
|
16
|
+
"\nOptions:"
|
17
|
+
)
|
18
|
+
parser.on( "new NAME", "", "They will create a new game project.") do |name|
|
19
|
+
@options[:new] = name
|
20
|
+
end
|
21
|
+
parser.on( "install MODULE", "", "Installs the module in the working folder.\n" +
|
22
|
+
"(Example: install dr-core-rb,\n" +
|
23
|
+
"install filipvrba.dr-core-rb)\n" ) do |repo_module|
|
24
|
+
@options[:install] = repo_module
|
25
|
+
end
|
26
|
+
parser.on( "-e", "--egg", "This opens a page in the main browser\n" +
|
27
|
+
"that lists all the modules that can be\n"+
|
28
|
+
"installed in the game project." ) do
|
29
|
+
@options[:is_egg] = true
|
30
|
+
end
|
31
|
+
parser.on( "-d", "--docs", "Opens the documentation for DragonRuby\n" +
|
32
|
+
"in the main browser." ) do
|
33
|
+
@options[:is_docs] = true
|
34
|
+
end
|
35
|
+
parser.on( "-sr PATH", "--set-root PATH",
|
36
|
+
"This command sets the root\n" +
|
37
|
+
"path to DragonRuby.\n" +
|
38
|
+
"(Default: '#{@configuration.parse(:root_path)}')"
|
39
|
+
) do |path|
|
40
|
+
@options[:root_path] = path
|
41
|
+
end
|
42
|
+
parser.on( "-h", "--help", "Show help" ) do
|
43
|
+
puts parser
|
44
|
+
exit
|
45
|
+
end
|
46
|
+
parser.on( "-v", "--version", "Show version" ) do
|
47
|
+
DragonrubyEgg::Event.print('VERSION', DragonrubyEgg::VERSION)
|
48
|
+
exit
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.options_empty?
|
53
|
+
@options.each do |k, v|
|
54
|
+
if k != :path and v
|
55
|
+
return false
|
56
|
+
end
|
57
|
+
end
|
58
|
+
return true
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Dre
|
2
|
+
module_function
|
3
|
+
|
4
|
+
@configuration = JsonParser.new File.join(ROOT, 'config/default.json')
|
5
|
+
h_root_path = lambda { |_| @configuration.parse(:root_path) }
|
6
|
+
DragonrubyEgg::Event.add(:root_path, h_root_path)
|
7
|
+
|
8
|
+
def configuration_on
|
9
|
+
@configuration.on_handler(:root_path,
|
10
|
+
lambda do
|
11
|
+
r_path = DragonrubyEgg::Executable.find_root_path
|
12
|
+
unless r_path
|
13
|
+
DragonrubyEgg::Event.print('ROOT-PATH',
|
14
|
+
"No DragonRuby root path has been found."
|
15
|
+
)
|
16
|
+
DragonrubyEgg::Event.print('WARNING',
|
17
|
+
"Please set the root path using the -sr " +
|
18
|
+
"or --set-root argument."
|
19
|
+
)
|
20
|
+
end
|
21
|
+
return r_path
|
22
|
+
end
|
23
|
+
) do |is_end, r_path|
|
24
|
+
unless is_end
|
25
|
+
DragonrubyEgg::Event.print('ROOT-PATH',
|
26
|
+
"The root path has not been set and so the analysis " +
|
27
|
+
"of the root path is performed."
|
28
|
+
)
|
29
|
+
else
|
30
|
+
DragonrubyEgg::Event.print('SET', "root_path: #{r_path}")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
Dre.configuration_on()
|
data/app/inputs.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
module Dre
|
2
|
+
h_correct = lambda do |d|
|
3
|
+
print "Install this '#{d[0]}.#{d[1]}' module? (y/N): "
|
4
|
+
input = STDIN.gets.chomp
|
5
|
+
result = false
|
6
|
+
|
7
|
+
if input.downcase.index("y")
|
8
|
+
result = true
|
9
|
+
end
|
10
|
+
return result
|
11
|
+
end
|
12
|
+
|
13
|
+
DragonrubyEgg::Event.add(:input_correct, h_correct)
|
14
|
+
end
|
data/app/main.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'dragonruby_egg'
|
2
|
+
require 'option_parser'
|
3
|
+
require 'json_parser'
|
4
|
+
|
5
|
+
require_relative './configuration'
|
6
|
+
require_relative './arguments'
|
7
|
+
require_relative './inputs'
|
8
|
+
|
9
|
+
module Dre
|
10
|
+
module_function
|
11
|
+
|
12
|
+
def root_path_state
|
13
|
+
sym = :root_path
|
14
|
+
root_path = @options[sym]
|
15
|
+
if root_path
|
16
|
+
if root_path == ''
|
17
|
+
DragonrubyEgg::Event.print('WARNING', "An empty string for" +
|
18
|
+
"the root path is not acceptable.")
|
19
|
+
@configuration.delete(sym)
|
20
|
+
configuration_on()
|
21
|
+
else
|
22
|
+
@configuration.parse(sym, root_path)
|
23
|
+
DragonrubyEgg::Event.print('SET', "#{sym.to_s}: #{root_path.to_s}")
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def main_state
|
29
|
+
if options_empty?
|
30
|
+
DragonrubyEgg::Executable.dragonruby(@options[:path])
|
31
|
+
elsif @options[:is_docs]
|
32
|
+
DragonrubyEgg::Executable.docs()
|
33
|
+
elsif @options[:is_egg]
|
34
|
+
DragonrubyEgg::Executable.egg()
|
35
|
+
elsif @options[:install]
|
36
|
+
if @options[:path]
|
37
|
+
DragonrubyEgg::Executable.install(@options[:install], @options[:path])
|
38
|
+
else
|
39
|
+
DragonrubyEgg::Event.print('WARNING', "A working path must " +
|
40
|
+
"be defined to install the module.")
|
41
|
+
end
|
42
|
+
elsif @options[:new]
|
43
|
+
DragonrubyEgg::Executable.new_project(@options[:new], @options[:path])
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
Dre.root_path_state()
|
49
|
+
Dre.main_state()
|
data/bin/dre
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
module DragonrubyEgg
|
2
|
+
VERSION = "1.0.0"
|
3
|
+
module Constants
|
4
|
+
APP_FULL_NAME = 'DragonRuby-Egg'
|
5
|
+
DR_EXES = {
|
6
|
+
dr: 'dragonruby',
|
7
|
+
drh: 'dragonruby-httpd',
|
8
|
+
drp: 'dragonruby-publish'
|
9
|
+
}
|
10
|
+
DR_DOCS = 'docs/docs.html'
|
11
|
+
DRE_URL = 'https://dragonruby-egg-ui-rjs.vercel.app/'
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'rest-client'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
module DragonrubyEgg
|
5
|
+
module Database
|
6
|
+
GUARD_MODULES = "Ku3biL772AhmQndV"
|
7
|
+
DB_NAME = 1
|
8
|
+
|
9
|
+
module_function
|
10
|
+
|
11
|
+
def get_modules
|
12
|
+
rest_data = RestClient.get('https://bef.fly.dev/api/v1/guard', {
|
13
|
+
params: {
|
14
|
+
token: GUARD_MODULES,
|
15
|
+
database: DB_NAME
|
16
|
+
}
|
17
|
+
})
|
18
|
+
return JSON.parse(rest_data)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module DragonrubyEgg
|
2
|
+
module Event
|
3
|
+
HANDLERS = {}
|
4
|
+
@is_print_active = true
|
5
|
+
|
6
|
+
module_function
|
7
|
+
|
8
|
+
def set_print_active(bool)
|
9
|
+
@is_print_active = bool
|
10
|
+
end
|
11
|
+
|
12
|
+
def print(event, message = "")
|
13
|
+
unless @is_print_active
|
14
|
+
return
|
15
|
+
end
|
16
|
+
|
17
|
+
puts("#{Time.now.strftime("%l:%M:%S %p").lstrip} [#{APP_NAME}] #{event} | #{message}")
|
18
|
+
end
|
19
|
+
|
20
|
+
def add(symbol, handler)
|
21
|
+
HANDLERS[symbol] = handler
|
22
|
+
end
|
23
|
+
|
24
|
+
def emit(symbol, *args)
|
25
|
+
HANDLERS[symbol].call(args)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
module DragonrubyEgg
|
2
|
+
module Executable
|
3
|
+
module_function
|
4
|
+
|
5
|
+
def root_path? path
|
6
|
+
exes = Constants::DR_EXES.map { |_,v| File.join(path, v) }
|
7
|
+
exes.each do |exe|
|
8
|
+
is_existing = File.exist?(exe) && File.executable?(exe)
|
9
|
+
unless is_existing
|
10
|
+
return false
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
return true
|
15
|
+
end
|
16
|
+
|
17
|
+
def find_root_path(root = '/')
|
18
|
+
paths = Dir.glob(
|
19
|
+
"#{root}/**/#{Constants::DR_EXES[:dr]}",
|
20
|
+
File::FNM_DOTMATCH
|
21
|
+
)
|
22
|
+
paths.each do |path|
|
23
|
+
if File.exist?(path)
|
24
|
+
r_path = File.dirname(path)
|
25
|
+
if root_path?(r_path)
|
26
|
+
return r_path
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
return nil
|
32
|
+
end
|
33
|
+
|
34
|
+
def web_brower
|
35
|
+
%x(xdg-settings get default-web-browser)
|
36
|
+
.sub(/\..*$/, '').rstrip
|
37
|
+
end
|
38
|
+
|
39
|
+
def dragonruby arg
|
40
|
+
root_path = Event::emit(:root_path)
|
41
|
+
path = File.join(root_path, Constants::DR_EXES[:dr])
|
42
|
+
system("#{path} #{arg}")
|
43
|
+
end
|
44
|
+
|
45
|
+
def docs
|
46
|
+
root_path = Event::emit(:root_path)
|
47
|
+
doc_file = File.join(root_path, Constants::DR_DOCS)
|
48
|
+
system("#{web_brower} #{doc_file} &")
|
49
|
+
end
|
50
|
+
|
51
|
+
def egg
|
52
|
+
root_path = Event::emit(:root_path)
|
53
|
+
system("#{web_brower} #{Constants::DRE_URL} &")
|
54
|
+
end
|
55
|
+
|
56
|
+
def install repo_module, path
|
57
|
+
module_url = Modules.get_module_url(repo_module)
|
58
|
+
unless module_url
|
59
|
+
return
|
60
|
+
end
|
61
|
+
module_path = "#{path}/modules/#{repo_module}"
|
62
|
+
|
63
|
+
is_install = system("git clone --recurse-submodules #{module_url}.git '#{module_path}'")
|
64
|
+
if is_install
|
65
|
+
Event.print('INSTALL', "The '#{repo_module}' module " +
|
66
|
+
"has been installed in this '.#{module_path.sub(path, '')}' folder.")
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def new_project name, path
|
71
|
+
root_path = Event::emit(:root_path)
|
72
|
+
unless path
|
73
|
+
path = Dir.pwd
|
74
|
+
end
|
75
|
+
is_copy = system("cp -r '#{root_path}/mygame' '#{path}/#{name}'")
|
76
|
+
if is_copy
|
77
|
+
Event.print('NEW', "The '#{name}' project has been created.")
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module DragonrubyEgg
|
2
|
+
module Modules
|
3
|
+
module_function
|
4
|
+
|
5
|
+
def get_module_url(repo_module)
|
6
|
+
modules = Database.get_modules()
|
7
|
+
|
8
|
+
modules.each do |_module|
|
9
|
+
author = _module["author"]
|
10
|
+
name = _module["name"]
|
11
|
+
url = _module["github_url"]
|
12
|
+
|
13
|
+
if repo_module.index(/^(#{author}.)?#{name}$/)
|
14
|
+
is_correct = Event.emit(:input_correct, author, name)
|
15
|
+
if is_correct
|
16
|
+
return url
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end # modules each
|
20
|
+
|
21
|
+
return nil
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/json_parser.rb
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
require "json"
|
2
|
+
require 'fileutils'
|
3
|
+
|
4
|
+
class JsonParser
|
5
|
+
attr_reader :path, :db
|
6
|
+
|
7
|
+
def initialize path, auto_write = true
|
8
|
+
@path = path
|
9
|
+
@db = open @path
|
10
|
+
@auto_write = auto_write
|
11
|
+
end
|
12
|
+
|
13
|
+
def on symbol, value
|
14
|
+
unless @db.include?(symbol.to_s)
|
15
|
+
parse symbol, value
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def on_handler symbol, handler, &block
|
20
|
+
unless @db.include?(symbol.to_s)
|
21
|
+
block.call(false) if block
|
22
|
+
value = handler.call()
|
23
|
+
if value
|
24
|
+
parse symbol, value
|
25
|
+
block.call(true, value) if block
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def parse symbols, value = nil, delete = nil
|
31
|
+
symbols_join = ""
|
32
|
+
if symbols.class.name == "Array"
|
33
|
+
symbols_join = symbols.join("\"][\"")
|
34
|
+
else
|
35
|
+
symbols_join = symbols.to_s
|
36
|
+
end
|
37
|
+
symbols_join = "[\"#{symbols_join}\"]"
|
38
|
+
|
39
|
+
unless delete
|
40
|
+
unless value
|
41
|
+
eval "@db#{ symbols_join }"
|
42
|
+
else
|
43
|
+
eval "@db#{ symbols_join } = value"
|
44
|
+
|
45
|
+
if @auto_write
|
46
|
+
write @path, @db
|
47
|
+
end
|
48
|
+
end
|
49
|
+
else
|
50
|
+
if symbols
|
51
|
+
eval "@db#{ symbols_join }.delete('#{delete}')"
|
52
|
+
else
|
53
|
+
eval "@db.delete('#{delete}')"
|
54
|
+
end
|
55
|
+
|
56
|
+
if @auto_write
|
57
|
+
write @path, @db
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def exist?
|
63
|
+
@db.empty?
|
64
|
+
end
|
65
|
+
|
66
|
+
def delete key, symbols = nil
|
67
|
+
parse(symbols, nil, key)
|
68
|
+
end
|
69
|
+
|
70
|
+
private
|
71
|
+
def open path
|
72
|
+
begin
|
73
|
+
result = String.new
|
74
|
+
File.open path do |f|
|
75
|
+
result = JSON.parse f.read
|
76
|
+
end
|
77
|
+
|
78
|
+
return result
|
79
|
+
rescue
|
80
|
+
return Hash.new
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def write path, db
|
85
|
+
begin
|
86
|
+
create_dir path do
|
87
|
+
|
88
|
+
f = File.new path, "w"
|
89
|
+
f.write JSON.pretty_generate db
|
90
|
+
f.close
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def create_dir path, &callback
|
96
|
+
begin
|
97
|
+
dir_path = File.dirname path
|
98
|
+
unless Dir.exist? dir_path
|
99
|
+
FileUtils.mkpath dir_path
|
100
|
+
end
|
101
|
+
|
102
|
+
callback.call
|
103
|
+
rescue
|
104
|
+
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
class OptionParser
|
2
|
+
|
3
|
+
LEFT = 2
|
4
|
+
MIDDLE = 33
|
5
|
+
|
6
|
+
attr_reader :args
|
7
|
+
|
8
|
+
def self.parse(args = ARGV)
|
9
|
+
parser = OptionParser.new
|
10
|
+
yield parser
|
11
|
+
parser.process args
|
12
|
+
parser
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.last_arg(args = ARGV)
|
16
|
+
args.length >= 1 ? args[args.length - 1] : ''
|
17
|
+
end
|
18
|
+
|
19
|
+
def initialize(args = ARGV)
|
20
|
+
@args = args
|
21
|
+
@banner = nil
|
22
|
+
@flags = Array.new
|
23
|
+
end
|
24
|
+
|
25
|
+
def banner(banner)
|
26
|
+
@banner = banner
|
27
|
+
end
|
28
|
+
|
29
|
+
def on(short_flag, long_flag, description, &block)
|
30
|
+
@flags << { short_flag: short_flag || '', long_flag: long_flag || '',
|
31
|
+
description: description || '', block: block }
|
32
|
+
end
|
33
|
+
|
34
|
+
def process( args = ARGV )
|
35
|
+
unless args.length == 0
|
36
|
+
args.each_with_index do |arg, i|
|
37
|
+
@flags.each do |flag|
|
38
|
+
name = -> (type_flag) do
|
39
|
+
flag[type_flag].gsub( /[a-z -]/, '' )
|
40
|
+
end
|
41
|
+
|
42
|
+
flag_strip = -> (type_flag) do
|
43
|
+
flag[type_flag].sub( name.(type_flag), '' ).strip()
|
44
|
+
end
|
45
|
+
has_flag = -> (type_flag) { arg == flag_strip.(type_flag) }
|
46
|
+
|
47
|
+
if has_flag.(:short_flag) or
|
48
|
+
has_flag.(:long_flag)
|
49
|
+
|
50
|
+
has_name = -> (type_flag) do
|
51
|
+
name.(type_flag) != ""
|
52
|
+
end
|
53
|
+
value = nil
|
54
|
+
|
55
|
+
if has_name.(:short_flag) or
|
56
|
+
has_name.(:long_flag)
|
57
|
+
value = args[i + 1]
|
58
|
+
end
|
59
|
+
|
60
|
+
flag[:block].call( value )
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
else
|
65
|
+
flag = @flags[0]
|
66
|
+
flag[:block].call
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def self.get_empty_spaces
|
71
|
+
" " * (MIDDLE + LEFT)
|
72
|
+
end
|
73
|
+
|
74
|
+
def to_s()
|
75
|
+
io = Array.new
|
76
|
+
if banner = @banner
|
77
|
+
io << banner
|
78
|
+
io << "\n"
|
79
|
+
end
|
80
|
+
|
81
|
+
@flags.each do |flag|
|
82
|
+
l_flag = !flag[:long_flag].empty? ? ", #{flag[:long_flag]}" : ""
|
83
|
+
flags = "#{flag[:short_flag]}#{l_flag}".ljust(MIDDLE)
|
84
|
+
desc = flag[:description].gsub("\n", "\n#{OptionParser.get_empty_spaces}")
|
85
|
+
io << "".ljust(LEFT) + flags + desc
|
86
|
+
io << "\n"
|
87
|
+
end
|
88
|
+
|
89
|
+
io.join
|
90
|
+
end
|
91
|
+
end
|
metadata
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dragonruby-egg
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Filip Vrba
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-04-25 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: With the tool, you can create new projects, install modules into a game
|
14
|
+
project and open documentation using a command. There are many more functions and
|
15
|
+
they are started with the 'dre' command.
|
16
|
+
email: filipvrbaxi@gmail.com
|
17
|
+
executables:
|
18
|
+
- dre
|
19
|
+
extensions: []
|
20
|
+
extra_rdoc_files: []
|
21
|
+
files:
|
22
|
+
- app/arguments.rb
|
23
|
+
- app/configuration.rb
|
24
|
+
- app/inputs.rb
|
25
|
+
- app/main.rb
|
26
|
+
- bin/dre
|
27
|
+
- lib/dragonruby_egg.rb
|
28
|
+
- lib/dragonruby_egg/constants.rb
|
29
|
+
- lib/dragonruby_egg/database.rb
|
30
|
+
- lib/dragonruby_egg/event.rb
|
31
|
+
- lib/dragonruby_egg/executable.rb
|
32
|
+
- lib/dragonruby_egg/modules.rb
|
33
|
+
- lib/json_parser.rb
|
34
|
+
- lib/option_parser.rb
|
35
|
+
homepage: https://dragonruby-egg-ui-rjs.vercel.app/
|
36
|
+
licenses:
|
37
|
+
- MIT
|
38
|
+
metadata:
|
39
|
+
source_code_uri: https://github.com/filipvrba/dragonruby-egg-rb
|
40
|
+
post_install_message:
|
41
|
+
rdoc_options: []
|
42
|
+
require_paths:
|
43
|
+
- lib
|
44
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
requirements: []
|
55
|
+
rubygems_version: 3.4.10
|
56
|
+
signing_key:
|
57
|
+
specification_version: 4
|
58
|
+
summary: DragonRuby-Egg is a tool for managing DragonRuby.
|
59
|
+
test_files: []
|