// Copyright 2023 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.packagecommandsimport("context""errors""fmt""os""path/filepath""runtime""runtime/pprof""runtime/trace""strings""sync""time""github.com/bep/logg""github.com/bep/simplecobra""github.com/fsnotify/fsnotify""github.com/gohugoio/hugo/common/herrors""github.com/gohugoio/hugo/common/htime""github.com/gohugoio/hugo/common/hugo""github.com/gohugoio/hugo/common/loggers""github.com/gohugoio/hugo/common/maps""github.com/gohugoio/hugo/common/terminal""github.com/gohugoio/hugo/common/types""github.com/gohugoio/hugo/config""github.com/gohugoio/hugo/helpers""github.com/gohugoio/hugo/hugofs""github.com/gohugoio/hugo/hugolib""github.com/gohugoio/hugo/hugolib/filesystems""github.com/gohugoio/hugo/livereload""github.com/gohugoio/hugo/resources/page""github.com/gohugoio/hugo/watcher""github.com/spf13/fsync""golang.org/x/sync/errgroup""golang.org/x/sync/semaphore")typehugoBuilderstruct{r*rootCommandconfmusync.Mutexconf*commonConfig// May be nil.s*serverCommand// Currently only set when in "fast render mode".changeDetector*fileChangeDetectorvisitedURLs*types.EvictingStringQueuefullRebuildSem*semaphore.Weighteddebouncefunc(ffunc())onConfigLoadedfunc(reloadedbool)errorfastRenderModeboolshowErrorInBrowserboolerrStatehugoBuilderErrState}func(c*hugoBuilder)withConfE(fnfunc(conf*commonConfig)error)error{c.confmu.Lock()deferc.confmu.Unlock()returnfn(c.conf)}func(c*hugoBuilder)withConf(fnfunc(conf*commonConfig)){c.