52 lines
1.0 KiB
Ruby
52 lines
1.0 KiB
Ruby
require 'getoptlong'
|
|
|
|
require 'classes.rb'
|
|
require 'rules.rb'
|
|
require 'setup.rb'
|
|
|
|
$version = '0.1' # 프로그램 버전 문자열
|
|
$error = false # 검증 수행 중 오류를 만나면 true로 설정
|
|
|
|
def show_version
|
|
puts "SUN Online Game Script Checker v#{$version}"
|
|
end
|
|
|
|
def show_version_and_exit
|
|
show_version
|
|
exit(0)
|
|
end
|
|
|
|
def set_error
|
|
$error = true unless $error
|
|
end
|
|
|
|
opts = GetoptLong.new(
|
|
[ '--no-pause', '-n', GetoptLong::NO_ARGUMENT ],
|
|
[ '--version', '-v', GetoptLong::NO_ARGUMENT ]
|
|
)
|
|
|
|
no_pause = false
|
|
opts.each do |opt, arg|
|
|
case opt
|
|
when '--no-pause' then no_pause = true
|
|
when '--version' then show_version_and_exit
|
|
end
|
|
end
|
|
|
|
checker = ScriptChecker.new
|
|
|
|
# 명령행 인자가 없다면 현재 디렉토리, 있다면 첫 번째 인자로 지정된 디렉토리 사용
|
|
checker.dir = ARGV.length < 1 ? 'data' : ARGV[0]
|
|
|
|
setup(checker) # 검증 설정 구성
|
|
|
|
show_version
|
|
|
|
checker.run # 검증 실행
|
|
|
|
puts "[#{$error ? 'ERROR' : 'OK'}] Checked #{checker.num_scripts} script(s)"
|
|
|
|
system('pause') unless no_pause
|
|
|
|
exit($error ? 1 : 0)
|