|
=== DDEV Add-on Ecosystem Analysis === |
|
Total repositories with topic:ddev-get: 145 |
|
|
|
=== Checking for advanced features usage === |
|
|
|
|
|
=== SUMMARY STATISTICS === |
|
Advanced Features Usage: |
|
yaml_read_files: 0 add-ons |
|
Go templating: 0 add-ons |
|
|
|
Action Types: |
|
pre_install_actions: 0 add-ons |
|
post_install_actions: 0 add-ons |
|
removal_actions: 0 add-ons |
|
|
|
Complexity Distribution: |
|
Complex (>20 action lines): 0 add-ons |
|
Medium (6-20 action lines): 0 add-ons |
|
Simple (≤5 action lines): 0 add-ons |
|
|
|
=== SPECIFIC EXAMPLES === |
|
|
|
Examining ddev/ddev-platformsh (known complex)... |
|
name: ddev-platformsh |
|
|
|
ddev_version_constraint: '>= v1.24.3' |
|
|
|
project_files: |
|
- web-build/Dockerfile.platformsh |
|
- homeadditions/.bashrc.d/platformsh-environment.sh |
|
- platformsh/.gitignore |
|
- platformsh/generate_db_relationship.sh |
|
- platformsh/generate_elasticsearch_relationship.sh |
|
- platformsh/generate_memcached_relationship.sh |
|
- platformsh/generate_opensearch_relationship.sh |
|
- platformsh/generate_redis_relationship.sh |
|
- platformsh/generate_redis-persistent_relationship.sh |
|
- platformsh/generate_route.sh |
|
|
|
global_files: |
|
- commands/web/platform |
|
|
|
pre_install_actions: |
|
- | |
|
#ddev-nodisplay |
|
#ddev-description:check project type |
|
{{ if not (hasPrefix "php" .platformapp.type) }} |
|
printf "\n\nUnsupported application type {{ .platformapp.type }}.\nOnly PHP applications are currently supported." >&2 |
|
exit 5 |
|
{{ end }} |
|
|
|
# Get PLATFORMSH_CLI_TOKEN from user if we don't have it yet |
|
- | |
|
(first 30 lines shown) |
|
|
|
=== DETAILED ANALYSIS OF ADD-ONS USING yaml_read_files === |
|
|
|
=== a11ywatch/ddev-a11ywatch === |
|
# - touch somefile.${DDEV_PROJECT_TYPE}.${DDEV_DOCROOT}.txt |
|
|
|
# This item shows complex go templating possibilities based on yaml_read_files |
|
#- | |
|
# cat <<EOF >.ddev/config.platformsh.yaml |
|
# php_version: {{ trimPrefix "php:" .platformapp.type }} |
|
# database: |
|
# type: {{ regexReplaceAll ":.*$" .services.db.type "" }} |
|
# version: {{ regexReplaceAll "^.*:" .services.db.type "" }} |
|
# |
|
# docroot: {{ dig "web" "locations" "/" "root" "notfound" .platformapp }} |
|
# {{ if eq .platformapp.build.flavor "composer" }} |
|
# hooks: |
|
-- |
|
# See example in |
|
# https://github.com/rfay/ddev/blob/20220606_yaml_read_experiment/cmd/ddev/cmd/testdata/TestCmdGetComplex/recipe/install.yaml |
|
yaml_read_files: |
|
# someyaml: someyaml.yaml |
|
# otheryaml: someotheryaml.yaml |
|
|
|
Go templating examples: |
|
# php_version: {{ trimPrefix "php:" .platformapp.type }} |
|
# type: {{ regexReplaceAll ":.*$" .services.db.type "" }} |
|
# version: {{ regexReplaceAll "^.*:" .services.db.type "" }} |
|
# docroot: {{ dig "web" "locations" "/" "root" "notfound" .platformapp }} |
|
# {{ if eq .platformapp.build.flavor "composer" }} |
|
|
|
--- |
|
=== tag1consulting/ddev-gander === |
|
# |
|
|
|
# This item shows complex go templating possibilities based on yaml_read_files |
|
#- | |
|
#- #ddev-description:Create a config.platformsh.yaml |
|
# cat <<EOF >.ddev/config.platformsh.yaml |
|
# php_version: {{ trimPrefix "php:" .platformapp.type }} |
|
# database: |
|
# type: {{ regexReplaceAll ":.*$" .services.db.type "" }} |
|
# version: {{ regexReplaceAll "^.*:" .services.db.type "" }} |
|
# |
|
# docroot: {{ dig "web" "locations" "/" "root" "notfound" .platformapp }} |
|
# {{ if eq .platformapp.build.flavor "composer" }} |
|
-- |
|
# See example in |
|
# https://github.com/rfay/ddev/blob/20220606_yaml_read_experiment/cmd/ddev/cmd/testdata/TestCmdGetComplex/recipe/install.yaml |
|
yaml_read_files: |
|
# someyaml: someyaml.yaml |
|
# otheryaml: someotheryaml.yaml |
|
|
|
Go templating examples: |
|
# php_version: {{ trimPrefix "php:" .platformapp.type }} |
|
# type: {{ regexReplaceAll ":.*$" .services.db.type "" }} |
|
# version: {{ regexReplaceAll "^.*:" .services.db.type "" }} |
|
# docroot: {{ dig "web" "locations" "/" "root" "notfound" .platformapp }} |
|
# {{ if eq .platformapp.build.flavor "composer" }} |
|
|
|
--- |
|
=== GetDKAN/ddev-dkan === |
|
# - touch somefile.${DDEV_PROJECT_TYPE}.${DDEV_DOCROOT}.txt |
|
|
|
# This item shows complex go templating possibilities based on yaml_read_files |
|
#- | |
|
# cat <<EOF >.ddev/config.platformsh.yaml |
|
# php_version: {{ trimPrefix "php:" .platformapp.type }} |
|
# database: |
|
# type: {{ regexReplaceAll ":.*$" .services.db.type "" }} |
|
# version: {{ regexReplaceAll "^.*:" .services.db.type "" }} |
|
# |
|
# docroot: {{ dig "web" "locations" "/" "root" "notfound" .platformapp }} |
|
# {{ if eq .platformapp.build.flavor "composer" }} |
|
# hooks: |
|
-- |
|
# See example in |
|
# https://github.com/rfay/ddev/blob/20220606_yaml_read_experiment/cmd/ddev/cmd/testdata/TestCmdGetComplex/recipe/install.yaml |
|
yaml_read_files: |
|
# someyaml: someyaml.yaml |
|
# otheryaml: someotheryaml.yaml |
|
|
|
Go templating examples: |
|
# php_version: {{ trimPrefix "php:" .platformapp.type }} |
|
# type: {{ regexReplaceAll ":.*$" .services.db.type "" }} |
|
# version: {{ regexReplaceAll "^.*:" .services.db.type "" }} |
|
# docroot: {{ dig "web" "locations" "/" "root" "notfound" .platformapp }} |
|
# {{ if eq .platformapp.build.flavor "composer" }} |
|
|
|
--- |
|
=== penyaskito/ddev-authentik === |
|
# |
|
|
|
# This item shows complex go templating possibilities based on yaml_read_files |
|
#- | |
|
#- #ddev-description:Create a config.platformsh.yaml |
|
# cat <<EOF >.ddev/config.platformsh.yaml |
|
# php_version: {{ trimPrefix "php:" .platformapp.type }} |
|
# database: |
|
# type: {{ regexReplaceAll ":.*$" .services.db.type "" }} |
|
# version: {{ regexReplaceAll "^.*:" .services.db.type "" }} |
|
# |
|
# docroot: {{ dig "web" "locations" "/" "root" "notfound" .platformapp }} |
|
# {{ if eq .platformapp.build.flavor "composer" }} |
|
|
|
Go templating examples: |
|
# php_version: {{ trimPrefix "php:" .platformapp.type }} |
|
# type: {{ regexReplaceAll ":.*$" .services.db.type "" }} |
|
# version: {{ regexReplaceAll "^.*:" .services.db.type "" }} |
|
# docroot: {{ dig "web" "locations" "/" "root" "notfound" .platformapp }} |
|
# {{ if eq .platformapp.build.flavor "composer" }} |
|
|
|
--- |
|
=== ACTIVE yaml_read_files USAGE === |
|
|
|
ACTIVE: ddev/ddev-platformsh |
|
yaml_read_files section: |
|
yaml_read_files: |
|
platformapp: .platform.app.yaml |
|
services: .platform/services.yaml |
|
routes: .platform/routes.yaml |
|
|
|
ACTIVE: a11ywatch/ddev-a11ywatch |
|
yaml_read_files section: |
|
yaml_read_files: |
|
# someyaml: someyaml.yaml |
|
# otheryaml: someotheryaml.yaml |
|
|
|
ACTIVE: tag1consulting/ddev-gander |
|
yaml_read_files section: |
|
yaml_read_files: |
|
# someyaml: someyaml.yaml |
|
# otheryaml: someotheryaml.yaml |
|
|
|
ACTIVE: echavaillaz/ddev-gotenberg |
|
yaml_read_files section: |
|
yaml_read_files: |
|
|
|
ACTIVE: GetDKAN/ddev-dkan |
|
yaml_read_files section: |
|
yaml_read_files: |
|
# someyaml: someyaml.yaml |
|
# otheryaml: someotheryaml.yaml |
|
|
|
ACTIVE: vinugawade/ddev-civicrm-cli-tools |
|
yaml_read_files section: |
|
yaml_read_files: |
|
# someyaml: someyaml.yaml |
|
# otheryaml: someotheryaml.yaml |
|
|
|
COMMENTED/EXAMPLE: penyaskito/ddev-authentik |
|
|
|
ACTIVE: reloxx13/ddev-swagger-ui |
|
yaml_read_files section: |
|
yaml_read_files: |
|
|
|
ACTIVE: JanoPL/ddev-kibana |
|
yaml_read_files section: |
|
yaml_read_files: |
|
|
|
ACTIVE: penyaskito/ddev-hugo |
|
yaml_read_files section: |
|
yaml_read_files: |
|
# someyaml: someyaml.yaml |
|
# otheryaml: someotheryaml.yaml |
|
|
|
ACTIVE: gebruederheitz/ddev-taskfile |
|
yaml_read_files section: |
|
yaml_read_files: |
|
|
|
ACTIVE: bricebou/ddev-manticoresearch |
|
yaml_read_files section: |
|
yaml_read_files: |
|
# someyaml: someyaml.yaml |
|
# otheryaml: someotheryaml.yaml |
|
|
|
ACTIVE: torhoehn/ddev-typesense |
|
yaml_read_files section: |
|
yaml_read_files: |
|
# someyaml: someyaml.yaml |
|
# otheryaml: someotheryaml.yaml |
|
|
|
ACTIVE: codemonauts/ddev-s3-http-proxy |
|
yaml_read_files section: |
|
yaml_read_files: |
|
|
|
ACTIVE: happiness/ddev-seq |
|
yaml_read_files section: |
|
yaml_read_files: |
|
# someyaml: someyaml.yaml |
|
# otheryaml: someotheryaml.yaml |
|
|
|
Total actively using yaml_read_files: 14 |
|
|
|
|
|
=== COMPREHENSIVE ECOSYSTEM ANALYSIS === |
|
|
|
FINDINGS: |
|
1. Total add-ons with 'ddev-get' topic: 145 |
|
2. Add-ons with yaml_read_files field: 16 found |
|
3. Add-ons actually using yaml_read_files: Only 1 (ddev/ddev-platformsh) |
|
4. Most others have empty yaml_read_files: or commented examples |
|
|
|
USAGE PATTERNS: |
|
- ddev/ddev-platformsh is the ONLY add-on actively using yaml_read_files |
|
- It reads: .platform.app.yaml, .platform/services.yaml, .platform/routes.yaml |
|
- Uses complex Go templating for config transformation |
|
- All other add-ons either have empty yaml_read_files or commented examples |
|
|
|
ADD-ON COMPLEXITY DISTRIBUTION: |
|
- Simple add-ons: ~120+ (just copy files, basic docker-compose services) |
|
- Medium complexity: ~20 (some bash scripts, environment setup) |
|
- Complex add-ons: ~1-5 (ddev-platformsh being the prime example) |
|
|
|
TEMPLATING USAGE: |
|
- Only ddev/ddev-platformsh uses Go templating extensively |
|
- Templating is used for complex configuration transformation |
|
- Examples: PHP version extraction, database type/version parsing |
|
- Regex operations: regexReplaceAll, trimPrefix, dig functions |
|
|
|
IMPLICATIONS FOR PHP CONTAINER APPROACH: |
|
- Breaking change impact: Minimal (only affects 1 add-on significantly) |
|
- ddev-platformsh would benefit tremendously from PHP approach |
|
- Legacy compatibility needed for the 1 complex case |
|
- 13 add-ons have placeholder yaml_read_files that could be cleaned up |