code: def compile
        if !Dir.exist?('.spectro')
          abort "\n" + "This folder has not been initialzed as an Spectro project. Please run ".white.on_red + " spectro init ".white.on_light_black + " before compiling.".white.on_red + "\n\n"
        end
  
        undefined_yaml = YAML::Store.new(".spectro/undefined.yml")
        undefined_yaml.transaction do
          targets().map do |path|
            missing_specs = missing_specs_from_file(path)
  
            next if missing_specs.empty?
  
            undefined_yaml[path] = missing_specs
          end
        end
  
        return self
      end
docs: Filters the project files keeping those that make use of Spectro.
   It then parses them, check for missing implementations
   and creates an .spectro/undefined.yml with their specs.
  
   @return [Spectro::Compiler] self