diff --git a/icons/application-vnd.jpg b/icons/application-vnd.jpg new file mode 100644 index 0000000..4e804c0 Binary files /dev/null and b/icons/application-vnd.jpg differ diff --git a/icons/application-x-cd-image.jpg b/icons/application-x-cd-image.jpg new file mode 100644 index 0000000..2f224df Binary files /dev/null and b/icons/application-x-cd-image.jpg differ diff --git a/icons/changelog.jpg b/icons/changelog.jpg new file mode 100644 index 0000000..51bf695 Binary files /dev/null and b/icons/changelog.jpg differ diff --git a/icons/dmg.png b/icons/dmg.png new file mode 100644 index 0000000..056e616 Binary files /dev/null and b/icons/dmg.png differ diff --git a/icons/folder-activities.jpg b/icons/folder-activities.jpg new file mode 100644 index 0000000..6eeeb3a Binary files /dev/null and b/icons/folder-activities.jpg differ diff --git a/icons/folder-black.jpg b/icons/folder-black.jpg new file mode 100644 index 0000000..93b82fc Binary files /dev/null and b/icons/folder-black.jpg differ diff --git a/icons/folder-blue.jpg b/icons/folder-blue.jpg new file mode 100644 index 0000000..602899e Binary files /dev/null and b/icons/folder-blue.jpg differ diff --git a/icons/folder-bookmark.jpg b/icons/folder-bookmark.jpg new file mode 100644 index 0000000..143b523 Binary files /dev/null and b/icons/folder-bookmark.jpg differ diff --git a/icons/folder-brown.jpg b/icons/folder-brown.jpg new file mode 100644 index 0000000..502228f Binary files /dev/null and b/icons/folder-brown.jpg differ diff --git a/icons/folder-cyan.jpg b/icons/folder-cyan.jpg new file mode 100644 index 0000000..fd3bdeb Binary files /dev/null and b/icons/folder-cyan.jpg differ diff --git a/icons/folder-development.jpg b/icons/folder-development.jpg new file mode 100644 index 0000000..0b8e206 Binary files /dev/null and b/icons/folder-development.jpg differ diff --git a/icons/folder-documents.jpg b/icons/folder-documents.jpg new file mode 100644 index 0000000..93da4d8 Binary files /dev/null and b/icons/folder-documents.jpg differ diff --git a/icons/folder-downloads.jpg b/icons/folder-downloads.jpg new file mode 100644 index 0000000..de5dcb3 Binary files /dev/null and b/icons/folder-downloads.jpg differ diff --git a/icons/folder-favorites.jpg b/icons/folder-favorites.jpg new file mode 100644 index 0000000..1aef6bb Binary files /dev/null and b/icons/folder-favorites.jpg differ diff --git a/icons/folder-green.jpg b/icons/folder-green.jpg new file mode 100644 index 0000000..9e318c8 Binary files /dev/null and b/icons/folder-green.jpg differ diff --git a/icons/folder-grey.jpg b/icons/folder-grey.jpg new file mode 100644 index 0000000..525e83c Binary files /dev/null and b/icons/folder-grey.jpg differ diff --git a/icons/folder-html.jpg b/icons/folder-html.jpg new file mode 100644 index 0000000..8642a40 Binary files /dev/null and b/icons/folder-html.jpg differ diff --git a/icons/folder-image-people.jpg b/icons/folder-image-people.jpg new file mode 100644 index 0000000..8f1be10 Binary files /dev/null and b/icons/folder-image-people.jpg differ diff --git a/icons/folder-image.jpg b/icons/folder-image.jpg new file mode 100644 index 0000000..b7b8822 Binary files /dev/null and b/icons/folder-image.jpg differ diff --git a/icons/folder-important.jpg b/icons/folder-important.jpg new file mode 100644 index 0000000..20a132a Binary files /dev/null and b/icons/folder-important.jpg differ diff --git a/icons/folder-locked.jpg b/icons/folder-locked.jpg new file mode 100644 index 0000000..ad710d3 Binary files /dev/null and b/icons/folder-locked.jpg differ diff --git a/icons/folder-network.jpg b/icons/folder-network.jpg new file mode 100644 index 0000000..d9e7b9e Binary files /dev/null and b/icons/folder-network.jpg differ diff --git a/icons/folder-orange.jpg b/icons/folder-orange.jpg new file mode 100644 index 0000000..43d0367 Binary files /dev/null and b/icons/folder-orange.jpg differ diff --git a/icons/folder-print.jpg b/icons/folder-print.jpg new file mode 100644 index 0000000..13296e0 Binary files /dev/null and b/icons/folder-print.jpg differ diff --git a/icons/folder-red.jpg b/icons/folder-red.jpg new file mode 100644 index 0000000..64d4f5f Binary files /dev/null and b/icons/folder-red.jpg differ diff --git a/icons/folder-remote.jpg b/icons/folder-remote.jpg new file mode 100644 index 0000000..8e62177 Binary files /dev/null and b/icons/folder-remote.jpg differ diff --git a/icons/folder-sound.jpg b/icons/folder-sound.jpg new file mode 100644 index 0000000..868f6ff Binary files /dev/null and b/icons/folder-sound.jpg differ diff --git a/icons/folder-tar.jpg b/icons/folder-tar.jpg new file mode 100644 index 0000000..4a87c27 Binary files /dev/null and b/icons/folder-tar.jpg differ diff --git a/icons/folder-temp.jpg b/icons/folder-temp.jpg new file mode 100644 index 0000000..a7b19ad Binary files /dev/null and b/icons/folder-temp.jpg differ diff --git a/icons/folder-txt.jpg b/icons/folder-txt.jpg new file mode 100644 index 0000000..98564a9 Binary files /dev/null and b/icons/folder-txt.jpg differ diff --git a/icons/folder-video.jpg b/icons/folder-video.jpg new file mode 100644 index 0000000..91900f3 Binary files /dev/null and b/icons/folder-video.jpg differ diff --git a/icons/folder-violet.jpg b/icons/folder-violet.jpg new file mode 100644 index 0000000..47cc929 Binary files /dev/null and b/icons/folder-violet.jpg differ diff --git a/icons/folder-yellow.jpg b/icons/folder-yellow.jpg new file mode 100644 index 0000000..ab20bcb Binary files /dev/null and b/icons/folder-yellow.jpg differ diff --git a/icons/folder.jpg b/icons/folder.jpg new file mode 100644 index 0000000..9d8d74c Binary files /dev/null and b/icons/folder.jpg differ diff --git a/icons/hash.jpg b/icons/hash.jpg new file mode 100644 index 0000000..b79b74c Binary files /dev/null and b/icons/hash.jpg differ diff --git a/icons/html.jpg b/icons/html.jpg new file mode 100644 index 0000000..5001d8b Binary files /dev/null and b/icons/html.jpg differ diff --git a/icons/image-svg+xml-compressed.jpg b/icons/image-svg+xml-compressed.jpg new file mode 100644 index 0000000..f3e3126 Binary files /dev/null and b/icons/image-svg+xml-compressed.jpg differ diff --git a/icons/image-svg+xml.jpg b/icons/image-svg+xml.jpg new file mode 100644 index 0000000..855b487 Binary files /dev/null and b/icons/image-svg+xml.jpg differ diff --git a/icons/image-vnd.jpg b/icons/image-vnd.jpg new file mode 100644 index 0000000..369bd0f Binary files /dev/null and b/icons/image-vnd.jpg differ diff --git a/icons/image-x-adobe-dng.jpg b/icons/image-x-adobe-dng.jpg new file mode 100644 index 0000000..55b79ad Binary files /dev/null and b/icons/image-x-adobe-dng.jpg differ diff --git a/icons/image-x-eps.jpg b/icons/image-x-eps.jpg new file mode 100644 index 0000000..5aac806 Binary files /dev/null and b/icons/image-x-eps.jpg differ diff --git a/icons/image-x-generic.jpg b/icons/image-x-generic.jpg new file mode 100644 index 0000000..9b3c23e Binary files /dev/null and b/icons/image-x-generic.jpg differ diff --git a/icons/image-x-vnd.jpg b/icons/image-x-vnd.jpg new file mode 100644 index 0000000..e7eba4b Binary files /dev/null and b/icons/image-x-vnd.jpg differ diff --git a/icons/image-x-xfig.jpg b/icons/image-x-xfig.jpg new file mode 100644 index 0000000..855b487 Binary files /dev/null and b/icons/image-x-xfig.jpg differ diff --git a/icons/image.jpg b/icons/image.jpg new file mode 100644 index 0000000..dc1f969 Binary files /dev/null and b/icons/image.jpg differ diff --git a/icons/install.jpg b/icons/install.jpg new file mode 100644 index 0000000..f58ff63 Binary files /dev/null and b/icons/install.jpg differ diff --git a/icons/readme.jpg b/icons/readme.jpg new file mode 100644 index 0000000..376526f Binary files /dev/null and b/icons/readme.jpg differ diff --git a/icons/script.jpg b/icons/script.jpg new file mode 100644 index 0000000..584394b Binary files /dev/null and b/icons/script.jpg differ diff --git a/icons/signature.jpg b/icons/signature.jpg new file mode 100644 index 0000000..d3b61d0 Binary files /dev/null and b/icons/signature.jpg differ diff --git a/icons/symlink.jpg b/icons/symlink.jpg new file mode 100644 index 0000000..13a0334 Binary files /dev/null and b/icons/symlink.jpg differ diff --git a/icons/tar.jpg b/icons/tar.jpg new file mode 100644 index 0000000..ce229c6 Binary files /dev/null and b/icons/tar.jpg differ diff --git a/icons/text-calendar.jpg b/icons/text-calendar.jpg new file mode 100644 index 0000000..683a1ce Binary files /dev/null and b/icons/text-calendar.jpg differ diff --git a/icons/text-css.jpg b/icons/text-css.jpg new file mode 100644 index 0000000..fcbe6d4 Binary files /dev/null and b/icons/text-css.jpg differ diff --git a/icons/text-csv.jpg b/icons/text-csv.jpg new file mode 100644 index 0000000..da00f84 Binary files /dev/null and b/icons/text-csv.jpg differ diff --git a/icons/text-directory.jpg b/icons/text-directory.jpg new file mode 100644 index 0000000..de1cc91 Binary files /dev/null and b/icons/text-directory.jpg differ diff --git a/icons/text-enriched.jpg b/icons/text-enriched.jpg new file mode 100644 index 0000000..8b89ac4 Binary files /dev/null and b/icons/text-enriched.jpg differ diff --git a/icons/text-html.jpg b/icons/text-html.jpg new file mode 100644 index 0000000..f4122ff Binary files /dev/null and b/icons/text-html.jpg differ diff --git a/icons/text-mathml.jpg b/icons/text-mathml.jpg new file mode 100644 index 0000000..d6b0625 Binary files /dev/null and b/icons/text-mathml.jpg differ diff --git a/icons/text-plain.jpg b/icons/text-plain.jpg new file mode 100644 index 0000000..51bf695 Binary files /dev/null and b/icons/text-plain.jpg differ diff --git a/icons/text-rdf+xml.jpg b/icons/text-rdf+xml.jpg new file mode 100644 index 0000000..04626cc Binary files /dev/null and b/icons/text-rdf+xml.jpg differ diff --git a/icons/text-rdf.jpg b/icons/text-rdf.jpg new file mode 100644 index 0000000..04626cc Binary files /dev/null and b/icons/text-rdf.jpg differ diff --git a/icons/text-rtf.jpg b/icons/text-rtf.jpg new file mode 100644 index 0000000..38b8c19 Binary files /dev/null and b/icons/text-rtf.jpg differ diff --git a/icons/text-sgml.jpg b/icons/text-sgml.jpg new file mode 100644 index 0000000..56bc971 Binary files /dev/null and b/icons/text-sgml.jpg differ diff --git a/icons/text-troff.jpg b/icons/text-troff.jpg new file mode 100644 index 0000000..42deea5 Binary files /dev/null and b/icons/text-troff.jpg differ diff --git a/icons/text-vcalendar.jpg b/icons/text-vcalendar.jpg new file mode 100644 index 0000000..75340b9 Binary files /dev/null and b/icons/text-vcalendar.jpg differ diff --git a/icons/text-vnd.jpg b/icons/text-vnd.jpg new file mode 100644 index 0000000..98d02fb Binary files /dev/null and b/icons/text-vnd.jpg differ diff --git a/icons/text-x-adasrc.jpg b/icons/text-x-adasrc.jpg new file mode 100644 index 0000000..f8856f7 Binary files /dev/null and b/icons/text-x-adasrc.jpg differ diff --git a/icons/text-x-authors.jpg b/icons/text-x-authors.jpg new file mode 100644 index 0000000..1aa8898 Binary files /dev/null and b/icons/text-x-authors.jpg differ diff --git a/icons/text-x-bibtex.jpg b/icons/text-x-bibtex.jpg new file mode 100644 index 0000000..04709bd Binary files /dev/null and b/icons/text-x-bibtex.jpg differ diff --git a/icons/text-x-c++hdr.jpg b/icons/text-x-c++hdr.jpg new file mode 100644 index 0000000..a113e2c Binary files /dev/null and b/icons/text-x-c++hdr.jpg differ diff --git a/icons/text-x-c++src.jpg b/icons/text-x-c++src.jpg new file mode 100644 index 0000000..7021cd7 Binary files /dev/null and b/icons/text-x-c++src.jpg differ diff --git a/icons/text-x-changelog.jpg b/icons/text-x-changelog.jpg new file mode 100644 index 0000000..51bf695 Binary files /dev/null and b/icons/text-x-changelog.jpg differ diff --git a/icons/text-x-chdr.jpg b/icons/text-x-chdr.jpg new file mode 100644 index 0000000..eb465d1 Binary files /dev/null and b/icons/text-x-chdr.jpg differ diff --git a/icons/text-x-cmake.jpg b/icons/text-x-cmake.jpg new file mode 100644 index 0000000..150a6c5 Binary files /dev/null and b/icons/text-x-cmake.jpg differ diff --git a/icons/text-x-copying.jpg b/icons/text-x-copying.jpg new file mode 100644 index 0000000..7b0f611 Binary files /dev/null and b/icons/text-x-copying.jpg differ diff --git a/icons/text-x-csharp.jpg b/icons/text-x-csharp.jpg new file mode 100644 index 0000000..9811964 Binary files /dev/null and b/icons/text-x-csharp.jpg differ diff --git a/icons/text-x-csrc.jpg b/icons/text-x-csrc.jpg new file mode 100644 index 0000000..0ac0e8c Binary files /dev/null and b/icons/text-x-csrc.jpg differ diff --git a/icons/text-x-dtd.jpg b/icons/text-x-dtd.jpg new file mode 100644 index 0000000..484697a Binary files /dev/null and b/icons/text-x-dtd.jpg differ diff --git a/icons/text-x-generic.jpg b/icons/text-x-generic.jpg new file mode 100644 index 0000000..56bc971 Binary files /dev/null and b/icons/text-x-generic.jpg differ diff --git a/icons/text-x-haskell.jpg b/icons/text-x-haskell.jpg new file mode 100644 index 0000000..d2864e9 Binary files /dev/null and b/icons/text-x-haskell.jpg differ diff --git a/icons/text-x-hex.jpg b/icons/text-x-hex.jpg new file mode 100644 index 0000000..52cf216 Binary files /dev/null and b/icons/text-x-hex.jpg differ diff --git a/icons/text-x-install.jpg b/icons/text-x-install.jpg new file mode 100644 index 0000000..f58ff63 Binary files /dev/null and b/icons/text-x-install.jpg differ diff --git a/icons/text-x-java.jpg b/icons/text-x-java.jpg new file mode 100644 index 0000000..7ff523a Binary files /dev/null and b/icons/text-x-java.jpg differ diff --git a/icons/text-x-katefilelist.jpg b/icons/text-x-katefilelist.jpg new file mode 100644 index 0000000..9ab2f52 Binary files /dev/null and b/icons/text-x-katefilelist.jpg differ diff --git a/icons/text-x-ldif.jpg b/icons/text-x-ldif.jpg new file mode 100644 index 0000000..43d7fe5 Binary files /dev/null and b/icons/text-x-ldif.jpg differ diff --git a/icons/text-x-lilypond.jpg b/icons/text-x-lilypond.jpg new file mode 100644 index 0000000..d01f5c2 Binary files /dev/null and b/icons/text-x-lilypond.jpg differ diff --git a/icons/text-x-log.jpg b/icons/text-x-log.jpg new file mode 100644 index 0000000..c3e8a72 Binary files /dev/null and b/icons/text-x-log.jpg differ diff --git a/icons/text-x-makefile.jpg b/icons/text-x-makefile.jpg new file mode 100644 index 0000000..a968d55 Binary files /dev/null and b/icons/text-x-makefile.jpg differ diff --git a/icons/text-x-nfo.jpg b/icons/text-x-nfo.jpg new file mode 100644 index 0000000..56bc971 Binary files /dev/null and b/icons/text-x-nfo.jpg differ diff --git a/icons/text-x-objchdr.jpg b/icons/text-x-objchdr.jpg new file mode 100644 index 0000000..eb465d1 Binary files /dev/null and b/icons/text-x-objchdr.jpg differ diff --git a/icons/text-x-objcsrc.jpg b/icons/text-x-objcsrc.jpg new file mode 100644 index 0000000..0ac0e8c Binary files /dev/null and b/icons/text-x-objcsrc.jpg differ diff --git a/icons/text-x-pascal.jpg b/icons/text-x-pascal.jpg new file mode 100644 index 0000000..47836f2 Binary files /dev/null and b/icons/text-x-pascal.jpg differ diff --git a/icons/text-x-patch.jpg b/icons/text-x-patch.jpg new file mode 100644 index 0000000..d64ad40 Binary files /dev/null and b/icons/text-x-patch.jpg differ diff --git a/icons/text-x-po.jpg b/icons/text-x-po.jpg new file mode 100644 index 0000000..8b61822 Binary files /dev/null and b/icons/text-x-po.jpg differ diff --git a/icons/text-x-python.jpg b/icons/text-x-python.jpg new file mode 100644 index 0000000..a22213b Binary files /dev/null and b/icons/text-x-python.jpg differ diff --git a/icons/text-x-qml.jpg b/icons/text-x-qml.jpg new file mode 100644 index 0000000..431d2e2 Binary files /dev/null and b/icons/text-x-qml.jpg differ diff --git a/icons/text-x-readme.jpg b/icons/text-x-readme.jpg new file mode 100644 index 0000000..376526f Binary files /dev/null and b/icons/text-x-readme.jpg differ diff --git a/icons/text-x-rpm-spec.jpg b/icons/text-x-rpm-spec.jpg new file mode 100644 index 0000000..e954396 Binary files /dev/null and b/icons/text-x-rpm-spec.jpg differ diff --git a/icons/text-x-script.jpg b/icons/text-x-script.jpg new file mode 100644 index 0000000..936e3b0 Binary files /dev/null and b/icons/text-x-script.jpg differ diff --git a/icons/text-x-sql.jpg b/icons/text-x-sql.jpg new file mode 100644 index 0000000..fc96e91 Binary files /dev/null and b/icons/text-x-sql.jpg differ diff --git a/icons/text-x-tex.jpg b/icons/text-x-tex.jpg new file mode 100644 index 0000000..04709bd Binary files /dev/null and b/icons/text-x-tex.jpg differ diff --git a/icons/text-x-texinfo.jpg b/icons/text-x-texinfo.jpg new file mode 100644 index 0000000..cc68082 Binary files /dev/null and b/icons/text-x-texinfo.jpg differ diff --git a/icons/text-x-vcard.jpg b/icons/text-x-vcard.jpg new file mode 100644 index 0000000..e1b279e Binary files /dev/null and b/icons/text-x-vcard.jpg differ diff --git a/icons/text-x-xslfo.jpg b/icons/text-x-xslfo.jpg new file mode 100644 index 0000000..484697a Binary files /dev/null and b/icons/text-x-xslfo.jpg differ diff --git a/icons/text-xmcd.jpg b/icons/text-xmcd.jpg new file mode 100644 index 0000000..12244c3 Binary files /dev/null and b/icons/text-xmcd.jpg differ diff --git a/icons/text-xml.jpg b/icons/text-xml.jpg new file mode 100644 index 0000000..54498d0 Binary files /dev/null and b/icons/text-xml.jpg differ diff --git a/icons/text.jpg b/icons/text.jpg new file mode 100644 index 0000000..c170cb9 Binary files /dev/null and b/icons/text.jpg differ diff --git a/icons/video.jpg b/icons/video.jpg new file mode 100644 index 0000000..d0e15ec Binary files /dev/null and b/icons/video.jpg differ diff --git a/index b/index index c92b0e6..4846bf6 100755 --- a/index +++ b/index @@ -24,7 +24,6 @@ VERSION=0.1 QUIET=0 RECURSIVE=0 PARAM=() -LINK_PREFIX="" autoload colors; colors @@ -72,6 +71,61 @@ typeset -alU files # TODO usage() { act "no help ATM sry" } +filetype_icon() { + + { test "$1" = "" } && { error "filetype_icon called without argument"; return 1 } + + path="" + filename="$1" + { test -r "$1" } && { + act "fuletype_icon: argument is not a real path, skipping mimecheck" + path="$1" + filename="${path##*/}" + } + + ext="${filename##*.}" + name="${filename%%.*}" + res="default.jpg" + + # analize extensions, will be overridden by name + case $ext:l in + txt) res=text-plain.jpg ;; + html) res=text-x-html.jpg ;; + xml) res=text-xml.jpg ;; + md5|sha*) res=hash.jpg ;; + asc|gpg) res=signature.jpg ;; + tex|md|org) res=text-x-texinfo.jpg ;; + patch) res=text-x-patch.jpg ;; + sql) res=text-x-sql.jpg ;; + vcart) res=text-x-vcard.jpg ;; + dmg) res=dmg.png ;; + esac + # analize name + case $name:l in + changelog) res=text-x-changelog.jpg ;; + readme) res=text-x-readme.jpg ;; + install) res=text-x-install.jpg ;; + authors) res=text-x-authors.jpg ;; + makefile) res=text-x-makefile.jpg ;; + news|usage) res=text-x-nfo.jpg ;; + copying) res=text-x-copying.jpg ;; + known_bugs|todo) res=text-x-log.jpg ;; + esac + + # check physical file properties + { test "$path" = "" } || { + # is a directory + { test -d "$path" } && { + case $name:l in + sources) res=folder-development.jpg ;; + doc|docs) res=folder-documents.jpg ;; + releases|binaries) res=folder-downloads.jpg ;; + esac + } + # todo using mimetype -b and more + } +} + index_dir() { { test -d "$1" } || { error "cannot index: not a directory '$1'"; return 1 } files=() @@ -85,11 +139,28 @@ index_dir() { return 1 } eval "$ttmp" - act "${#files} files parsed in dir $1" + + act "${#files} files parsed in $1" + + # setup paths for test + { test "$destination" = "test" } && { + LINK_PREFIX="file://$1" + act "LINK_PREFIX = $LINK_PREFIX" + } + + # human size dividers + _mb=$((1024 * 1024)) + _gb=$((1024 * 1024 * 1024)) cat < -FilenameSizeDate + + +Filename +Size +Date +Preview + EOF for f in ${files}; do name="${f[(ws:;:)1]}" @@ -99,32 +170,76 @@ EOF ext="${name##*.}" # file extension file="${1}/${name}" # file path + # format size to human readable form + if [[ $size -lt 1024 ]]; then hsize="$size B" + elif [[ $size -gt 1024 ]]; then hsize="$(( $size / 1024 )) KB" + elif [[ $size -gt 1048576 ]]; then hsize="$(( $size / $mb )) MB" + else hsize="$(( $size / $gb )) GB" + fi + + # format date to human readable form + hdate=`date -d "$date" +'%d %b %Y'` + func "$name \t $size \t $date" + typefield="" + namefield="" + previewfield="" + link="" + icon="" + preview=`preview_file "$file"` - link="$name" - # link ${file}.html if its existing, else link file directly - { test -r "${name%%.*}.html" } && { link="${name%%.*}.html" } - { test "$preview" = "" } || { func "file preview produced" - case $ext:l in - jpg|jpeg|png|gif|pdf) + jpg|jpeg|png|gif|pdf|svg|eps) func "preview is a thumbnail" - preview="\"$name\"" ;; + preview="\"$name\"" + icon="image.jpg" + ;; esac } - -cat <" + typefield="${link}\"symlink\"" + namefield="${link}${name}" + previewfield="" + else # symlink to file + link="" + typefield="${link}\"symlink\"" + namefield="${link}${name}" + previewfield="${link}${preview}" + fi + elif [ -d "$file" ]; then # is a folder + link="" + typefield="${link}\"folder\"" + namefield="${link}${name}" + previewfield="" + else # is a file + { test "$icon" = "" } && { icon="`filetype_icon ${file}`" } + link="" + typefield="${link}\"${icon}\"" + namefield="${link}${name}" + previewfield="${link}${preview}" + fi + + # render it all + cat < -${name} -$size$date -$preview +${typefield} +${namefield} +$hsize +$hdate +${previewfield} + EOF done -print "" + print "" } preview_file() { @@ -144,7 +259,7 @@ preview_file() { maruku --html --html-frag $f -o "$output" print "$output" ;; - jpg|jpeg|png|gif) + jpg|jpeg|png) output="${name}-thumb.${ext}" { test -r "$output" } && { act "$f: thumbnail found, skip rendering" @@ -154,7 +269,7 @@ preview_file() { convert $f -resize 100 $output print "$output" ;; - pdf) + pdf|gif) # only first page / animation frame output="${name}-thumb.jpg" { test -r "$output" } && { act "$f: thumbnail found, skip rendering" @@ -164,6 +279,17 @@ preview_file() { convert "${f}[0]" -resize 100 $output print "$output" ;; + svg|eps) + output="${name}-thumb.jpg" + { test -r "$output" } && { + act "$f: thumbnail found, skip rendering" + print "$output" + continue } + notice "$f: rendering thumbnail using ImageMagick" + convert -density 144 "${f}" -resize 100 $output + print "$output" + ;; + esac done return 0 diff --git a/render b/render index b607bd3..323eebf 100755 --- a/render +++ b/render @@ -29,14 +29,32 @@ source $SYS/utils #################################### - -source config.zsh - +# Base configuration notice "Rendering $B $BRAND $r website" act "Title: $B $TITLE $r" typeset -a includejs +# base to be added to all urls +# used by test to have all css and js in place +baseurl="" + +# destination directory to render +# also used by test to substitute pub/ +destination="pub" + +# web root for all urls +WEB_ROOT="" + +# prefix to all indexed files +INDEX_PREFIX="" + +# thumbnail size +THUMB_SIZE=256 + +source config.zsh +#################################### + render_header() { cat < - - + + EOF { test -r views/css/custom.css } && { cat < + EOF } @@ -86,7 +104,7 @@ EOF { test "$1" = "" } || { echo "${@}"; echo } for i in $includejs; do - echo "" + echo "" done cat < with gallery specific styles cat <> $dst - + @@ -192,7 +210,7 @@ EOF # generate the gallery's javascript dst_js="js/temp-${RANDOM}-gallery.js" - cat < pub/${dst_js} + cat < ${destination}/${dst_js} var slides= []; EOF @@ -201,7 +219,7 @@ EOF for p in ${(f)pics}; do file=${p[(ws: :)1]} desc=`pecho $p | awk '{ for(c=2;c<=NF;c++) printf("%s ",$c) }'` - cat << EOF >> pub/$dst_js + cat << EOF >> ${destination}/$dst_js slides.push({ href: '${file}', title: '${desc}' @@ -209,7 +227,7 @@ slides.push({ EOF done - cat <> pub/$dst_js + cat <> ${destination}/$dst_js function shuffle(array) { var m = array.length, t, i; @@ -265,15 +283,44 @@ index() { { test -d "$1" } || { error "cannot index directory not found: $1"; return 1 } source $SYS/index source dirs=`find "$1" -type d` - base=`dirname "$1"` + basedir=`dirname "$1"` + + # setup paths for test + { test "$destination" = "test" } && { + LINK_PREFIX="file://$1" + WEB_ROOT="file://`PWD=${SYS} pwd`/test" + notice "Test settings for indexing" + act "SYS = $SYS" + act "WEB_ROOT = $WEB_ROOT" + } + for d in ${(f)dirs}; do - dir="${d##*${base}}" - mkdir -p "pub/$dir" - render_header > "pub/$dir/index.html" - pushd "pub/$dir" + dir="${d##*${basedir}}" + mkdir -p "${destination}/$dir" + render_header > "${destination}/$dir/index.html" + cat tmpl/navbar.html >> "${destination}/$dir/index.html" + pushd "${destination}/$dir" + cat <> index.html +
+
+EOF + index_dir "$d" >> index.html + # if there is a README put it besides + { test -r "${d}/README.md" } && { + cat <> index.html +
+
+EOF + maruku --html --html-frag -o - "${d}/README.md" >> index.html + } + cat <> index.html +
+
+

 

+EOF popd - render_footer >> "pub/$dir/index.html" + render_footer >> "${destination}/$dir/index.html" done } @@ -294,7 +341,7 @@ read_meta() { # Main mkdir -p pub -cat << EOF > pub/.htaccess +cat << EOF > ${destination}/.htaccess DirectoryIndex index index.html index.php DefaultType text/html EOF @@ -309,9 +356,9 @@ print "done" txts=(`find views -maxdepth 1 -type f -name '*.txt'`) for t in $txts; do txt=`basename $t` - dst="pub/$txt" + dst="${destination}/$txt" act "publishing plain text: $txt" - cp $t pub/$txt + cp $t ${destination}/$txt done # render all HTML views @@ -322,7 +369,7 @@ for src in $htmls; do cat ${src} | read_meta # compute destination file - dst="pub/`basename ${src%.*}`${EXTENSION}" + dst="${destination}/`basename ${src%.*}`${EXTENSION}" render_header > $dst @@ -365,7 +412,7 @@ gals=(`find views -type f -name '*.gal'`) gals+=(`find views -type f -name '*.gallery'`) for src in $gals; do cat ${src} | read_meta - dst="pub/`basename ${src%.*}`" + dst="${destination}/`basename ${src%.*}`" act -n "Gallery rendering: $B $dst $r ... " cat $src | render_gallery > $dst print "done" @@ -383,7 +430,7 @@ done for m in `find views -mindepth 1 -type d `; do act -n "publishing $B $m $r ... " - rsync -r $m pub/ + rsync -r $m ${destination}/ print "done" done @@ -395,7 +442,7 @@ done # generate a list of all images (removing duplicates) act "Indexing all images ... " find pub -iname '*.jpg' | sed -e 's/^pub\///g' -e 's/^.\/pub\///g' -e "s@'@@g" | sort | uniq \ - | render_gallery views/index.html > pub/index + | render_gallery views/index.html > ${destination}/index } diff --git a/test b/test index 3d2e28a..d2e5b65 100755 --- a/test +++ b/test @@ -22,12 +22,16 @@ act "Title: $TITLE" source ${DIR}/render source +# make it work to browse results on file:// +baseurl="file://`pwd`/test/" + +destination="test" + # Main -mkdir -p test -mkdir -p test/css +mkdir -p ${destination}/css # side menu stylesheet -cp $DIR/css/jquery.sidr.dark.css test/css +cp $DIR/css/jquery.sidr.dark.css ${destination}/css fonts=('Arial' 'Arial Black' 'Comic Sans MS' 'Courier New' 'Georgia' 'Impact' 'Monaco' 'Lucida Grande') fonts+=('Book Antiqua' 'Tahoma' 'Times New Roman' 'Trebuchet MS' 'Verdana' 'Geneva' 'New York') @@ -39,14 +43,14 @@ unsetopt CASE_GLOB # if there are custom fonts add them { test -d fonts } && { notice "Indexing custom fonts" - rm -f test/css/custom.fonts.css - mkdir -p test/fonts + rm -f ${destination}/css/custom.fonts.css + mkdir -p ${destination}/fonts ttf=`find -L fonts -iname '*.ttf'` for f in ${(f)ttf}; do ffile=`basename "$f"` - cp "$f" test/css/"$ffile" + cp "$f" ${destination}/css/"$ffile" custom_fonts+=("${ffile%.ttf}") - cat <> test/css/custom.fonts.css + cat <> ${destination}/css/custom.fonts.css @font-face { font-family: '${ffile%.ttf}'; src: url('$ffile') format('truetype'); } EOF @@ -55,9 +59,9 @@ EOF otf=`find -L fonts -iname '*.otf'` for f in ${(f)otf}; do ffile=`basename "$f"` - cp "$f" test/css/"$ffile" + cp "$f" ${destination}/css/"$ffile" custom_fonts+=("${ffile%.otf}") - cat <> test/css/custom.fonts.css + cat <> ${destination}/css/custom.fonts.css @font-face { font-family: '${ffile%.otf}'; src: url('$ffile') format('opentype'); } EOF @@ -77,8 +81,8 @@ for src in $htmls; do cat ${src} | read_meta # compute destination file - dst="test/`basename ${src%.*}`$EXTENSION" - + dst="${destination}/`basename ${src%.*}`$EXTENSION" + render_header > $dst # close as nothing else is needed @@ -220,11 +224,24 @@ done for m in `find views -mindepth 1 -type d `; do act -n "publishing $m... " - rsync -r $m test/ + rsync -r $m ${destination}/ print "done" done # add design test libs -mkdir -p test/js -cp $DIR/js/jquery.min.js test/js -cp $DIR/js/jquery.sidr.js test/js +mkdir -p ${destination}/js +cp $DIR/js/jquery.min.js ${destination}/js +cp $DIR/js/jquery.sidr.js ${destination}/js + + + +#### directory index +idxs=(`find views -type f -name '*.idx'`) +idxs+=(`find views -type f -name '*.index'`) +{ test ${#idxs} = 0 } || { + for idx in $idxs; do + notice "Directory index rendering: $idx" + source ${idx} + done + rsync -rlt "$DIR/icons" "${destination}/" +}