Phase 1 sub-commit 1: scaffold framework, skeleton, CI
All checks were successful
CI / Quality (push) Successful in 48s
All checks were successful
CI / Quality (push) Successful in 48s
Stands up the directory structure Phase 1 fills in over subsequent sub-commits: framework/php (Composer package php-qml/bridge), framework/qml (Qt module placeholder), framework/skeleton (Caddyfile + Makefile stubs), and .gitea/workflows/ci.yml. Root .gitignore covers the build/composer/Symfony/Qt/CMake/IDE artefacts the rest of Phase 1 will produce. No bundle code, no Qt module sources, no working dev mode yet — those land in sub-commits 2-7. Spike still in place. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
20
.gitea/workflows/ci.yml
Normal file
20
.gitea/workflows/ci.yml
Normal file
@@ -0,0 +1,20 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [dev, main]
|
||||
pull_request:
|
||||
branches: [dev, main]
|
||||
|
||||
jobs:
|
||||
quality:
|
||||
name: Quality
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Quality (placeholder)
|
||||
run: |
|
||||
echo "quality job — populated in Phase 1 sub-commit 7"
|
||||
echo "will run: PHPStan, php-cs-fixer (check), PHPUnit, qmllint"
|
||||
36
.gitignore
vendored
Normal file
36
.gitignore
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
# Build artefacts
|
||||
build/
|
||||
**/build/
|
||||
|
||||
# Composer
|
||||
vendor/
|
||||
composer.phar
|
||||
|
||||
# PHPUnit
|
||||
.phpunit.cache/
|
||||
.phpunit.result.cache
|
||||
|
||||
# PHP CS Fixer
|
||||
.php-cs-fixer.cache
|
||||
|
||||
# Symfony / app data
|
||||
**/var/
|
||||
.env.local
|
||||
.env.*.local
|
||||
.env.local.php
|
||||
|
||||
# Qt / CMake intermediates
|
||||
CMakeCache.txt
|
||||
CMakeFiles/
|
||||
*.pro.user
|
||||
.qt/
|
||||
.rcc/
|
||||
.qmlls.ini
|
||||
moc_*.cpp
|
||||
moc_*.h
|
||||
qrc_*.cpp
|
||||
ui_*.h
|
||||
|
||||
# OS / editor
|
||||
.DS_Store
|
||||
*.swp
|
||||
28
framework/php/composer.json
Normal file
28
framework/php/composer.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"name": "php-qml/bridge",
|
||||
"description": "Symfony bundle bridging PHP applications to a Qt/QML host (part of the php-qml framework).",
|
||||
"type": "symfony-bundle",
|
||||
"license": "proprietary",
|
||||
"require": {
|
||||
"php": "^8.3",
|
||||
"symfony/framework-bundle": "^7.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^11",
|
||||
"phpstan/phpstan": "^2",
|
||||
"phpstan/phpstan-symfony": "^2",
|
||||
"friendsofphp/php-cs-fixer": "^3",
|
||||
"symfony/phpunit-bridge": "^7.1"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"PhpQml\\Bridge\\": "src/"
|
||||
}
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"PhpQml\\Bridge\\Tests\\": "tests/"
|
||||
}
|
||||
},
|
||||
"minimum-stability": "stable"
|
||||
}
|
||||
17
framework/qml/CMakeLists.txt
Normal file
17
framework/qml/CMakeLists.txt
Normal file
@@ -0,0 +1,17 @@
|
||||
# php-qml framework — Qt module (PhpQml.Bridge).
|
||||
#
|
||||
# Consumed by the application's top-level CMakeLists.txt
|
||||
# (see framework/skeleton/qml/CMakeLists.txt) via add_subdirectory.
|
||||
#
|
||||
# Module sources arrive in:
|
||||
# - Phase 1 sub-commit 4: BackendConnection, SingleInstance
|
||||
# - Phase 1 sub-commit 5: MercureClient, RestClient (QML/JS)
|
||||
#
|
||||
# Until then this file is a placeholder so the directory is tracked in
|
||||
# git and find_package picks up the right Qt before subsequent commits.
|
||||
|
||||
cmake_minimum_required(VERSION 3.21)
|
||||
|
||||
if(NOT TARGET Qt6::Core)
|
||||
find_package(Qt6 6.5 REQUIRED COMPONENTS Core Gui Quick Qml Network)
|
||||
endif()
|
||||
3
framework/skeleton/Caddyfile
Normal file
3
framework/skeleton/Caddyfile
Normal file
@@ -0,0 +1,3 @@
|
||||
# Placeholder Caddyfile. Populated in Phase 1 sub-commit 6 alongside
|
||||
# the Symfony app at framework/skeleton/symfony/. See PLAN.md §13,
|
||||
# Phase 1, "Skeleton wiring".
|
||||
23
framework/skeleton/Makefile
Normal file
23
framework/skeleton/Makefile
Normal file
@@ -0,0 +1,23 @@
|
||||
# php-qml framework skeleton — Make targets.
|
||||
# Filled in across Phase 1 sub-commits 3, 6, and 7.
|
||||
|
||||
.DEFAULT_GOAL := help
|
||||
|
||||
.PHONY: help
|
||||
help: ## Show available targets
|
||||
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " %-12s %s\n", $$1, $$2}' $(MAKEFILE_LIST)
|
||||
|
||||
.PHONY: dev
|
||||
dev: ## (TBD) Run the skeleton in dev mode (FrankenPHP --watch + Qt host)
|
||||
@echo "dev: not yet implemented (Phase 1 sub-commit 6)"
|
||||
@exit 1
|
||||
|
||||
.PHONY: doctor
|
||||
doctor: ## (TBD) Run bridge:doctor against the running backend
|
||||
@echo "doctor: not yet implemented (Phase 1 sub-commit 3)"
|
||||
@exit 1
|
||||
|
||||
.PHONY: quality
|
||||
quality: ## (TBD) Run PHPStan, php-cs-fixer (check), PHPUnit, qmllint
|
||||
@echo "quality: not yet implemented (Phase 1 sub-commit 7)"
|
||||
@exit 1
|
||||
Reference in New Issue
Block a user