// CopyCharts takes a glob expression and copies those charts to the server root. func (s *Server) CopyCharts(origin string) ([]string, error) { files, err := filepath.Glob(origin) if err != nil { return []string{}, err } copied := make([]string, len(files)) for i, f := range files { base := filepath.Base(f) newname := filepath.Join(s.docroot, base) data, err := ioutil.ReadFile(f) if err != nil { return []string{}, err } if err := ioutil.WriteFile(newname, data, 0755); err != nil { return []string{}, err } copied[i] = newname } // generate the index index, err := repo.IndexDirectory(s.docroot, s.URL()) if err != nil { return copied, err } d, err := yaml.Marshal(index.Entries) if err != nil { return copied, err } ifile := filepath.Join(s.docroot, "index.yaml") err = ioutil.WriteFile(ifile, d, 0755) return copied, err }
// CreateIndex will read docroot and generate an index.yaml file. func (s *Server) CreateIndex() error { // generate the index index, err := repo.IndexDirectory(s.docroot, s.URL()) if err != nil { return err } d, err := yaml.Marshal(index) if err != nil { return err } ifile := filepath.Join(s.docroot, "index.yaml") return ioutil.WriteFile(ifile, d, 0755) }
func index(dir, url, mergeTo string) error { out := filepath.Join(dir, "index.yaml") i, err := repo.IndexDirectory(dir, url) if err != nil { return err } if mergeTo != "" { i2, err := repo.LoadIndexFile(mergeTo) if err != nil { return fmt.Errorf("Merge failed: %s", err) } i.Merge(i2) } i.SortEntries() return i.WriteFile(out, 0755) }