Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
121 commits
Select commit Hold shift + click to select a range
ca537cf
feat: add generic Nextcloud communications application
vitormattos Nov 11, 2026
8f69dbd
test: add quality gates and Nextcloud integration scenarios
vitormattos Nov 11, 2026
561141f
docs: document installation, governance and integration limits
vitormattos Nov 11, 2026
6abd170
ci: split quality workflows and centralize runtime versions
vitormattos Nov 11, 2026
b6c94b4
refactor: migrate Nextcloud routes to controller attributes
vitormattos Nov 11, 2026
0664127
refactor: internationalize backend messages and notifications
vitormattos Nov 11, 2026
e232206
feat: internationalize Vue UI and locale-sensitive formatting
vitormattos Nov 11, 2026
3a11bfd
l10n: add Brazilian Portuguese translation catalogs
vitormattos Nov 11, 2026
380d534
test: enforce translation coverage and update development guidance
vitormattos Nov 11, 2026
f9113c3
test: match LibreSign browser expectations to English source UI
vitormattos Nov 11, 2026
4e580c1
test: disable Nextcloud onboarding modal in isolated Playwright fixture
vitormattos Nov 11, 2026
a3db4e8
test: isolate LibreSign event delivery and organize integration fixtures
vitormattos Nov 13, 2026
6539b91
refactor: consolidate initial schema with cross-database contract checks
vitormattos Nov 13, 2026
2787eb7
ci: adopt LibreCode-managed workflows and Nextcloud compatibility matrix
vitormattos Nov 13, 2026
be27958
style: apply Nextcloud PHP standard to campaign and board services
vitormattos Nov 13, 2026
8828cfe
style: normalize delivery and publication service structure and headers
vitormattos Nov 13, 2026
3a51e0f
style: format native-event and route catalog implementations
vitormattos Nov 13, 2026
3498c43
style: apply Nextcloud format to event and gateway services
vitormattos Nov 13, 2026
9876b8c
style: format Nextcloud controllers, commands and event listeners
vitormattos Nov 13, 2026
ea630ae
style: normalize PHP test, migration and notification formatting
vitormattos Nov 13, 2026
7a6a841
refactor: move delivery persistence and lease operations into Nextclo…
vitormattos Nov 13, 2026
efea78c
refactor: introduce typed frontend entrypoints and domain contracts
vitormattos Nov 13, 2026
9b1a544
refactor: type Vue components and campaign editor under strict TypeSc…
vitormattos Nov 13, 2026
5034610
style: enforce Nextcloud style rules and isolate Communications selec…
vitormattos Nov 13, 2026
c2c7b02
build: add strict TypeScript, Vitest coverage and mutation tooling
vitormattos Nov 13, 2026
f6a2148
test: migrate frontend suites to Vitest and add URL mutation regressions
vitormattos Nov 13, 2026
2cabc40
l10n: translate accessibility labels and editor messages into Brazili…
vitormattos Nov 13, 2026
3da8d1c
ci: enforce official TypeScript and Stylelint workflows with isolated…
vitormattos Nov 13, 2026
9588d9f
docs: describe strict frontend checks and organization-managed workfl…
vitormattos Nov 13, 2026
65c41cc
test: add PHP Infection checks and harden CTA URL contracts
vitormattos Nov 13, 2026
54136ce
ci: gate PHP URL mutation score on the Nextcloud compatibility matrix
vitormattos Nov 13, 2026
88ff03d
ci: derive PHPStan, PHPUnit and Playwright from official Nextcloud te…
vitormattos Nov 15, 2026
a1f095f
fix: follow Nextcloud monochrome app icon and Transifex source conven…
vitormattos Nov 15, 2026
657b943
refactor: adopt Nextcloud Vue styling and typed API contracts across …
vitormattos Nov 15, 2026
830b703
docs: explain upstream CI ownership, scoped Vue styles and translatio…
vitormattos Nov 15, 2026
011f76a
style(frontend): normalize Vue files with the official Nextcloud Pret…
vitormattos Nov 15, 2026
5256597
chore(reuse): annotate workflow patches once in REUSE.toml
vitormattos Nov 15, 2026
ebdd517
ci: consume standard PHPStan, PHPUnit and Playwright workflows from L…
vitormattos Nov 15, 2026
b4f5508
ci: pin shared workflow catalog to merged main
vitormattos Nov 15, 2026
5207209
fix(ci): preserve Playwright shards and lossless report aggregation
vitormattos Nov 15, 2026
914b578
docs: translate and correct Communications integration guides
vitormattos Nov 15, 2026
c4c8fa4
docs: document sharded Playwright verification and merged catalog
vitormattos Nov 15, 2026
7fdcd05
refactor(frontend): keep source assets in src and ignore build output
vitormattos Nov 15, 2026
07afdf3
fix(frontend): make guest adapter pass source lint checks
vitormattos Nov 15, 2026
40ea3d5
build: verify installable Nextcloud package without tracked bundles
vitormattos Nov 15, 2026
9f9a977
refactor(php): centralize delivery frequency policy and test boundaries
vitormattos Nov 15, 2026
901126e
test(php): correct frequency boundary fixtures
vitormattos Nov 15, 2026
eb54948
refactor(php): separate publication input validation from persistence
vitormattos Nov 15, 2026
ec03348
style(php): align multiline conditions and wrap class documentation
vitormattos Nov 15, 2026
7a96a1f
fix(php): capture localization dependency in timing validation
vitormattos Nov 15, 2026
235afb5
ci(ts): diagnose formatting drift using Nextcloud Prettier config
vitormattos Nov 15, 2026
f0bd88d
style(php): normalize controller and bootstrap continuations
vitormattos Nov 15, 2026
82d817d
style(ts): apply official Nextcloud Prettier formatting
vitormattos Nov 15, 2026
21a8bfd
ci(ts): enforce Nextcloud formatting in existing ESLint check
vitormattos Nov 15, 2026
11deb36
style(php): align remaining domain and database continuations
vitormattos Nov 15, 2026
e5dc18c
refactor(php): share public banner eligibility policy and test variants
vitormattos Nov 15, 2026
92f1cc1
refactor(php): separate capability discovery from source filtering
vitormattos Nov 15, 2026
dd8ea28
refactor(php): separate browser event preparation stages
vitormattos Nov 15, 2026
d512106
fix(php): tidy event discovery documentation and localization
vitormattos Nov 15, 2026
ddceb63
fix(l10n): translate new validation and event discovery labels
vitormattos Nov 15, 2026
df5d4c3
refactor(php): make publication reordering independently testable
vitormattos Nov 15, 2026
aded5e5
fix(php): use supplied campaigns in pure order planner
vitormattos Nov 15, 2026
7226545
refactor(php): replace ambiguous multiline ternaries and order compar…
vitormattos Nov 15, 2026
ed121af
refactor(php): make order planner independent of localization
vitormattos Nov 15, 2026
86daf47
ci(php): enforce multiline indentation and readable PHPDoc
vitormattos Nov 15, 2026
7cc6c26
fix(php): distinguish nested conditions from malformed continuation i…
vitormattos Nov 15, 2026
9910c8c
ci: assess Nextcloud ESLint config compatibility before migration
vitormattos Nov 15, 2026
8ee67af
chore(ci): remove temporary Nextcloud ESLint migration diagnostic
vitormattos Nov 15, 2026
514b32f
refactor(php): extract due-publication policy and CLI batch runner
vitormattos Nov 15, 2026
6a40642
refactor(php): simplify bootstrap and use typed webhook validation
vitormattos Nov 15, 2026
e14562a
refactor(db): move event persistence into dedicated mapper
vitormattos Nov 15, 2026
a5c6627
refactor(db): move publication outbox persistence into mapper
vitormattos Nov 15, 2026
60214bf
refactor(db): move inbox receipt pagination and comment counts into m…
vitormattos Nov 15, 2026
8e10670
refactor(db): separate inbox authorization from persistence
vitormattos Nov 15, 2026
93db264
fix(php): validate event inputs without Nextcloud unit dependencies
vitormattos Nov 15, 2026
4078ee7
refactor(db): isolate campaign read queries and keyset pagination
vitormattos Nov 15, 2026
87671e2
refactor(db): isolate campaign writes and transactions in mapper
vitormattos Nov 15, 2026
60fa8fd
refactor(db): isolate native event subscription queries in mapper
vitormattos Nov 15, 2026
d3bb6fe
style(php): sort native subscription mapper import
vitormattos Nov 15, 2026
84fcbeb
fix(php): log only exception classes at optional integration boundaries
vitormattos Nov 15, 2026
8131767
refactor(db): use native Nextcloud atomic transactions in campaign ma…
vitormattos Nov 15, 2026
1045b23
test(php): avoid isolated PHPUnit case requiring unavailable Nextclou…
vitormattos Nov 15, 2026
abaa703
fix(l10n): add translator context for Inbox and publication labels
vitormattos Nov 15, 2026
4c9c7b6
fix(l10n): clarify dynamic labels in Inbox, routes and channel UI
vitormattos Nov 15, 2026
d8eae69
test(l10n): require contextual hints for dynamic translation placehol…
vitormattos Nov 15, 2026
f69eb7e
refactor(publication): share channel selection and event rules
vitormattos Nov 15, 2026
55891e3
docs(l10n): add context to ambiguous translation strings
vitormattos Nov 15, 2026
f1a8432
refactor: standardize injected types and translation context
vitormattos Nov 15, 2026
70181d8
refactor: drop unreleased compatibility contracts
vitormattos Nov 15, 2026
dd8146c
refactor: extract unit-tested campaign and delivery policies
vitormattos Nov 15, 2026
6378956
refactor: simplify event discovery and add Nextcloud contracts
vitormattos Nov 15, 2026
9c355ed
refactor(frontend): manage publications with Pinia and domain policies
vitormattos Nov 15, 2026
a4b810a
refactor(frontend): decouple Inbox and automation route loading
vitormattos Nov 15, 2026
d6cf822
chore(ci): consolidate test tooling and discover routes from controllers
vitormattos Nov 15, 2026
0b0fe42
refactor(tests): group frontend unit tests by technology
vitormattos Nov 15, 2026
26cdaae
refactor(frontend): split automation setup and fix translator contexts
vitormattos Nov 15, 2026
21fd741
fix(ci): complete runner relocation and load native Nextcloud OCP
vitormattos Nov 15, 2026
b8ab58e
style(eslint): expand config arrays and nested blocks
vitormattos Nov 15, 2026
975067e
fix(ci): normalize primary-key index names across database engines
vitormattos Nov 15, 2026
a30d9dc
refactor(l10n): isolate translation context and parameterize messages
vitormattos Nov 15, 2026
afd91c9
build(composer): isolate development tools with vendor-bin
vitormattos Nov 15, 2026
ed6e2f1
style(metadata): format PHPUnit XML and add direct SPDX headers
vitormattos Nov 15, 2026
bd522b5
docs: clarify free-software adoption and optional services
vitormattos Nov 15, 2026
a658a94
style(js): apply Nextcloud Prettier to MJS and deduplicate Vite versions
vitormattos Nov 15, 2026
79082ad
refactor(scss): nest related Vue selectors without changing CSS output
vitormattos Nov 15, 2026
0b7c578
refactor(frontend): enforce complexity limit with behavioral regressions
vitormattos Nov 15, 2026
5fbe92a
refactor(frontend): extract typed publication wizard sidebar
vitormattos Nov 15, 2026
8f135bf
fix(frontend): preserve sidebar template structure and localize recip…
vitormattos Nov 15, 2026
38e371c
fix(vue): remove duplicate sidebar template tail
vitormattos Nov 15, 2026
27e7421
fix(frontend): format publication sidebar and document translation co…
vitormattos Nov 15, 2026
add4e5f
docs: present Communications features and free-software model
vitormattos Nov 15, 2026
44912c8
refactor(schema): validate installed schema from canonical migration …
vitormattos Nov 15, 2026
84a4eea
refactor(build): isolate Symfony analysis dependencies in Composer ve…
vitormattos Nov 15, 2026
f056042
build(styles): compile scoped Sass and guest CSS in the application b…
vitormattos Nov 15, 2026
2674768
refactor(frontend): extract publications overview and dialogs from ca…
vitormattos Nov 15, 2026
5d00128
docs: remove premature installation guide and keep setup instructions…
vitormattos Nov 15, 2026
d9767a5
build(deps): track Nextcloud development OCP API in require-dev
vitormattos Nov 15, 2026
10492f7
refactor(frontend): separate campaign draft, delivery, wizard and man…
vitormattos Nov 15, 2026
7dbf586
refactor(frontend): split publication wizard into focused Vue field c…
vitormattos Nov 15, 2026
54dbf49
refactor(frontend): compose publication editor and keep stylesheet sc…
vitormattos Nov 15, 2026
9c548bf
test(docs): cover extracted editor sections and document state bounda…
vitormattos Nov 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# SPDX-FileCopyrightText: 2026 LibreCode Coop and contributors
# SPDX-License-Identifier: AGPL-3.0-or-later
root = true

[*]
charset = utf-8
end_of_line = lf
indent_style = tab
indent_size = 4
insert_final_newline = true
trim_trailing_whitespace = true

[*.yml]
indent_style = space
indent_size = 2

[package*.json]
indent_style = space
indent_size = 2

[*.md]
trim_trailing_whitespace = false
4 changes: 4 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# SPDX-FileCopyrightText: 2026 LibreCode Coop and contributors
# SPDX-License-Identifier: MIT
# Generated unified-diff context contains necessary single-space blank lines.
.github/workflows/*.yml.patch whitespace=-blank-at-eol
3 changes: 3 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# SPDX-FileCopyrightText: 2026 LibreCode Coop and contributors
# SPDX-License-Identifier: AGPL-3.0-or-later
* @LibreCodeCoop/maintainers
20 changes: 20 additions & 0 deletions .github/actions-lock.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT

# workflow-lock-schema: 3

{"workflow":"lint-eslint.yml","sha256":"df96f11e21550ebf11249aa9e41d7eb176744566de30536edccc6bb4b18bf75a","catalog_commit":"b2013e836b49f1cf03db7c7257e9662539e971a8"}
{"workflow":"lint-info-xml.yml","sha256":"3a2ed92f25ae9a233d6d64d44bd122b39dee0f153e7a1a9dc81bfb19adcec09b","catalog_commit":"b2013e836b49f1cf03db7c7257e9662539e971a8"}
{"workflow":"lint-php-cs.yml","sha256":"5a9693b730f2f5196002e0d70af635bb5122ee2460096871818c508dc7553742","catalog_commit":"b2013e836b49f1cf03db7c7257e9662539e971a8"}
{"workflow":"lint-php.yml","sha256":"83d968027814e65e315744d535022cd81d5c96ed38c449d96d74dda8828f4728","catalog_commit":"b2013e836b49f1cf03db7c7257e9662539e971a8"}
{"workflow":"lint-stylelint.yml","sha256":"69b6182394787d69c62396b2b392c3b605500b539071cc19bea6a2d5e453ded1","catalog_commit":"b2013e836b49f1cf03db7c7257e9662539e971a8"}
{"workflow":"lint-typescript.yml","sha256":"579bd73707b32d44e58ae60608e1988b8a9d36efa018662d5ef26abd0375a668","catalog_commit":"b2013e836b49f1cf03db7c7257e9662539e971a8"}
{"workflow":"node-test.yml","sha256":"e63a20fd12c2744d5c3e05ee32fefc9fc67c03c8e6a15f35353bbea0e227c898","catalog_commit":"b2013e836b49f1cf03db7c7257e9662539e971a8"}
{"workflow":"npm-build.yml","sha256":"fb2286462952d423b396aae7337537aa1619c7b9fb65585ac453a098e188a542","catalog_commit":"b2013e836b49f1cf03db7c7257e9662539e971a8"}
{"workflow":"phpstan.yml","sha256":"3737c57183fb37a41d0fa4cf2efa55245e7fc8348dbad43faf9ee6197440edae","catalog_commit":"b2013e836b49f1cf03db7c7257e9662539e971a8"}
{"workflow":"phpunit-mariadb.yml","sha256":"1c3c9f5429e64e13c34ba44cc8fb9d1f1d8b6b68bb77bee5ed049e2f55fedfc5","catalog_commit":"b2013e836b49f1cf03db7c7257e9662539e971a8"}
{"workflow":"phpunit-pgsql.yml","sha256":"83e66f6d6b86d833b9d5da960457e5c122da64f1929872ca79c6d7f4929aa85d","catalog_commit":"b2013e836b49f1cf03db7c7257e9662539e971a8"}
{"workflow":"phpunit-sqlite.yml","sha256":"ffd463dd916be01f1cd37840a50b4dd2b55ffa6368aced98f273714c2fded5ef","catalog_commit":"b2013e836b49f1cf03db7c7257e9662539e971a8"}
{"workflow":"playwright.yml","sha256":"cc98690a7cf35e9c991d0d83ec15bbe58ab55b507e1940d20d880fc6d43491a4","catalog_commit":"b2013e836b49f1cf03db7c7257e9662539e971a8"}
{"workflow":"reuse.yml","sha256":"f563735e1a573cca3acb2975321ee760e5d52cb6ca64bfcc11a5da4ae0f9bf73","catalog_commit":"b2013e836b49f1cf03db7c7257e9662539e971a8"}
{"workflow":"sync-workflow-templates.yml","sha256":"be4a15cf5b8ec4a50526c03b44c67a03bab5e1265ebdc9afd5e3cb8c3825a6e5","catalog_commit":"b2013e836b49f1cf03db7c7257e9662539e971a8"}
32 changes: 32 additions & 0 deletions .github/workflows/composer-audit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# SPDX-FileCopyrightText: 2026 LibreCode Coop and contributors
# SPDX-License-Identifier: AGPL-3.0-or-later
name: Composer audit
on:
push:
branches: [main]
pull_request:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: communications-composer-audit-${{ github.head_ref || github.ref }}
cancel-in-progress: true
jobs:
composer-audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Read Nextcloud and PHP compatibility from official version matrix
id: versions
uses: nextcloud-libraries/nextcloud-version-matrix@71959de73c244b11ecbf4503b87c41d65b0f64ae # v1.3.4
- uses: shivammathur/setup-php@eb7c497e18156a6bbabfef1d3a82760b9eda3962 # v2.40.0
with:
php-version: ${{ steps.versions.outputs.php-min }}
extensions: mbstring, intl, dom, xml, zip, sqlite3, pdo_sqlite
coverage: none
tools: composer:v2
- run: composer validate --strict --no-check-publish
- run: composer install --no-interaction --prefer-dist --no-progress
- run: composer audit
99 changes: 99 additions & 0 deletions .github/workflows/lint-eslint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
# This workflow is provided via the organization template repository
#
# https://github.com/LibreCodeCoop/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT

name: Lint eslint

on: pull_request

permissions:
contents: read

concurrency:
group: lint-eslint-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

jobs:
changes:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read

outputs:
src: ${{ steps.changes.outputs.src}}

steps:
- uses: dorny/paths-filter@ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d # v4.0.3
id: changes
continue-on-error: true
with:
filters: |
src:
- '.github/workflows/**'
- 'src/**'
- 'appinfo/info.xml'
- 'package.json'
- 'package-lock.json'
- 'tsconfig.json'
- '.eslintrc.*'
- '.eslintignore'
- '**.js'
- '**.ts'
- '**.vue'

lint:
runs-on: ubuntu-latest

needs: changes
if: needs.changes.outputs.src != 'false'

name: NPM lint

steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

- name: Read package.json node and npm engines version
uses: nextcloud-libraries/parse-package-engines-action@39fcc545a815c353dd0a3fd8fd2ef6e59fd02b92 # v0.2.0
id: versions

- name: Set up node ${{ steps.versions.outputs.node-version }}
uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
with:
node-version: ${{ steps.versions.outputs.node-version || '^24' }}

- name: Set up npm ${{ steps.versions.outputs.package-manager-version }}
env:
NPM_VERSION: ${{ steps.versions.outputs.package-manager-name == 'npm' && steps.versions.outputs.package-manager-version || '^11.3' }}
run: npm i -g "npm@${NPM_VERSION}"

- name: Install dependencies
env:
CYPRESS_INSTALL_BINARY: 0
PUPPETEER_SKIP_DOWNLOAD: true
run: npm ci

- name: Lint
run: npm run lint

summary:
permissions:
contents: none
runs-on: ubuntu-latest
needs: [changes, lint]

if: always()

# This is the summary, we just avoid to rename it so that branch protection rules still match
name: eslint

steps:
- name: Summary status
run: if ${{ needs.changes.outputs.src != 'false' && needs.lint.result != 'success' }}; then exit 1; fi
40 changes: 40 additions & 0 deletions .github/workflows/lint-info-xml.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# This workflow is provided via the organization template repository
#
# https://github.com/LibreCodeCoop/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT

name: Lint info.xml

on: pull_request

permissions:
contents: read

concurrency:
group: lint-info-xml-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

jobs:
xml-linters:
runs-on: ubuntu-latest

name: info.xml lint
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
sparse-checkout: |
appinfo/

- name: Download schema
run: wget https://raw.githubusercontent.com/nextcloud/appstore/master/nextcloudappstore/api/v1/release/info.xsd

- name: Lint info.xml
uses: ChristophWurst/xmllint-action@36f2a302f84f8c83fceea0b9c59e1eb4a616d3c1 # v1.2
with:
xml-file: ./appinfo/info.xml
xml-schema-file: ./info.xsd
57 changes: 57 additions & 0 deletions .github/workflows/lint-php-cs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# This workflow is provided via the organization template repository
#
# https://github.com/LibreCodeCoop/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT

name: Lint php-cs

on: pull_request

permissions:
contents: read

concurrency:
group: lint-php-cs-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

jobs:
lint:
runs-on: ubuntu-latest
timeout-minutes: 12

name: php-cs

steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

- name: Get php version
id: versions
uses: nextcloud-libraries/nextcloud-version-matrix@71959de73c244b11ecbf4503b87c41d65b0f64ae # v1.3.4

- name: Set up php${{ steps.versions.outputs.php-min }}
uses: shivammathur/setup-php@eb7c497e18156a6bbabfef1d3a82760b9eda3962 # 2.40.0
with:
php-version: ${{ steps.versions.outputs.php-min }}
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
coverage: none
ini-file: development
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
update: true
verbose: true

- name: Remove nextcloud/ocp
run: |
composer remove nextcloud/ocp --dev --no-scripts

- name: Install composer dependencies
uses: ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda # 4.0.0

- name: Lint
run: composer run cs:check || ( echo 'Please run `composer run cs:fix` to format your code' && exit 1 )
76 changes: 76 additions & 0 deletions .github/workflows/lint-php.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
# This workflow is provided via the organization template repository
#
# https://github.com/LibreCodeCoop/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT

name: Lint php

on: pull_request

permissions:
contents: read

concurrency:
group: lint-php-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

jobs:
matrix:
runs-on: ubuntu-latest
outputs:
php-min: ${{ steps.versions.outputs.php-min }}
php-max: ${{ steps.versions.outputs.php-max }}
steps:
- name: Checkout app
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

- name: Get version matrix
id: versions
uses: nextcloud-libraries/nextcloud-version-matrix@71959de73c244b11ecbf4503b87c41d65b0f64ae # v1.3.4

php-lint:
runs-on: ubuntu-latest
needs: matrix
strategy:
matrix:
php-versions: ['${{ needs.matrix.outputs.php-min }}', '${{ needs.matrix.outputs.php-max }}']

name: php-lint

steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@eb7c497e18156a6bbabfef1d3a82760b9eda3962 # 2.40.0
with:
php-version: ${{ matrix.php-versions }}
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
coverage: none
ini-file: development
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Lint
run: composer run lint

summary:
permissions:
contents: none
runs-on: ubuntu-latest
needs: php-lint

if: always()

name: php-lint-summary

steps:
- name: Summary status
run: if ${{ needs.php-lint.result != 'success' && needs.php-lint.result != 'skipped' }}; then exit 1; fi
Loading
Loading