func copyStatic() error { publishDir := helpers.AbsPathify(viper.GetString("PublishDir")) + "/" // If root, remove the second '/' if publishDir == "//" { publishDir = "/" } syncer := fsync.NewSyncer() syncer.NoTimes = viper.GetBool("notimes") syncer.SrcFs = hugofs.SourceFs syncer.DestFs = hugofs.DestinationFS themeDir, err := helpers.GetThemeStaticDirPath() if err != nil { jww.ERROR.Println(err) return nil } // Copy the theme's static directory if themeDir != "" { jww.INFO.Println("syncing from", themeDir, "to", publishDir) utils.CheckErr(syncer.Sync(publishDir, themeDir), fmt.Sprintf("Error copying static files of theme to %s", publishDir)) } // Copy the site's own static directory staticDir := helpers.AbsPathify(viper.GetString("StaticDir")) + "/" if _, err := os.Stat(staticDir); err == nil { jww.INFO.Println("syncing from", staticDir, "to", publishDir) return syncer.Sync(publishDir, staticDir) } else if os.IsNotExist(err) { jww.WARN.Println("Unable to find Static Directory:", staticDir) } return nil }
func copyStatic() error { staticDir := helpers.AbsPathify(viper.GetString("StaticDir")) + "/" if _, err := os.Stat(staticDir); os.IsNotExist(err) { jww.ERROR.Println("Unable to find Static Directory:", staticDir) return nil } publishDir := helpers.AbsPathify(viper.GetString("PublishDir")) + "/" syncer := fsync.NewSyncer() syncer.NoTimes = viper.GetBool("notimes") syncer.SrcFs = hugofs.SourceFs syncer.DestFs = hugofs.DestinationFS themeDir, err := helpers.GetThemeStaticDirPath() if err != nil { jww.ERROR.Println(err) return nil } if themeDir != "" { // Copy Static to Destination jww.INFO.Println("syncing from", themeDir, "to", publishDir) utils.CheckErr(syncer.Sync(publishDir, themeDir), fmt.Sprintf("Error copying static files of theme to %s", publishDir)) } // Copy Static to Destination jww.INFO.Println("syncing from", staticDir, "to", publishDir) return syncer.Sync(publishDir, staticDir) }
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) }