def path
      return @path if @path

      path = attributes[:path] || name
      path = render(path)
      if (path && !Pathname.new(path).absolute?)
        # expand path if starts with '~'
        path = File.expand_path(path) if path.match(/^~/)
        # paths can be relative to cwd
        path = File.join(File.expand_path(FileUtils.pwd), path) if (!Pathname.new(path).absolute?)
      end
      @path = path
    end
def path
      return @path if @path

      path = attributes[:path] || name
      path = render(path)
      if (path && !Pathname.new(path).absolute?)
        # expand path if starts with '~'
        path = File.expand_path(path) if path.match(/^~/)
        # paths can be relative to cwd
        path = File.join(File.expand_path(FileUtils.pwd), path) if (!Pathname.new(path).absolute?)
      end
      @path = path
    end
--- Asset attributes START here ---

 Asset defined path

 Defaults to asset name when the path attribute is blank

 NOTE: This is not the path to the asset configuration file. If not an
 absolute path, then it is relative to the current working directory

 @example Full paths

     path: /home/robert/photos/photo1.jpg

     path: /home/robert/app/appfolder

 @example Home folder '~' paths are expanded automatically

     path: ~/photos/photo1.jpg  -> /home/robert/photos/photo1.jpg

 @example Relative paths are expanded automatically relative to the CWD

     path: photos/photo1.jpg  -> /home/robert/photos/photo1.jpg

 @example Mustache templates are supported

     path: /home/robert/{{name}}/appfolder -> /home/robert/app1/appfolder

 @example Mustache braces that come at the start must be quoted

     path: "{{name}}/appfolder" -> /home/robert/app1/appfolder

 @return [String] an absolute path