func initSourceDependencies() { workingDir := viper.GetString("WorkingDir") if workingDir != "" { workingDirFs = afero.NewBasePathFs(afero.NewReadOnlyFs(sourceFs), workingDir).(*afero.BasePathFs) } }
func getStaticSourceFs() afero.Fs { source := hugofs.SourceFs themeDir, err := helpers.GetThemeStaticDirPath() staticDir := helpers.GetStaticDirPath() + helpers.FilePathSeparator useTheme := true useStatic := true if err != nil { jww.WARN.Println(err) useTheme = false } else { if _, err := source.Stat(themeDir); os.IsNotExist(err) { jww.WARN.Println("Unable to find Theme Static Directory:", themeDir) useTheme = false } } if _, err := source.Stat(staticDir); os.IsNotExist(err) { jww.WARN.Println("Unable to find Static Directory:", staticDir) useStatic = false } if !useStatic && !useTheme { return nil } if !useStatic { jww.INFO.Println(themeDir, "is the only static directory available to sync from") return afero.NewReadOnlyFs(afero.NewBasePathFs(source, themeDir)) } if !useTheme { jww.INFO.Println(staticDir, "is the only static directory available to sync from") return afero.NewReadOnlyFs(afero.NewBasePathFs(source, staticDir)) } jww.INFO.Println("using a UnionFS for static directory comprised of:") jww.INFO.Println("Base:", themeDir) jww.INFO.Println("Overlay:", staticDir) base := afero.NewReadOnlyFs(afero.NewBasePathFs(hugofs.SourceFs, themeDir)) overlay := afero.NewReadOnlyFs(afero.NewBasePathFs(hugofs.SourceFs, staticDir)) return afero.NewCopyOnWriteFs(base, overlay) }
func getStaticSourceFs() afero.Fs { source := hugofs.SourceFs themeDir, err := helpers.GetThemeStaticDirPath() staticDir := helpers.GetStaticDirPath() + helpers.FilePathSeparator useTheme := true useStatic := true if err != nil { jww.WARN.Println(err) useTheme = false } else { if _, err := source.Stat(themeDir); os.IsNotExist(err) { jww.WARN.Println("Unable to find Theme Static Directory:", themeDir) useTheme = false } } if _, err := source.Stat(staticDir); os.IsNotExist(err) { jww.WARN.Println("Unable to find Static Directory:", staticDir) useStatic = false } if !useStatic && !useTheme { return nil } if !useStatic { return afero.NewReadOnlyFs(afero.NewBasePathFs(source, themeDir)) } if !useTheme { return afero.NewReadOnlyFs(afero.NewBasePathFs(source, staticDir)) } base := afero.NewReadOnlyFs(afero.NewBasePathFs(hugofs.SourceFs, themeDir)) overlay := afero.NewReadOnlyFs(afero.NewBasePathFs(hugofs.SourceFs, staticDir)) return afero.NewCopyOnWriteFs(base, overlay) }
func TestSyncKeysError(t *testing.T) { util.AppFs = afero.NewMemMapFs() conn := db.New() err := runOnce(conn) assert.EqualError(t, err, "no self minion") fs := afero.NewMemMapFs() util.AppFs = afero.NewReadOnlyFs(fs) conn.Transact(func(view db.Database) error { m := view.InsertMinion() m.Self = true m.AuthorizedKeys = "keys" view.Commit(m) return nil }) err = runOnce(conn) assert.EqualError(t, err, "open /home/quilt/.ssh/authorized_keys: "+ "file does not exist") fs.Create(authorizedKeysFile) err = runOnce(conn) assert.EqualError(t, err, "operation not permitted") }