ddevapp

package
v1.24.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 14, 2025 License: Apache-2.0 Imports: 64 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// SiteRunning defines the string used to denote running sites.
	SiteRunning  = "running"
	SiteStarting = "starting"

	// SiteStopped means a site where the containers were not found/do not exist, but the project is there.
	SiteStopped = "stopped"

	// SiteDirMissing defines the string used to denote when a site is missing its application directory.
	SiteDirMissing = "project directory missing"

	// SiteConfigMissing defines the string used to denote when a site is missing its .ddev/config.yml file.
	SiteConfigMissing = ".ddev/config.yaml missing"

	// SitePaused defines the string used to denote when a site is in the paused (docker stopped) state.
	SitePaused = "paused"

	// SiteUnhealthy is the status for a project whose services are not all reporting healthy yet
	SiteUnhealthy = "unhealthy"
)
View Source
const (
	// WarnTypeAbsent warns if type is absent
	WarnTypeAbsent = iota
	// WarnTypeNotConfigured warns if type not configured
	WarnTypeNotConfigured = iota
)
View Source
const (
	RouterComposeProjectName = "ddev-router"
	MinEphemeralPort         = 33000
	MaxEphemeralPort         = 35000
)

RouterComposeProjectName is the docker-compose project name of ~/.ddev/.router-compose.yaml

View Source
const AddonMetadataDir = "addon-metadata"
View Source
const ConfigInstructions = `` /* 11803-byte string literal not displayed */

ConfigInstructions is used to add example hooks usage

View Source
const DefaultDrupalSettingsVersion = "10"

DefaultDrupalSettingsVersion is the version used for settings.php/settings.ddev.php when no known Drupal version is detected

View Source
const Drupal7Hooks = `#  post-import-db:
#    - exec: drush cc all
`

Drupal7Hooks adds a d7-specific hooks example for post-import-db

View Source
const DrupalHooks = `# post-import-db:
#   - exec: drush sql:sanitize
#   - exec: drush updatedb
#   - exec: drush cache:rebuild
`

DrupalHooks adds d8+-specific hooks example for post-import-db

View Source
const SSHAuthName = "ddev-ssh-agent"

SSHAuthName is the "machine name" of the ddev-ssh-agent docker-compose service

View Source
const SnapshotRestoreDefaultWaitTime = 600

SnapshotRestoreDefaultWaitTime is the max time we'll wait for snapshot restore. If default_container_timeout is set higher than that it can be more

View Source
const Typo3Hooks = `#  post-start:
#    - exec: composer install -d /var/www/html
`

Typo3Hooks adds a TYPO3-specific hooks example for post-import-db

Variables

DatabaseDefault is the default database/version

View Source
var EphemeralRouterPortsAssigned = make(map[int]bool)

EphemeralRouterPortsAssigned is used when we have assigned an ephemeral port but it may not yet be occupied. A map is used just to make it easy to detect if it's there, the value in the map is not used.

View Source
var RunValidateConfig = true

RunValidateConfig controls whether to run ValidateConfig() function. In some cases we don't actually need to check the config, e.g. when deleting the project. It is enabled by default.

View Source
var SequelproTemplate = `` /* 1773-byte string literal not displayed */

SequelproTemplate is the template for Sequelpro config.

View Source
var SkipHooks = false

Global variable that's set from --skip-hooks global flag. If true, all hooks would be skiped.

Functions

func AddHostEntry added in v1.21.5

func AddHostEntry(name string, ip string) error

AddHostEntry adds an entry to default hosts file This is only used by `ddev hostname` and only used with admin privs

func AllocateAvailablePortForRouter added in v1.23.5

func AllocateAvailablePortForRouter(start, upTo int) (int, bool)

AllocateAvailablePortForRouter finds an available port in the local machine, in the range provided. Returns the port found, and a boolean that determines if the port is valid (true) or not (false), and the port is marked as allocated

func AppSliceToMap added in v1.23.0

func AppSliceToMap(appList []*DdevApp) map[string]*DdevApp

Turn a slice of *DdevApp into a map keyed by name

func AvailablePHPDocrootLocations added in v1.22.0

func AvailablePHPDocrootLocations() []string

AvailablePHPDocrootLocations returns an of default docroot locations to look for.

func CheckDdevVersionConstraint added in v1.23.4

func CheckDdevVersionConstraint(constraint string, errorPrefix string, errorSuffix string) error

CheckDdevVersionConstraint validates if the given constraint matches the current DDEV version. If the version constraint includes pre-releases, it will normalize the constraint before checking. Returns an error if the version doesn't meet the constraint or if the constraint is invalid.

func CheckForConf added in v0.11.0

func CheckForConf(confPath string) (string, error)

CheckForConf checks for a config.yaml at the cwd or parent dirs.

func CheckForMissingProjectFiles added in v1.21.5

func CheckForMissingProjectFiles(project *DdevApp) error

CheckForMissingProjectFiles returns an error if the project's configuration or project root cannot be found

func CheckMutagenVolumeSyncCompatibility added in v1.21.5

func CheckMutagenVolumeSyncCompatibility(app *DdevApp) (ok bool, volumeExists bool, info string)

CheckMutagenVolumeSyncCompatibility checks to see if the Mutagen label and volume label are the same. Compatible if:

  • No volume (or no volume and no Mutagen sync session)
  • Volume and Mutagen sync exist and volume label matches Mutagen label

Not compatible if

  • Volume and Mutagen sync exist and have different labels
  • Volume exists (with label) but there's no Mutagen sync session matching it. In this case we'd want to start from scratch with a new volume and sync, so we get authoritative files from alpha (host)
  • Volume has a label that is not based on this Docker context.

Return ok, info, where ok true if compatible, info gives reasoning

func CheckRouterPorts added in v0.11.0

func CheckRouterPorts() error

CheckRouterPorts tries to connect to the ports the router will use as a heuristic to find out if they're available for docker to bind to. Returns an error if either one results in a successful connection.

func Cleanup added in v0.11.0

func Cleanup(app *DdevApp) error

Cleanup will remove DDEV containers and volumes even if docker-compose.yml has been deleted.

func CreateAppTable added in v0.11.0

func CreateAppTable(out *bytes.Buffer, wrapTableText bool) table.Writer

CreateAppTable will create a new app table for describe and list output

func CreateGitIgnore added in v1.1.0

func CreateGitIgnore(targetDir string, ignores ...string) error

CreateGitIgnore will create a .gitignore file in the target directory if one does not exist. Each value in ignores will be added as a new line to the .gitignore.

func CreateOrResumeMutagenSync added in v1.21.5

func CreateOrResumeMutagenSync(app *DdevApp) error

CreateOrResumeMutagenSync creates or resumes a sync session It detects problems with the sync and errors if there are problems

func DiscoverDefaultDocroot added in v0.15.0

func DiscoverDefaultDocroot(app *DdevApp) string

DiscoverDefaultDocroot returns the default docroot directory.

func DownloadMutagen added in v1.21.5

func DownloadMutagen() error

DownloadMutagen gets the Mutagen binary and related and puts it into ~/.ddev/.bin

func DownloadMutagenIfNeeded added in v1.21.5

func DownloadMutagenIfNeeded() error

DownloadMutagenIfNeeded downloads Mutagen if we don't have it or there's an update

func DownloadMutagenIfNeededAndEnabled added in v1.22.0

func DownloadMutagenIfNeededAndEnabled(app *DdevApp) error

DownloadMutagenIfNeededAndEnabled downloads the proper version of Mutagen if it's enabled and if it's either not yet installed or has the wrong version.

func EnvToUniqueEnv added in v1.21.5

func EnvToUniqueEnv(inSlice *[]string) []string

EnvToUniqueEnv() makes sure that only the last occurrence of an env (NAME=val) slice is actually retained.

func EscapeEnvFileValue added in v1.24.0

func EscapeEnvFileValue(value string) string

EscapeEnvFileValue escapes the value so it can be used in an .env file The value is wrapped in double quotes for correct work with spaces.

func ExtractProjectNames added in v1.21.5

func ExtractProjectNames(apps []*DdevApp) []string

ExtractProjectNames returns a list of names by a bunch of projects

func FindDdevRouter added in v1.21.5

func FindDdevRouter() (*dockerContainer.Summary, error)

FindDdevRouter uses FindContainerByLabels to get our router container and return it.

func FindNotOmittedImages added in v1.22.4

func FindNotOmittedImages(app *DdevApp) []string

FindNotOmittedImages returns an array of image names not omitted by global or project configuration

func FormatSiteStatus added in v1.21.5

func FormatSiteStatus(status string) string

FormatSiteStatus formats "paused" or "running" with color

func FullRenderedRouterComposeYAMLPath added in v1.21.5

func FullRenderedRouterComposeYAMLPath() string

FullRenderedRouterComposeYAMLPath returns the path of the full rendered .router-compose-full.yaml

func FullRenderedSSHAuthComposeYAMLPath added in v1.21.5

func FullRenderedSSHAuthComposeYAMLPath() string

FullRenderedSSHAuthComposeYAMLPath returns the filepath to the rendered .ssh-auth-compose-full.yaml file.

func GatherAllManifests added in v1.22.2

func GatherAllManifests(app *DdevApp) (map[string]AddonManifest, error)

GatherAllManifests searches for all addon manifests and presents the result as a map of various names to manifest data

func GetActiveAppRoot added in v0.11.0

func GetActiveAppRoot(siteName string) (string, error)

GetActiveAppRoot returns the fully rooted directory of the active app, or an error

func GetAddonDdevDescription added in v1.22.2

func GetAddonDdevDescription(action string) string

GetAddonDdevDescription returns what follows #ddev-description: in any line in action

func GetAddonDdevWarningExitCode added in v1.24.5

func GetAddonDdevWarningExitCode(action string) int

GetAddonDdevWarningExitCode returns the integer following #ddev-warning-exit-code in the last match in action If no matches are found or the value is not an integer, returns 0

func GetAvailableRouterPort added in v1.23.5

func GetAvailableRouterPort(proposedPort string, minPort, maxPort int) (string, string, bool)

GetAvailableRouterPort gets an ephemeral replacement port when the proposedPort is not available.

The function returns an ephemeral port if the proposedPort is bound by a process in the host other than the running router.

Returns the original proposedPort, the ephemeral port found, and a bool which is true if the proposedPort has been replaced with an ephemeralPort

func GetContainer added in v1.21.5

func GetContainer(app *DdevApp, service string) (*dockerContainer.Summary, error)

GetContainer returns the container struct of the app service name provided.

func GetContainerName added in v1.21.5

func GetContainerName(app *DdevApp, service string) string

GetContainerName returns the contructed container name of the service provided.

func GetDefaultMutagenVolumeSignature added in v1.21.5

func GetDefaultMutagenVolumeSignature(_ *DdevApp) string

GetDefaultMutagenVolumeSignature gets a new volume signature to be applied to Mutagen volume

func GetDrupalVersion added in v1.23.1

func GetDrupalVersion(app *DdevApp) (string, error)

GetDrupalVersion finds the drupal8+ version so it can be used for setting requirements. It can only work if there is configured Drupal8+ code

func GetEphemeralPortsIfNeeded added in v1.23.5

func GetEphemeralPortsIfNeeded(ports []*string, verbose bool)

GetEphemeralPortsIfNeeded replaces the provided ports with an ephemeral version if they need it.

func GetErrLogsFromApp added in v1.21.5

func GetErrLogsFromApp(app *DdevApp, errorReceived error) (string, string, error)

GetErrLogsFromApp is used to do app.Logs on an app after an error has been received, especially on app.Start. This is really for testing only returns logs, healthcheck history, error

func GetInstalledAddonNames added in v1.22.2

func GetInstalledAddonNames(app *DdevApp) []string

GetInstalledAddonNames returns a list of the names of installed add-ons

func GetInstalledAddonProjectFiles added in v1.23.2

func GetInstalledAddonProjectFiles(app *DdevApp) []string

GetInstalledAddonProjectFiles returns a list of project files installed by add-ons

func GetInternalPort added in v1.24.3

func GetInternalPort(app *DdevApp, service string) string

GetInternalPort returns the internal exposed port (as a string) for the given service. This can be used to find a given port for docker-compose manifests, or for automated testing.

func GetMutagenConfigFile added in v1.21.5

func GetMutagenConfigFile(app *DdevApp) string

GetMutagenConfigFile looks to see if there's a project .mutagen.yml If nothing is found, returns empty

func GetMutagenConfigFileHash added in v1.22.0

func GetMutagenConfigFileHash(app *DdevApp) (string, error)

GetMutagenConfigFileHash returns the SHA1 hash of the mutagen.yml

func GetMutagenConfigFileHashLabel added in v1.22.0

func GetMutagenConfigFileHashLabel(app *DdevApp) (string, error)

GetMutagenConfigFileHashLabel gets the com.ddev.hash- label from an existing sync session

func GetMutagenConfigFilePath added in v1.21.5

func GetMutagenConfigFilePath(app *DdevApp) string

GetMutagenConfigFilePath returns the canonical location where the mutagen.yml lives

func GetMutagenSyncLabel added in v1.21.5

func GetMutagenSyncLabel(app *DdevApp) (string, error)

GetMutagenSyncLabel gets the com.ddev.volume-signature label from an existing sync session

func GetMutagenVolumeLabel added in v1.21.5

func GetMutagenVolumeLabel(app *DdevApp) (string, error)

GetMutagenVolumeLabel returns the com.ddev.volume-signature on the project_mutagen Docker volume

func GetMutagenVolumeName added in v1.21.5

func GetMutagenVolumeName(app *DdevApp) string

GetMutagenVolumeName returns the name for the Mutagen Docker volume

func GetProjectNamesFunc added in v1.22.7

func GetProjectNamesFunc(status string, numArgs int) func(*cobra.Command, []string, string) ([]string, cobra.ShellCompDirective)

GetProjectNamesFunc returns a function for autocompleting project names for command arguments. If status is "inactive" or "active", only names of inactive or active projects respectively are returned. If status is "all", all project names are returned. If numArgs is 0, completion will be provided for infinite arguments, otherwise it will only be provided for the numArgs number of arguments.

func GetRouterBoundPorts added in v1.23.5

func GetRouterBoundPorts() ([]uint16, error)

GetRouterBoundPorts() returns the currently bound ports on ddev-router or an empty array if router not running

func GetRouterStatus added in v0.11.0

func GetRouterStatus() (string, string)

GetRouterStatus returns router status and warning if not running or healthy, as applicable. return status and most recent log

func GetSSHAuthStatus added in v1.4.0

func GetSSHAuthStatus() string

GetSSHAuthStatus outputs sshAuth status and warning if not running or healthy, as applicable.

func GetServiceNamesFunc added in v1.24.5

func GetServiceNamesFunc(existingOnly bool) func(*cobra.Command, []string, string) ([]string, cobra.ShellCompDirective)

GetServiceNamesFunc returns a function for autocompleting service names for service flag. If existingOnly is true, only names of existing services will be returned.

func GetSnapshotFileFromName added in v1.21.5

func GetSnapshotFileFromName(name string, app *DdevApp) (string, error)

GetSnapshotFileFromName returns the filename corresponding to the snapshot name

func GetValidAppTypes added in v0.11.0

func GetValidAppTypes() []string

GetValidAppTypes returns the valid apptype keys from the appTypeMatrix

func HasAllowedLocation added in v1.24.2

func HasAllowedLocation(app *DdevApp) error

HasAllowedLocation returns an error if the project location is not recommended

func IsBundledCustomCommand added in v1.22.0

func IsBundledCustomCommand(globalCommand bool, service, command string) bool

func IsBundledCustomProvider added in v1.23.1

func IsBundledCustomProvider(provider string) bool

func IsHostnameInHostsFile added in v1.21.5

func IsHostnameInHostsFile(hostname string) (bool, error)

IsHostnameInHostsFile checks to see if the hostname already exists On WSL2 it normally assumes that the hosts file is in WSL2WindowsHostsFile Otherwise it lets goodhosts decide where the hosts file is.

func IsMutagenVolumeMounted added in v1.21.5

func IsMutagenVolumeMounted(app *DdevApp) (bool, error)

IsMutagenVolumeMounted checks to see if the Mutagen volume is mounted

func IsRouterDisabled added in v1.21.5

func IsRouterDisabled(app *DdevApp) bool

IsRouterDisabled returns true if the router is disabled

func IsValidAppType added in v0.11.0

func IsValidAppType(apptype string) bool

IsValidAppType is a helper function to determine if an app type is valid, returning true if the given app type is valid and configured and false otherwise.

func IsWindowsDdevExeAvailable added in v1.21.5

func IsWindowsDdevExeAvailable() bool

IsWindowsDdevExeAvailable checks to see if we can use ddev.exe on Windows side

func IsXHGuiContainerRunning added in v1.24.4

func IsXHGuiContainerRunning(app *DdevApp) bool

func List added in v1.21.5

func List(settings ListCommandSettings)

List provides the functionality for `ddev list` activeOnly if true only shows projects that are currently Docker containers continuous if true keeps requesting and outputting continuously wrapTableText if true the text is wrapped instead of truncated to fit the row length continuousSleepTime is the time between reports

func ListAvailableAddons added in v1.22.2

func ListAvailableAddons(officialOnly bool) ([]*github.Repository, error)

ListAvailableAddons lists the add-ons that are listed on github

func MutagenMonitor added in v1.21.5

func MutagenMonitor(app *DdevApp)

MutagenMonitor shows the output of `mutagen sync monitor <syncName>`

func MutagenReset added in v1.21.5

func MutagenReset(app *DdevApp) error

MutagenReset stops (with flush), removes the Docker volume, starts again (with flush)

func MutagenSyncExists added in v1.21.5

func MutagenSyncExists(app *DdevApp) bool

MutagenSyncExists detects whether the named sync exists

func MutagenSyncName added in v1.21.5

func MutagenSyncName(name string) string

MutagenSyncName transforms a projectname string into an acceptable mutagen sync "name" See restrictions on sync name at https://mutagen.io/documentation/introduction/names-labels-identifiers The input must be a valid DNS name (valid DDEV project name)

func NormalizeProjectName added in v1.23.4

func NormalizeProjectName(siteName string) string

NormalizeProjectName replaces underscores in the site name with hyphens.

func PauseMutagenSync added in v1.21.5

func PauseMutagenSync(app *DdevApp) error

PauseMutagenSync pauses a Mutagen sync session

func PopulateExamplesCommandsHomeadditions added in v1.21.5

func PopulateExamplesCommandsHomeadditions(appName string) error

PopulateExamplesCommandsHomeadditions grabs embedded assets and installs them into the named directory Note that running this with no appName (very common) can result in updating a *different* projects assets. So `ddev start something` will first update the current directory's assets (if it's a project) and then later (when called with appName) update the actual project's assets.

func PopulateGlobalCustomCommandFiles added in v1.23.0

func PopulateGlobalCustomCommandFiles() error

PopulateGlobalCustomCommandFiles sets up the custom command files in the project directories where they need to go.

func PowerOff added in v1.21.5

func PowerOff()

func PrepDdevDirectory

func PrepDdevDirectory(app *DdevApp) error

PrepDdevDirectory creates a .ddev directory in the current working directory

func ProcessAddonAction added in v1.22.2

func ProcessAddonAction(action string, dict map[string]interface{}, bashPath string, verbose bool) error

ProcessAddonAction takes a stanza from yaml exec section and executes it.

func PullBaseContainerImages added in v1.22.0

func PullBaseContainerImages() error

PullBaseContainerImages pulls only the fundamentally needed images so they can be available early. We always need web image, busybox, and ddev-utilities for housekeeping.

func PushGlobalTraefikConfig added in v1.23.4

func PushGlobalTraefikConfig() error

PushGlobalTraefikConfig pushes the config into ddev-global-cache

func ReadProjectEnvFile added in v1.21.5

func ReadProjectEnvFile(envFilePath string) (envMap map[string]string, envText string, err error)

ReadProjectEnvFile reads the .env in the project root into a envText and envMap The map has the envFile content, but without comments returns - envMap (map of items found) - envText (plain text unaltered of existing env file - error/nil

func RemoveAddon added in v1.22.2

func RemoveAddon(app *DdevApp, addonName string, dict map[string]interface{}, bash string, verbose bool, skipRemovalActions bool) error

RemoveAddon removes an addon, taking care to respect #ddev-generated addonName can be the "Name", or the full "Repository" like ddev/ddev-redis, or the final par of the repository name like ddev-redis

func RemoveHostEntry added in v1.21.5

func RemoveHostEntry(name string, ip string) error

RemoveHostEntry removes named /etc/hosts entry if it exists This should be run with administrative privileges only and used by DDEV hostname only

func RemoveSSHAgentContainer added in v1.4.0

func RemoveSSHAgentContainer() error

RemoveSSHAgentContainer brings down the ddev-ssh-agent if it's running.

func RenderAppRow added in v0.11.0

func RenderAppRow(t table.Writer, row map[string]interface{})

RenderAppRow will add an application row to an existing table for describe and list output.

func RenderHomeRootedDir added in v0.11.0

func RenderHomeRootedDir(path string) string

RenderHomeRootedDir shortens a directory name to replace homedir with ~

func RenderRouterStatus added in v0.11.0

func RenderRouterStatus() (string, string)

RenderRouterStatus returns a user-friendly string showing router-status

func RenderSSHAuthStatus added in v1.4.0

func RenderSSHAuthStatus() string

RenderSSHAuthStatus returns a user-friendly string showing sshAuth-status

func ResumeMutagenSync added in v1.21.5

func ResumeMutagenSync(app *DdevApp) error

func RouterComposeYAMLPath added in v0.11.0

func RouterComposeYAMLPath() string

RouterComposeYAMLPath returns the full filepath to the routers docker-compose yaml file.

func SSHAuthComposeYAMLPath added in v1.4.0

func SSHAuthComposeYAMLPath() string

SSHAuthComposeYAMLPath returns the filepath to the base .ssh-auth-compose yaml file.

func SetMutagenVolumeOwnership added in v1.21.5

func SetMutagenVolumeOwnership(app *DdevApp) error

SetMutagenVolumeOwnership chowns the volume in use to the current user. The Mutagen volume is mounted both in /var/www (where it gets used) and also on /tmp/project_mutagen (where it can be chowned without accidentally hitting lots of bind-mounted files).

func StartDdevRouter added in v0.11.0

func StartDdevRouter() error

StartDdevRouter ensures the router is running.

func StartMutagenDaemon added in v1.21.5

func StartMutagenDaemon()

StartMutagenDaemon will make sure the daemon is running

func StopMutagenDaemon added in v1.21.5

func StopMutagenDaemon(mutagenDataDirectory string)

StopMutagenDaemon will try to stop a running Mutagen daemon related to the provided mutagenDataDirectory. If mutagenDataDirectory is empty, use the one configured globally.

func StopRouterIfNoContainers added in v0.12.0

func StopRouterIfNoContainers() error

StopRouterIfNoContainers stops the router if there are no DDEV containers running.

func SyncAndPauseMutagenSession added in v1.21.5

func SyncAndPauseMutagenSession(app *DdevApp) error

SyncAndPauseMutagenSession syncs and pauses a Mutagen sync session

func TerminateAllMutagenSync added in v1.21.5

func TerminateAllMutagenSync()

TerminateAllMutagenSync terminates all sync sessions

func TerminateMutagenSync added in v1.21.5

func TerminateMutagenSync(app *DdevApp) error

TerminateMutagenSync destroys a Mutagen sync session It is not an error if the sync session does not exist

func ValidateDocroot added in v1.24.3

func ValidateDocroot(docroot string) error

ValidateDocroot makes sure we have a usable docroot The docroot must remain inside the project root.

func ValidateProjectName added in v1.21.5

func ValidateProjectName(name string) error

ValidateProjectName checks to see if the project name works for a proper hostname

func WriteBuildDockerfile added in v1.21.5

func WriteBuildDockerfile(app *DdevApp, fullpath string, userDockerfilePath string, extraPackages []string, composerVersion string, extraContent string) error

WriteBuildDockerfile writes a Dockerfile to be used in the docker-compose 'build' It may include the contents of .ddev/<container>-build

func WriteDrushrc added in v1.21.5

func WriteDrushrc(app *DdevApp, filePath string) error

WriteDrushrc writes out drushrc.php based on passed-in values. This works on Drupal 6 and Drupal 7 or with drush8 and older

func WriteImageDockerfile added in v1.21.5

func WriteImageDockerfile(fullpath string, contents []byte) error

WriteImageDockerfile writes a dockerfile at the fullpath (including the filename)

func WriteProjectEnvFile added in v1.21.5

func WriteProjectEnvFile(envFilePath string, envMap map[string]string, envText string) error

WriteProjectEnvFile writes the passed envText into the envFilePath .env file changing items in envMap changed in envText there

func XHGuiSetup added in v1.24.4

func XHGuiSetup(app *DdevApp) error

XHGuiSetup does prerequisite work to make XHGui work - Creates the xhgui database if it does not exist - Enable xhprof

func XHGuiStatus added in v1.24.4

func XHGuiStatus(app *DdevApp) (status bool)

XHGuiStatus returns whether the `xhgui` container is running (and xhprof enabled)

func XHProfDisable added in v1.24.4

func XHProfDisable(app *DdevApp) error

XHProfDisable disables xhprof extension and stops gathering info

func XHProfEnable added in v1.24.4

func XHProfEnable(app *DdevApp) error

XHProfEnable enables xhprof extension and starts gathering info

func XHProfStatus added in v1.24.4

func XHProfStatus(app *DdevApp) (status bool, err error)

XHProfStatus returns whether xhprof is enabled

Types

type AddonManifest added in v1.22.2

type AddonManifest struct {
	Name           string   `yaml:"name"`
	Repository     string   `yaml:"repository"`
	Version        string   `yaml:"version"`
	Dependencies   []string `yaml:"dependencies,omitempty"`
	InstallDate    string   `yaml:"install_date"`
	ProjectFiles   []string `yaml:"project_files"`
	GlobalFiles    []string `yaml:"global_files"`
	RemovalActions []string `yaml:"removal_actions"`
}

format of the add-on manifest file

func GetInstalledAddons added in v1.22.2

func GetInstalledAddons(app *DdevApp) []AddonManifest

GetInstalledAddons returns a list of the installed add-ons

type BackdropSettings added in v0.13.0

type BackdropSettings struct {
	DatabaseName     string
	DatabaseUsername string
	DatabasePassword string
	DatabaseHost     string
	DatabaseDriver   string
	DatabasePort     string
	HashSalt         string
	Signature        string
	SiteSettings     string
	SiteSettingsDdev string
	DockerIP         string
	DBPublishedPort  int
}

BackdropSettings holds database connection details for Backdrop.

func NewBackdropSettings added in v0.13.0

func NewBackdropSettings(app *DdevApp) *BackdropSettings

NewBackdropSettings produces a BackdropSettings object with default values.

type ComposerTask added in v1.21.5

type ComposerTask struct {
	// contains filtered or unexported fields
}

ComposerTask is the struct that defines "composer" tasks for hooks, commands to be run in containers.

func (ComposerTask) Execute added in v1.21.5

func (c ComposerTask) Execute() error

Execute (ComposerTask) runs a Composer command in the web container and returns stdout, stderr, err

func (ComposerTask) GetDescription added in v1.21.5

func (c ComposerTask) GetDescription() string

GetDescription returns a human-readable description of the task

type DatabaseDesc added in v1.21.5

type DatabaseDesc struct {
	Type    string `yaml:"type"`
	Version string `yaml:"version"`
}

type DdevApp added in v0.11.0

type DdevApp struct {
	Name                      string                 `yaml:"name,omitempty"`
	Type                      string                 `yaml:"type"`
	AppRoot                   string                 `yaml:"-"`
	Docroot                   string                 `yaml:"docroot"`
	PHPVersion                string                 `yaml:"php_version"`
	WebserverType             string                 `yaml:"webserver_type"`
	WebImage                  string                 `yaml:"webimage,omitempty"`
	RouterHTTPPort            string                 `yaml:"router_http_port,omitempty"`
	RouterHTTPSPort           string                 `yaml:"router_https_port,omitempty"`
	XdebugEnabled             bool                   `yaml:"xdebug_enabled"`
	NoProjectMount            bool                   `yaml:"no_project_mount,omitempty"`
	AdditionalHostnames       []string               `yaml:"additional_hostnames"`
	AdditionalFQDNs           []string               `yaml:"additional_fqdns"`
	MariaDBVersion            string                 `yaml:"mariadb_version,omitempty"`
	MySQLVersion              string                 `yaml:"mysql_version,omitempty"`
	Database                  DatabaseDesc           `yaml:"database"`
	PerformanceMode           types.PerformanceMode  `yaml:"performance_mode,omitempty"`
	FailOnHookFail            bool                   `yaml:"fail_on_hook_fail,omitempty"`
	BindAllInterfaces         bool                   `yaml:"bind_all_interfaces,omitempty"`
	FailOnHookFailGlobal      bool                   `yaml:"-"`
	ConfigPath                string                 `yaml:"-"`
	DataDir                   string                 `yaml:"-"`
	SiteSettingsPath          string                 `yaml:"-"`
	SiteDdevSettingsFile      string                 `yaml:"-"`
	ProviderInstance          *Provider              `yaml:"-"`
	Hooks                     map[string][]YAMLTask  `yaml:"hooks,omitempty"`
	UploadDirDeprecated       string                 `yaml:"upload_dir,omitempty"`
	UploadDirs                []string               `yaml:"upload_dirs,omitempty"`
	WorkingDir                map[string]string      `yaml:"working_dir,omitempty"`
	OmitContainers            []string               `yaml:"omit_containers,omitempty,flow"`
	OmitContainersGlobal      []string               `yaml:"-"`
	HostDBPort                string                 `yaml:"host_db_port,omitempty"`
	HostWebserverPort         string                 `yaml:"host_webserver_port,omitempty"`
	HostHTTPSPort             string                 `yaml:"host_https_port,omitempty"`
	MailpitHTTPPort           string                 `yaml:"mailpit_http_port,omitempty"`
	MailpitHTTPSPort          string                 `yaml:"mailpit_https_port,omitempty"`
	HostMailpitPort           string                 `yaml:"host_mailpit_port,omitempty"`
	WebImageExtraPackages     []string               `yaml:"webimage_extra_packages,omitempty,flow"`
	DBImageExtraPackages      []string               `yaml:"dbimage_extra_packages,omitempty,flow"`
	ProjectTLD                string                 `yaml:"project_tld,omitempty"`
	UseDNSWhenPossible        bool                   `yaml:"use_dns_when_possible"`
	MkcertEnabled             bool                   `yaml:"-"`
	NgrokArgs                 string                 `yaml:"ngrok_args,omitempty"`
	Timezone                  string                 `yaml:"timezone,omitempty"`
	ComposerRoot              string                 `yaml:"composer_root,omitempty"`
	ComposerVersion           string                 `yaml:"composer_version"`
	DisableSettingsManagement bool                   `yaml:"disable_settings_management,omitempty"`
	WebEnvironment            []string               `yaml:"web_environment"`
	NodeJSVersion             string                 `yaml:"nodejs_version,omitempty"`
	CorepackEnable            bool                   `yaml:"corepack_enable"`
	DefaultContainerTimeout   string                 `yaml:"default_container_timeout,omitempty"`
	WebExtraExposedPorts      []WebExposedPort       `yaml:"web_extra_exposed_ports,omitempty"`
	WebExtraDaemons           []WebExtraDaemon       `yaml:"web_extra_daemons,omitempty"`
	OverrideConfig            bool                   `yaml:"override_config,omitempty"`
	DisableUploadDirsWarning  bool                   `yaml:"disable_upload_dirs_warning,omitempty"`
	DdevVersionConstraint     string                 `yaml:"ddev_version_constraint,omitempty"`
	XHGuiHTTPSPort            string                 `yaml:"xhgui_https_port,omitempty"`
	XHGuiHTTPPort             string                 `yaml:"xhgui_http_port,omitempty"`
	HostXHGuiPort             string                 `yaml:"host_xhgui_port,omitempty"`
	XHProfMode                types.XHProfMode       `yaml:"xhprof_mode,omitempty"`
	ComposeYaml               map[string]interface{} `yaml:"-"`
}

DdevApp is the struct that represents a DDEV app, mostly its config from config.yaml.

func GetActiveApp added in v0.11.0

func GetActiveApp(siteName string) (*DdevApp, error)

GetActiveApp returns the active App based on the current working directory or running siteName provided. To use the current working directory, siteName should be ""

func GetActiveProjects added in v1.21.5

func GetActiveProjects() []*DdevApp

GetActiveProjects returns an array of DDEV projects that are currently live in docker.

func GetInactiveProjects added in v1.21.5

func GetInactiveProjects() ([]*DdevApp, error)

GetInactiveProjects returns projects that are currently running

func GetProjects added in v1.21.5

func GetProjects(activeOnly bool) ([]*DdevApp, error)

GetProjects returns projects that are listed in globalconfig projectlist (or in Docker container labels, or both) if activeOnly is true, only show projects that aren't stopped (or broken, missing config, missing files)

func NewApp added in v0.11.0

func NewApp(appRoot string, includeOverrides bool) (*DdevApp, error)

NewApp creates a new DdevApp struct with defaults set and overridden by any existing config.yml.

func (*DdevApp) AddHostsEntriesIfNeeded added in v1.21.5

func (app *DdevApp) AddHostsEntriesIfNeeded() error

AddHostsEntriesIfNeeded will run sudo ddev hostname to the site URL to the host's /etc/hosts. This should be run without admin privs; the DDEV hostname command will handle escalation.

func (*DdevApp) AppConfDir added in v0.11.0

func (app *DdevApp) AppConfDir() string

AppConfDir returns the full path to the app's .ddev configuration directory

func (*DdevApp) AppTypePrompt added in v1.0.0

func (app *DdevApp) AppTypePrompt() error

AppTypePrompt handles the Type workflow.

func (*DdevApp) CanUseHTTPOnly added in v1.23.0

func (app *DdevApp) CanUseHTTPOnly() bool

CanUseHTTPOnly returns true if the project can be accessed via http only

func (*DdevApp) CaptureLogs added in v1.4.0

func (app *DdevApp) CaptureLogs(service string, timestamps bool, tailLines string) (string, error)

CaptureLogs returns logs for a site's given container. See docker.LogsOptions for more information about valid tailLines values.

func (*DdevApp) CheckAddonIncompatibilities added in v1.21.5

func (app *DdevApp) CheckAddonIncompatibilities() error

CheckAddonIncompatibilities looks for problems with docker-compose.*.yaml 3rd-party services

func (*DdevApp) CheckCustomConfig added in v0.15.0

func (app *DdevApp) CheckCustomConfig()

CheckCustomConfig warns the user if any custom configuration files are in use.

func (*DdevApp) CheckDeprecations added in v1.21.5

func (app *DdevApp) CheckDeprecations()

CheckDeprecations warns the user if anything in use is deprecated.

func (*DdevApp) CheckExistingAppInApproot added in v1.21.5

func (app *DdevApp) CheckExistingAppInApproot() error

CheckExistingAppInApproot looks to see if we already have a project in this approot with different name

func (*DdevApp) ComposeFiles added in v0.11.0

func (app *DdevApp) ComposeFiles() ([]string, error)

ComposeFiles returns a list of compose files for a project. It has to put the .ddev/docker-compose.*.y*ml first It has to put the .ddev/docker-compose.override.y*ml last

func (*DdevApp) Composer added in v1.21.5

func (app *DdevApp) Composer(args []string) (string, string, error)

Composer runs Composer commands in the web container, managing pre- and post- hooks returns stdout, stderr, error

func (*DdevApp) ConfigExists added in v0.11.0

func (app *DdevApp) ConfigExists() bool

ConfigExists determines if a DDEV config file exists for this application.

func (*DdevApp) ConfigFileOverrideAction added in v0.12.0

func (app *DdevApp) ConfigFileOverrideAction(overrideExistingConfig bool) error

ConfigFileOverrideAction gives a chance for an apptype to override any element of config.yaml that it needs to

func (*DdevApp) CreateDocroot added in v1.24.2

func (app *DdevApp) CreateDocroot() error

CreateDocroot creates the docroot for the project if it doesn't exist

func (*DdevApp) CreateSSHAuthComposeFile added in v1.21.5

func (app *DdevApp) CreateSSHAuthComposeFile() (string, error)

CreateSSHAuthComposeFile creates the docker-compose file for the ddev-ssh-agent

func (*DdevApp) CreateSettingsFile added in v0.11.0

func (app *DdevApp) CreateSettingsFile() (string, error)

CreateSettingsFile creates the settings file (like settings.php) for the provided app is the apptype has a settingsCreator function. It also preps the ddev directory, including setting up the .ddev gitignore

func (*DdevApp) CreateUploadDirsIfNecessary added in v1.22.0

func (app *DdevApp) CreateUploadDirsIfNecessary()

CreateUploadDirsIfNecessary creates the upload dirs if it doesn't exist, so we can properly set up bind-mounts when doing Mutagen. There is no need to do it if Mutagen is not enabled, and we'll respect a symlink if it exists, and the user has to figure out the right thing to do with Mutagen.

func (*DdevApp) DefaultWorkingDirMap added in v1.4.0

func (app *DdevApp) DefaultWorkingDirMap() map[string]string

DefaultWorkingDirMap returns the app type's default working directory map.

func (*DdevApp) DeleteSnapshot added in v1.21.5

func (app *DdevApp) DeleteSnapshot(snapshotName string) error

DeleteSnapshot removes the snapshot tarball or directory inside a project

func (*DdevApp) Describe added in v0.11.0

func (app *DdevApp) Describe(short bool) (map[string]interface{}, error)

Describe returns a map which provides detailed information on services associated with the running site. if short==true, then only the basic information is returned.

func (*DdevApp) DetectAppType added in v0.11.0

func (app *DdevApp) DetectAppType() string

DetectAppType calls each apptype's detector until it finds a match, or returns 'php' as a last resort.

func (*DdevApp) DetermineSettingsPathLocation added in v0.11.0

func (app *DdevApp) DetermineSettingsPathLocation() (string, error)

DetermineSettingsPathLocation figures out the path to the settings file for an app based on the contents/existence of app.SiteSettingsPath and app.SiteDdevSettingsFile.

func (*DdevApp) DockerComposeFullRenderedYAMLPath added in v1.21.5

func (app *DdevApp) DockerComposeFullRenderedYAMLPath() string

DockerComposeFullRenderedYAMLPath returns the absolute path to where the complete generated yaml file should exist for this project.

func (*DdevApp) DockerComposeYAMLPath added in v0.11.0

func (app *DdevApp) DockerComposeYAMLPath() string

DockerComposeYAMLPath returns the absolute path to where the base generated yaml file should exist for this project.

func (*DdevApp) DockerEnv added in v0.11.0

func (app *DdevApp) DockerEnv()

DockerEnv sets environment variables for a docker-compose run.

func (*DdevApp) EnsureSSHAgentContainer added in v1.4.0

func (app *DdevApp) EnsureSSHAgentContainer() error

EnsureSSHAgentContainer ensures the ssh-auth container is running.

func (*DdevApp) EnvFiles added in v1.23.5

func (app *DdevApp) EnvFiles() ([]string, error)

EnvFiles returns a list of env files for a project. It has to put the .ddev/.env first It has to put the .ddev/.env.* second Env files ending with .example are ignored.

func (*DdevApp) Exec added in v0.11.0

func (app *DdevApp) Exec(opts *ExecOpts) (string, string, error)

Exec executes a given command in the container of given type without allocating a pty Returns ComposeCmd results of stdout, stderr, err If Nocapture arg is true, stdout/stderr will be empty and output directly to stdout/stderr

func (*DdevApp) ExecOnHostOrService added in v1.21.5

func (app *DdevApp) ExecOnHostOrService(service string, cmd string) error

func (*DdevApp) ExecWithTty added in v0.11.0

func (app *DdevApp) ExecWithTty(opts *ExecOpts) error

ExecWithTty executes a given command in the container of given type. It allocates a pty for interactive work.

func (*DdevApp) ExportDB added in v1.4.0

func (app *DdevApp) ExportDB(dumpFile string, compressionType string, targetDB string) error

ExportDB exports the db, with optional output to a file, default gzip targetDB is the db name if not default "db"

func (*DdevApp) FindAllImages added in v1.21.5

func (app *DdevApp) FindAllImages() ([]string, error)

FindAllImages returns an array of image tags for all containers in the compose file

func (*DdevApp) FindContainerByType added in v0.11.0

func (app *DdevApp) FindContainerByType(containerType string) (*dockerContainer.Summary, error)

FindContainerByType will find a container for this site denoted by the containerType if it is available.

func (*DdevApp) FixObsolete added in v1.21.5

func (app *DdevApp) FixObsolete()

FixObsolete removes files that may be obsolete, etc.

func (*DdevApp) GenerateMutagenYml added in v1.21.5

func (app *DdevApp) GenerateMutagenYml() error

GenerateMutagenYml generates the .ddev/mutagen.yml

func (*DdevApp) GeneratePostgresConfig added in v1.21.5

func (app *DdevApp) GeneratePostgresConfig() error

func (*DdevApp) GenerateWebserverConfig added in v1.21.5

func (app *DdevApp) GenerateWebserverConfig() error

GenerateWebserverConfig generates the default nginx and apache config files

func (DdevApp) GetAbsAppRoot added in v1.22.0

func (app DdevApp) GetAbsAppRoot(inContainer bool) string

GetAbsAppRoot returns the absolute path to the project root on the host or if inContainer is set to true in the container.

func (DdevApp) GetAbsDocroot added in v1.22.0

func (app DdevApp) GetAbsDocroot(inContainer bool) string

GetAbsDocroot returns the absolute path to the docroot on the host or if inContainer is set to true in the container.

func (*DdevApp) GetAllURLs added in v0.17.0

func (app *DdevApp) GetAllURLs() (httpURLs []string, httpsURLs []string, allURLs []string)

GetAllURLs returns an array of all the URLs for the project

func (*DdevApp) GetAppRoot added in v0.11.0

func (app *DdevApp) GetAppRoot() string

GetAppRoot return the full path from root to the app directory

func (*DdevApp) GetComposeProjectName added in v1.23.5

func (app *DdevApp) GetComposeProjectName() string

GetComposeProjectName returns the name of the docker-compose project

func (*DdevApp) GetComposerCreateAllowedPaths added in v1.22.5

func (app *DdevApp) GetComposerCreateAllowedPaths() ([]string, error)

GetComposerCreateAllowedPaths gets all paths relative to the app root that are allowed to be present for a given apptype when running ddev composer create-project

func (*DdevApp) GetComposerRoot added in v1.21.5

func (app *DdevApp) GetComposerRoot(inContainer, showWarning bool) string

GetComposerRoot will determine the absolute Composer root directory where all Composer related commands will be executed. If inContainer set to true, the absolute path in the container will be returned, else the absolute path on the host. If showWarning set to true, a warning containing the Composer root will be shown to the user to avoid confusion.

func (*DdevApp) GetConfigPath added in v0.11.0

func (app *DdevApp) GetConfigPath(filename string) string

GetConfigPath returns the path to an application config file specified by filename.

func (*DdevApp) GetContainerUploadDir added in v1.23.2

func (app *DdevApp) GetContainerUploadDir() string

GetContainerUploadDir returns the full path to the first upload directory in container or "" if there is none.

func (*DdevApp) GetContainerUploadDirs added in v1.23.2

func (app *DdevApp) GetContainerUploadDirs() []string

GetContainerUploadDirs returns a slice of the full path to the upload directories in container.

func (*DdevApp) GetDBImage added in v1.21.5

func (app *DdevApp) GetDBImage() string

GetDBImage uses the available version info

func (*DdevApp) GetDefaultNetworkName added in v1.23.5

func (app *DdevApp) GetDefaultNetworkName() string

GetDefaultNetworkName returns the default project network name

func (DdevApp) GetDocroot added in v0.11.0

func (app DdevApp) GetDocroot() string

GetDocroot returns the docroot path relative to project root

func (*DdevApp) GetExistingDBType added in v1.21.5

func (app *DdevApp) GetExistingDBType() (string, error)

GetExistingDBType returns type/version like mariadb:10.11 or postgres:13 or "" if no existing volume This has to make a Docker container run so is fairly costly.

func (*DdevApp) GetHTTPSURL added in v0.12.0

func (app *DdevApp) GetHTTPSURL() string

GetHTTPSURL returns the primary HTTPS URL for an app.

func (*DdevApp) GetHTTPURL added in v0.12.0

func (app *DdevApp) GetHTTPURL() string

GetHTTPURL returns the HTTP URL for an app.

func (*DdevApp) GetHookDefaultComments added in v0.11.0

func (app *DdevApp) GetHookDefaultComments() []byte

GetHookDefaultComments gets the actual text of the config.yaml hook suggestions for a given apptype

func (*DdevApp) GetHostUploadDirFullPath added in v1.21.5

func (app *DdevApp) GetHostUploadDirFullPath() string

GetHostUploadDirFullPath returns the full path to the first upload directory on the host or "" if there is none.

func (*DdevApp) GetHostWorkingDir added in v1.23.2

func (app *DdevApp) GetHostWorkingDir(service string, dir string) string

GetHostWorkingDir will determine the appropriate working directory for the service on the host side

func (*DdevApp) GetHostname added in v0.11.0

func (app *DdevApp) GetHostname() string

GetHostname returns the primary hostname of the app.

func (*DdevApp) GetHostnames added in v0.17.0

func (app *DdevApp) GetHostnames() []string

GetHostnames returns a slice of all the configured hostnames.

func (*DdevApp) GetLatestSnapshot added in v1.21.5

func (app *DdevApp) GetLatestSnapshot() (string, error)

GetLatestSnapshot returns the name of the latest created snapshot of a project

func (*DdevApp) GetMailpitHTTPPort added in v1.22.3

func (app *DdevApp) GetMailpitHTTPPort() string

GetMailpitHTTPPort returns app's mailpit router http port If HTTP_EXPOSE has a mapping to port 8025 in the container, use that If not, use the global or project MailpitHTTPPort

func (*DdevApp) GetMailpitHTTPSPort added in v1.22.2

func (app *DdevApp) GetMailpitHTTPSPort() string

GetMailpitHTTPSPort returns app's mailpit router https port If HTTPS_EXPOSE has a mapping to port 8025 in the container, use that If not, use the global or project MailpitHTTPSPort

func (*DdevApp) GetMariaDBVolumeName added in v1.21.5

func (app *DdevApp) GetMariaDBVolumeName() string

GetMariaDBVolumeName returns the Docker volume name of the mariadb/database volume For historical reasons this isn't lowercased.

func (*DdevApp) GetMaxContainerWaitTime added in v1.23.4

func (app *DdevApp) GetMaxContainerWaitTime() int

GetMaxContainerWaitTime looks through all services and returns the max time we expect to wait for all containers to become `healthy`. Mostly this is healtcheck.start_period. Defaults to DefaultContainerTimeout (usually 120 unless overridden)

func (*DdevApp) GetMinimalContainerTimeout added in v1.24.0

func (app *DdevApp) GetMinimalContainerTimeout() string

GetMinimalContainerTimeout returns the timeout depending on the container timeout. It returns the default timeout if the container's specified timeout is less than the default.

func (*DdevApp) GetMutagenSyncID added in v1.22.0

func (app *DdevApp) GetMutagenSyncID() (id string, err error)

GetMutagenSyncID() returns the project sync ID

func (*DdevApp) GetNFSMountVolumeName added in v1.21.5

func (app *DdevApp) GetNFSMountVolumeName() string

GetNFSMountVolumeName returns the Docker volume name of the nfs mount volume

func (*DdevApp) GetName added in v0.11.0

func (app *DdevApp) GetName() string

GetName returns the app's name

func (*DdevApp) GetOmittedContainers added in v1.21.5

func (app *DdevApp) GetOmittedContainers() []string

GetOmittedContainers returns full list of global and local omitted containers

func (*DdevApp) GetPerformanceMode added in v1.22.0

func (app *DdevApp) GetPerformanceMode() types.PerformanceMode

GetPerformanceMode returns performance mode config respecting defaults.

func (*DdevApp) GetPhpVersion added in v0.12.0

func (app *DdevApp) GetPhpVersion() string

GetPhpVersion returns the app's php version

func (*DdevApp) GetPostgresVolumeName added in v1.21.5

func (app *DdevApp) GetPostgresVolumeName() string

GetPostgresVolumeName returns the Docker volume name of the postgres/database volume For historical reasons this isn't lowercased.

func (*DdevApp) GetPrimaryRouterHTTPPort added in v1.24.3

func (app *DdevApp) GetPrimaryRouterHTTPPort() string

GetPrimaryRouterHTTPPort returns app's primary router http port It has to choose from (highest to lowest priority): 1. Empty string if webserver type is generic and no web_extra_exposed_ports are defined 2. The actual port configured into running container via DDEV_ROUTER_HTTP_PORT 3. The project router_http_port 4. The global router_http_port

func (*DdevApp) GetPrimaryRouterHTTPSPort added in v1.24.3

func (app *DdevApp) GetPrimaryRouterHTTPSPort() string

GetPrimaryRouterHTTPSPort returns app's primary router https port It has to choose from (highest to lowest priority): 1. Empty string if webserver type is generic and no web_extra_exposed_ports are defined 2. The actual port configured into running container via DDEV_ROUTER_HTTPS_PORT 3. The project router_https_port 4. The global router_https_port

func (*DdevApp) GetPrimaryURL added in v1.21.5

func (app *DdevApp) GetPrimaryURL() string

GetPrimaryURL returns the primary URL that can be used, https or http

func (*DdevApp) GetProvider added in v0.11.0

func (app *DdevApp) GetProvider(providerName string) (*Provider, error)

GetProvider returns a pointer to the provider instance interface.

func (*DdevApp) GetPublishedPort added in v1.1.0

func (app *DdevApp) GetPublishedPort(serviceName string) (int, error)

GetPublishedPort returns the host-exposed public port of a container.

func (*DdevApp) GetPublishedPortForPrivatePort added in v1.22.2

func (app *DdevApp) GetPublishedPortForPrivatePort(serviceName string, privatePort uint16) (publicPort int, err error)

GetPublishedPortForPrivatePort returns the host-exposed public port of a container for a given private port.

func (*DdevApp) GetRelativeDirectory added in v1.22.5

func (app *DdevApp) GetRelativeDirectory(path string) string

GetRelativeDirectory returns the directory relative to project root Note that the relative dir is returned as unix-style forward-slashes

func (*DdevApp) GetRelativeWorkingDirectory added in v1.21.5

func (app *DdevApp) GetRelativeWorkingDirectory() string

GetRelativeWorkingDirectory returns the relative working directory relative to project root Note that the relative dir is returned as unix-style forward-slashes

func (*DdevApp) GetStartScriptTimeout added in v1.24.0

func (app *DdevApp) GetStartScriptTimeout() string

GetStartScriptTimeout returns the timeout for scripts on start Used for START_SCRIPT_TIMEOUT

func (*DdevApp) GetType added in v0.11.0

func (app *DdevApp) GetType() string

GetType returns the application type as a (lowercase) string

func (*DdevApp) GetUploadDir added in v0.11.0

func (app *DdevApp) GetUploadDir() string

GetUploadDir returns the first upload (public files) directory. This value is relative to the docroot

func (*DdevApp) GetUploadDirs added in v1.22.0

func (app *DdevApp) GetUploadDirs() []string

GetUploadDirs returns the upload (public files) directories. These are gathered from the per-CMS configurations and the value of upload_dirs. upload_dirs overrides the per-CMS configuration

func (*DdevApp) GetValidProviders added in v1.21.5

func (app *DdevApp) GetValidProviders() ([]string, error)

GetValidProviders is a helper function that returns a list of valid providers.

func (*DdevApp) GetWebContainerDirectHTTPPort added in v1.24.3

func (app *DdevApp) GetWebContainerDirectHTTPPort() (int, error)

GetWebContainerDirectHTTPPort returns the direct-access public tcp port for http

func (*DdevApp) GetWebContainerDirectHTTPSPort added in v1.24.5

func (app *DdevApp) GetWebContainerDirectHTTPSPort() (int, error)

GetWebContainerDirectHTTPSPort returns the direct-access public tcp port for https

func (*DdevApp) GetWebContainerDirectHTTPSURL added in v1.21.5

func (app *DdevApp) GetWebContainerDirectHTTPSURL() string

GetWebContainerDirectHTTPSURL returns the URL that can be used without the router to get to web container via https.

func (*DdevApp) GetWebContainerDirectHTTPURL added in v1.21.5

func (app *DdevApp) GetWebContainerDirectHTTPURL() string

GetWebContainerDirectHTTPURL returns the URL that can be used without the router to get to web container.

func (*DdevApp) GetWebEnvVar added in v1.23.5

func (app *DdevApp) GetWebEnvVar(name string) string

GetWebEnvVar gets an environment variable from app.ComposeYaml["services"]["web"]["environment"] It returns empty string if there is no var or the ComposeYaml is just not set.

func (*DdevApp) GetWebserverType added in v1.2.0

func (app *DdevApp) GetWebserverType() string

GetWebserverType returns the app's webserver type (nginx-fpm/apache-fpm/generic)

func (*DdevApp) GetWorkingDir added in v1.21.5

func (app *DdevApp) GetWorkingDir(service string, dir string) string

GetWorkingDir will determine the appropriate working directory for an Exec/ExecWithTty command by consulting with the project configuration. If no dir is specified for the service, an empty string will be returned.

func (*DdevApp) GetXHGuiEnvVar added in v1.24.4

func (app *DdevApp) GetXHGuiEnvVar(name string) string

GetXHGuiEnvVar() gets an environment variable from app.ComposeYaml["services"]["xhgui"]["environment"] It returns empty string if there is no var or the ComposeYaml is just not set.

func (*DdevApp) GetXHGuiHTTPPort added in v1.24.4

func (app *DdevApp) GetXHGuiHTTPPort() string

GetXHGuiHTTPPort returns app's xhgui router http port If HTTP_EXPOSE has a mapping to port 8143 in the container, use that If not, use the global or project XHGuiHTTPPort

func (*DdevApp) GetXHGuiHTTPSPort added in v1.24.4

func (app *DdevApp) GetXHGuiHTTPSPort() string

GetXHGuiHTTPSPort returns app's xhgui router https port If HTTPS_EXPOSE has a mapping to port 8142 in the container, use that If not, use the global or project XHGuiHTTPSPort

func (*DdevApp) GetXHGuiPort added in v1.24.4

func (app *DdevApp) GetXHGuiPort() string

GetXHGuiPort returns the router port where we're serving xhgui

func (*DdevApp) GetXHGuiURL added in v1.24.4

func (app *DdevApp) GetXHGuiURL() string

GetXHGuiURL returns the URL for xhgui

func (*DdevApp) GetXHProfMode added in v1.24.4

func (app *DdevApp) GetXHProfMode() types.XHProfMode

GetXHProfMode returns xhprof mode config respecting defaults.

func (*DdevApp) HasConfigNameOverride added in v1.24.5

func (app *DdevApp) HasConfigNameOverride() (bool, string)

HasConfigNameOverride checks if the app name should be different, returns true if the app name has been changed along with the new app name.

func (*DdevApp) HasCustomCert added in v1.23.0

func (app *DdevApp) HasCustomCert() bool

HasCustomCert returns true if the project uses a custom certificate

func (*DdevApp) HostName added in v0.11.0

func (app *DdevApp) HostName() string

HostName returns the hostname of a given application.

func (*DdevApp) ImportDB added in v0.11.0

func (app *DdevApp) ImportDB(dumpFile string, extractPath string, progress bool, noDrop bool, targetDB string) error

ImportDB takes a source sql dump and imports it to an active site's database container.

func (*DdevApp) ImportFiles added in v0.11.0

func (app *DdevApp) ImportFiles(uploadDir, importPath, extractPath string) error

ImportFiles takes a source directory or archive and copies to the uploaded files directory of a given app.

func (*DdevApp) Init added in v0.11.0

func (app *DdevApp) Init(basePath string) error

Init populates DdevApp config based on the current working directory. It does not start the containers.

func (*DdevApp) IsMutagenEnabled added in v1.21.5

func (app *DdevApp) IsMutagenEnabled() bool

IsMutagenEnabled returns true if Mutagen is enabled locally or globally It's also required and set if NoBindMounts is set, since we have to have a way to get code on there.

func (*DdevApp) IsNFSMountEnabled added in v1.21.5

func (app *DdevApp) IsNFSMountEnabled() bool

IsNFSMountEnabled determines whether NFS is enabled.

func (*DdevApp) IsUploadDirsWarningDisabled added in v1.22.0

func (app *DdevApp) IsUploadDirsWarningDisabled() bool

IsUploadDirsWarningDisabled returns true if UploadDirs is disabled by the user.

func (*DdevApp) IsValidProvider added in v1.21.5

func (app *DdevApp) IsValidProvider(provider string) (bool, error)

IsValidProvider is a helper function to determine if a provider value is valid, returning true if the supplied provider is valid and false otherwise.

func (*DdevApp) ListSnapshotNames added in v1.23.5

func (app *DdevApp) ListSnapshotNames() ([]string, error)

ListSnapshots returns a list of the names of all project snapshots

func (*DdevApp) ListSnapshots added in v1.21.5

func (app *DdevApp) ListSnapshots() ([]Snapshot, error)

ListSnapshots returns a list of all project snapshots

func (*DdevApp) LoadConfigYamlFile added in v1.21.5

func (app *DdevApp) LoadConfigYamlFile(filePath string) error

LoadConfigYamlFile loads one config.yaml into app, overriding what might be there.

func (*DdevApp) Logs added in v0.11.0

func (app *DdevApp) Logs(service string, follow bool, timestamps bool, tailLines string) error

Logs returns logs for a site's given container. See docker.LogsOptions for more information about valid tailLines values.

func (*DdevApp) MutagenStatus added in v1.21.5

func (app *DdevApp) MutagenStatus() (status string, shortResult string, mapResult map[string]interface{}, err error)

MutagenStatus checks to see if there is an error case in Mutagen We don't want to do a flush yet in that case. Note that the available statuses are at https://github.com/mutagen-io/mutagen/blob/master/pkg/synchronization/state.go#L9 in func (s Status) Description() Can return any of those or "nosession" (with more info) if we didn't find a session at all

func (*DdevApp) MutagenSyncFlush added in v1.21.5

func (app *DdevApp) MutagenSyncFlush() error

MutagenSyncFlush performs a Mutagen sync flush, waits for result, and checks for errors

func (*DdevApp) Pause added in v1.21.5

func (app *DdevApp) Pause() error

Pause initiates docker-compose stop

func (*DdevApp) PostConfigAction added in v0.12.0

func (app *DdevApp) PostConfigAction() error

PostConfigAction gives a chance for an apptype to override do something at the end of ddev config.

func (*DdevApp) PostImportDBAction added in v0.11.0

func (app *DdevApp) PostImportDBAction() error

PostImportDBAction calls each apptype's detector until it finds a match, or returns 'php' as a last resort.

func (*DdevApp) PostStartAction added in v0.20.0

func (app *DdevApp) PostStartAction() error

PostStartAction gives a chance for an apptype to do something after the app has been started.

func (*DdevApp) ProcessHooks added in v0.11.0

func (app *DdevApp) ProcessHooks(hookName string) error

ProcessHooks executes Tasks defined in Hooks

func (*DdevApp) PromptForConfig added in v0.11.0

func (app *DdevApp) PromptForConfig() error

PromptForConfig goes through a set of prompts to receive user input and generate an Config struct.

func (*DdevApp) ProtectedID added in v1.22.0

func (app *DdevApp) ProtectedID() string

ProtectedID returns the unique hash value for the project.

func (*DdevApp) Pull added in v1.3.0

func (app *DdevApp) Pull(provider *Provider, skipDbArg bool, skipFilesArg bool, skipImportArg bool) error

Pull performs an import of db and files

func (*DdevApp) PullContainerImages added in v1.21.5

func (app *DdevApp) PullContainerImages() error

PullContainerImages configured Docker images with full output, since docker-compose up doesn't have nice output

func (*DdevApp) Push added in v1.21.5

func (app *DdevApp) Push(provider *Provider, skipDbArg bool, skipFilesArg bool) error

Push pushes db and files up to upstream hosting provider

func (*DdevApp) ReadConfig added in v0.11.0

func (app *DdevApp) ReadConfig(includeOverrides bool) ([]string, error)

ReadConfig reads project configuration from the config.yaml file It does not attempt to set default values; that's NewApp's job. returns the list of config files read

func (*DdevApp) RemoveGlobalProjectInfo added in v1.21.5

func (app *DdevApp) RemoveGlobalProjectInfo()

RemoveGlobalProjectInfo deletes the project from DdevProjectList

func (*DdevApp) RemoveHostsEntriesIfNeeded added in v1.21.5

func (app *DdevApp) RemoveHostsEntriesIfNeeded() error

RemoveHostsEntriesIfNeeded will remove the site URL from the host's /etc/hosts. This should be run without administrative privileges and will escalate where needed.

func (*DdevApp) RenderComposeYAML added in v0.11.0

func (app *DdevApp) RenderComposeYAML() (string, error)

RenderComposeYAML renders the contents of .ddev/.ddev-docker-compose*.

func (*DdevApp) Restart added in v1.21.5

func (app *DdevApp) Restart() error

Restart does a Stop() and a Start

func (*DdevApp) RestoreSnapshot added in v1.1.0

func (app *DdevApp) RestoreSnapshot(snapshotName string) error

RestoreSnapshot restores a MariaDB snapshot of the db to be loaded The project must be stopped and Docker volume removed and recreated for this to work.

func (*DdevApp) SetApptypeSettingsPaths added in v0.11.0

func (app *DdevApp) SetApptypeSettingsPaths()

SetApptypeSettingsPaths chooses and sets the settings.php/settings.local.php and related paths for a given app.

func (*DdevApp) SetPerformanceMode added in v1.22.0

func (app *DdevApp) SetPerformanceMode(performanceMode string) *DdevApp

SetPerformanceMode sets the performance mode config.

func (*DdevApp) SiteStatus added in v0.11.0

func (app *DdevApp) SiteStatus() (string, string)

SiteStatus returns the current status of a project determined from web and db service health. returns status, statusDescription Can return SiteConfigMissing, SiteDirMissing, SiteStopped, SiteStarting, SiteRunning, SitePaused, or another status returned from dockerutil.GetContainerHealth(), including "exited", "restarting", "healthy"

func (*DdevApp) Snapshot added in v1.21.5

func (app *DdevApp) Snapshot(snapshotName string) (string, error)

Snapshot causes a snapshot of the db to be written into the snapshots volume Returns the name of the snapshot and err

func (*DdevApp) Start added in v0.11.0

func (app *DdevApp) Start() error

Start initiates docker-compose up

func (*DdevApp) StartAndWait added in v1.21.5

func (app *DdevApp) StartAndWait(extraSleep int) error

StartAndWait is primarily for use in tests. It does app.Start() but then waits for extra seconds before returning. extraSleep arg in seconds is the time to wait if > 0

func (*DdevApp) StartAppIfNotRunning added in v1.21.5

func (app *DdevApp) StartAppIfNotRunning() error

StartAppIfNotRunning is intended to replace much-duplicated code in the commands.

func (*DdevApp) StartOptionalProfiles added in v1.24.4

func (app *DdevApp) StartOptionalProfiles(profiles []string) error

StartOptionalProfiles starts services in the named compose profile(s) The profiles can be a comma-separated list

func (*DdevApp) Stop added in v0.11.0

func (app *DdevApp) Stop(removeData bool, createSnapshot bool) error

Stop stops and Removes the Docker containers for the project in current directory.

func (*DdevApp) TargetPortFromExposeVariable added in v1.24.3

func (app *DdevApp) TargetPortFromExposeVariable(exposeEnvVar string, targetPort string) string

TargetPortFromExposeVariable uses a string like HTTP_EXPOSE or HTTPS_EXPOSE, which is a comma-delimited list of colon-delimited port-pairs Given a target port (often "80" or "8025") its job is to get from HTTPS_EXPOSE or HTTP_EXPOSE the related port to be exposed on the router. It returns an empty string if the HTTP_EXPOSE/HTTPS_EXPOSE is not found or no valid port mapping is found.

func (*DdevApp) TrackProject added in v1.22.0

func (app *DdevApp) TrackProject()

TrackProject collects and tracks information about the project for instrumentation.

func (*DdevApp) UpdateComposeYaml added in v1.21.5

func (app *DdevApp) UpdateComposeYaml(content string) error

UpdateComposeYaml updates app.ComposeYaml from available content

func (*DdevApp) UpdateGlobalProjectList added in v1.21.5

func (app *DdevApp) UpdateGlobalProjectList() error

UpdateGlobalProjectList updates any information about project that is tracked in global project list: - approot - configured host ports Checks that configured host ports are not already reserved by another project

func (*DdevApp) ValidateConfig added in v0.11.0

func (app *DdevApp) ValidateConfig() error

ValidateConfig ensures the configuration meets ddev's requirements.

func (*DdevApp) Wait added in v0.11.0

func (app *DdevApp) Wait(requiredContainers []string) error

Wait ensures that the app service containers are healthy.

func (*DdevApp) WaitByLabels added in v1.21.5

func (app *DdevApp) WaitByLabels(labels map[string]string) error

WaitByLabels waits for containers found by list of labels to be ready

func (*DdevApp) WaitForServices added in v1.21.5

func (app *DdevApp) WaitForServices() error

WaitForServices waits for all the services in docker-compose to come up

func (*DdevApp) WarnIfConfigReplace added in v0.11.0

func (app *DdevApp) WarnIfConfigReplace()

WarnIfConfigReplace messages user about whether config is being replaced or created

func (*DdevApp) WriteConfig added in v0.11.0

func (app *DdevApp) WriteConfig() error

WriteConfig writes the app configuration into the .ddev folder.

func (*DdevApp) WriteDockerComposeYAML added in v1.21.5

func (app *DdevApp) WriteDockerComposeYAML() error

WriteDockerComposeYAML writes a .ddev-docker-compose-base.yaml and related to the .ddev directory. It then uses `docker-compose convert` to get a canonical version of the full compose file. It then makes a couple of fixups to the canonical version (networks and approot bind points) by marshaling the canonical version to YAML and then unmarshaling it back into a canonical version.

type DrupalSettings added in v0.11.0

type DrupalSettings struct {
	DeployName       string
	DeployURL        string
	DatabaseName     string
	DatabaseUsername string
	DatabasePassword string
	DatabaseHost     string
	DatabaseDriver   string
	DatabasePort     string
	HashSalt         string
	Signature        string
	SitePath         string
	SiteSettings     string
	SiteSettingsDdev string
	SyncDir          string
	DockerIP         string
	DBPublishedPort  int
}

DrupalSettings encapsulates all the configurations for a Drupal site.

func NewDrupalSettings added in v0.11.0

func NewDrupalSettings(app *DdevApp) *DrupalSettings

NewDrupalSettings produces a DrupalSettings object with default.

type ExecHostTask added in v1.21.5

type ExecHostTask struct {
	// contains filtered or unexported fields
}

ExecHostTask is the struct that defines "exec-host" tasks for hooks, commands that get run on the host.

func (ExecHostTask) Execute added in v1.21.5

func (c ExecHostTask) Execute() error

Execute (HostTask) executes a command in a container, by default the web container, and returns stdout, stderr, err

func (ExecHostTask) GetDescription added in v1.21.5

func (c ExecHostTask) GetDescription() string

GetDescription returns a human-readable description of the task

type ExecOpts added in v1.4.0

type ExecOpts struct {
	// Service is the service, as in 'web', 'db'
	Service string
	// Dir is the full path to the working directory inside the container
	Dir string
	// Cmd is the string to execute via bash/sh
	Cmd string
	// RawCmd is the array to execute if not using
	RawCmd []string
	// Nocapture if true causes use of ComposeNoCapture, so the stdout and stderr go right to stdout/stderr
	NoCapture bool
	// Tty if true causes a tty to be allocated
	Tty bool
	// Stdout can be overridden with a File
	Stdout *os.File
	// Stderr can be overridden with a File
	Stderr *os.File
	// Detach does docker-compose detach
	Detach bool
	// Env is the array of environment variables
	Env []string
}

ExecOpts contains options for running a command inside a container

type ExecTask added in v1.21.5

type ExecTask struct {
	// contains filtered or unexported fields
}

ExecTask is the struct that defines "exec" tasks for hooks, commands to be run in containers.

func (ExecTask) Execute added in v1.21.5

func (c ExecTask) Execute() error

Execute executes an ExecTask

func (ExecTask) GetDescription added in v1.21.5

func (c ExecTask) GetDescription() string

GetDescription returns a human-readable description of the task

type InstallDesc added in v1.22.2

type InstallDesc struct {
	// Name must be unique in a project; it will overwrite any existing add-on with the same name.
	Name                  string            `yaml:"name"`
	ProjectFiles          []string          `yaml:"project_files"`
	GlobalFiles           []string          `yaml:"global_files,omitempty"`
	DdevVersionConstraint string            `yaml:"ddev_version_constraint,omitempty"`
	Dependencies          []string          `yaml:"dependencies,omitempty"`
	PreInstallActions     []string          `yaml:"pre_install_actions,omitempty"`
	PostInstallActions    []string          `yaml:"post_install_actions,omitempty"`
	RemovalActions        []string          `yaml:"removal_actions,omitempty"`
	YamlReadFiles         map[string]string `yaml:"yaml_read_files"`
}

Format of install.yaml

type InvalidOmitContainers added in v1.21.5

type InvalidOmitContainers error

type ListCommandSettings added in v1.22.0

type ListCommandSettings struct {
	// ActiveOnly, if set, shows only running projects
	ActiveOnly bool

	// Continuous, if set, makes list continuously output
	Continuous bool

	// WrapListTable allow that the text in the table of ddev list wraps instead of cutting it to fit the terminal width
	WrapTableText bool

	// ContinuousSleepTime is time to sleep between reads with --continuous
	ContinuousSleepTime int

	// TypeFilter contains the project type which is then used to filter the project list
	TypeFilter string
}

ListCommandSettings conains all filters and settings of the `ddev list` command

type Provider

type Provider struct {
	ProviderType string `yaml:"provider"`

	ProviderInfo `yaml:"providers"`
	// contains filtered or unexported fields
}

Provider provides generic-specific import functionality.

func (*Provider) GetBackup

func (p *Provider) GetBackup(backupType string) ([]string, []string, error)

GetBackup will create and download a set of backups Valid values for backupType are "database" or "files". returns []fileURL, []importPath, error

func (*Provider) Init

func (p *Provider) Init(pType string, app *DdevApp) error

Init handles loading data from saved config.

func (*Provider) Read

func (p *Provider) Read(configPath string) error

Read generic provider configuration from a specified location on disk.

func (*Provider) UploadDB added in v1.21.5

func (p *Provider) UploadDB() error

UploadDB is used by Push to push the database to hosting provider

func (*Provider) UploadFiles added in v1.21.5

func (p *Provider) UploadFiles() error

UploadFiles is used by Push to push the user-generated files to the hosting provider

func (*Provider) Validate

func (p *Provider) Validate() error

Validate ensures that the current configuration is valid (i.e. the configured pantheon site/environment exists)

type ProviderCommand added in v1.21.5

type ProviderCommand struct {
	Command string `yaml:"command"`
	Service string `yaml:"service,omitempty"`
}

ProviderCommand defines the shell command to be run for one of the commands (db pull, etc.)

type ProviderInfo added in v1.21.5

type ProviderInfo struct {
	EnvironmentVariables map[string]string `yaml:"environment_variables"`
	AuthCommand          ProviderCommand   `yaml:"auth_command"`
	DBPullCommand        ProviderCommand   `yaml:"db_pull_command"`
	DBImportCommand      ProviderCommand   `yaml:"db_import_command"`
	FilesPullCommand     ProviderCommand   `yaml:"files_pull_command"`
	FilesImportCommand   ProviderCommand   `yaml:"files_import_command"`
	CodePullCommand      ProviderCommand   `yaml:"code_pull_command,omitempty"`
	DBPushCommand        ProviderCommand   `yaml:"db_push_command"`
	FilesPushCommand     ProviderCommand   `yaml:"files_push_command"`
}

ProviderInfo defines the provider

type Snapshot added in v1.23.5

type Snapshot struct {
	Name    string
	Created time.Time
}

type Task added in v1.21.5

type Task interface {
	Execute() error
	GetDescription() string
}

Task is the interface defining methods we'll use in various tasks

func NewTask added in v1.21.5

func NewTask(app *DdevApp, ytask YAMLTask) Task

NewTask is the factory method to create whatever kind of task we need using the yaml description of the task. Returns a task (of various types) or nil

type TraefikRouting added in v1.21.5

type TraefikRouting struct {
	ExternalHostnames []string
	ExternalPort      string
	Service           struct {
		ServiceName         string
		InternalServiceName string
		InternalServicePort string
	}
	HTTPS bool
}

type WebExposedPort added in v1.21.5

type WebExposedPort struct {
	Name             string `yaml:"name"`
	WebContainerPort int    `yaml:"container_port"`
	HTTPPort         int    `yaml:"http_port"`
	HTTPSPort        int    `yaml:"https_port"`
}

type WebExtraDaemon added in v1.21.5

type WebExtraDaemon struct {
	Name      string `yaml:"name"`
	Command   string `yaml:"command"`
	Directory string `yaml:"directory"`
}

type WordpressConfig added in v0.11.0

type WordpressConfig struct {
	WPGeneric        bool
	DeployName       string
	DeployURL        string
	DatabaseName     string
	DatabaseUsername string
	DatabasePassword string
	DatabaseHost     string
	AuthKey          string
	SecureAuthKey    string
	LoggedInKey      string
	NonceKey         string
	AuthSalt         string
	SecureAuthSalt   string
	LoggedInSalt     string
	NonceSalt        string
	Docroot          string
	TablePrefix      string
	Signature        string
	SiteSettings     string
	SiteSettingsDdev string
	AbsPath          string
	DbCharset        string
	DbCollate        string
}

WordpressConfig encapsulates all the configurations for a WordPress site.

func NewWordpressConfig added in v0.11.0

func NewWordpressConfig(app *DdevApp, absPath string) *WordpressConfig

NewWordpressConfig produces a WordpressConfig object with defaults.

type YAMLTask added in v1.21.5

type YAMLTask map[string]interface{}

YAMLTask defines tasks like Exec to be run in hooks

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL