Esempio n. 1
0
File: static.go Progetto: fxnn/gone
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
}
Esempio n. 2
0
File: pathio.go Progetto: fxnn/gone
// 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
}
Esempio n. 3
0
File: gone.go Progetto: fxnn/gone
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
}
Esempio n. 4
0
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
}
Esempio n. 5
0
File: gone.go Progetto: fxnn/gone
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()
}