mirror of
https://github.com/tonimelisma/fastgallery
synced 2024-11-15 18:13:55 +00:00
skeleton for discovering output tree
This commit is contained in:
parent
c5b0a7a3f3
commit
6320c69a80
98
gogallery.go
98
gogallery.go
@ -3,17 +3,18 @@ package main
|
|||||||
import (
|
import (
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func parseArgs() (outputDirectory string, inputDirectories []string) {
|
func parseArgs() (inputDirectory string, outputDirectory string) {
|
||||||
outputDirectoryPtr := flag.String("o", ".", "Output root directory for gallery")
|
outputDirectoryPtr := flag.String("o", ".", "Output root directory for gallery")
|
||||||
|
|
||||||
flag.Usage = func() {
|
flag.Usage = func() {
|
||||||
fmt.Fprintf(os.Stderr, "Usage: %s [OPTION]... DIRECTORY...\n", os.Args[0])
|
fmt.Fprintf(os.Stderr, "Usage: %s [OPTION]... DIRECTORY\n", os.Args[0])
|
||||||
fmt.Fprintf(os.Stderr, "Create a static photo and video gallery from directories.\n")
|
fmt.Fprintf(os.Stderr, "Create a static photo and video gallery from all\nsubdirectories and files in directory.\n")
|
||||||
fmt.Fprintf(os.Stderr, "\n")
|
|
||||||
fmt.Fprintf(os.Stderr, "Will recurse each of supplied DIRECTORY \n")
|
|
||||||
fmt.Fprintf(os.Stderr, "\n")
|
fmt.Fprintf(os.Stderr, "\n")
|
||||||
flag.PrintDefaults()
|
flag.PrintDefaults()
|
||||||
}
|
}
|
||||||
@ -26,22 +27,91 @@ func parseArgs() (outputDirectory string, inputDirectories []string) {
|
|||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, arg := range flag.Args() {
|
if flag.NArg() != 1 {
|
||||||
inputDirectories = append(inputDirectories, arg)
|
fmt.Fprintf(os.Stderr, "%s: wrong number of arguments given for input (expected one)\n", os.Args[0])
|
||||||
|
fmt.Fprintf(os.Stderr, "Try '%s -h' for more information.\n", os.Args[0])
|
||||||
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
return *outputDirectoryPtr, inputDirectories
|
if _, err := os.Stat(flag.Args()[0]); os.IsNotExist(err) {
|
||||||
|
fmt.Fprintf(os.Stderr, "%s: Directory does not exist: %s\n", os.Args[0], flag.Args()[0])
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := os.Stat(*outputDirectoryPtr); os.IsNotExist(err) {
|
||||||
|
fmt.Fprintf(os.Stderr, "%s: Directory does not exist: %s\n", os.Args[0], *outputDirectoryPtr)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
if isEmpty(flag.Args()[0]) {
|
||||||
|
fmt.Fprintf(os.Stderr, "%s: Input directory is empty: %s\n", os.Args[0], flag.Args()[0])
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
return *outputDirectoryPtr, flag.Args()[0]
|
||||||
|
}
|
||||||
|
|
||||||
|
type file struct {
|
||||||
|
name string
|
||||||
|
modTime time.Time
|
||||||
|
thumbnail string
|
||||||
|
}
|
||||||
|
|
||||||
|
type directory struct {
|
||||||
|
name string
|
||||||
|
modTime time.Time
|
||||||
|
thumbnail string
|
||||||
|
subdirectories []directory
|
||||||
|
files []file
|
||||||
|
}
|
||||||
|
|
||||||
|
func checkError(e error) {
|
||||||
|
if e != nil {
|
||||||
|
panic(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func isEmpty(directory string) (isEmpty bool) {
|
||||||
|
list, err := ioutil.ReadDir(directory)
|
||||||
|
checkError(err)
|
||||||
|
|
||||||
|
if len(list) == 0 {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func discoverAsIs(outputDirectory string) (asIs directory) {
|
||||||
|
asIs.name = filepath.Base(outputDirectory)
|
||||||
|
|
||||||
|
list, err := ioutil.ReadDir(outputDirectory)
|
||||||
|
checkError(err)
|
||||||
|
|
||||||
|
for _, entry := range list {
|
||||||
|
if entry.IsDir() {
|
||||||
|
asIs.subdirectories = append(asIs.subdirectories, directory{name: entry.Name(), modTime: entry.ModTime()})
|
||||||
|
} else {
|
||||||
|
asIs.files = append(asIs.files, file{name: entry.Name(), modTime: entry.ModTime()})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (asIs)
|
||||||
|
//fmt.Println(root)
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
var inputDirectory string
|
||||||
var outputDirectory string
|
var outputDirectory string
|
||||||
var inputDirectories []string
|
var asIs directory
|
||||||
|
|
||||||
outputDirectory, inputDirectories = parseArgs()
|
outputDirectory, inputDirectory = parseArgs()
|
||||||
|
|
||||||
for dir := range inputDirectories {
|
fmt.Println(os.Args[0], ": Creating photo gallery")
|
||||||
fmt.Println("Gathering photos and videos from:")
|
fmt.Println("")
|
||||||
fmt.Println(dir)
|
fmt.Println("Gathering photos and videos from:", inputDirectory)
|
||||||
}
|
|
||||||
fmt.Println("Creating static gallery in:", outputDirectory)
|
fmt.Println("Creating static gallery in:", outputDirectory)
|
||||||
|
fmt.Println("")
|
||||||
|
|
||||||
|
asIs = discoverAsIs(outputDirectory)
|
||||||
|
fmt.Println("As-is: ", asIs)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user