94 lines · 2.9 KB · Go
RawDownload
//go:generate go run assets_generate.go// The "go:generate" directive compiles static assets by running assets_generate.go package data import (	"fmt"	"html/template"	"io/ioutil"	"time" 	"github.com/spf13/pflag" 	"github.com/rclone/rclone/fs"	"github.com/rclone/rclone/fs/config/flags") // Help describes the options for the serve packagevar Help = `--template allows a user to specify a custom markup template for httpand webdav serve functions.  The server exports the following markupto be used within the template to server pages: | Parameter   | Description || :---------- | :---------- || .Name       | The full path of a file/directory. || .Title      | Directory listing of .Name || .Sort       | The current sort used.  This is changeable via ?sort= parameter ||             | Sort Options: namedirfirst,name,size,time (default namedirfirst) || .Order      | The current ordering used.  This is changeable via ?order= parameter ||             | Order Options: asc,desc (default asc) || .Query      | Currently unused. || .Breadcrumb | Allows for creating a relative navigation ||-- .Link     | The relative to the root link of the Text. ||-- .Text     | The Name of the directory. || .Entries    | Information about a specific file/directory. ||-- .URL      | The 'url' of an entry.  ||-- .Leaf     | Currently same as 'URL' but intended to be 'just' the name. ||-- .IsDir    | Boolean for if an entry is a directory or not. ||-- .Size     | Size in Bytes of the entry. ||-- .ModTime  | The UTC timestamp of an entry. |` // Options for the templating functionalitytype Options struct {	Template string} // AddFlags for the templating functionalityfunc AddFlags(flagSet *pflag.FlagSet, prefix string, Opt *Options) {	flags.StringVarP(flagSet, &Opt.Template, prefix+"template", "", Opt.Template, "User-specified template")} // AfterEpoch returns the time since the epoch for the given timefunc AfterEpoch(t time.Time) bool {	return t.After(time.Time{})} // GetTemplate returns the HTML template for serving directories via HTTP/Webdavfunc GetTemplate(tmpl string) (tpl *template.Template, err error) {	var templateString string	if tmpl == "" {		templateFile, err := Assets.Open("index.html")		if err != nil {			return nil, fmt.Errorf("get template open: %w", err)		} 		defer fs.CheckClose(templateFile, &err) 		templateBytes, err := ioutil.ReadAll(templateFile)		if err != nil {			return nil, fmt.Errorf("get template read: %w", err)		} 		templateString = string(templateBytes) 	} else {		templateFile, err := ioutil.ReadFile(tmpl)		if err != nil {			return nil, fmt.Errorf("get template open: %w", err)		} 		templateString = string(templateFile)	} 	funcMap := template.FuncMap{		"afterEpoch": AfterEpoch,	}	tpl, err = template.New("index").Funcs(funcMap).Parse(templateString)	if err != nil {		return nil, fmt.Errorf("get template parse: %w", err)	} 	return}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t