mirror of
https://github.com/hathach/tinyusb.git
synced 2025-01-17 05:32:55 +08:00
39 lines
988 B
Ruby
39 lines
988 B
Ruby
|
module TargetLoader
|
||
|
class NoTargets < Exception; end
|
||
|
class NoDirectory < Exception; end
|
||
|
class NoDefault < Exception; end
|
||
|
class NoSuchTarget < Exception; end
|
||
|
|
||
|
class RequestReload < Exception; end
|
||
|
|
||
|
def self.inspect(config, target_name=nil)
|
||
|
unless config[:targets]
|
||
|
raise NoTargets
|
||
|
end
|
||
|
|
||
|
targets = config[:targets]
|
||
|
unless targets[:targets_directory]
|
||
|
raise NoDirectory("No targets directory specified.")
|
||
|
end
|
||
|
unless targets[:default_target]
|
||
|
raise NoDefault("No default target specified.")
|
||
|
end
|
||
|
|
||
|
target_path = lambda {|name| File.join(targets[:targets_directory], name + ".yml")}
|
||
|
|
||
|
target = if target_name
|
||
|
target_path.call(target_name)
|
||
|
else
|
||
|
target_path.call(targets[:default_target])
|
||
|
end
|
||
|
|
||
|
unless File.exists? target
|
||
|
raise NoSuchTarget.new("No such target: #{target}")
|
||
|
end
|
||
|
|
||
|
ENV['CEEDLING_MAIN_PROJECT_FILE'] = target
|
||
|
|
||
|
raise RequestReload
|
||
|
end
|
||
|
end
|