// Copyright 2019 The Hugo Authors. All rights reserved.//// Licensed under the Apache License, Version 2.0 (the "License");// you may not use this file except in compliance with the License.// You may obtain a copy of the License at// http://www.apache.org/licenses/LICENSE-2.0//// Unless required by applicable law or agreed to in writing, software// distributed under the License is distributed on an "AS IS" BASIS,// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.// See the License for the specific language governing permissions and// limitations under the License.packagehugolibimport("context""io""path/filepath""sort""strings""sync""sync/atomic""github.com/gohugoio/hugo/hugofs/glob""github.com/fsnotify/fsnotify""github.com/gohugoio/hugo/identity"radix"github.com/armon/go-radix""github.com/gohugoio/hugo/output""github.com/gohugoio/hugo/parser/metadecoders""github.com/gohugoio/hugo/common/para""github.com/gohugoio/hugo/hugofs""github.com/pkg/errors""github.com/gohugoio/hugo/source""github.com/bep/gitmap""github.com/gohugoio/hugo/config""github.com/gohugoio/hugo/publisher""github.com/gohugoio/hugo/common/herrors""github.com/gohugoio/hugo/common/loggers""github.com/gohugoio/hugo/deps""github.com/gohugoio/hugo/helpers""github.com/gohugoio/hugo/langs""github.com/gohugoio/hugo/lazy""github.com/gohugoio/hugo/langs/i18n""github.com/gohugoio/hugo/resources/page""github.com/gohugoio/hugo/resources/page/pagemeta""github.com/gohugoio/hugo/tpl""github.com/gohugoio/hugo/tpl/tplimpl")// HugoSites represents the sites to build. Each site represents a language.typeHugoSitesstruct{Sites[]*Sitemultilingual*Multilingual// Multihost is set if multilingual and baseURL set on the language level.multihostbool// If this is running in the dev server.runningbool// Render output formats for all sites.renderFormatsoutput.Formats*deps.DepsgitInfo*gitInfo// As loaded from the /data dirsdatamap[string]interface{}contentInitsync.Oncecontent*pageMaps// Keeps track of bundle directories and symlinks to enable partial rebuilding.ContentChanges*contentChangeMap// File change events with filename stored in this map will be skipped.skipRebuildForFilenamesMusync.MutexskipRebuildForFilenames