mirror of
https://github.com/hathach/tinyusb.git
synced 2025-01-17 05:32:55 +08:00
bc735bbe22
- unified makefile project for the whole repos - new separate project for tests
65 lines
2.3 KiB
Ruby
65 lines
2.3 KiB
Ruby
require 'constants'
|
|
|
|
|
|
class ProjectFileLoader
|
|
|
|
attr_reader :main_file, :user_file
|
|
|
|
constructor :yaml_wrapper, :stream_wrapper, :system_wrapper, :file_wrapper
|
|
|
|
def setup
|
|
@main_file = nil
|
|
@user_file = nil
|
|
|
|
@main_project_filepath = ''
|
|
@user_project_filepath = ''
|
|
end
|
|
|
|
|
|
def find_project_files
|
|
# first go hunting for optional user project file by looking for environment variable and then default location on disk
|
|
user_filepath = @system_wrapper.env_get('CEEDLING_USER_PROJECT_FILE')
|
|
|
|
if ( not user_filepath.nil? and @file_wrapper.exist?(user_filepath) )
|
|
@user_project_filepath = user_filepath
|
|
elsif (@file_wrapper.exist?(DEFAULT_CEEDLING_USER_PROJECT_FILE))
|
|
@user_project_filepath = DEFAULT_CEEDLING_USER_PROJECT_FILE
|
|
end
|
|
|
|
# next check for main project file by looking for environment variable and then default location on disk;
|
|
# blow up if we don't find this guy -- like, he's so totally important
|
|
main_filepath = @system_wrapper.env_get('CEEDLING_MAIN_PROJECT_FILE')
|
|
|
|
if ( not main_filepath.nil? and @file_wrapper.exist?(main_filepath) )
|
|
@main_project_filepath = main_filepath
|
|
elsif (@file_wrapper.exist?(DEFAULT_CEEDLING_MAIN_PROJECT_FILE))
|
|
@main_project_filepath = DEFAULT_CEEDLING_MAIN_PROJECT_FILE
|
|
else
|
|
# no verbosity checking since this is lowest level reporting anyhow &
|
|
# verbosity checking depends on configurator which in turns needs this class (circular dependency)
|
|
@stream_wrapper.stderr_puts('Found no Ceedling project file (*.yml)')
|
|
raise
|
|
end
|
|
|
|
@main_file = File.basename( @main_project_filepath )
|
|
@user_file = File.basename( @user_project_filepath ) if ( not @user_project_filepath.empty? )
|
|
end
|
|
|
|
|
|
def load_project_config
|
|
config_hash = {}
|
|
|
|
# if there's no user project file, then just provide hash from project file
|
|
if (@user_project_filepath.empty?)
|
|
config_hash = @yaml_wrapper.load(@main_project_filepath)
|
|
# if there is a user project file, load it too and merge it on top of the project file,
|
|
# superseding anything that's common between them
|
|
else
|
|
config_hash = (@yaml_wrapper.load(@main_project_filepath)).merge(@yaml_wrapper.load(@user_project_filepath))
|
|
end
|
|
|
|
return config_hash
|
|
end
|
|
|
|
end
|