Class: Gamefic::Sdk::Shell

Inherits:
Thor
  • Object
show all
Defined in:
lib/gamefic-sdk/shell.rb,
lib/gamefic-sdk/shell/init.rb,
lib/gamefic-sdk/shell/test.rb

Defined Under Namespace

Classes: Init, Test

Instance Method Summary collapse

Instance Method Details

#build(directory_name = '.') ⇒ Object



53
54
55
# File 'lib/gamefic-sdk/shell.rb', line 53

def build(directory_name = '.')
  Gamefic::Sdk::Build.release(directory_name, options[:quiet])
end

#clean(directory_name = '.') ⇒ Object



58
59
60
# File 'lib/gamefic-sdk/shell.rb', line 58

def clean(directory_name = '.')
  Gamefic::Sdk::Build.clean(directory_name)
end

#default_config(directory_name = '.') ⇒ Object



83
84
85
86
87
88
# File 'lib/gamefic-sdk/shell.rb', line 83

def default_config(directory_name = '.')
  File.open(File.join(directory_name, 'config.yml'), 'w') do |file|
    file << Gamefic::Sdk::Config.generate
  end
  puts "Default config.yml created."
end

#import(directory_name = '.') ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/gamefic-sdk/shell.rb', line 64

def import(directory_name = '.')
  config = Gamefic::Sdk::Config.load directory_name
  FileUtils.remove_entry_secure config.import_path if File.exist?(config.import_path)
  FileUtils.mkdir_p config.import_path
  paths = [config.script_path, Gamefic::Sdk::GLOBAL_SCRIPT_PATH]
  plot = Gamefic::Sdk::Debug::Plot.new Source::File.new(*paths)
  plot.script 'main'
  plot.imported_scripts.each { |s|
    next unless s.absolute_path.start_with?(Gamefic::Sdk::GLOBAL_SCRIPT_PATH)
    src = File.absolute_path(s.absolute_path)
    dst = File.absolute_path(File.join(directory_name, 'imports', "#{s.path}.plot.rb"))
    next if src == dst
    puts "Importing #{s.path}" unless options[:quiet]
    FileUtils.mkdir_p(File.dirname(dst))
    FileUtils.cp_r(src, dst)
  }
end

#init(directory_name) ⇒ Object



28
29
30
31
32
33
34
# File 'lib/gamefic-sdk/shell.rb', line 28

def init(directory_name)
  Gamefic::Sdk::Shell::Init.new(
    directory: directory_name, quiet: options[:quiet], scripts: options[:scripts],
    webskin: options[:webskin], title: options[:title], author: options[:author],
    webdir: options[:webdir]
  ).run
end

#script(path = nil) ⇒ Object



98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# File 'lib/gamefic-sdk/shell.rb', line 98

def script path = nil
  if path.nil?
    s = []
    Dir[File.join GLOBAL_SCRIPT_PATH, '**', '*.rb'].each { |f|
      c = File.read(f)
      c.each_line { |l|
        match = l.match(/[\s]*#[\s]*@gamefic.script[ ]+([a-z0-9\/]+)/)
        unless match.nil?
          s.push(match[1])
        end
      }
    }
    puts s.sort.join("\n")
  else
    document_script path
  end
end

#server(directory_name = '.') ⇒ Object



43
44
45
46
47
48
49
# File 'lib/gamefic-sdk/shell.rb', line 43

def server(directory_name = '.')
  Gamefic::Sdk::Server.set :source_dir, directory_name
  Gamefic::Sdk::Server.set :browser, options[:browser]
  pub = File.join(directory_name, 'release', 'sinatra').gsub(/\\/, '/')
  Gamefic::Sdk::Server.set :public_folder, pub
  Gamefic::Sdk::Server.run!
end

#test(directory_name = '.') ⇒ Object



37
38
39
# File 'lib/gamefic-sdk/shell.rb', line 37

def test(directory_name = '.')
  Gamefic::Sdk::Shell::Test.new(directory: directory_name).run
end

#versionObject



15
16
17
18
# File 'lib/gamefic-sdk/shell.rb', line 15

def version
  puts "gamefic-sdk #{Gamefic::Sdk::VERSION}"
  puts "gamefic #{Gamefic::VERSION}"
end

#webskinsObject



91
92
93
94
95
# File 'lib/gamefic-sdk/shell.rb', line 91

def webskins
  Dir[File.join(Gamefic::Sdk::HTML_TEMPLATE_PATH, 'skins', '*')].sort.each { |d|
    puts File.basename(d)
  }
end