class CKick::Target
common representation of targets to build, such as executables and libraries
Public Class Methods
new(args={})
click to toggle source
-
args
-Target
hash (directly a CKickfile target element's hash parsed with keys as Symbol), must be aHash
Input hash keys¶ ↑
-
:name
- name of the target -
:source
- either aString
(single-source file) orArray
ofString
(multiple source files) -
:libs
- names of the libraries to link to the target, must beArray
ofString
# File lib/ckick/target.rb, line 21 def initialize args={} raise IllegalInitializationError unless args.is_a?(Hash) && !args.empty? name = args[:name] || "" raise NoNameError, "No target name given for target" unless name.is_a?(String) && !name.empty? @name = name source = args[:source] || [] if source.is_a? Array raise NoSourceError, "No source file provided for target #{@name}" if source.empty? raise BadSourceError, "Bad source file names provided for target #{@name}: #{source}" unless source.select { |el| !el.is_a?(String) }.empty? @source = source elsif source.is_a? String @source = [source] else raise BadSourceError, "Bad source file name provided for target #{@name}" end @libs = [] libs = args[:libs] || [] if libs.is_a?(Array) raise BadLibError, "Bad library name provided for target #{@name}: #{libs}" unless libs.select { |el| !el.is_a?(String) }.empty? libs.each do |lib| @libs << LibraryLink.new(name: lib) end elsif libs.is_a?(String) @libs << LibraryLink.new(name: libs) else raise BadLibError, "Bad library name provided for target #{@name}: #{libs}" end @parent_dir = nil end
Public Instance Methods
create_structure()
click to toggle source
creates target's structure (each missing source file)
# File lib/ckick/target.rb, line 76 def create_structure paths.each do |path| unless File.exist? path PathDelegate.touch_file(path) end end end
paths()
click to toggle source
Array
of source file paths
# File lib/ckick/target.rb, line 66 def paths raise NoParentDirError, "No parent directory has been set for target #{@name}" unless @parent_dir res = [] @source.each do |source_file| res << File.join(@parent_dir, source_file) end res end
to_hash()
click to toggle source
converts to Hash
(for CKickfile)
# File lib/ckick/target.rb, line 56 def to_hash to_no_empty_value_hash.without(:parent_dir) end
to_s()
click to toggle source
converts to String
, the target's name as is
# File lib/ckick/target.rb, line 61 def to_s @name end
Private Instance Methods
set_parent(parent_dir)
click to toggle source
set's parent directory
# File lib/ckick/target.rb, line 87 def set_parent(parent_dir) @parent_dir = parent_dir end