Sha256: 17c5967a512de26de5b3d679997778c845ea88b85e780518259d08a2ba6c60cd

Contents?: true

Size: 1.67 KB

Versions: 5

Compression:

Stored size: 1.67 KB

Contents

#!/usr/bin/env ruby

dir = File.expand_path(File.dirname(__FILE__))
current_version = File.read(File.join(File.dirname(__FILE__), '../VERSION')).sub(/\n/, '')
require "#{dir}/../lib/sfplanner"

opts = Trollop::options do
	version "sfplanner " + current_version + " (c) 2013 Herry"
	banner <<-EOS
Solve a planning task specified in SFP language, and print the plan (if found) in JSON format.

Usage:
       sfplanner [options] <file>

where [options] are:
EOS

	opt :parallel, "Generate a parallel (partial-order) plan, instead of sequential.", :short => '-l'
	opt :json_input, "Input is in JSON format", :short => '-j'
	opt :pretty_json, "Print the plan in pretty JSON format", :short => '-r'
	opt :image, "Generate a graph image (PNG) of the plan"
	opt :output, "Output file path", :default => ''
end

def parse(filepath)
	home_dir = File.expand_path(File.dirname(filepath))
	parser = Sfp::Parser.new({:home_dir => home_dir})
	parser.parse(File.read(filepath))
	parser
end

if ARGV[0]
	planner = Sfp::Planner.new
	opts[:file] = ARGV[0]
	opts[:json] = (!opts[:pretty_json] and !opts[:dot])
	opts[:dot] = true if opts[:image]

	result = planner.solve(opts)
	if !opts[:image]
		if opts[:output].length > 0
			File.open(opts[:output], 'w') { |f|
				f.write(result)
				f.flush
			}
		else
			puts result
		end
	else
		if opts[:output].length <= 0
			parts = ARGV[0].split('/')
			src_file = parts[parts.length-1]
			parts = src_file.split('.')
			opts[:output] = src_file[0, src_file.length-1-parts[parts.length-1].length] if parts.length >= 2
			opts[:output] += '.png'
		end
		if !Sfp::Graph.dot2image(result, opts[:output])
			$stderr.puts "Cannot generate the image graph!"
		end
	end

else
	Trollop::help
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
sfplanner-0.2.4 bin/sfplanner
sfplanner-0.2.3 bin/sfplanner
sfplanner-0.2.1 bin/sfplanner
sfplanner-0.1.5 bin/sfplanner
sfplanner-0.1.4 bin/sfplanner