func (l *StaticLoader) WriteAllTemplates(targetDir gopath.GoPath) error { if err := os.MkdirAll(targetDir.Path(), 0777); err != nil { return fmt.Errorf("couldn't create dir %s: %s", targetDir, err) } for _, name := range resources.AllFileNames { var targetFile = targetDir.JoinPath(name) if targetFile.HasErr() { return fmt.Errorf("couldn't create path for template %s: %s", name, targetFile.Err()) } content, err := resources.FSString(l.useLocalTemplates, name) if err != nil { return fmt.Errorf("couldn't open template %s: %s", name, err) } err = os.MkdirAll(targetFile.Dir().Path(), 0777) if err != nil { return fmt.Errorf("couldn't create directory %s: %s", targetFile.Dir().Path(), err) } out, err := os.Create(targetFile.Path()) if err != nil { return fmt.Errorf("couldn't create file %s: %s", targetFile, err) } out.WriteString(content) if out.Close(); err != nil { return fmt.Errorf("couldn't close file %s: %s", targetFile, err) } } return nil }
// indexForDirectory finds the index document inside the given directory. // On success, it returns the path to the index document, otherwise it simply // returns the given path. // // Doesn't set the Err() value. func (i *pathIO) indexForDirectory(dir gopath.GoPath) gopath.GoPath { var index = dir.JoinPath("index").Do(i.guessExtension).AssertExists() if index.HasErr() { return dir } return index }
func htpasswdFilePath(contentRoot gopath.GoPath) gopath.GoPath { htpasswdFile := contentRoot.JoinPath(".htpasswd") if !htpasswdFile.IsExists() { log.Printf("no .htpasswd found") } else { log.Printf("using authentication data from .htpasswd") } return htpasswdFile }
func isDirWriteable(p gopath.GoPath) bool { var nonExistantFile = p.JoinPath("githubcom-fxnn-gone") for !nonExistantFile.HasErr() && nonExistantFile.IsExists() { nonExistantFile = nonExistantFile.Append("-" + strconv.Itoa(rand.Int())) } if nonExistantFile.HasErr() { return false } var closer, err = os.Create(nonExistantFile.Path()) if closer != nil { closer.Close() os.Remove(nonExistantFile.Path()) } return err == nil }
func templatePath(contentRoot gopath.GoPath, cfg config.Config) (result gopath.GoPath) { // configuration result = gopath.FromPath(cfg.TemplatePath) if !result.IsEmpty() { if !result.IsDirectory() { log.Fatalf("configured template path is no directory: %s", result.Path()) } log.Printf("using templates from %s (by configuration)", result.Path()) return result } // convention result = contentRoot.JoinPath(defaultTemplateDirectoryName) if result.IsDirectory() { log.Printf("using templates from %s (by convention)", result.Path()) return result } // default log.Printf("using default templates") return gopath.Empty() }