Compare commits
58 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5f37aacb31 | |||
| 929c0f80e0 | |||
| 82dc13c3af | |||
| dde611b3ed | |||
| 6b7255931a | |||
| 72c4047ce9 | |||
| b806e1f009 | |||
| 04055e79c0 | |||
| 16bc8af0f3 | |||
| 482b42e4c8 | |||
| fafc3ca2e0 | |||
| 400f378183 | |||
| dd93df22f4 | |||
| aae1769e60 | |||
| ff64a731b0 | |||
| 1bb4d7853f | |||
| 9dcc9b50e9 | |||
| af4258436b | |||
| bce6549588 | |||
| 59bff4746f | |||
| 953c8875db | |||
| 8f34bc833c | |||
| 79672ed6d6 | |||
| d1e244b859 | |||
| 59ce66b9ea | |||
| c877bd3f7e | |||
| 723814c0fd | |||
| edfba7f151 | |||
| f0d4716af3 | |||
| b541d0b415 | |||
| 7b604c1516 | |||
| ad722411d3 | |||
| c727beba9f | |||
| 0450512711 | |||
| ec3575c646 | |||
| 006eaf0e8a | |||
| 98a260940f | |||
| 6ca689aff8 | |||
| 40ac4e8197 | |||
| 3d49fe473a | |||
| 41844ea51c | |||
| efde83e07f | |||
| b9bfd5aba8 | |||
| f7a0157589 | |||
| fdaf6d0db2 | |||
| a3155d8396 | |||
| 4bc7f02b57 | |||
| b2367f4567 | |||
| aff45d4af0 | |||
| 8fc44d24eb | |||
| 553812d6b6 | |||
| fb9675537a | |||
| 7476e118aa | |||
| 7be2f5bcdb | |||
| add66bc918 | |||
| 29dc5c8cb5 | |||
| f6e51690a2 | |||
| 543277cb43 |
@@ -0,0 +1,15 @@
|
||||
codecov:
|
||||
branch: master
|
||||
ci:
|
||||
- drone.nextcloud.com
|
||||
- !scrutinizer-ci.com
|
||||
|
||||
coverage:
|
||||
precision: 2
|
||||
round: down
|
||||
range: "70...100"
|
||||
status:
|
||||
project: off
|
||||
patch: off
|
||||
|
||||
comment: off
|
||||
@@ -1,56 +1,34 @@
|
||||
FROM ubuntu:jammy
|
||||
FROM ubuntu:focal
|
||||
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
# PHP
|
||||
RUN apt-get update -y && \
|
||||
apt install -y apache2 vim software-properties-common sudo nano gnupg2
|
||||
|
||||
RUN apt-get update -y
|
||||
RUN apt-get install --no-install-recommends -y \
|
||||
php8.1 \
|
||||
php8.1-common \
|
||||
php8.1-gd \
|
||||
php8.1-zip \
|
||||
php8.1-curl \
|
||||
php8.1-xml \
|
||||
php8.1-xmlrpc \
|
||||
php8.1-mbstring \
|
||||
php8.1-sqlite \
|
||||
php8.1-xdebug \
|
||||
php8.1-pgsql \
|
||||
php8.1-intl \
|
||||
php8.1-imagick \
|
||||
php8.1-gmp \
|
||||
php8.1-apcu \
|
||||
php8.1-bcmath \
|
||||
php8.1-redis \
|
||||
php8.1-soap \
|
||||
php8.1-imap \
|
||||
php8.1-opcache \
|
||||
php8.1-cli \
|
||||
php8.1-dev \
|
||||
php7.4 \
|
||||
php7.4-gd \
|
||||
php7.4-zip \
|
||||
php7.4-curl \
|
||||
php7.4-xml \
|
||||
php7.4-mbstring \
|
||||
php7.4-sqlite \
|
||||
php7.4-xdebug \
|
||||
php7.4-pgsql \
|
||||
php7.4-intl \
|
||||
php7.4-imagick \
|
||||
php7.4-gmp \
|
||||
php7.4-apcu \
|
||||
php7.4-bcmath \
|
||||
libmagickcore-6.q16-3-extra \
|
||||
curl \
|
||||
vim \
|
||||
lsof \
|
||||
make \
|
||||
unzip
|
||||
nodejs \
|
||||
npm
|
||||
|
||||
# Composer
|
||||
RUN curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php && \
|
||||
curl -sS https://composer.github.io/installer.sig -o /tmp/composer-setup.sig && \
|
||||
php -r "if (hash_file('sha384', '/tmp/composer-setup.php') !== trim(file_get_contents('/tmp/composer-setup.sig'))) { echo 'Composer installation failed, invalid hash'; exit(1); }" && \
|
||||
php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer && \
|
||||
rm /tmp/composer-setup.php /tmp/composer-setup.sig
|
||||
|
||||
RUN echo "xdebug.remote_enable = 1" >> /etc/php/8.1/cli/conf.d/20-xdebug.ini && \
|
||||
echo "xdebug.remote_autostart = 1" >> /etc/php/8.1/cli/conf.d/20-xdebug.ini && \
|
||||
echo "apc.enable_cli=1" >> /etc/php/8.1/cli/conf.d/20-apcu.ini
|
||||
|
||||
# Autostart XDebug for apache
|
||||
RUN { \
|
||||
echo "xdebug.mode=debug"; \
|
||||
echo "xdebug.start_with_request=yes"; \
|
||||
} >> /etc/php/8.1/apache2/conf.d/20-xdebug.ini
|
||||
RUN echo "xdebug.remote_enable = 1" >> /etc/php/7.4/cli/conf.d/20-xdebug.ini
|
||||
RUN echo "xdebug.remote_autostart = 1" >> /etc/php/7.4/cli/conf.d/20-xdebug.ini
|
||||
|
||||
# Docker
|
||||
RUN apt-get -y install \
|
||||
@@ -58,29 +36,12 @@ RUN apt-get -y install \
|
||||
ca-certificates \
|
||||
curl \
|
||||
gnupg-agent \
|
||||
software-properties-common && \
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
|
||||
add-apt-repository \
|
||||
software-properties-common
|
||||
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
|
||||
RUN add-apt-repository \
|
||||
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
|
||||
$(lsb_release -cs) \
|
||||
stable" && \
|
||||
apt-get update -y && \
|
||||
apt-get install -y docker-ce docker-ce-cli containerd.io && \
|
||||
ln -s /var/run/docker-host.sock /var/run/docker.sock
|
||||
|
||||
# Dedicated DevContainer user runs Apache
|
||||
ENV APACHE_RUN_USER=devcontainer
|
||||
ENV APACHE_RUN_GROUP=devcontainer
|
||||
RUN useradd -ms /bin/bash ${APACHE_RUN_USER} && \
|
||||
adduser ${APACHE_RUN_USER} sudo && \
|
||||
echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers && \
|
||||
sed -ri "s/^export APACHE_RUN_USER=.*$/export APACHE_RUN_USER=${APACHE_RUN_USER}/" "/etc/apache2/envvars" && \
|
||||
sed -ri "s/^export APACHE_RUN_GROUP=.*$/export APACHE_RUN_GROUP=${APACHE_RUN_GROUP}/" "/etc/apache2/envvars"
|
||||
|
||||
USER devcontainer
|
||||
|
||||
# NVM
|
||||
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
|
||||
RUN bash --login -i -c 'source /home/devcontainer/.bashrc && nvm install 16'
|
||||
|
||||
WORKDIR /var/www/html
|
||||
stable"
|
||||
RUN apt-get update -y
|
||||
RUN apt-get install -y docker-ce docker-ce-cli containerd.io
|
||||
RUN ln -s /var/run/docker-host.sock /var/run/docker.sock
|
||||
|
||||
@@ -1,72 +0,0 @@
|
||||
# Nextcloud DevContainer
|
||||
|
||||
## Usage
|
||||
|
||||
Make sure you have the [VSCode DevContainer](https://code.visualstudio.com/docs/devcontainers/containers) extensions installed. If you open the project, VSCode will ask you if you want to open it inside of the DevContainer. If that's not the case, use <kbd>F1</kbd>→*Dev Containers: Open Folder in Container*.
|
||||
|
||||
Alternatively open the project directly in [GitHub Codespaces](https://github.com/features/codespaces).
|
||||
|
||||
That's already it. Everything else will be configured automatically by the Containers startup routine.
|
||||
|
||||
## Credentials
|
||||
|
||||
On first start the Container installs and configures Nextcloud with the following credentials:
|
||||
|
||||
**Nextcloud Admin Login**
|
||||
|
||||
Username: `admin` <br>
|
||||
Password: `admin`
|
||||
|
||||
**Postgres credentials**
|
||||
|
||||
Username: `postgres` <br>
|
||||
Password: `postgres` <br>
|
||||
Database: `postgres`
|
||||
|
||||
## Services
|
||||
|
||||
The following services will be started:
|
||||
|
||||
| Service | Local port | Description |
|
||||
|---------|------------|-------------|
|
||||
| Nextcloud (served via Apache) | `80` | The main application |
|
||||
| Mailhog | `8025` | SMTP email delivery for testing |
|
||||
| Adminer | `8080` | Database viewer. Use credentials from above and connect to `localhost` to get access to the NC database |
|
||||
|
||||
## Permissions
|
||||
|
||||
The container runs with the user `devcontainer` who is also running the Apache2 process. All mounted source files have
|
||||
proper permissions so that this user can access everything which is inside the current workspace. If you need to
|
||||
get root permissions for whatever reason, use `sudo su` or `sudo <command>` (for example `sudo service apache2 restart`).
|
||||
Everything else (like building the application, adjusting files, ...) should be done as `devcontainer` user.
|
||||
|
||||
## NodeJs and NVM
|
||||
|
||||
The container comes with [`nvm`](https://github.com/nvm-sh/nvm) and Node 16 installed. This should be sufficient to
|
||||
build Nextcloud Core sources via `make`. If you need a different Node Version (for example for
|
||||
app development), you can easily switch between different versions by running:
|
||||
|
||||
```bash
|
||||
# Install and use Node 14
|
||||
nvm install 14
|
||||
nvm use 14
|
||||
|
||||
# Check version
|
||||
node -v
|
||||
|
||||
# Switch back to Node 16
|
||||
nvm use 16
|
||||
|
||||
# Check version
|
||||
node -v
|
||||
```
|
||||
|
||||
Note that `nvm` is only installed for the user `devcontainer` and won't work out of the box for
|
||||
any other user.
|
||||
|
||||
## Debugging
|
||||
|
||||
The Apache webserver is already configured to automatically try to connect to a debugger process
|
||||
listening on port `9003`. To start the VSCode debugger process, use the delivered debug profile `Listen for XDebug`.
|
||||
After you started the VSCode debugger, just navigate to the appropriate Nextcloud URL to get your
|
||||
debug hits.
|
||||
@@ -1,7 +1,6 @@
|
||||
<?php
|
||||
|
||||
$codespaceName = getenv('CODESPACE_NAME');
|
||||
$codespaceDomain = getenv('GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN');
|
||||
$cloudEnvironmentId = getenv('CLOUDENV_ENVIRONMENT_ID');
|
||||
|
||||
$CONFIG = [
|
||||
'mail_from_address' => 'no-reply',
|
||||
@@ -13,10 +12,7 @@ $CONFIG = [
|
||||
'memcache.local' => '\OC\Memcache\APCu',
|
||||
];
|
||||
|
||||
if(is_string($codespaceName) && !empty($codespaceName) && is_string($codespaceDomain) && !empty($codespaceDomain)) {
|
||||
$host = $codespaceName . '-80.' . $codespaceDomain;
|
||||
$CONFIG['overwritehost'] = $host;
|
||||
$CONFIG['overwrite.cli.url'] = 'https://' . $host;
|
||||
if($cloudEnvironmentId !== true) {
|
||||
$CONFIG['overwritehost'] = $cloudEnvironmentId . '-80.apps.codespaces.githubusercontent.com';
|
||||
$CONFIG['overwriteprotocol'] = 'https';
|
||||
$CONFIG['trusted_domains'] = [ $host ];
|
||||
}
|
||||
|
||||
@@ -8,20 +8,15 @@
|
||||
8080,
|
||||
8025
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"felixfbecker.php-debug",
|
||||
"felixfbecker.php-intellisense",
|
||||
"ms-azuretools.vscode-docker",
|
||||
"xdebug.php-debug",
|
||||
"donjayamanne.githistory"
|
||||
],
|
||||
"settings": {
|
||||
"php.suggest.basic": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"workspaceFolder": "/var/www/html",
|
||||
"remoteUser": "devcontainer"
|
||||
"runArgs": [
|
||||
"--privileged"
|
||||
],
|
||||
"extensions": [
|
||||
"felixfbecker.php-debug",
|
||||
"felixfbecker.php-intellisense",
|
||||
"ms-azuretools.vscode-docker"
|
||||
],
|
||||
"settings": {
|
||||
"php.suggest.basic": false,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,8 +5,7 @@ services:
|
||||
volumes:
|
||||
- .:/workspace:cached
|
||||
- /var/run/docker.sock:/var/run/docker-host.sock
|
||||
- ..:/var/www/html
|
||||
command: /var/www/html/.devcontainer/entrypoint.sh
|
||||
command: /bin/sh -c "while sleep 1000; do :; done"
|
||||
ports:
|
||||
- 80:80
|
||||
- 8080:8080
|
||||
@@ -17,9 +16,6 @@ services:
|
||||
restart: always
|
||||
environment:
|
||||
POSTGRES_PASSWORD: postgres
|
||||
PGDATA: /data/postgres
|
||||
volumes:
|
||||
- db:/data/postgres
|
||||
network_mode: service:nextclouddev
|
||||
|
||||
adminer:
|
||||
@@ -31,6 +27,3 @@ services:
|
||||
image: mailhog/mailhog
|
||||
restart: always
|
||||
network_mode: service:nextclouddev
|
||||
|
||||
volumes:
|
||||
db:
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
sudo service apache2 start
|
||||
|
||||
while sleep 1000; do :; done
|
||||
@@ -1,14 +0,0 @@
|
||||
{
|
||||
// Use IntelliSense to learn about possible attributes.
|
||||
// Hover to view descriptions of existing attributes.
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Listen for Xdebug",
|
||||
"type": "php",
|
||||
"request": "launch",
|
||||
"port": 9003
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -2,32 +2,7 @@
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )/../" >/dev/null 2>&1 && pwd )"
|
||||
|
||||
cd $DIR/
|
||||
|
||||
# Set git safe.directory
|
||||
git config --global --add safe.directory /var/www/html
|
||||
git config --global --add safe.directory /var/www/html/3rdparty
|
||||
|
||||
git submodule update --init
|
||||
|
||||
# Codespace config
|
||||
cp .devcontainer/codespace.config.php config/codespace.config.php
|
||||
|
||||
# VSCode debugger profile
|
||||
mkdir -p .vscode && cp .devcontainer/launch.json .vscode/launch.json
|
||||
|
||||
# Onetime installation setup
|
||||
if [[ ! $(sudo -u ${APACHE_RUN_USER} php occ status) =~ installed:[[:space:]]*true ]]; then
|
||||
echo "Running NC installation"
|
||||
sudo -u ${APACHE_RUN_USER} php occ maintenance:install \
|
||||
--verbose \
|
||||
--database=pgsql \
|
||||
--database-name=postgres \
|
||||
--database-host=127.0.0.1 \
|
||||
--database-port=5432 \
|
||||
--database-user=postgres \
|
||||
--database-pass=postgres \
|
||||
--admin-user admin \
|
||||
--admin-pass admin
|
||||
fi
|
||||
|
||||
sudo service apache2 restart
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
---
|
||||
kind: pipeline
|
||||
name: checkers
|
||||
|
||||
@@ -8,7 +7,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: checkers
|
||||
image: ghcr.io/nextcloud/continuous-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- ./autotest-checkers.sh
|
||||
secrets: [ github_token ]
|
||||
@@ -31,12 +30,12 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: litmus-v1
|
||||
image: ghcr.io/nextcloud/continuous-integration-litmus-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-litmus-php7.4:latest
|
||||
commands:
|
||||
- bash tests/travis/install.sh sqlite
|
||||
- bash apps/dav/tests/travis/litmus-v1/script.sh
|
||||
- name: litmus-v2
|
||||
image: ghcr.io/nextcloud/continuous-integration-litmus-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-litmus-php7.4:latest
|
||||
commands:
|
||||
- bash tests/travis/install.sh sqlite
|
||||
- bash apps/dav/tests/travis/litmus-v2/script.sh
|
||||
@@ -59,7 +58,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: caldavtester-new-endpoint
|
||||
image: ghcr.io/nextcloud/continuous-integration-litmus-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-litmus-php7.4:latest
|
||||
commands:
|
||||
- bash tests/travis/install.sh sqlite
|
||||
- bash apps/dav/tests/travis/caldav/install.sh
|
||||
@@ -83,7 +82,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: caldavtester-old-endpoint
|
||||
image: ghcr.io/nextcloud/continuous-integration-litmus-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-litmus-php7.4:latest
|
||||
commands:
|
||||
- bash tests/travis/install.sh sqlite
|
||||
- bash apps/dav/tests/travis/caldav/install.sh
|
||||
@@ -107,7 +106,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: carddavtester-new-endpoint
|
||||
image: ghcr.io/nextcloud/continuous-integration-litmus-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-litmus-php7.4:latest
|
||||
commands:
|
||||
- bash tests/travis/install.sh sqlite
|
||||
- bash apps/dav/tests/travis/carddav/install.sh
|
||||
@@ -131,7 +130,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: carddavtester-old-endpoint
|
||||
image: ghcr.io/nextcloud/continuous-integration-litmus-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-litmus-php7.4:latest
|
||||
commands:
|
||||
- bash tests/travis/install.sh sqlite
|
||||
- bash apps/dav/tests/travis/carddav/install.sh
|
||||
@@ -154,8 +153,8 @@ steps:
|
||||
image: ghcr.io/nextcloud/continuous-integration-alpine-git:latest
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: sqlite-php8.0-samba-native
|
||||
image: ghcr.io/nextcloud/continuous-integration-samba-native-php8.0:latest
|
||||
- name: sqlite-php7.4-samba-native
|
||||
image: ghcr.io/nextcloud/continuous-integration-samba-native-php7.4:latest
|
||||
commands:
|
||||
- smbd -D -FS &
|
||||
- ./autotest-external.sh sqlite smb-linux
|
||||
@@ -165,8 +164,8 @@ steps:
|
||||
- sh -c "if [ '$DRONE_BUILD_EVENT' = 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -P $DRONE_PULL_REQUEST -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-external-clover-sqlite-smb-linux.xml; fi"
|
||||
- sh -c "if [ '$DRONE_BUILD_EVENT' != 'pull_request' ]; then bash codecov.sh -B $DRONE_BRANCH -C $DRONE_COMMIT -t 117641e2-a9e8-4b7b-984b-ae872d9b05f5 -f tests/autotest-external-clover-sqlite-smb-linux.xml; fi"
|
||||
# Temporarily disabled because it times out for unknown reasons 98% of the time
|
||||
#- name: sqlite-php8.0-samba-non-native
|
||||
# image: ghcr.io/nextcloud/continuous-integration-samba-non-native-php8.0:latest
|
||||
#- name: sqlite-php7.4-samba-non-native
|
||||
# image: ghcr.io/nextcloud/continuous-integration-samba-non-native-php7.4:latest
|
||||
# commands:
|
||||
# - smbd -D -FS &
|
||||
# - ./autotest-external.sh sqlite smb-linux
|
||||
@@ -186,15 +185,15 @@ trigger:
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
name: sqlite-php8.0-webdav-apache
|
||||
name: sqlite-php7.4-webdav-apache
|
||||
|
||||
steps:
|
||||
- name: submodules
|
||||
image: ghcr.io/nextcloud/continuous-integration-alpine-git:latest
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: sqlite-php8.0-webdav-apache
|
||||
image: ghcr.io/nextcloud/continuous-integration-webdav-apache-php8.0:latest
|
||||
- name: sqlite-php7.4-webdav-apache
|
||||
image: ghcr.io/nextcloud/continuous-integration-webdav-apache-php7.4:latest
|
||||
commands:
|
||||
- apache2ctl start
|
||||
- ./autotest-external.sh sqlite webdav-apachedrone
|
||||
@@ -225,6 +224,11 @@ steps:
|
||||
image: ghcr.io/nextcloud/continuous-integration-alpine-git:latest
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: nodb-php7.4
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-php-tests.sh || exit 0
|
||||
- NOCOVERAGE=true TEST_SELECTION=NODB ./autotest.sh sqlite
|
||||
- name: nodb-php8.0
|
||||
image: ghcr.io/nextcloud/continuous-integration-php8.0:latest
|
||||
commands:
|
||||
@@ -252,6 +256,11 @@ steps:
|
||||
image: ghcr.io/nextcloud/continuous-integration-alpine-git:latest
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: sqlite-php7.4
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-php-tests.sh || exit 0
|
||||
- NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh sqlite
|
||||
- name: sqlite-php8.0
|
||||
image: ghcr.io/nextcloud/continuous-integration-php8.0:latest
|
||||
commands:
|
||||
@@ -272,15 +281,15 @@ trigger:
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
name: mariadb10.2-php8.0
|
||||
name: mariadb10.2-php7.4
|
||||
|
||||
steps:
|
||||
- name: submodules
|
||||
image: ghcr.io/nextcloud/continuous-integration-alpine-git:latest
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: mariadb10.2-php8.0
|
||||
image: ghcr.io/nextcloud/continuous-integration-php8.0:latest
|
||||
- name: mariadb10.2-php7.4
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-php-tests.sh || exit 0
|
||||
- NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mariadb
|
||||
@@ -365,7 +374,7 @@ services:
|
||||
- name: cache
|
||||
image: ghcr.io/nextcloud/continuous-integration-redis:latest
|
||||
- name: mariadb
|
||||
image: ghcr.io/nextcloud/continuous-integration-mariadb-10.6:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-mariadb-10.6continuous-integration-mariadb-10.6:10.6
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: owncloud
|
||||
MYSQL_USER: oc_autotest
|
||||
@@ -386,15 +395,15 @@ trigger:
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
name: mysql8.0-php8.0
|
||||
name: mysql8.0-php7.4
|
||||
|
||||
steps:
|
||||
- name: submodules
|
||||
image: ghcr.io/nextcloud/continuous-integration-alpine-git:latest
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: mysql-php8.0
|
||||
image: ghcr.io/nextcloud/continuous-integration-php8.0:latest
|
||||
- name: mysql-php7.4
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-php-tests.sh || exit 0
|
||||
- NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh mysql
|
||||
@@ -425,15 +434,15 @@ trigger:
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
name: postgres10-php8.0
|
||||
name: postgres10-php7.4
|
||||
|
||||
steps:
|
||||
- name: submodules
|
||||
image: ghcr.io/nextcloud/continuous-integration-alpine-git:latest
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: postgres-php8.0
|
||||
image: ghcr.io/nextcloud/continuous-integration-php8.0:latest
|
||||
- name: postgres-php7.4
|
||||
image: ghcr.io/nextcloud/continuous-integration-php7.4:php7.4-3
|
||||
commands:
|
||||
- bash tests/drone-run-php-tests.sh || exit 0
|
||||
- sleep 10 # gives the database enough time to initialize
|
||||
@@ -446,7 +455,7 @@ services:
|
||||
image: ghcr.io/nextcloud/continuous-integration-postgres-10:postgres-10
|
||||
environment:
|
||||
POSTGRES_USER: oc_autotest
|
||||
POSTGRES_DB: oc_autotest
|
||||
POSTGRES_DB: oc_autotest_dummy
|
||||
POSTGRES_PASSWORD: owncloud
|
||||
tmpfs:
|
||||
- /var/lib/postgresql/data
|
||||
@@ -461,15 +470,15 @@ trigger:
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
name: postgres11-php8.0
|
||||
name: postgres11-php7.4
|
||||
|
||||
steps:
|
||||
- name: submodules
|
||||
image: ghcr.io/nextcloud/continuous-integration-alpine-git:latest
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: postgres-php8.0
|
||||
image: ghcr.io/nextcloud/continuous-integration-php8.0:latest
|
||||
- name: postgres-php7.4
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-php-tests.sh || exit 0
|
||||
- sleep 10 # gives the database enough time to initialize
|
||||
@@ -482,7 +491,7 @@ services:
|
||||
image: ghcr.io/nextcloud/continuous-integration-postgres-11:postgres-11
|
||||
environment:
|
||||
POSTGRES_USER: oc_autotest
|
||||
POSTGRES_DB: oc_autotest
|
||||
POSTGRES_DB: oc_autotest_dummy
|
||||
POSTGRES_PASSWORD: owncloud
|
||||
tmpfs:
|
||||
- /var/lib/postgresql/data
|
||||
@@ -518,43 +527,7 @@ services:
|
||||
image: ghcr.io/nextcloud/continuous-integration-postgres-13:postgres-13
|
||||
environment:
|
||||
POSTGRES_USER: oc_autotest
|
||||
POSTGRES_DB: oc_autotest
|
||||
POSTGRES_PASSWORD: owncloud
|
||||
tmpfs:
|
||||
- /var/lib/postgresql/data
|
||||
|
||||
trigger:
|
||||
branch:
|
||||
- master
|
||||
- stable*
|
||||
event:
|
||||
- pull_request
|
||||
- push
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
name: postgres15-php8.0
|
||||
|
||||
steps:
|
||||
- name: submodules
|
||||
image: ghcr.io/nextcloud/continuous-integration-alpine-git:latest
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: postgres-php8.0
|
||||
image: ghcr.io/nextcloud/continuous-integration-php8.0:latest
|
||||
commands:
|
||||
- bash tests/drone-run-php-tests.sh || exit 0
|
||||
- sleep 10 # gives the database enough time to initialize
|
||||
- POSTGRES=15 NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh pgsql
|
||||
|
||||
services:
|
||||
- name: cache
|
||||
image: ghcr.io/nextcloud/continuous-integration-redis:latest
|
||||
- name: postgres-15
|
||||
image: ghcr.io/nextcloud/continuous-integration-postgres-15:latest
|
||||
environment:
|
||||
POSTGRES_USER: oc_autotest
|
||||
POSTGRES_DB: oc_autotest
|
||||
POSTGRES_DB: oc_autotest_dummy
|
||||
POSTGRES_PASSWORD: owncloud
|
||||
tmpfs:
|
||||
- /var/lib/postgresql/data
|
||||
@@ -577,7 +550,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-capabilities_features
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -602,7 +575,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-collaboration_features
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -627,7 +600,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-federation_features
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin
|
||||
@@ -652,7 +625,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-auth
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -677,7 +650,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-avatar
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -702,7 +675,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-maintenance-mode
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -727,7 +700,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-ratelimiting
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -762,7 +735,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-carddav
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -787,7 +760,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-dav-v2
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -812,7 +785,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-ocs-v1
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -837,7 +810,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-checksums-v1
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -862,7 +835,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-external-storage
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -887,7 +860,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-provisioning-v1
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -912,7 +885,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-tags
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -937,7 +910,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-caldav
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -962,7 +935,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-comments
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -987,7 +960,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-comments-search
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -1012,7 +985,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-contacts-menu
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -1037,7 +1010,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-favorites
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -1062,7 +1035,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-provisioning-v2
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -1087,7 +1060,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-webdav-related
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -1112,7 +1085,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-sharees-features
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -1137,7 +1110,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-sharees-v2-features
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -1162,7 +1135,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-sharing-v1
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -1187,7 +1160,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-sharing-v1-part2
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -1212,7 +1185,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-sharing-v1-part3
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -1237,18 +1210,13 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: install-talk
|
||||
image: ghcr.io/nextcloud/continuous-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-alpine-git:latest
|
||||
commands:
|
||||
# JavaScript files are not used in integration tests, so it is not needed to
|
||||
# JavaScript files are not used in integration tests so it is not needed to
|
||||
# build them.
|
||||
- git clone --depth 1 --branch master https://github.com/nextcloud/spreed apps/spreed
|
||||
- cd apps/spreed
|
||||
- composer --version
|
||||
- composer self-update --2
|
||||
- composer install --no-dev
|
||||
- cd ../..
|
||||
- git clone --depth 1 --branch stable24 https://github.com/nextcloud/spreed apps/spreed
|
||||
- name: integration-sharing-v1-video-verification
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -1273,7 +1241,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-setup-features
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- cd build/integration
|
||||
@@ -1297,7 +1265,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-filesdrop-features
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -1322,7 +1290,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-transfer-ownership-features
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -1347,7 +1315,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-ldap-features
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -1372,7 +1340,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-ldap-openldap-features
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -1413,7 +1381,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-ldap-openldap-uid-features
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -1455,7 +1423,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-ldap-openldap-numerical-id-features
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -1496,7 +1464,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-trashbin
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -1521,7 +1489,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-remote-api
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -1546,7 +1514,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: integration-download
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
commands:
|
||||
- bash tests/drone-run-integration-tests.sh || exit 0
|
||||
- ./occ maintenance:install --admin-pass=admin --data-dir=/dev/shm/nc_int
|
||||
@@ -1571,7 +1539,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: acceptance-access-levels
|
||||
image: ghcr.io/nextcloud/continuous-integration-acceptance-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-acceptance-php7.4:latest
|
||||
commands:
|
||||
- tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-access-levels --selenium-server selenium:4444 allow-git-repository-modifications features/access-levels.feature
|
||||
|
||||
@@ -1591,6 +1559,156 @@ trigger:
|
||||
- pull_request
|
||||
- push
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
name: acceptance-app-files
|
||||
|
||||
steps:
|
||||
- name: submodules
|
||||
image: ghcr.io/nextcloud/continuous-integration-alpine-git:latest
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: acceptance-app-files
|
||||
image: ghcr.io/nextcloud/continuous-integration-acceptance-php7.4:latest
|
||||
commands:
|
||||
- tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-app-files --selenium-server selenium:4444 allow-git-repository-modifications features/app-files.feature
|
||||
|
||||
services:
|
||||
- name: selenium
|
||||
image: ghcr.io/nextcloud/continuous-integration-selenium:3.141.59
|
||||
environment:
|
||||
# Reduce default log level for Selenium server (INFO) as it is too
|
||||
# verbose.
|
||||
JAVA_OPTS: -Dselenium.LOGGER.level=WARNING
|
||||
|
||||
trigger:
|
||||
branch:
|
||||
- master
|
||||
- stable*
|
||||
event:
|
||||
- pull_request
|
||||
- push
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
name: acceptance-app-files-sharing
|
||||
|
||||
steps:
|
||||
- name: submodules
|
||||
image: ghcr.io/nextcloud/continuous-integration-alpine-git:latest
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: acceptance-app-files-sharing
|
||||
image: ghcr.io/nextcloud/continuous-integration-acceptance-php7.4:latest
|
||||
commands:
|
||||
- tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-app-files-sharing --selenium-server selenium:4444 allow-git-repository-modifications features/app-files-sharing.feature
|
||||
|
||||
services:
|
||||
- name: selenium
|
||||
image: ghcr.io/nextcloud/continuous-integration-selenium:3.141.59
|
||||
environment:
|
||||
# Reduce default log level for Selenium server (INFO) as it is too
|
||||
# verbose.
|
||||
JAVA_OPTS: -Dselenium.LOGGER.level=WARNING
|
||||
|
||||
trigger:
|
||||
branch:
|
||||
- master
|
||||
- stable*
|
||||
event:
|
||||
- pull_request
|
||||
- push
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
name: acceptance-app-files-sharing-link
|
||||
|
||||
steps:
|
||||
- name: submodules
|
||||
image: ghcr.io/nextcloud/continuous-integration-alpine-git:latest
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: acceptance-app-files-sharing-link
|
||||
image: ghcr.io/nextcloud/continuous-integration-acceptance-php7.4:latest
|
||||
commands:
|
||||
- tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-app-files-sharing-link --selenium-server selenium:4444 allow-git-repository-modifications features/app-files-sharing-link.feature
|
||||
|
||||
services:
|
||||
- name: selenium
|
||||
image: ghcr.io/nextcloud/continuous-integration-selenium:3.141.59
|
||||
environment:
|
||||
# Reduce default log level for Selenium server (INFO) as it is too
|
||||
# verbose.
|
||||
JAVA_OPTS: -Dselenium.LOGGER.level=WARNING
|
||||
|
||||
trigger:
|
||||
branch:
|
||||
- master
|
||||
- stable*
|
||||
event:
|
||||
- pull_request
|
||||
- push
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
name: acceptance-app-files-tags
|
||||
|
||||
steps:
|
||||
- name: submodules
|
||||
image: ghcr.io/nextcloud/continuous-integration-alpine-git:latest
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: acceptance-app-files-tags
|
||||
image: ghcr.io/nextcloud/continuous-integration-acceptance-php7.4:latest
|
||||
commands:
|
||||
- tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-app-files-tags --selenium-server selenium:4444 allow-git-repository-modifications features/app-files-tags.feature
|
||||
|
||||
services:
|
||||
- name: selenium
|
||||
image: ghcr.io/nextcloud/continuous-integration-selenium:3.141.59
|
||||
environment:
|
||||
# Reduce default log level for Selenium server (INFO) as it is too
|
||||
# verbose.
|
||||
JAVA_OPTS: -Dselenium.LOGGER.level=WARNING
|
||||
|
||||
trigger:
|
||||
branch:
|
||||
- master
|
||||
- stable*
|
||||
event:
|
||||
- pull_request
|
||||
- push
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
name: acceptance-app-theming
|
||||
|
||||
steps:
|
||||
- name: submodules
|
||||
image: ghcr.io/nextcloud/continuous-integration-alpine-git:latest
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: acceptance-app-theming
|
||||
image: ghcr.io/nextcloud/continuous-integration-acceptance-php7.4:latest
|
||||
commands:
|
||||
- tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-app-theming --selenium-server selenium:4444 allow-git-repository-modifications features/app-theming.feature
|
||||
|
||||
services:
|
||||
- name: selenium
|
||||
image: ghcr.io/nextcloud/continuous-integration-selenium:3.141.59
|
||||
environment:
|
||||
# Reduce default log level for Selenium server (INFO) as it is too
|
||||
# verbose.
|
||||
JAVA_OPTS: -Dselenium.LOGGER.level=WARNING
|
||||
|
||||
trigger:
|
||||
branch:
|
||||
- master
|
||||
- stable*
|
||||
event:
|
||||
- pull_request
|
||||
- push
|
||||
|
||||
---
|
||||
kind: pipeline
|
||||
name: acceptance-header
|
||||
@@ -1601,7 +1719,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: acceptance-header
|
||||
image: ghcr.io/nextcloud/continuous-integration-acceptance-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-acceptance-php7.4:latest
|
||||
commands:
|
||||
- tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-header --selenium-server selenium:4444 allow-git-repository-modifications features/header.feature
|
||||
|
||||
@@ -1631,7 +1749,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: acceptance-login
|
||||
image: ghcr.io/nextcloud/continuous-integration-acceptance-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-acceptance-php7.4:latest
|
||||
commands:
|
||||
- tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-login --selenium-server selenium:4444 allow-git-repository-modifications features/login.feature
|
||||
|
||||
@@ -1661,7 +1779,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: acceptance-users
|
||||
image: ghcr.io/nextcloud/continuous-integration-acceptance-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-acceptance-php7.4:latest
|
||||
commands:
|
||||
- tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-users --selenium-server selenium:4444 allow-git-repository-modifications features/users.feature
|
||||
|
||||
@@ -1691,7 +1809,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: acceptance-apps
|
||||
image: ghcr.io/nextcloud/continuous-integration-acceptance-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-acceptance-php7.4:latest
|
||||
commands:
|
||||
- tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-apps --selenium-server selenium:4444 allow-git-repository-modifications features/apps.feature
|
||||
|
||||
@@ -1721,7 +1839,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: nodb-codecov
|
||||
image: ghcr.io/nextcloud/continuous-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
environment:
|
||||
CODECOV_TOKEN:
|
||||
from_secret: CODECOV_TOKEN
|
||||
@@ -1753,7 +1871,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: db-codecov
|
||||
image: ghcr.io/nextcloud/continuous-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
environment:
|
||||
CODECOV_TOKEN:
|
||||
from_secret: CODECOV_TOKEN
|
||||
@@ -1794,7 +1912,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: object-store
|
||||
image: ghcr.io/nextcloud/continuous-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
environment:
|
||||
OBJECT_STORE: s3
|
||||
CODECOV_TOKEN:
|
||||
@@ -1824,7 +1942,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: object-store
|
||||
image: ghcr.io/nextcloud/continuous-integration-php8.0:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
|
||||
environment:
|
||||
OBJECT_STORE: azure
|
||||
CODECOV_TOKEN:
|
||||
@@ -1860,7 +1978,7 @@ steps:
|
||||
commands:
|
||||
- git submodule update --init
|
||||
- name: memcache-memcached
|
||||
image: ghcr.io/nextcloud/continuous-integration-php8.0-memcached:latest
|
||||
image: ghcr.io/nextcloud/continuous-integration-php7.4-memcached:latest
|
||||
commands:
|
||||
- phpenmod xdebug
|
||||
- service memcached restart
|
||||
@@ -1876,6 +1994,3 @@ trigger:
|
||||
event:
|
||||
- pull_request
|
||||
- push
|
||||
---
|
||||
kind: signature
|
||||
hmac: 6814dc276b076a391796f3639b27499592e974db8e5e7a4043a120ce215b78cd
|
||||
|
||||
@@ -23,11 +23,3 @@ trim_trailing_whitespace = false
|
||||
|
||||
[*.svg]
|
||||
insert_final_newline = false
|
||||
|
||||
[package*.json]
|
||||
indent_size = 2
|
||||
indent_style = space
|
||||
|
||||
[build/psalm-baseline.xml]
|
||||
indent_size = 2
|
||||
indent_style = space
|
||||
|
||||
@@ -6,7 +6,6 @@ node_modules/
|
||||
**/js/*
|
||||
*.config.js
|
||||
tests/lib/
|
||||
apps-extra
|
||||
|
||||
# TODO: remove when comments files is not using handlebar templates anymore
|
||||
apps/comments/src/templates.js
|
||||
@@ -3,20 +3,13 @@ module.exports = {
|
||||
__webpack_nonce__: true,
|
||||
_: true,
|
||||
$: true,
|
||||
dayNames: true,
|
||||
escapeHTML: true,
|
||||
firstDay: true,
|
||||
moment: true,
|
||||
escapeHTML: true,
|
||||
oc_userconfig: true,
|
||||
sinon: true,
|
||||
dayNames: true,
|
||||
firstDay: true,
|
||||
},
|
||||
plugins: [
|
||||
'cypress',
|
||||
],
|
||||
extends: [
|
||||
'@nextcloud/eslint-config/typescript',
|
||||
'plugin:cypress/recommended',
|
||||
],
|
||||
extends: ['@nextcloud'],
|
||||
rules: {
|
||||
'no-tabs': 'warn',
|
||||
// TODO: make sure we fix this as this is bad vue coding style.
|
||||
|
||||
@@ -1,4 +1,2 @@
|
||||
/dist/* binary
|
||||
/package-lock.json merge=binary
|
||||
/core/css/*.css* binary
|
||||
/.devcontainer/*.sh text eol=lf
|
||||
/package-lock.json binary
|
||||
@@ -1,53 +1,10 @@
|
||||
# App maintainers
|
||||
/apps/admin_audit/appinfo/info.xml @luka-nextcloud @blizzz
|
||||
/apps/cloud_federation_api/appinfo/info.xml @mejo-
|
||||
/apps/comments/appinfo/info.xml @marcelklehr @Pytal
|
||||
/apps/contactsinteraction/appinfo/info.xml @kesselb @miaulalala @ChristophWurst @GretaD @hamza221 @st3iny
|
||||
/apps/dashboard/appinfo/info.xml @julien-nc @juliushaertl
|
||||
/apps/dav/lib/CalDAV @ChristophWurst @miaulalala @tcitworld
|
||||
/apps/dav/lib/CardDAV @ChristophWurst @miaulalala @tcitworld
|
||||
/apps/encryption/appinfo/info.xml @come-nc @icewind1991
|
||||
/apps/federatedfilesharing/appinfo/info.xml @icewind1991 @danxuliu
|
||||
/apps/federation/appinfo/info.xml @datenangebot
|
||||
/apps/files/appinfo/info.xml @skjnldsv @Pytal @ArtificialOwl @come-nc @artonge @icewind1991 @szaimen @susnux @Fenn-CS
|
||||
/apps/files_external/appinfo/info.xml @icewind1991 @artonge
|
||||
/apps/files_reminders/appinfo/info.xml @Pytal
|
||||
/apps/files_sharing/appinfo/info.xml @skjnldsv @come-nc
|
||||
/apps/files_trashbin/appinfo/info.xml @Pytal @icewind1991
|
||||
/apps/files_versions/appinfo/info.xml @artonge @icewind1991
|
||||
/apps/oauth2/appinfo/info.xml @julien-nc @ChristophWurst
|
||||
/apps/provisioning_api/appinfo/info.xml @provokateurin @nickvergessen
|
||||
/apps/settings/appinfo/info.xml @Pytal @JuliaKirschenheuter
|
||||
/apps/sharebymail/appinfo/info.xml @Altahrim
|
||||
/apps/systemtags/appinfo/info.xml @Antreesy @marcelklehr
|
||||
/apps/theming/appinfo/info.xml @skjnldsv @juliushaertl
|
||||
/apps/twofactor_backupcodes/appinfo/info.xml @st3iny @miaulalala @ChristophWurst
|
||||
/apps/updatenotification/appinfo/info.xml @Pytal @JuliaKirschenheuter
|
||||
/apps/user_ldap/appinfo/info.xml @come-nc @blizzz
|
||||
/apps/user_status/appinfo/info.xml @Antreesy @nickvergessen
|
||||
/apps/weather_status/appinfo/info.xml @julien-nc @juliushaertl
|
||||
/apps/workflowengine/appinfo/info.xml @blizzz @juliushaertl
|
||||
|
||||
# Security team
|
||||
/resources/config/ca-bundle.crt @ChristophWurst @miaulalala @nickvergessen
|
||||
/.drone.yml @nickvergessen
|
||||
*/Activity/* @nickvergessen
|
||||
*/Notifications/* @nickvergessen
|
||||
/apps/dav/lib/CalDAV @ChristophWurst @miaulalala @tcitworld
|
||||
/apps/dav/lib/CardDAV @ChristophWurst @miaulalala @tcitworld
|
||||
|
||||
# Two-Factor Authentication
|
||||
# https://github.com/nextcloud/wg-two-factor-authentication#members
|
||||
**/TwoFactorAuth @ChristophWurst @miaulalala @nickvergessen @st3iny
|
||||
/apps/twofactor_backupcodes @ChristophWurst @miaulalala @nickvergessen @st3iny
|
||||
/core/templates/twofactor* @ChristophWurst @miaulalala @nickvergessen @st3iny
|
||||
|
||||
# Limit login to IP
|
||||
# Watch login routes for https://github.com/nextcloud/limit_login_to_ip
|
||||
/core/routes.php @Altahrim
|
||||
|
||||
# OpenAPI
|
||||
openapi.json @provokateurin
|
||||
ResponseDefinitions.php @provokateurin
|
||||
|
||||
# Personal interest
|
||||
*/Activity/* @nickvergessen
|
||||
*/Notifications/* @nickvergessen
|
||||
/lib/private/Profiler @CarlSchwan
|
||||
/lib/public/Profiler @CarlSchwan
|
||||
/apps/twofactor_backupcodes @ChristophWurst @miaulalala @nickvergessen
|
||||
*/TwoFactorAuth/* @ChristophWurst @miaulalala @nickvergessen
|
||||
/core/templates/twofactor* @ChristophWurst @miaulalala @nickvergessen
|
||||
|
||||
@@ -17,7 +17,7 @@ body:
|
||||
options:
|
||||
- label: This is a **bug**, not a question or a configuration/webserver/proxy issue.
|
||||
required: true
|
||||
- label: This issue is **not** already reported on [Github](https://github.com/nextcloud/server/issues?q=is%3Aopen+is%3Aissue+label%3Abug) OR [Nextcloud Community Forum](https://help.nextcloud.com/) _(I've searched it)_.
|
||||
- label: This issue is **not** already reported on Github _(I've searched it)_.
|
||||
required: true
|
||||
- label: Nextcloud Server **is** up to date. See [Maintenance and Release Schedule](https://github.com/nextcloud/server/wiki/Maintenance-and-Release-Schedule) for supported versions.
|
||||
required: true
|
||||
@@ -60,28 +60,13 @@ body:
|
||||
Select installation method you've used.
|
||||
_Describe the method in the "Additional info" section if you chose "Other"._
|
||||
options:
|
||||
- "Community Web installer on a VPS or web space"
|
||||
- "Community Manual installation with Archive"
|
||||
- "Community Docker image"
|
||||
- "Community NextcloudPi appliance"
|
||||
- "Community SNAP package"
|
||||
- "Community VM appliance"
|
||||
- "Other Community project"
|
||||
- "Manual installation"
|
||||
- "Official Docker image"
|
||||
- "Official VM scripts"
|
||||
- "Official SNAP package"
|
||||
- "Official All-in-One appliance"
|
||||
- type: dropdown
|
||||
id: nextcloud-version
|
||||
attributes:
|
||||
label: Nextcloud Server version
|
||||
description: |
|
||||
Select Nextcloud Server version.
|
||||
_Versions not listed here are not maintained and not supported anymore_
|
||||
options:
|
||||
- "25"
|
||||
- "26"
|
||||
- "27"
|
||||
- "master"
|
||||
validations:
|
||||
required: true
|
||||
- "Web installer on a VPS or web space"
|
||||
- "Other"
|
||||
- type: dropdown
|
||||
id: system
|
||||
attributes:
|
||||
@@ -101,10 +86,10 @@ body:
|
||||
Select PHP engine version serving Nextcloud Server.
|
||||
_Describe in the "Additional info" section if you chose "Other"._
|
||||
options:
|
||||
- "PHP 7.3"
|
||||
- "PHP 7.4"
|
||||
- "PHP 8.0"
|
||||
- "PHP 8.1"
|
||||
- "PHP 8.2"
|
||||
- "Other"
|
||||
- type: dropdown
|
||||
id: webserver
|
||||
@@ -116,6 +101,7 @@ body:
|
||||
options:
|
||||
- "Apache (supported)"
|
||||
- "Nginx"
|
||||
- "Lighttpd"
|
||||
- "Other"
|
||||
- type: dropdown
|
||||
id: database
|
||||
@@ -138,8 +124,8 @@ body:
|
||||
description: |
|
||||
Select if bug is present after an update or on a fresh install.
|
||||
options:
|
||||
- "Updated from a MINOR version (ex. 22.1 to 22.2)"
|
||||
- "Upgraded to a MAJOR version (ex. 22 to 23)"
|
||||
- "Updated from a minor version (ex. 22.2.3 to 22.2.4)"
|
||||
- "Updated to a major version (ex. 22.2.3 to 23.0.1)"
|
||||
- "Fresh Nextcloud Server install"
|
||||
- type: dropdown
|
||||
id: encryption
|
||||
@@ -189,6 +175,8 @@ body:
|
||||
```
|
||||
> NOTE: This will be automatically formatted into code for better readability.
|
||||
render: shell
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: nextcloud-signingstatus
|
||||
attributes:
|
||||
|
||||
@@ -28,8 +28,6 @@ updates:
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
# Disable automatic rebasing because without a build CI will likely fail anyway
|
||||
rebase-strategy: "disabled"
|
||||
|
||||
# Testing master npm
|
||||
- package-ecosystem: npm
|
||||
@@ -64,7 +62,7 @@ updates:
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
target-branch: stable25
|
||||
target-branch: stable21
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
@@ -74,8 +72,6 @@ updates:
|
||||
# ignore all GitHub linguist patch updates
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-major", "version-update:semver-minor", "version-update:semver-patch"]
|
||||
# Disable automatic rebasing because without a build CI will likely fail anyway
|
||||
rebase-strategy: "disabled"
|
||||
|
||||
- package-ecosystem: npm
|
||||
directory: "/"
|
||||
@@ -84,7 +80,7 @@ updates:
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
target-branch: stable26
|
||||
target-branch: stable22
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
@@ -93,9 +89,7 @@ updates:
|
||||
ignore:
|
||||
# ignore all GitHub linguist patch updates
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-major", "version-update:semver-minor", "version-update:semver-patch"]
|
||||
# Disable automatic rebasing because without a build CI will likely fail anyway
|
||||
rebase-strategy: "disabled"
|
||||
update-types: ["version-update:semver-major", "version-update:semver-minor"]
|
||||
|
||||
- package-ecosystem: npm
|
||||
directory: "/"
|
||||
@@ -104,7 +98,7 @@ updates:
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
target-branch: stable27
|
||||
target-branch: stable23
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
@@ -113,9 +107,7 @@ updates:
|
||||
ignore:
|
||||
# ignore all GitHub linguist patch updates
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-major", "version-update:semver-minor", "version-update:semver-patch"]
|
||||
# Disable automatic rebasing because without a build CI will likely fail anyway
|
||||
rebase-strategy: "disabled"
|
||||
update-types: ["version-update:semver-major", "version-update:semver-minor"]
|
||||
|
||||
# Testing StableXX composer
|
||||
- package-ecosystem: composer
|
||||
@@ -125,7 +117,7 @@ updates:
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
target-branch: stable25
|
||||
target-branch: stable21
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
@@ -143,7 +135,7 @@ updates:
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
target-branch: stable26
|
||||
target-branch: stable22
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
@@ -152,7 +144,7 @@ updates:
|
||||
ignore:
|
||||
# ignore all GitHub linguist patch updates
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-major", "version-update:semver-minor", "version-update:semver-patch"]
|
||||
update-types: ["version-update:semver-major", "version-update:semver-minor"]
|
||||
|
||||
- package-ecosystem: composer
|
||||
directory: "/build/integration"
|
||||
@@ -161,7 +153,7 @@ updates:
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
target-branch: stable27
|
||||
target-branch: stable23
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
@@ -170,13 +162,4 @@ updates:
|
||||
ignore:
|
||||
# ignore all GitHub linguist patch updates
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-major", "version-update:semver-minor", "version-update:semver-patch"]
|
||||
|
||||
# GitHub Actions
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
update-types: ["version-update:semver-major", "version-update:semver-minor"]
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
|
||||
* Resolves: # <!-- related github issue -->
|
||||
|
||||
## Summary
|
||||
|
||||
|
||||
## TODO
|
||||
|
||||
- [ ] ...
|
||||
|
||||
## Checklist
|
||||
|
||||
- Code is [properly formatted](https://docs.nextcloud.com/server/latest/developer_manual/digging_deeper/continuous_integration.html#linting)
|
||||
- [Sign-off message](https://github.com/src-d/guide/blob/master/developer-community/fix-DCO.md) is added to all commits
|
||||
- [ ] Tests ([unit](https://docs.nextcloud.com/server/latest/developer_manual/app_development/tutorial.html#unit-tests), [integration](https://docs.nextcloud.com/server/latest/developer_manual/app_development/tutorial.html#integration-tests), api and/or acceptance) are included
|
||||
- [ ] Screenshots before/after for front-end changes
|
||||
- [ ] Documentation ([manuals](https://github.com/nextcloud/documentation/) or wiki) has been updated or is not required
|
||||
- [ ] [Backports requested](https://github.com/nextcloud/backportbot/#usage) where applicable (ex: critical bugfixes)
|
||||
@@ -3,17 +3,10 @@
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
|
||||
name: Block merges for EOL
|
||||
name: Pull request checks
|
||||
|
||||
on: pull_request
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: block-merge-eol-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
block-merges-eol:
|
||||
name: Block merges for EOL branches
|
||||
@@ -31,7 +24,7 @@ jobs:
|
||||
# retrieve version number from branch reference
|
||||
server_major=$(echo "${{ github.base_ref }}" | sed -En 's/stable//p')
|
||||
echo "server_major=$server_major" >> $GITHUB_ENV
|
||||
|
||||
|
||||
- name: Checking if ${{ env.server_major }} is EOL
|
||||
run: |
|
||||
php -r 'echo json_encode(require_once "config.php");' | jq --arg version "${{ env.server_major }}" '.stable[$version]["100"].eol // .beta[$version]["100"].eol' | grep --silent -i 'false'
|
||||
php -r 'echo json_encode(require_once "config.php");' | jq --arg version "${{ env.server_major }}" '.stable[$version]["100"].eol' | grep --silent -i 'false'
|
||||
|
||||
@@ -3,24 +3,13 @@
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
|
||||
name: Block merges during freezes
|
||||
name: Pull request checks
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, ready_for_review, reopened, synchronize]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: block-merge-freeze-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
on: pull_request
|
||||
|
||||
jobs:
|
||||
block-merges-during-freeze:
|
||||
name: Block merges during freezes
|
||||
|
||||
if: github.event.pull_request.draft == false
|
||||
name: Block merges during feature freezes
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
|
||||
@@ -18,43 +18,43 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Check actor permission
|
||||
uses: skjnldsv/check-actor-permission@e591dbfe838300c007028e1219ca82cc26e8d7c5 # v2
|
||||
uses: skjnldsv/check-actor-permission@v2
|
||||
with:
|
||||
require: write
|
||||
|
||||
- name: Add reaction on start
|
||||
uses: peter-evans/create-or-update-comment@c6c9a1a66007646a28c153e2a8580a5bad27bcfa # v3.0.1
|
||||
uses: peter-evans/create-or-update-comment@v1
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
repository: ${{ github.event.repository.full_name }}
|
||||
comment-id: ${{ github.event.comment.id }}
|
||||
reactions: "+1"
|
||||
reaction-type: "+1"
|
||||
|
||||
- name: Parse command
|
||||
uses: skjnldsv/parse-command-comment@7cef1df370a99dfd5bf896d50121390c96785db8 # v2
|
||||
uses: skjnldsv/parse-command-comment@master
|
||||
id: command
|
||||
|
||||
# Init path depending on which command is run
|
||||
- name: Init path
|
||||
id: git-path
|
||||
run: |
|
||||
run: |
|
||||
if ${{ startsWith(steps.command.outputs.arg1, '/') }}; then
|
||||
echo "path=${{ github.workspace }}${{steps.command.outputs.arg1}}" >> $GITHUB_OUTPUT
|
||||
echo "::set-output name=path::${{ github.workspace }}${{steps.command.outputs.arg1}}"
|
||||
else
|
||||
echo "path=${{ github.workspace }}${{steps.command.outputs.arg2}}" >> $GITHUB_OUTPUT
|
||||
echo "::set-output name=path::${{ github.workspace }}${{steps.command.outputs.arg2}}"
|
||||
fi
|
||||
|
||||
- name: Init branch
|
||||
uses: xt0rted/pull-request-comment-branch@d97294d304604fa98a2600a6e2f916a84b596dc7 # v1
|
||||
uses: xt0rted/pull-request-comment-branch@v1
|
||||
id: comment-branch
|
||||
|
||||
|
||||
process:
|
||||
runs-on: ubuntu-latest
|
||||
needs: init
|
||||
|
||||
steps:
|
||||
- name: Checkout ${{ needs.init.outputs.head_ref }}
|
||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
fetch-depth: 0
|
||||
@@ -66,14 +66,14 @@ jobs:
|
||||
git config --local user.name "nextcloud-command"
|
||||
|
||||
- name: Read package.json node and npm engines version
|
||||
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.1
|
||||
uses: skjnldsv/read-package-engines-version-actions@v1
|
||||
id: package-engines-versions
|
||||
with:
|
||||
fallbackNode: '^16'
|
||||
fallbackNpm: '^7'
|
||||
fallbackNode: '^12'
|
||||
fallbackNpm: '^6'
|
||||
|
||||
- name: Set up node ${{ steps.package-engines-versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
|
||||
uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: ${{ steps.package-engines-versions.outputs.nodeVersion }}
|
||||
cache: npm
|
||||
@@ -90,7 +90,7 @@ jobs:
|
||||
if: ${{ needs.init.outputs.arg1 != 'fixup' && needs.init.outputs.arg1 != 'amend' }}
|
||||
run: |
|
||||
git add ${{ needs.init.outputs.git_path }}
|
||||
git commit --signoff -m 'chore(assets): Recompile assets'
|
||||
git commit --signoff -m 'Compile assets'
|
||||
git push origin ${{ needs.init.outputs.head_ref }}
|
||||
|
||||
- name: Commit and push fixup
|
||||
@@ -108,10 +108,10 @@ jobs:
|
||||
git push --force origin ${{ needs.init.outputs.head_ref }}
|
||||
|
||||
- name: Add reaction on failure
|
||||
uses: peter-evans/create-or-update-comment@c6c9a1a66007646a28c153e2a8580a5bad27bcfa # v3.0.1
|
||||
uses: peter-evans/create-or-update-comment@v1
|
||||
if: failure()
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
repository: ${{ github.event.repository.full_name }}
|
||||
comment-id: ${{ github.event.comment.id }}
|
||||
reactions: "-1"
|
||||
reaction-type: "-1"
|
||||
|
||||
@@ -1,60 +0,0 @@
|
||||
name: Update 3rdparty command
|
||||
|
||||
on:
|
||||
issue_comment:
|
||||
types: created
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
rebase:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: none
|
||||
|
||||
# On pull requests and if the comment starts with `/update-3rdparty`
|
||||
if: github.event.issue.pull_request != '' && startsWith(github.event.comment.body, '/update-3rdparty')
|
||||
|
||||
steps:
|
||||
- name: Add reaction on start
|
||||
uses: peter-evans/create-or-update-comment@c6c9a1a66007646a28c153e2a8580a5bad27bcfa # v3.0.1
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
repository: ${{ github.event.repository.full_name }}
|
||||
comment-id: ${{ github.event.comment.id }}
|
||||
reactions: "+1"
|
||||
|
||||
- name: Init branch
|
||||
uses: xt0rted/pull-request-comment-branch@d97294d304604fa98a2600a6e2f916a84b596dc7 # v1
|
||||
id: comment-branch
|
||||
|
||||
- name: Checkout ${{ steps.comment-branch.outputs.head_ref }}
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
ref: ${{ steps.comment-branch.outputs.head_ref }}
|
||||
|
||||
- name: Setup git
|
||||
run: |
|
||||
git config --local user.email "nextcloud-command@users.noreply.github.com"
|
||||
git config --local user.name "nextcloud-command"
|
||||
|
||||
- name: Pull 3rdparty
|
||||
run: git submodule foreach 'if [ "$sm_path" == "3rdparty" ]; then git pull origin ${{ github.event.issue.pull_request.base.ref }}; fi'
|
||||
|
||||
- name: Commit and push changes
|
||||
run: |
|
||||
git add 3rdparty
|
||||
git commit -s -m "Update submodule 3rdparty to latest ${{ github.event.issue.pull_request.base.ref }}"
|
||||
git push
|
||||
|
||||
- name: Add reaction on failure
|
||||
uses: peter-evans/create-or-update-comment@c6c9a1a66007646a28c153e2a8580a5bad27bcfa # v3.0.1
|
||||
if: failure()
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
repository: ${{ github.event.repository.full_name }}
|
||||
comment-id: ${{ github.event.comment.id }}
|
||||
reactions: "-1"
|
||||
@@ -9,21 +9,16 @@ on:
|
||||
issue_comment:
|
||||
types: created
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
rebase:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: none
|
||||
|
||||
# On pull requests and if the comment starts with `/rebase`
|
||||
if: github.event.issue.pull_request != '' && startsWith(github.event.comment.body, '/rebase')
|
||||
|
||||
steps:
|
||||
- name: Add reaction on start
|
||||
uses: peter-evans/create-or-update-comment@c6c9a1a66007646a28c153e2a8580a5bad27bcfa # v3.0.1
|
||||
uses: peter-evans/create-or-update-comment@v1
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
repository: ${{ github.event.repository.full_name }}
|
||||
@@ -31,18 +26,18 @@ jobs:
|
||||
reaction-type: "+1"
|
||||
|
||||
- name: Checkout the latest code
|
||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
|
||||
- name: Automatic Rebase
|
||||
uses: cirrus-actions/rebase@b87d48154a87a85666003575337e27b8cd65f691 # 1.8
|
||||
uses: cirrus-actions/rebase@1.5
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
|
||||
- name: Add reaction on failure
|
||||
uses: peter-evans/create-or-update-comment@c6c9a1a66007646a28c153e2a8580a5bad27bcfa # v3.0.1
|
||||
uses: peter-evans/create-or-update-comment@v1
|
||||
if: failure()
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
|
||||
@@ -1,153 +0,0 @@
|
||||
name: Cypress
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- master
|
||||
- stable*
|
||||
|
||||
env:
|
||||
# Adjust APP_NAME if your repository name is different
|
||||
APP_NAME: ${{ github.event.repository.name }}
|
||||
# Server requires head_ref instead of base_ref, as we want to test the PR branch
|
||||
BRANCH: ${{ github.head_ref || github.ref_name }}
|
||||
|
||||
jobs:
|
||||
init:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
nodeVersion: ${{ steps.versions.outputs.nodeVersion }}
|
||||
npmVersion: ${{ steps.versions.outputs.npmVersion }}
|
||||
|
||||
steps:
|
||||
- name: Checkout app
|
||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
||||
|
||||
- name: Check composer.json
|
||||
id: check_composer
|
||||
uses: andstor/file-existence-action@20b4d2e596410855db8f9ca21e96fbe18e12930b # v2
|
||||
with:
|
||||
files: "composer.json"
|
||||
|
||||
- name: Install composer dependencies
|
||||
if: steps.check_composer.outputs.files_exists == 'true'
|
||||
run: composer install --no-dev
|
||||
|
||||
- name: Read package.json node and npm engines version
|
||||
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2
|
||||
id: versions
|
||||
with:
|
||||
fallbackNode: "^14"
|
||||
fallbackNpm: "^7"
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
|
||||
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
|
||||
|
||||
- name: Install node dependencies & build app
|
||||
run: |
|
||||
npm ci
|
||||
TESTING=true npm run build --if-present
|
||||
|
||||
- name: Save context
|
||||
uses: buildjet/cache/save@e376f15c6ec6dc595375c78633174c7e5f92dc0e # v3
|
||||
with:
|
||||
key: cypress-context-${{ github.run_id }}
|
||||
path: ./
|
||||
|
||||
cypress:
|
||||
runs-on: ubuntu-latest
|
||||
needs: init
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
# Run multiple copies of the current job in parallel
|
||||
# Please increase the number or runners as your tests suite grows
|
||||
containers: ["component", 1, 2]
|
||||
|
||||
name: runner ${{ matrix.containers }}
|
||||
|
||||
steps:
|
||||
- name: Restore context
|
||||
uses: buildjet/cache/restore@e376f15c6ec6dc595375c78633174c7e5f92dc0e # v3
|
||||
with:
|
||||
fail-on-cache-miss: true
|
||||
key: cypress-context-${{ github.run_id }}
|
||||
path: ./
|
||||
|
||||
- name: Set up node ${{ needs.init.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
|
||||
with:
|
||||
node-version: ${{ needs.init.outputs.nodeVersion }}
|
||||
|
||||
- name: Set up npm ${{ needs.init.outputs.npmVersion }}
|
||||
run: npm i -g npm@"${{ needs.init.outputs.npmVersion }}"
|
||||
|
||||
- name: Run ${{ matrix.containers == 'component' && 'component' || 'E2E' }} cypress tests
|
||||
uses: cypress-io/github-action@d69252d52b9a31bad4f418f05ba2bc83687a02eb # v5.8.3
|
||||
with:
|
||||
record: true
|
||||
parallel: true
|
||||
# cypress run type
|
||||
component: ${{ matrix.containers == 'component' }}
|
||||
group: Run ${{ matrix.containers == 'component' && 'component' || 'E2E' }}
|
||||
# cypress env
|
||||
ci-build-id: ${{ github.sha }}-${{ github.run_number }}
|
||||
tag: ${{ github.event_name }}
|
||||
env:
|
||||
# Needs to be prefixed with CYPRESS_
|
||||
CYPRESS_BRANCH: ${{ env.BRANCH }}
|
||||
# https://github.com/cypress-io/github-action/issues/124
|
||||
COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }}
|
||||
# Needed for some specific code workarounds
|
||||
TESTING: true
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
|
||||
|
||||
- name: Upload snapshots
|
||||
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
|
||||
if: always()
|
||||
with:
|
||||
name: snapshots_${{ matrix.containers }}
|
||||
path: cypress/snapshots
|
||||
|
||||
- name: Extract NC logs
|
||||
if: failure() && matrix.containers != 'component'
|
||||
run: docker logs nextcloud-cypress-tests-${{ env.APP_NAME }} > nextcloud.log
|
||||
|
||||
- name: Upload NC logs
|
||||
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
|
||||
if: failure() && matrix.containers != 'component'
|
||||
with:
|
||||
name: nc_logs_${{ matrix.containers }}
|
||||
path: nextcloud.log
|
||||
|
||||
- name: Create data dir archive
|
||||
if: failure() && matrix.containers != 'component'
|
||||
run: docker exec nextcloud-cypress-tests-server tar -cvjf - data > data.tar
|
||||
|
||||
- name: Upload data dir archive
|
||||
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
|
||||
if: failure() && matrix.containers != 'component'
|
||||
with:
|
||||
name: nc_data_${{ matrix.containers }}
|
||||
path: data.tar
|
||||
|
||||
summary:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [init, cypress]
|
||||
|
||||
if: always()
|
||||
|
||||
name: cypress-summary
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.init.result != 'success' || ( needs.cypress.result != 'success' && needs.cypress.result != 'skipped' ) }}; then exit 1; fi
|
||||
@@ -8,33 +8,22 @@ name: Dependabot
|
||||
on:
|
||||
pull_request_target:
|
||||
branches:
|
||||
- main
|
||||
- master
|
||||
- stable*
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: dependabot-approve-merge-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
auto-approve-merge:
|
||||
if: github.actor == 'dependabot[bot]'
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
# for hmarr/auto-approve-action to approve PRs
|
||||
pull-requests: write
|
||||
|
||||
steps:
|
||||
# Github actions bot approve
|
||||
- uses: hmarr/auto-approve-action@b40d6c9ed2fa10c9a2749eca7eb004418a705501 # v2
|
||||
- uses: hmarr/auto-approve-action@v2
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
# Nextcloud bot approve and merge request
|
||||
- uses: ahmadnassri/action-dependabot-auto-merge@45fc124d949b19b6b8bf6645b6c9d55f4f9ac61a # v2
|
||||
- uses: ahmadnassri/action-dependabot-auto-merge@v2
|
||||
with:
|
||||
target: minor
|
||||
github-token: ${{ secrets.DEPENDABOT_AUTOMERGE_TOKEN }}
|
||||
|
||||
@@ -3,31 +3,18 @@
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
|
||||
name: Block fixup and squash commits
|
||||
name: Pull request checks
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, ready_for_review, reopened, synchronize]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: fixup-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
on: pull_request
|
||||
|
||||
jobs:
|
||||
commit-message-check:
|
||||
if: github.event.pull_request.draft == false
|
||||
|
||||
permissions:
|
||||
pull-requests: write
|
||||
name: Block fixup and squash commits
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Run check
|
||||
uses: skjnldsv/block-fixup-merge-action@42d26e1b536ce61e5cf467d65fb76caf4aa85acf # v1
|
||||
uses: xt0rted/block-autosquash-commits-action@v2
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
@@ -1,15 +1,13 @@
|
||||
name: FTP unit tests
|
||||
name: FTP
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
paths:
|
||||
- '.github/**'
|
||||
- 'apps/files_external/**'
|
||||
pull_request:
|
||||
paths:
|
||||
- '.github/**'
|
||||
- 'apps/files_external/**'
|
||||
|
||||
env:
|
||||
@@ -19,40 +17,34 @@ jobs:
|
||||
ftp-tests:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
strategy:
|
||||
# do not stop on another job's failure
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['8.0']
|
||||
php-versions: ['7.4', '8.0']
|
||||
ftpd: ['proftpd', 'vsftpd', 'pure-ftpd']
|
||||
|
||||
name: php${{ matrix.php-versions }}-${{ matrix.ftpd }}
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up ftpd
|
||||
run: |
|
||||
sudo mkdir /tmp/ftp
|
||||
sudo chmod -R 0777 /tmp/ftp
|
||||
if [[ "${{ matrix.ftpd }}" == 'proftpd' ]]; then echo '$6$Q7V2n3q2GRVv5YeQ$/AhLu07H76Asojy7bxGXMY1caKLAbp5Vt82LOZYMkD/8uDzyMAEXwk0c1Bdz1DkBsk2Vh/9SF130mOPavRGMo.' > /tmp/secret.txt; fi
|
||||
if [[ "${{ matrix.ftpd }}" == 'proftpd' ]]; then echo 'FTP_ROOT=/home/test' > $GITHUB_ENV; fi
|
||||
if [[ "${{ matrix.ftpd }}" == 'proftpd' ]]; then docker run --name ftp -d --net host -e PASV_ADDRESS=127.0.0.1 -e FTPUSER_NAME=test -v /tmp/secret.txt:/run/secrets/ftp-user-password-secret -v /tmp/ftp:/home/test instantlinux/proftpd; fi
|
||||
sudo chown -R 0777 /tmp/ftp
|
||||
if [[ "${{ matrix.ftpd }}" == 'proftpd' ]]; then docker run --name ftp -d --net host -e FTP_USERNAME=test -e FTP_PASSWORD=test -v /tmp/ftp:/home/test hauptmedia/proftpd; fi
|
||||
if [[ "${{ matrix.ftpd }}" == 'vsftpd' ]]; then docker run --name ftp -d --net host -e FTP_USER=test -e FTP_PASS=test -e PASV_ADDRESS=127.0.0.1 -v /tmp/ftp:/home/vsftpd/test fauria/vsftpd; fi
|
||||
if [[ "${{ matrix.ftpd }}" == 'pure-ftpd' ]]; then docker run --name ftp -d --net host -e "PUBLICHOST=localhost" -e FTP_USER_NAME=test -e FTP_USER_PASS=test -e FTP_USER_HOME=/home/test -v /tmp/ftp:/home/test -v /tmp/ftp:/etc/pure-ftpd/passwd stilliard/pure-ftpd; fi
|
||||
if [[ "${{ matrix.ftpd }}" == 'pure-ftpd' ]]; then docker run --name ftp -d --net host -e "PUBLICHOST=localhost" -e FTP_USER_NAME=test -e FTP_USER_PASS=test -e FTP_USER_HOME=/home/test -v /tmp/ftp2:/home/test -v /tmp/ftp2:/etc/pure-ftpd/passwd stilliard/pure-ftpd; fi
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d #v2.25.2
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
tools: phpunit:9
|
||||
tools: phpunit
|
||||
extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up Nextcloud
|
||||
run: |
|
||||
@@ -62,14 +54,13 @@ jobs:
|
||||
php -S localhost:8080 &
|
||||
- name: smoketest ftp
|
||||
run: |
|
||||
php -r 'var_dump(file_put_contents("ftp://test:test@localhost${{ env.FTP_ROOT }}/ftp.txt", "asd"));'
|
||||
php -r 'var_dump(file_get_contents("ftp://test:test@localhost${{ env.FTP_ROOT }}/ftp.txt"));'
|
||||
php -r 'var_dump(mkdir("ftp://test:test@localhost${{ env.FTP_ROOT }}/asdads"));'
|
||||
php -r 'var_dump(file_put_contents("ftp://test:test@localhost/ftp.txt", "asd"));'
|
||||
php -r 'var_dump(file_get_contents("ftp://test:test@localhost/ftp.txt"));'
|
||||
php -r 'var_dump(mkdir("ftp://test:test@localhost/asdads"));'
|
||||
ls -l /tmp/ftp
|
||||
[ -f /tmp/ftp/ftp.txt ]
|
||||
- name: PHPUnit
|
||||
run: |
|
||||
echo "<?php return ['run' => true,'host' => 'localhost','user' => 'test','password' => 'test', 'root' => '${{ env.FTP_ROOT }}'];" > apps/${{ env.APP_NAME }}/tests/config.ftp.php
|
||||
echo "<?php return ['run' => true,'host' => 'localhost','user' => 'test','password' => 'test', 'root' => ''];" > apps/${{ env.APP_NAME }}/tests/config.ftp.php
|
||||
phpunit --configuration tests/phpunit-autotest-external.xml apps/files_external/tests/Storage/FtpTest.php
|
||||
- name: ftpd logs
|
||||
if: always()
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
# This workflow is provided via the organization template repository
|
||||
#
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
#
|
||||
# Use lint-eslint together with lint-eslint-when-unrelated to make eslint a required check for GitHub actions
|
||||
# https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks#handling-skipped-but-required-checks
|
||||
|
||||
name: Lint eslint
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- '.github/workflows/**'
|
||||
- 'src/**'
|
||||
- 'apps/**/appinfo/info.xml'
|
||||
- 'package.json'
|
||||
- 'package-lock.json'
|
||||
- 'tsconfig.json'
|
||||
- '.eslintrc.*'
|
||||
- '.eslintignore'
|
||||
- '**.js'
|
||||
- '**.ts'
|
||||
- '**.vue'
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
permissions:
|
||||
contents: none
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
name: eslint
|
||||
|
||||
steps:
|
||||
- run: 'echo "No eslint required"'
|
||||
@@ -2,33 +2,15 @@
|
||||
#
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
#
|
||||
# Use lint-eslint together with lint-eslint-when-unrelated to make eslint a required check for GitHub actions
|
||||
# https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks#handling-skipped-but-required-checks
|
||||
|
||||
name: Lint eslint
|
||||
name: Lint
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- '.github/workflows/**'
|
||||
- 'src/**'
|
||||
- 'apps/**/appinfo/info.xml'
|
||||
- 'package.json'
|
||||
- 'package-lock.json'
|
||||
- 'tsconfig.json'
|
||||
- '.eslintrc.*'
|
||||
- '.eslintignore'
|
||||
- '**.js'
|
||||
- '**.ts'
|
||||
- '**.vue'
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: lint-eslint-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
@@ -38,17 +20,17 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Read package.json node and npm engines version
|
||||
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.1
|
||||
uses: skjnldsv/read-package-engines-version-actions@v1.1
|
||||
id: versions
|
||||
with:
|
||||
fallbackNode: '^16'
|
||||
fallbackNpm: '^7'
|
||||
fallbackNode: '^12'
|
||||
fallbackNpm: '^6'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
|
||||
uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
# This workflow is provided via the organization template repository
|
||||
#
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
|
||||
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
|
||||
|
||||
name: php-cs
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d # v2
|
||||
with:
|
||||
php-version: 8.1
|
||||
coverage: none
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Install dependencies
|
||||
run: composer i
|
||||
|
||||
- name: Lint
|
||||
run: composer run cs:check || ( echo 'Please run `composer run cs:fix` to format your code' && exit 1 )
|
||||
@@ -1,60 +0,0 @@
|
||||
# This workflow is provided via the organization template repository
|
||||
#
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
|
||||
name: Lint php
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- master
|
||||
- stable*
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: lint-php-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
php-lint:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: [ "8.0", "8.1", "8.2" ]
|
||||
|
||||
name: php-lint
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d # v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
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
|
||||
@@ -0,0 +1,42 @@
|
||||
name: Lint
|
||||
on: pull_request
|
||||
|
||||
jobs:
|
||||
php-linters:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ['7.4', '8.0', '8.1']
|
||||
name: php${{ matrix.php-versions }} lint
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@master
|
||||
- name: Set up php${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@master
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: ctype,curl,dom,fileinfo,gd,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
coverage: none
|
||||
- name: Lint
|
||||
run: composer run lint
|
||||
|
||||
php-cs-fixer:
|
||||
name: php-cs check
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@master
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@master
|
||||
with:
|
||||
php-version: 7.4
|
||||
extensions: ctype,curl,dom,fileinfo,gd,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
coverage: none
|
||||
tools: cs2pr
|
||||
- name: Install dependencies
|
||||
run: composer i
|
||||
- name: Run coding standards check
|
||||
run: |
|
||||
composer run cs:check -- --format=checkstyle | cs2pr
|
||||
composer run cs:check || ( echo 'Please run `composer run cs:fix` to format your code' && exit 1 )
|
||||
shell: bash
|
||||
@@ -1,4 +1,4 @@
|
||||
name: Node tests
|
||||
name: Node
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
@@ -10,23 +10,20 @@ on:
|
||||
jobs:
|
||||
versions:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
outputs:
|
||||
nodeVersion: ${{ steps.versions.outputs.nodeVersion }}
|
||||
npmVersion: ${{ steps.versions.outputs.npmVersion }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Read package.json node and npm engines version
|
||||
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1
|
||||
uses: skjnldsv/read-package-engines-version-actions@v1.1
|
||||
id: versions
|
||||
with:
|
||||
fallbackNode: '^16'
|
||||
fallbackNpm: '^7'
|
||||
fallbackNode: '^12'
|
||||
fallbackNpm: '^6'
|
||||
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -34,37 +31,10 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c
|
||||
with:
|
||||
node-version: ${{ needs.versions.outputs.nodeVersion }}
|
||||
|
||||
- name: Set up npm ${{ needs.versions.outputs.npmVersion }}
|
||||
run: npm i -g npm@"${{ needs.versions.outputs.npmVersion }}"
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Test and process coverage
|
||||
run: npm run test:coverage
|
||||
|
||||
- name: Collect coverage
|
||||
uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # v3.1.4
|
||||
with:
|
||||
files: ./coverage/lcov.info
|
||||
|
||||
jsunit:
|
||||
runs-on: ubuntu-latest
|
||||
needs: versions
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c
|
||||
uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: ${{ needs.versions.outputs.nodeVersion }}
|
||||
|
||||
@@ -75,7 +45,29 @@ jobs:
|
||||
run: npm ci
|
||||
|
||||
- name: Test
|
||||
run: npm run test:jsunit
|
||||
run: npm run test
|
||||
|
||||
jsunit:
|
||||
runs-on: ubuntu-latest
|
||||
needs: versions
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: ${{ needs.versions.outputs.nodeVersion }}
|
||||
|
||||
- name: Set up npm ${{ needs.versions.outputs.npmVersion }}
|
||||
run: npm i -g npm@"${{ needs.versions.outputs.npmVersion }}"
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Test
|
||||
run: ./autotest-js.sh
|
||||
|
||||
handlebars:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -83,10 +75,10 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c
|
||||
uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: ${{ needs.versions.outputs.nodeVersion }}
|
||||
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
# This workflow is provided via the organization template repository
|
||||
#
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
#
|
||||
# Use node together with node-when-unrelated to make eslint a required check for GitHub actions
|
||||
# https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks#handling-skipped-but-required-checks
|
||||
|
||||
name: Node
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- '.github/workflows/**'
|
||||
- 'src/**'
|
||||
- 'apps/**/appinfo/info.xml'
|
||||
- 'package.json'
|
||||
- 'package-lock.json'
|
||||
- 'tsconfig.json'
|
||||
- '**.js'
|
||||
- '**.ts'
|
||||
- '**.vue'
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- master
|
||||
- stable*
|
||||
|
||||
concurrency:
|
||||
group: node-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
permissions:
|
||||
contents: none
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
name: node
|
||||
steps:
|
||||
- name: Skip
|
||||
run: 'echo "No JS/TS files changed, skipped Node"'
|
||||
@@ -7,29 +7,11 @@ name: Node
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- '.github/workflows/**'
|
||||
- 'src/**'
|
||||
- 'apps/**/appinfo/info.xml'
|
||||
- 'package.json'
|
||||
- 'package-lock.json'
|
||||
- 'tsconfig.json'
|
||||
- '**.js'
|
||||
- '**.ts'
|
||||
- '**.vue'
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- master
|
||||
- stable*
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: node-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -37,17 +19,17 @@ jobs:
|
||||
name: node
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Read package.json node and npm engines version
|
||||
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.1
|
||||
uses: skjnldsv/read-package-engines-version-actions@v1.1
|
||||
id: versions
|
||||
with:
|
||||
fallbackNode: '^16'
|
||||
fallbackNpm: '^7'
|
||||
fallbackNode: '^12'
|
||||
fallbackNpm: '^6'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
|
||||
uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
@@ -61,11 +43,10 @@ jobs:
|
||||
|
||||
- name: Check webpack build changes
|
||||
run: |
|
||||
bash -c "[[ ! \"`git status --porcelain `\" ]] || (echo 'Please recompile and commit the assets, see the section \"Show changes on failure\" for details' && exit 1)"
|
||||
bash -c "[[ ! \"`git status --porcelain `\" ]] || exit 1"
|
||||
|
||||
- name: Show changes on failure
|
||||
if: failure()
|
||||
run: |
|
||||
git status
|
||||
git --no-pager diff
|
||||
exit 1 # make it red to grab attention
|
||||
|
||||
@@ -1,71 +0,0 @@
|
||||
# This workflow is provided via the organization template repository
|
||||
#
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
|
||||
name: Npm audit fix and compile
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
# At 2:30 on Sundays
|
||||
- cron: '30 2 * * 0'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
branches: ["main", "master", "stable27", "stable26", "stable25", "stable24"]
|
||||
|
||||
name: npm-audit-fix-${{ matrix.branches }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
||||
with:
|
||||
ref: ${{ matrix.branches }}
|
||||
|
||||
- name: Read package.json node and npm engines version
|
||||
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.1
|
||||
id: versions
|
||||
with:
|
||||
fallbackNode: '^16'
|
||||
fallbackNpm: '^7'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
|
||||
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
|
||||
|
||||
- name: Fix npm audit
|
||||
run: |
|
||||
npm audit fix
|
||||
|
||||
- name: Run npm ci and npm run build
|
||||
if: always()
|
||||
run: |
|
||||
npm ci
|
||||
npm run build --if-present
|
||||
|
||||
- name: Create Pull Request
|
||||
if: always()
|
||||
uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666 # v5
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
commit-message: "chore(deps): fix npm audit"
|
||||
committer: GitHub <noreply@github.com>
|
||||
author: nextcloud-command <nextcloud-command@users.noreply.github.com>
|
||||
signoff: true
|
||||
branch: automated/noid/${{ matrix.branches }}-fix-npm-audit
|
||||
title: "[${{ matrix.branches }}] Fix npm audit"
|
||||
body: |
|
||||
Auto-generated fix of npm audit
|
||||
labels: |
|
||||
dependencies
|
||||
3. to review
|
||||
@@ -1,61 +1,48 @@
|
||||
name: PHPUnit oci
|
||||
name: PHPUnit
|
||||
|
||||
on: pull_request
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: phpunit-oci-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
|
||||
jobs:
|
||||
phpunit-oci:
|
||||
phpunit-oci8:
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['8.0', '8.1', '8.2']
|
||||
php-versions: [ '7.4', '8.0', '8.1']
|
||||
databases: [ 'oci' ]
|
||||
|
||||
name: php${{ matrix.php-versions }}-${{ matrix.databases }}
|
||||
|
||||
services:
|
||||
oracle:
|
||||
image: ghcr.io/gvenzl/oracle-xe:11
|
||||
|
||||
# Provide passwords and other environment variables to container
|
||||
env:
|
||||
ORACLE_RANDOM_PASSWORD: true
|
||||
APP_USER: autotest
|
||||
APP_USER_PASSWORD: owncloud
|
||||
|
||||
# Forward Oracle port
|
||||
image: deepdiver/docker-oracle-xe-11g # "wnameless/oracle-xe-11g-r2"
|
||||
ports:
|
||||
- 1521:1521/tcp
|
||||
|
||||
# Provide healthcheck script options for startup
|
||||
options: >-
|
||||
--health-cmd healthcheck.sh
|
||||
--health-interval 10s
|
||||
--health-timeout 5s
|
||||
--health-retries 10
|
||||
- "1521:1521"
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Checkout submodules
|
||||
shell: bash
|
||||
run: |
|
||||
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
|
||||
git submodule sync --recursive
|
||||
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d #v2.25.2
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: ctype, curl, dom, fileinfo, gd, imagick, intl, json, mbstring, oci8, openssl, pcntl, pdo_sqlite, posix, sqlite, xml, zip
|
||||
extensions: ctype,curl,dom,fileinfo,gd,imagick,intl,json,mbstring,oci8,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
tools: phpunit:9
|
||||
coverage: none
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up Nextcloud
|
||||
run: |
|
||||
@@ -66,21 +53,3 @@ jobs:
|
||||
- name: PHPUnit
|
||||
working-directory: tests
|
||||
run: phpunit --configuration phpunit-autotest.xml --group DB,SLOWDB
|
||||
|
||||
- name: Run repair steps
|
||||
run: |
|
||||
./occ maintenance:repair --include-expensive
|
||||
|
||||
summary:
|
||||
permissions:
|
||||
contents: none
|
||||
runs-on: ubuntu-latest
|
||||
needs: phpunit-oci
|
||||
|
||||
if: always()
|
||||
|
||||
name: phpunit-oci-summary
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.phpunit-oci.result != 'success' }}; then exit 1; fi
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
name: OpenAPI
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
|
||||
jobs:
|
||||
openapi:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: '8.2'
|
||||
extensions: xml
|
||||
coverage: none
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Composer install
|
||||
run: composer i
|
||||
|
||||
- name: OpenAPI checker
|
||||
run: build/openapi-checker.sh
|
||||
@@ -1,108 +0,0 @@
|
||||
name: Performance testing
|
||||
on:
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
performance-testing:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['8.0']
|
||||
|
||||
name: performance-${{ matrix.php-versions }}
|
||||
|
||||
steps:
|
||||
- name: Checkout server before PR
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
ref: ${{ github.event.pull_request.base.ref }}
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d #v2.25.2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
tools: phpunit:9
|
||||
extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up Nextcloud
|
||||
run: |
|
||||
mkdir data
|
||||
./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
|
||||
|
||||
php -S localhost:8080 &
|
||||
- name: Apply blueprint
|
||||
uses: icewind1991/blueprint@v0.1.2
|
||||
with:
|
||||
blueprint: tests/blueprints/basic.toml
|
||||
ref: ${{ github.event.pull_request.head.ref }}
|
||||
- name: Run before measurements
|
||||
uses: nextcloud/profiler@1e66a9de5f76a01e9d1db4f0153bcc1cbf989b3d
|
||||
with:
|
||||
run: |
|
||||
curl -s -X PROPFIND -u test:test http://localhost:8080/remote.php/dav/files/test
|
||||
curl -s -u test:test http://localhost:8080/remote.php/dav/files/test/test.txt
|
||||
curl -s -X PROPFIND -u test:test http://localhost:8080/remote.php/dav/files/test/many_files
|
||||
curl -s -u test:test -T README.md http://localhost:8080/remote.php/dav/files/test/new_file.txt
|
||||
curl -s -u test:test -X DELETE http://localhost:8080/remote.php/dav/files/test/new_file.txt
|
||||
output: before.json
|
||||
profiler-branch: master
|
||||
|
||||
- name: Apply PR
|
||||
run: |
|
||||
git remote add pr ${{ github.event.pull_request.head.repo.clone_url }}
|
||||
git fetch pr ${{ github.event.pull_request.head.ref }}
|
||||
git checkout -b pr/${{ github.event.pull_request.head.ref }}
|
||||
git submodule update
|
||||
|
||||
./occ upgrade
|
||||
|
||||
- name: Run after measurements
|
||||
id: compare
|
||||
uses: nextcloud/profiler@1e66a9de5f76a01e9d1db4f0153bcc1cbf989b3d
|
||||
with:
|
||||
run: |
|
||||
curl -s -X PROPFIND -u test:test http://localhost:8080/remote.php/dav/files/test
|
||||
curl -s -u test:test http://localhost:8080/remote.php/dav/files/test/test.txt
|
||||
curl -s -X PROPFIND -u test:test http://localhost:8080/remote.php/dav/files/test/many_files
|
||||
curl -s -u test:test -T README.md http://localhost:8080/remote.php/dav/files/test/new_file.txt
|
||||
curl -s -u test:test -X DELETE http://localhost:8080/remote.php/dav/files/test/new_file.txt
|
||||
output: after.json
|
||||
profiler-branch: master
|
||||
compare-with: before.json
|
||||
|
||||
- name: Upload profiles
|
||||
if: always()
|
||||
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32
|
||||
with:
|
||||
name: profiles
|
||||
path: |
|
||||
before.json
|
||||
after.json
|
||||
|
||||
- uses: actions/github-script@v6
|
||||
if: failure() && steps.compare.outcome == 'failure'
|
||||
with:
|
||||
github-token: ${{secrets.GITHUB_TOKEN}}
|
||||
script: |
|
||||
let comment = `Possible performance regression detected\n`;
|
||||
comment += `<details><summary>Show Output</summary>
|
||||
|
||||
\`\`\`
|
||||
${{ steps.compare.outputs.compare }}
|
||||
\`\`\`
|
||||
|
||||
</details>`;
|
||||
|
||||
github.rest.issues.createComment({
|
||||
issue_number: context.issue.number,
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
body: comment
|
||||
})
|
||||
@@ -1,65 +0,0 @@
|
||||
name: PHPUnit 32bits
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- 'version.php'
|
||||
- '.github/workflows/phpunit-32bits.yml'
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: "15 1 * * 1-6"
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: phpunit-32bits-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
phpunit-32bits:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
container: shivammathur/node:latest-i386
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ['8.0']
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Install tools
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y ffmpeg imagemagick libmagickcore-6.q16-3-extra
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9c77701ae57b0c47f6732beebfbdec76e4e5c90a #debian bookworm fix
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: ctype, curl, dom, fileinfo, gd, imagick, intl, json, mbstring, openssl, pdo_sqlite, posix, sqlite, xml, zip, apcu
|
||||
tools: phpunit:9
|
||||
coverage: none
|
||||
ini-values:
|
||||
apc.enabled=on,
|
||||
apc.enable_cli=on
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up Nextcloud
|
||||
env:
|
||||
DB_PORT: 4444
|
||||
run: |
|
||||
mkdir data
|
||||
./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=autotest --database-pass=rootpassword --admin-user admin --admin-pass admin
|
||||
php -f index.php
|
||||
|
||||
- name: PHPUnit
|
||||
working-directory: tests
|
||||
run: phpunit --configuration phpunit-autotest.xml --exclude-group PRIMARY-azure,PRIMARY-s3,PRIMARY-swift,Memcached,Redis,RoutingWeirdness
|
||||
@@ -1,29 +0,0 @@
|
||||
name: 'Ask for feedback on PRs'
|
||||
on:
|
||||
schedule:
|
||||
- cron: '30 1 * * *'
|
||||
|
||||
jobs:
|
||||
pr-feedback:
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: The get-github-handles-from-website action
|
||||
uses: marcelklehr/get-github-handles-from-website-action@a739600f6b91da4957f51db0792697afbb2f143c # v1.0.0
|
||||
id: scrape
|
||||
with:
|
||||
website: 'https://nextcloud.com/team/'
|
||||
- uses: marcelklehr/pr-feedback-action@601109aa729eb4c8d6d0ece7567b9d4901db4aef
|
||||
with:
|
||||
feedback-message: |
|
||||
Hello there,
|
||||
Thank you so much for taking the time and effort to create a pull request to our Nextcloud project.
|
||||
|
||||
We hope that the reviewing process is going smooth and is helpful for you. We want to ensure your pull request is reviewed to your satisfaction. If you have a moment, our community management team would very much appreciate your feedback on your experience with this PR reviewing process.
|
||||
|
||||
Your feedback is valuable to us as we continuously strive to improve our community developer experience. Please take a moment to complete our short survey by clicking on the following link: https://cloud.nextcloud.com/apps/forms/s/i9Ago4EQRZ7TWxjfmeEpPkf6
|
||||
|
||||
Thank you for contributing to Nextcloud and we hope to hear from you soon!
|
||||
days-before-feedback: 14
|
||||
start-date: "2023-07-10"
|
||||
exempt-authors: "${{ steps.scrape.outputs.users }}"
|
||||
exempt-bots: true
|
||||
@@ -0,0 +1,28 @@
|
||||
name: Psalm show github
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
|
||||
jobs:
|
||||
psalm:
|
||||
name: Psalm
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: recursive
|
||||
- name: Psalm
|
||||
uses: docker://vimeo/psalm-github-actions:4.9.3
|
||||
continue-on-error: true
|
||||
with:
|
||||
composer_ignore_platform_reqs: false
|
||||
report_file: results.sarif
|
||||
- name: Upload Analysis results to GitHub
|
||||
uses: github/codeql-action/upload-sarif@v1
|
||||
with:
|
||||
sarif_file: results.sarif
|
||||
@@ -0,0 +1,28 @@
|
||||
name: Psalm Security Analysis
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
|
||||
jobs:
|
||||
psalm:
|
||||
name: Psalm
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: recursive
|
||||
- name: Psalm
|
||||
uses: docker://vimeo/psalm-github-actions:4.9.3
|
||||
with:
|
||||
security_analysis: true
|
||||
composer_ignore_platform_reqs: false
|
||||
report_file: results.sarif
|
||||
- name: Upload Security Analysis results to GitHub
|
||||
uses: github/codeql-action/upload-sarif@v1
|
||||
with:
|
||||
sarif_file: results.sarif
|
||||
@@ -17,13 +17,11 @@ jobs:
|
||||
s3-external-tests-minio:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
strategy:
|
||||
# do not stop on another job's failure
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['8.0', '8.1']
|
||||
php-versions: ['7.4', '8.0']
|
||||
|
||||
name: php${{ matrix.php-versions }}-minio
|
||||
|
||||
@@ -38,18 +36,16 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d #v2.25.2
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
tools: phpunit:9
|
||||
tools: phpunit
|
||||
extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up Nextcloud
|
||||
run: |
|
||||
@@ -59,7 +55,7 @@ jobs:
|
||||
php -S localhost:8080 &
|
||||
- name: PHPUnit
|
||||
run: |
|
||||
echo "<?php return ['run' => true, 'secret' => 'actually-not-secret', 'passwordsalt' => 'actually-not-secret', 'hostname' => 'localhost','key' => 'minio','secret' => 'minio123', 'bucket' => 'bucket', 'port' => 9000, 'use_ssl' => false, 'autocreate' => true, 'use_path_style' => true];" > apps/${{ env.APP_NAME }}/tests/config.amazons3.php
|
||||
echo "<?php return ['run' => true,'hostname' => 'localhost','key' => 'minio','secret' => 'minio123', 'bucket' => 'bucket', 'port' => 9000, 'use_ssl' => false, 'autocreate' => true, 'use_path_style' => true];" > apps/${{ env.APP_NAME }}/tests/config.amazons3.php
|
||||
phpunit --configuration tests/phpunit-autotest-external.xml apps/files_external/tests/Storage/Amazons3Test.php
|
||||
phpunit --configuration tests/phpunit-autotest-external.xml apps/files_external/tests/Storage/VersionedAmazonS3Test.php
|
||||
- name: S3 logs
|
||||
@@ -70,13 +66,11 @@ jobs:
|
||||
s3-external-tests-localstack:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
strategy:
|
||||
# do not stop on another job's failure
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['8.0', '8.1']
|
||||
php-versions: ['7.4', '8.0']
|
||||
|
||||
name: php${{ matrix.php-versions }}-localstack
|
||||
|
||||
@@ -91,18 +85,16 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d #v2.25.2
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
tools: phpunit:9
|
||||
tools: phpunit
|
||||
extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up Nextcloud
|
||||
run: |
|
||||
|
||||
@@ -1,86 +0,0 @@
|
||||
name: S3 primary storage integration tests
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
|
||||
jobs:
|
||||
s3-primary-integration-tests-minio:
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
strategy:
|
||||
# do not stop on another job's failure
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['8.0']
|
||||
key: ['objectstore', 'objectstore_multibucket']
|
||||
|
||||
name: php${{ matrix.php-versions }}-${{ matrix.key }}-minio
|
||||
|
||||
services:
|
||||
redis:
|
||||
image: redis
|
||||
ports:
|
||||
- "6379:6379"
|
||||
minio:
|
||||
env:
|
||||
MINIO_ACCESS_KEY: minio
|
||||
MINIO_SECRET_KEY: minio123
|
||||
image: bitnami/minio:2021.12.29
|
||||
ports:
|
||||
- "9000:9000"
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d #v2.25.2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
tools: phpunit:9
|
||||
extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd, redis
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Wait for S3
|
||||
run: |
|
||||
sleep 10
|
||||
curl -f -m 1 --retry-connrefused --retry 10 --retry-delay 10 http://localhost:9000/minio/health/ready
|
||||
|
||||
- name: Set up Nextcloud
|
||||
run: |
|
||||
mkdir data
|
||||
echo '<?php $CONFIG=["${{ matrix.key }}" => ["class" => "OC\Files\ObjectStore\S3", "arguments" => ["bucket" => "nextcloud", "autocreate" => true, "key" => "minio", "secret" => "minio123", "hostname" => "localhost", "port" => 9000, "use_ssl" => false, "use_path_style" => true, "uploadPartSize" => 52428800]]];' > config/config.php
|
||||
echo '<?php $CONFIG=["redis" => ["host" => "localhost", "port" => 6379], "memcache.local" => "\OC\Memcache\Redis", "memcache.distributed" => "\OC\Memcache\Redis"];' > config/redis.config.php
|
||||
./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
|
||||
php -f index.php
|
||||
|
||||
- name: Integration
|
||||
run: |
|
||||
cd build/integration
|
||||
bash run.sh --tags "~@failure-s3" features/webdav-related.feature
|
||||
|
||||
- name: S3 logs
|
||||
if: always()
|
||||
run: |
|
||||
cat data/nextcloud.log
|
||||
docker ps -a
|
||||
docker ps -aq | while read container ; do IMAGE=$(docker inspect --format='{{.Config.Image}}' $container); echo $IMAGE; docker logs $container; echo "\n\n" ; done
|
||||
|
||||
|
||||
s3-primary-integration-summary:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [s3-primary-integration-tests-minio]
|
||||
|
||||
if: always()
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.s3-primary-integration-tests-minio.result != 'success' }}; then exit 1; fi
|
||||
@@ -6,11 +6,10 @@ on:
|
||||
- master
|
||||
- stable*
|
||||
|
||||
|
||||
jobs:
|
||||
s3-primary-tests-minio:
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
# do not stop on another job's failure
|
||||
@@ -26,24 +25,22 @@ jobs:
|
||||
env:
|
||||
MINIO_ACCESS_KEY: minio
|
||||
MINIO_SECRET_KEY: minio123
|
||||
image: bitnami/minio:2021.12.29
|
||||
image: bitnami/minio:2021.10.6
|
||||
ports:
|
||||
- "9000:9000"
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d #v2.25.2
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
tools: phpunit:9
|
||||
tools: phpunit
|
||||
extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up Nextcloud
|
||||
run: |
|
||||
@@ -55,7 +52,9 @@ jobs:
|
||||
- name: Wait for S3
|
||||
run: |
|
||||
sleep 10
|
||||
curl -f -m 1 --retry-connrefused --retry 10 --retry-delay 10 http://localhost:9000/minio/health/ready
|
||||
curl -f -m 1 --retry-connrefused --retry 10 --retry-delay 1 http://localhost:9000/minio/health/ready
|
||||
sleep 10
|
||||
curl -f -m 1 --retry-connrefused --retry 10 --retry-delay 1 http://localhost:9000/minio/health/ready
|
||||
|
||||
- name: PHPUnit
|
||||
working-directory: tests
|
||||
|
||||
@@ -6,23 +6,24 @@ on:
|
||||
- stable*
|
||||
paths:
|
||||
- 'apps/files_external/**'
|
||||
- '.github/workflows/smb-kerberos.yml'
|
||||
pull_request:
|
||||
paths:
|
||||
- 'apps/files_external/**'
|
||||
- '.github/workflows/smb-kerberos.yml'
|
||||
|
||||
jobs:
|
||||
smb-kerberos-tests:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['7.4', '8.0']
|
||||
|
||||
name: smb-kerberos-sso
|
||||
name: php${{ matrix.php-versions }}-${{ matrix.ftpd }}
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: true
|
||||
- name: Pull images
|
||||
@@ -32,12 +33,9 @@ jobs:
|
||||
docker pull icewind1991/samba-krb-test-client
|
||||
- name: Setup AD-DC
|
||||
run: |
|
||||
cp apps/files_external/tests/*.sh .
|
||||
mkdir data
|
||||
sudo chown -R 33 data apps config
|
||||
DC_IP=$(./start-dc.sh)
|
||||
./start-apache.sh $DC_IP $PWD
|
||||
echo "DC_IP=$DC_IP" >> $GITHUB_ENV
|
||||
apps/files_external/tests/setup-krb.sh
|
||||
- name: Set up Nextcloud
|
||||
run: |
|
||||
docker exec --user 33 apache ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
|
||||
@@ -46,8 +44,7 @@ jobs:
|
||||
# setup user_saml
|
||||
docker exec --user 33 apache ./occ app:enable user_saml --force
|
||||
docker exec --user 33 apache ./occ config:app:set user_saml type --value 'environment-variable'
|
||||
docker exec --user 33 apache ./occ saml:config:create
|
||||
docker exec --user 33 apache ./occ saml:config:set 1 --general-uid_mapping=REMOTE_USER
|
||||
docker exec --user 33 apache ./occ config:app:set user_saml general-uid_mapping --value REMOTE_USER
|
||||
|
||||
# setup external storage
|
||||
docker exec --user 33 apache ./occ app:enable files_external --force
|
||||
@@ -57,18 +54,25 @@ jobs:
|
||||
docker exec --user 33 apache ./occ files_external:list
|
||||
- name: Test SSO
|
||||
run: |
|
||||
mkdir /tmp/shared/cookies
|
||||
chmod 0777 /tmp/shared/cookies
|
||||
mkdir cookies
|
||||
chmod 0777 cookies
|
||||
|
||||
echo "SAML login"
|
||||
./client-cmd.sh ${{ env.DC_IP }} curl -c /shared/cookies/jar -s --negotiate -u testuser@DOMAIN.TEST: --delegation always http://httpd.domain.test/index.php/apps/user_saml/saml/login
|
||||
echo "Check we are logged in"
|
||||
CONTENT=$(./client-cmd.sh ${{ env.DC_IP }} curl -b /shared/cookies/jar -s --negotiate -u testuser@DOMAIN.TEST: --delegation always http://httpd.domain.test/remote.php/webdav/smb/test.txt)
|
||||
CONTENT=$(echo $CONTENT | head -n 1 | tr -d '[:space:]')
|
||||
DC_IP=$(docker inspect dc --format '{{.NetworkSettings.IPAddress}}')
|
||||
docker run --rm --name client -v $PWD/cookies:/cookies -v /tmp/shared:/shared --dns $DC_IP --hostname client.domain.test icewind1991/samba-krb-test-client \
|
||||
curl -c /cookies/jar -s --negotiate -u testuser@DOMAIN.TEST: --delegation always http://httpd.domain.test/index.php/apps/user_saml/saml/login
|
||||
CONTENT=$(docker run --rm --name client -v $PWD/cookies:/cookies -v /tmp/shared:/shared --dns $DC_IP --hostname client.domain.test icewind1991/samba-krb-test-client \
|
||||
curl -b /cookies/jar -s --negotiate -u testuser@DOMAIN.TEST: --delegation always http://httpd.domain.test/remote.php/webdav/smb/test.txt)
|
||||
echo $CONTENT
|
||||
CONTENT=$(echo $CONTENT | tr -d '[:space:]')
|
||||
[[ $CONTENT == "testfile" ]]
|
||||
- name: Show logs
|
||||
if: failure()
|
||||
run: |
|
||||
docker exec --user 33 apache ./occ log:file
|
||||
FILEPATH=$(docker exec --user 33 apache ./occ log:file | grep "Log file:" | cut -d' ' -f3)
|
||||
docker exec --user 33 apache cat $FILEPATH
|
||||
|
||||
|
||||
smb-kerberos-summary:
|
||||
runs-on: ubuntu-latest
|
||||
needs: smb-kerberos-tests
|
||||
|
||||
if: always()
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.smb-kerberos-tests.result != 'success' }}; then exit 1; fi
|
||||
|
||||
@@ -7,15 +7,14 @@ on:
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
|
||||
|
||||
steps:
|
||||
- uses: actions/stale@v8
|
||||
- uses: actions/stale@v5
|
||||
with:
|
||||
repo-token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
stale-issue-message: >
|
||||
@@ -25,9 +24,8 @@ jobs:
|
||||
for your contributions.
|
||||
stale-issue-label: 'stale'
|
||||
only-labels: 'needs info'
|
||||
labels-to-remove-when-unstale: 'needs info,stale'
|
||||
exempt-issue-labels: '1. to develop,2. developing,3. to review,4. to release,security'
|
||||
days-before-stale: 30
|
||||
days-before-close: 14
|
||||
# debug-only: true
|
||||
|
||||
debug-only: true
|
||||
|
||||
|
||||
@@ -1,101 +1,56 @@
|
||||
name: Psalm static code analysis
|
||||
name: Static code analysis
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
on: [pull_request]
|
||||
|
||||
jobs:
|
||||
static-code-analysis:
|
||||
runs-on: ubuntu-latest
|
||||
static-code-analysis:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Checkout submodules
|
||||
shell: bash
|
||||
run: |
|
||||
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
|
||||
git submodule sync --recursive
|
||||
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
|
||||
- name: Set up php7.4
|
||||
uses: shivammathur/setup-php@master
|
||||
with:
|
||||
php-version: 7.4
|
||||
extensions: ctype,curl,dom,fileinfo,gd,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
coverage: none
|
||||
- name: Composer install
|
||||
run: composer i
|
||||
- name: Psalm
|
||||
run: composer run psalm -- --monochrome --no-progress --output-format=github --update-baseline || ( git diff -- . ':!lib/composer' && exit 1 )
|
||||
- name: Check diff
|
||||
run: git diff -- . ':!lib/composer'
|
||||
- name: Show potential changes in Psalm baseline
|
||||
run: |
|
||||
bash -c "[[ ! \"`git status --porcelain build/psalm-baseline.xml`\" ]] || ( echo 'Uncommited changes in Psalm baseline' && git status && git diff build/psalm-baseline.xml)"
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: '8.0'
|
||||
extensions: apcu,ctype,curl,dom,fileinfo,ftp,gd,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
coverage: none
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Composer install
|
||||
run: composer i
|
||||
|
||||
- name: Psalm
|
||||
run: composer run psalm:ci -- --monochrome --no-progress --output-format=github --update-baseline --report=results.sarif
|
||||
|
||||
- name: Show potential changes in Psalm baseline
|
||||
if: always()
|
||||
run: git diff -- . ':!lib/composer'
|
||||
|
||||
- name: Upload Analysis results to GitHub
|
||||
if: always()
|
||||
uses: github/codeql-action/upload-sarif@v2
|
||||
with:
|
||||
sarif_file: results.sarif
|
||||
|
||||
static-code-analysis-security:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@master
|
||||
with:
|
||||
php-version: '8.0'
|
||||
extensions: ctype,curl,dom,fileinfo,ftp,gd,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
coverage: none
|
||||
|
||||
- name: Composer install
|
||||
run: composer i
|
||||
|
||||
- name: Psalm taint analysis
|
||||
run: composer run psalm:ci -- --monochrome --no-progress --output-format=github --report=results.sarif --taint-analysis
|
||||
|
||||
- name: Upload Security Analysis results to GitHub
|
||||
if: always()
|
||||
uses: github/codeql-action/upload-sarif@v2
|
||||
with:
|
||||
sarif_file: results.sarif
|
||||
|
||||
static-code-analysis-ocp:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: '8.0'
|
||||
extensions: ctype,curl,dom,fileinfo,gd,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
coverage: none
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Composer install
|
||||
run: composer i
|
||||
|
||||
- name: Psalm
|
||||
run: composer run psalm:ci -- -c psalm-ocp.xml --monochrome --no-progress --output-format=github --update-baseline
|
||||
|
||||
- name: Show potential changes in Psalm baseline
|
||||
if: always()
|
||||
run: git diff -- . ':!lib/composer'
|
||||
static-code-analysis-ocp:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Checkout submodules
|
||||
shell: bash
|
||||
run: |
|
||||
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
|
||||
git submodule sync --recursive
|
||||
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
|
||||
- name: Set up php7.4
|
||||
uses: shivammathur/setup-php@master
|
||||
with:
|
||||
php-version: 7.4
|
||||
extensions: ctype,curl,dom,fileinfo,gd,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
coverage: none
|
||||
- name: Composer install
|
||||
run: composer i
|
||||
- name: Psalm
|
||||
run: composer run psalm -- -c psalm-ocp.xml --monochrome --no-progress --output-format=github --update-baseline || ( git diff -- . ':!lib/composer' && exit 1 )
|
||||
- name: Check diff
|
||||
run: git diff -- . ':!lib/composer'
|
||||
- name: Show potential changes in Psalm baseline
|
||||
run: |
|
||||
bash -c "[[ ! \"`git status --porcelain build/psalm-baseline-ocp.xml`\" ]] || ( echo 'Uncommited changes in Psalm baseline' && git status && git diff build/psalm-baseline.xml)"
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
name: Update CA certificate bundle
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: "5 2 * * *"
|
||||
|
||||
jobs:
|
||||
update-ca-certificate-bundle:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
branches: ["master", "stable27", "stable26", "stable25", "stable24", "stable23", "stable22"]
|
||||
|
||||
name: update-ca-certificate-bundle-${{ matrix.branches }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
ref: ${{ matrix.branches }}
|
||||
submodules: true
|
||||
|
||||
- name: Download CA certificate bundle from curl
|
||||
run: curl --etag-compare build/ca-bundle-etag.txt --etag-save build/ca-bundle-etag.txt --output resources/config/ca-bundle.crt https://curl.se/ca/cacert.pem
|
||||
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v3
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
commit-message: "fix(security): Update CA certificate bundle"
|
||||
committer: GitHub <noreply@github.com>
|
||||
author: nextcloud-command <nextcloud-command@users.noreply.github.com>
|
||||
signoff: true
|
||||
branch: automated/noid/${{ matrix.branches }}-update-ca-cert-bundle
|
||||
title: "[${{ matrix.branches }}] fix(security): Update CA certificate bundle"
|
||||
body: |
|
||||
Auto-generated update of CA certificate bundle from [https://curl.se/docs/caextract.html](https://curl.se/docs/caextract.html)
|
||||
labels: |
|
||||
dependencies
|
||||
3. to review
|
||||
@@ -3,35 +3,23 @@ name: Update Psalm baseline
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: "5 2 * * *"
|
||||
- cron: '5 4 * * *'
|
||||
|
||||
jobs:
|
||||
update-psalm-baseline:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
branches: ["master", "stable27", "stable26", "stable25"]
|
||||
|
||||
name: update-psalm-baseline-${{ matrix.branches }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
ref: ${{ matrix.branches }}
|
||||
submodules: true
|
||||
|
||||
- name: Set up php
|
||||
- name: Set up php7.4
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: '8.0'
|
||||
php-version: 7.4
|
||||
extensions: ctype,curl,dom,fileinfo,gd,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
coverage: none
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Composer install
|
||||
run: composer install
|
||||
@@ -40,25 +28,23 @@ jobs:
|
||||
run: composer run psalm -- --monochrome --no-progress --output-format=text --update-baseline
|
||||
continue-on-error: true
|
||||
|
||||
- name: Psalm OCP
|
||||
run: composer run psalm -- -c psalm-ocp.xml --monochrome --no-progress --output-format=github --update-baseline
|
||||
continue-on-error: true
|
||||
|
||||
- name: Reset composer
|
||||
run: |
|
||||
git clean -f lib/composer
|
||||
git checkout composer.json composer.lock lib/composer
|
||||
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v4
|
||||
uses: peter-evans/create-pull-request@v3
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
commit-message: Update psalm baseline
|
||||
committer: GitHub <noreply@github.com>
|
||||
author: nextcloud-command <nextcloud-command@users.noreply.github.com>
|
||||
signoff: true
|
||||
branch: automated/noid/${{ matrix.branches }}-update-psalm-baseline
|
||||
title: "[${{ matrix.branches }}] Update psalm-baseline.xml"
|
||||
branch: automated/noid/psalm-baseline-update
|
||||
# Make sure we can open multiple PRs
|
||||
branch-suffix: timestamp
|
||||
title: '[Automated] Update psalm-baseline.xml'
|
||||
body: |
|
||||
Auto-generated update psalm-baseline.xml with fixed psalm warnings
|
||||
labels: |
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
# ignore all apps except core ones
|
||||
/apps*/*
|
||||
!/apps/accessibility
|
||||
!/apps/cloud_federation_api
|
||||
!/apps/comments
|
||||
!/apps/contactsinteraction
|
||||
@@ -24,7 +25,6 @@
|
||||
!/apps/sharebymail
|
||||
!/apps/encryption
|
||||
!/apps/files_external
|
||||
!/apps/files_reminders
|
||||
!/apps/files_sharing
|
||||
!/apps/files_trashbin
|
||||
!/apps/files_versions
|
||||
@@ -74,7 +74,6 @@ CVS/*
|
||||
RCS/*
|
||||
*.backup*
|
||||
.php_cs.cache
|
||||
.php-cs-fixer.cache
|
||||
|
||||
# kdevelop
|
||||
.kdev
|
||||
@@ -97,7 +96,6 @@ nbproject
|
||||
|
||||
# vscode
|
||||
.vscode
|
||||
*.code-workspace
|
||||
|
||||
# geany
|
||||
*.geany
|
||||
@@ -155,7 +153,6 @@ Vagrantfile
|
||||
/config/config-autotest-backup.php
|
||||
/config/autoconfig.php
|
||||
clover.xml
|
||||
/coverage
|
||||
|
||||
# Tests - dependencies
|
||||
tests/acceptance/vendor/
|
||||
@@ -163,10 +160,3 @@ tests/acceptance/vendor/
|
||||
composer.phar
|
||||
/lib/composer/bin
|
||||
/vendor-bin/**/vendor
|
||||
|
||||
./.htaccess
|
||||
core/js/mimetypelist.js
|
||||
|
||||
# Tests - cypress
|
||||
cypress/snapshots
|
||||
cypress/videos
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
Header always set X-Permitted-Cross-Domain-Policies "none"
|
||||
|
||||
Header onsuccess unset X-Robots-Tag
|
||||
Header always set X-Robots-Tag "noindex, nofollow"
|
||||
Header always set X-Robots-Tag "none"
|
||||
|
||||
Header onsuccess unset X-XSS-Protection
|
||||
Header always set X-XSS-Protection "1; mode=block"
|
||||
@@ -40,13 +40,12 @@
|
||||
</IfModule>
|
||||
|
||||
# Add cache control for static resources
|
||||
<FilesMatch "\.(css|js|mjs|svg|gif|png|jpg|ico|wasm|tflite)$">
|
||||
<If "%{QUERY_STRING} =~ /(^|&)v=/">
|
||||
Header set Cache-Control "max-age=15778463, immutable"
|
||||
</If>
|
||||
<Else>
|
||||
Header set Cache-Control "max-age=15778463"
|
||||
</Else>
|
||||
<FilesMatch "\.(css|js|svg|gif|png|jpg|ico|wasm|tflite)$">
|
||||
Header set Cache-Control "max-age=15778463"
|
||||
</FilesMatch>
|
||||
|
||||
<FilesMatch "\.(css|js|svg|gif|png|jpg|ico|wasm|tflite)(\?v=.*)?$">
|
||||
Header set Cache-Control "max-age=15778463, immutable"
|
||||
</FilesMatch>
|
||||
|
||||
# Let browsers cache WOFF files for a week
|
||||
@@ -55,6 +54,17 @@
|
||||
</FilesMatch>
|
||||
</IfModule>
|
||||
|
||||
# PHP 7.x
|
||||
<IfModule mod_php7.c>
|
||||
php_value mbstring.func_overload 0
|
||||
php_value default_charset 'UTF-8'
|
||||
php_value output_buffering 0
|
||||
<IfModule mod_env.c>
|
||||
SetEnv htaccessWorking true
|
||||
</IfModule>
|
||||
</IfModule>
|
||||
|
||||
# PHP 8+
|
||||
<IfModule mod_php.c>
|
||||
php_value mbstring.func_overload 0
|
||||
php_value default_charset 'UTF-8'
|
||||
@@ -68,8 +78,6 @@
|
||||
AddType image/svg+xml svg svgz
|
||||
AddType application/wasm wasm
|
||||
AddEncoding gzip svgz
|
||||
# Serve ESM javascript files (.mjs) with correct mime type
|
||||
AddType text/javascript js mjs
|
||||
</IfModule>
|
||||
|
||||
<IfModule mod_dir.c>
|
||||
|
||||
@@ -21,17 +21,4 @@ $config
|
||||
->notPath('node_modules')
|
||||
->notPath('vendor')
|
||||
->in(__DIR__);
|
||||
|
||||
// Ignore additional app directories
|
||||
$rootDir = new \DirectoryIterator(__DIR__);
|
||||
foreach ($rootDir as $node) {
|
||||
if (str_starts_with($node->getFilename(), 'apps')) {
|
||||
$return = shell_exec('git check-ignore ' . escapeshellarg($node->getFilename() . '/'));
|
||||
|
||||
if ($return !== null) {
|
||||
$config->getFinder()->exclude($node->getFilename());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $config;
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
# See https://pre-commit.com for more information
|
||||
# See https://pre-commit.com/hooks.html for more hooks
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v4.3.0
|
||||
hooks:
|
||||
- id: end-of-file-fixer
|
||||
- id: check-yaml
|
||||
- id: check-added-large-files
|
||||
- repo: https://github.com/nextcloud/pre-commit-php.git
|
||||
rev: 1.5.1
|
||||
hooks:
|
||||
- id: php-lint
|
||||
- id: php-cs-fixer
|
||||
files: \.(php)$
|
||||
exclude: ^(config|data|composer|lib\/composer)
|
||||
args: []
|
||||
@@ -1,183 +1,183 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
lang_map = fi_FI: fi, hu_HU: hu, nb_NO: nb, sk_SK: sk, th_TH: th, ja_JP: ja, bg_BG: bg, cs_CZ: cs
|
||||
host = https://www.transifex.com
|
||||
lang_map = bg_BG: bg, cs_CZ: cs, fi_FI: fi, hu_HU: hu, nb_NO: nb, sk_SK: sk, th_TH: th, ja_JP: ja
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:admin_audit]
|
||||
file_filter = translationfiles/<lang>/admin_audit.po
|
||||
source_file = translationfiles/templates/admin_audit.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:cloud_federation_api]
|
||||
file_filter = translationfiles/<lang>/cloud_federation_api.po
|
||||
source_file = translationfiles/templates/cloud_federation_api.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:comments]
|
||||
file_filter = translationfiles/<lang>/comments.po
|
||||
source_file = translationfiles/templates/comments.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:contactsinteraction]
|
||||
file_filter = translationfiles/<lang>/contactsinteraction.po
|
||||
source_file = translationfiles/templates/contactsinteraction.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:core]
|
||||
[nextcloud.core]
|
||||
file_filter = translationfiles/<lang>/core.po
|
||||
source_file = translationfiles/templates/core.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:dashboard-shipped-with-server]
|
||||
file_filter = translationfiles/<lang>/dashboard.po
|
||||
source_file = translationfiles/templates/dashboard.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:dav]
|
||||
file_filter = translationfiles/<lang>/dav.po
|
||||
source_file = translationfiles/templates/dav.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:federatedfilesharing]
|
||||
file_filter = translationfiles/<lang>/federatedfilesharing.po
|
||||
source_file = translationfiles/templates/federatedfilesharing.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:federation]
|
||||
file_filter = translationfiles/<lang>/federation.po
|
||||
source_file = translationfiles/templates/federation.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:files]
|
||||
[nextcloud.files]
|
||||
file_filter = translationfiles/<lang>/files.po
|
||||
source_file = translationfiles/templates/files.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:files_encryption]
|
||||
file_filter = translationfiles/<lang>/encryption.po
|
||||
source_file = translationfiles/templates/encryption.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:files_external]
|
||||
file_filter = translationfiles/<lang>/files_external.po
|
||||
source_file = translationfiles/templates/files_external.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:files_reminders]
|
||||
file_filter = translationfiles/<lang>/files_reminders.po
|
||||
source_file = translationfiles/templates/files_reminders.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:files_sharing]
|
||||
file_filter = translationfiles/<lang>/files_sharing.po
|
||||
source_file = translationfiles/templates/files_sharing.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:files_trashbin]
|
||||
file_filter = translationfiles/<lang>/files_trashbin.po
|
||||
source_file = translationfiles/templates/files_trashbin.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:files_versions]
|
||||
file_filter = translationfiles/<lang>/files_versions.po
|
||||
source_file = translationfiles/templates/files_versions.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:lib]
|
||||
file_filter = translationfiles/<lang>/lib.po
|
||||
source_file = translationfiles/templates/lib.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:lookup_server_connector]
|
||||
file_filter = translationfiles/<lang>/lookup_server_connector.po
|
||||
source_file = translationfiles/templates/lookup_server_connector.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:oauth2]
|
||||
file_filter = translationfiles/<lang>/oauth2.po
|
||||
source_file = translationfiles/templates/oauth2.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:provisioning_api]
|
||||
file_filter = translationfiles/<lang>/provisioning_api.po
|
||||
source_file = translationfiles/templates/provisioning_api.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:settings-1]
|
||||
[nextcloud.settings-1]
|
||||
file_filter = translationfiles/<lang>/settings.po
|
||||
source_file = translationfiles/templates/settings.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:sharebymail]
|
||||
file_filter = translationfiles/<lang>/sharebymail.po
|
||||
source_file = translationfiles/templates/sharebymail.pot
|
||||
[nextcloud.lib]
|
||||
file_filter = translationfiles/<lang>/lib.po
|
||||
source_file = translationfiles/templates/lib.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:systemtags]
|
||||
file_filter = translationfiles/<lang>/systemtags.po
|
||||
source_file = translationfiles/templates/systemtags.pot
|
||||
[nextcloud.dav]
|
||||
file_filter = translationfiles/<lang>/dav.po
|
||||
source_file = translationfiles/templates/dav.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:theming]
|
||||
file_filter = translationfiles/<lang>/theming.po
|
||||
source_file = translationfiles/templates/theming.pot
|
||||
[nextcloud.files_encryption]
|
||||
file_filter = translationfiles/<lang>/encryption.po
|
||||
source_file = translationfiles/templates/encryption.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:twofactor_backupcodes]
|
||||
file_filter = translationfiles/<lang>/twofactor_backupcodes.po
|
||||
source_file = translationfiles/templates/twofactor_backupcodes.pot
|
||||
[nextcloud.files_external]
|
||||
file_filter = translationfiles/<lang>/files_external.po
|
||||
source_file = translationfiles/templates/files_external.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:updatenotification]
|
||||
file_filter = translationfiles/<lang>/updatenotification.po
|
||||
source_file = translationfiles/templates/updatenotification.pot
|
||||
[nextcloud.files_sharing]
|
||||
file_filter = translationfiles/<lang>/files_sharing.po
|
||||
source_file = translationfiles/templates/files_sharing.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:user_ldap]
|
||||
[nextcloud.files_trashbin]
|
||||
file_filter = translationfiles/<lang>/files_trashbin.po
|
||||
source_file = translationfiles/templates/files_trashbin.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.files_versions]
|
||||
file_filter = translationfiles/<lang>/files_versions.po
|
||||
source_file = translationfiles/templates/files_versions.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.user_ldap]
|
||||
file_filter = translationfiles/<lang>/user_ldap.po
|
||||
source_file = translationfiles/templates/user_ldap.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:user_status]
|
||||
file_filter = translationfiles/<lang>/user_status.po
|
||||
source_file = translationfiles/templates/user_status.pot
|
||||
[nextcloud.comments]
|
||||
file_filter = translationfiles/<lang>/comments.po
|
||||
source_file = translationfiles/templates/comments.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:weather_status]
|
||||
file_filter = translationfiles/<lang>/weather_status.po
|
||||
source_file = translationfiles/templates/weather_status.pot
|
||||
[nextcloud.federatedfilesharing]
|
||||
file_filter = translationfiles/<lang>/federatedfilesharing.po
|
||||
source_file = translationfiles/templates/federatedfilesharing.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:workflowengine]
|
||||
[nextcloud.federation]
|
||||
file_filter = translationfiles/<lang>/federation.po
|
||||
source_file = translationfiles/templates/federation.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.oauth2]
|
||||
file_filter = translationfiles/<lang>/oauth2.po
|
||||
source_file = translationfiles/templates/oauth2.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.sharebymail]
|
||||
file_filter = translationfiles/<lang>/sharebymail.po
|
||||
source_file = translationfiles/templates/sharebymail.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.systemtags]
|
||||
file_filter = translationfiles/<lang>/systemtags.po
|
||||
source_file = translationfiles/templates/systemtags.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.updatenotification]
|
||||
file_filter = translationfiles/<lang>/updatenotification.po
|
||||
source_file = translationfiles/templates/updatenotification.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.theming]
|
||||
file_filter = translationfiles/<lang>/theming.po
|
||||
source_file = translationfiles/templates/theming.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.twofactor_backupcodes]
|
||||
file_filter = translationfiles/<lang>/twofactor_backupcodes.po
|
||||
source_file = translationfiles/templates/twofactor_backupcodes.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.workflowengine]
|
||||
file_filter = translationfiles/<lang>/workflowengine.po
|
||||
source_file = translationfiles/templates/workflowengine.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
type = PO
|
||||
|
||||
[nextcloud.accessibility]
|
||||
file_filter = translationfiles/<lang>/accessibility.po
|
||||
source_file = translationfiles/templates/accessibility.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.provisioning_api]
|
||||
file_filter = translationfiles/<lang>/provisioning_api.po
|
||||
source_file = translationfiles/templates/provisioning_api.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.lookup_server_connector]
|
||||
file_filter = translationfiles/<lang>/lookup_server_connector.po
|
||||
source_file = translationfiles/templates/lookup_server_connector.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.dashboard-shipped-with-server]
|
||||
file_filter = translationfiles/<lang>/dashboard.po
|
||||
source_file = translationfiles/templates/dashboard.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.contactsinteraction]
|
||||
file_filter = translationfiles/<lang>/contactsinteraction.po
|
||||
source_file = translationfiles/templates/contactsinteraction.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.cloud_federation_api]
|
||||
file_filter = translationfiles/<lang>/cloud_federation_api.po
|
||||
source_file = translationfiles/templates/cloud_federation_api.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.admin_audit]
|
||||
file_filter = translationfiles/<lang>/admin_audit.po
|
||||
source_file = translationfiles/templates/admin_audit.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.user_status]
|
||||
file_filter = translationfiles/<lang>/user_status.po
|
||||
source_file = translationfiles/templates/user_status.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[nextcloud.weather_status]
|
||||
file_filter = translationfiles/<lang>/weather_status.po
|
||||
source_file = translationfiles/templates/weather_status.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
@@ -1,40 +1,33 @@
|
||||
Nextcloud is written by:
|
||||
- AW-UC <git@a-wesemann.de>
|
||||
- Aaron Ball <nullspoon@oper.io>
|
||||
- Aaron Wood <aaronjwood@gmail.com>
|
||||
- Abijeet <abijeetpatro@gmail.com>
|
||||
- Achim Königs <garfonso@tratschtante.de>
|
||||
- Adam Williamson <awilliam@redhat.com>
|
||||
- Administrator "Administrator@WINDOWS-2012"
|
||||
- Adrian Brzezinski <adrian.brzezinski@eo.pl>
|
||||
- Akhil <akhil.potukuchi@gmail.com>
|
||||
- Akhil <akhil@e.email>
|
||||
- Akhil Potukuchi <akhil.potukuchi@gmail.com>
|
||||
- Alan Meeson <alan@carefullycalculated.co.uk>
|
||||
- Aldo "xoen" Giambelluca <xoen@xoen.org>
|
||||
- Alecks Gates <alecks.g@gmail.com>
|
||||
- Alejandro Varela <epma01@gmail.com>
|
||||
- Alex Harpin <development@landsofshadow.co.uk>
|
||||
- Alex Weirig <alex.weirig@technolink.lu>
|
||||
- Alexander A. Klimov <grandmaster@al2klimov.de>
|
||||
- Alexander Bergolth <leo@strike.wu.ac.at>
|
||||
- Alexander F <32201363+alx-tuilmenau@users.noreply.github.com>
|
||||
- Alexey Pyltsyn <lex61rus@gmail.com>
|
||||
- Allan Nordhøy <epost@anotheragency.no>
|
||||
- Anderson Luiz Alves <alacn1@gmail.com>
|
||||
- Andreas Fischer <bantu@owncloud.com>
|
||||
- Andreas Pflug <dev@admin4.org>
|
||||
- Andrew Brown <andrew@casabrown.com>
|
||||
- Andy Xheli <axheli@axtsolutions.com>
|
||||
- André Gaul <gaul@web-yard.de>
|
||||
- Anna Larch <anna@nextcloud.com>
|
||||
- ArcticFall <23174635+ArcticFall@users.noreply.github.com>
|
||||
- Ardinis <Ardinis@users.noreply.github.com>
|
||||
- Ari Selseng <ari@selseng.net>
|
||||
- Arne Hamann <kontakt+github@arne.email>
|
||||
- Artem Kochnev <MrJeos@gmail.com>
|
||||
- Artem Sidorenko <artem@posteo.de>
|
||||
- Arthur Schiwon <blizzz@arthur-schiwon.de>
|
||||
- Artur Neumann <artur@jankaritech.com>
|
||||
- Artur Neumann <info@individual-it.net>
|
||||
- Ashod Nakashian <ashod.nakashian@collabora.co.uk>
|
||||
- Asier Iturralde Sarasola <asier.iturralde@gmail.com>
|
||||
- Avior <florian.bouillon@delta-wings.net>
|
||||
- Axel Helmert <axel.helmert@luka.de>
|
||||
- Azul <azul@riseup.net>
|
||||
- Bart Visscher <bartv@thisnet.nl>
|
||||
@@ -43,19 +36,13 @@ Nextcloud is written by:
|
||||
- Bastien Ho <bastienho@urbancube.fr>
|
||||
- Benjamin Diele <benjamin@diele.be>
|
||||
- Benjamin Liles <benliles@arch.tamu.edu>
|
||||
- Bennet Becker <bbecker@pks.mpg.de>
|
||||
- Bennet Becker <dev@bennet.cc>
|
||||
- Bernard Spil <Sp1l@users.noreply.github.com>
|
||||
- Bernd Rederlechner <Bernd.Rederlechner@t-systems.com>
|
||||
- Bernd Stellwag <burned@zerties.org>
|
||||
- Bernhard Ostertag <bernieo.code@gmx.de>
|
||||
- Bernhard Posselt <dev@bernhard-posselt.com>
|
||||
- Bernhard Reiter <ockham@raz.or.at>
|
||||
- Bill McGonigle <bill-github.com@bfccomputing.com>
|
||||
- Birk Borkason <daniel.niccoli@gmail.com>
|
||||
- Bjoern Schiessle <bjoern@schiessle.org>
|
||||
- Björn Schießle <bjoern@schiessle.org>
|
||||
- Bjørn Forsman <bjorn.forsman@gmail.com>
|
||||
- Blaok <i@blaok.me>
|
||||
- Boris Rybalkin <ribalkin@gmail.com>
|
||||
- Borjan Tchakaloff <borjan@tchakaloff.fr>
|
||||
@@ -63,9 +50,7 @@ Nextcloud is written by:
|
||||
- Brandon Kirsch <brandonkirsch@github.com>
|
||||
- Branko Kokanovic <branko@kokanovic.org>
|
||||
- Brice Maron <brice@bmaron.net>
|
||||
- CRA Yoshihito Nakatani <yoshihito.nakatani@craftsman-software.com>
|
||||
- Carl Csaposs <carl@csaposs.com>
|
||||
- Carl Schwan <carl@carlschwan.eu>
|
||||
- Byron Marohn <combustible@live.com>
|
||||
- Carla Schroder <carla@owncloud.com>
|
||||
- Carlos Cerrillo <ccerrillo@gmail.com>
|
||||
- Carlos Ferreira <carlos@reendex.com>
|
||||
@@ -75,47 +60,37 @@ Nextcloud is written by:
|
||||
- Christian Berendt <berendt@b1-systems.de>
|
||||
- Christian Jürges <christian@eqipe.ch>
|
||||
- Christian Kampka <christian@kampka.net>
|
||||
- Christian Oliff <christianoliff@yahoo.com>
|
||||
- Christian Weiske <cweiske@cweiske.de>
|
||||
- Christoph Schaefer "christophł@wolkesicher.de"
|
||||
- Christoph Seitz <christoph.seitz@posteo.de>
|
||||
- Christoph Wickert <cwickert@suse.de>
|
||||
- Christoph Wurst <christoph@winzerhof-wurst.at>
|
||||
- Christopher Bartz <bartz@dkrz.de>
|
||||
- Christopher Ng <chrng8@gmail.com>
|
||||
- Christopher Schäpers <kondou@ts.unde.re>
|
||||
- Christopher T. Johnson <ctjctj@gmail.com>
|
||||
- Claas Augner <github@caugner.de>
|
||||
- Clark Tomlinson <fallen013@gmail.com>
|
||||
- Claus-Justus Heine <himself@claus-justus-heine.de>
|
||||
- Clement Wong <git@clement.hk>
|
||||
- Cornelius Kölbel <cornelius.koelbel@netknights.it>
|
||||
- Cyrille Bollu <cyrpub@bollu.be>
|
||||
- Cédric Neukom <github@webguy.ch>
|
||||
- Côme Chilliet <91878298+come-nc@users.noreply.github.com>
|
||||
- Côme Chilliet <come.chilliet@nextcloud.com>
|
||||
- Cthulhux <git@tuxproject.de>
|
||||
- Damjan Georgievski <gdamjan@gmail.com>
|
||||
- Dan Callahan <dan.callahan@gmail.com>
|
||||
- Daniel <mail@danielkesselberg.de>
|
||||
- Daniel Calviño Sánchez <danxuliu@gmail.com>
|
||||
- Daniel Hansson <daniel@techandme.se>
|
||||
- Daniel Jagszent <daniel@jagszent.de>
|
||||
- Daniel Kesselberg <mail@danielkesselberg.de>
|
||||
- Daniel Rudolf <github.com@daniel-rudolf.de>
|
||||
- Daniel Schneider <daniel@schneidoa.de>
|
||||
- Daniel Teichmann <daniel.teichmann@das-netzwerkteam.de>
|
||||
- Dariusz Olszewski <starypatyk@users.noreply.github.com>
|
||||
- David <37280718+yeyulantu@users.noreply.github.com>
|
||||
- David Prévot <taffit@debian.org>
|
||||
- David Toledo <dtoledo@solidgear.es>
|
||||
- Denis Mosolov <denismosolov@gmail.com>
|
||||
- Derek <derek.kelly27@gmail.com>
|
||||
- Dominik Schmidt <dev@dominik-schmidt.de>
|
||||
- Donquixote <marjunebatac@gmail.com>
|
||||
- Dries Mys <dries.mys@my-dreams.be>
|
||||
- EWouters <6179932+EWouters@users.noreply.github.com>
|
||||
- Elijah Martin-Merrill <elijah@nyp-itsours.com>
|
||||
- Ember 'n0emis' Keske <git@n0emis.eu>
|
||||
- Eric Masseran <rico.masseran@gmail.com>
|
||||
- Erik van Velzen <erik@evanv.nl>
|
||||
- Evgeny Golyshev <eugulixes@gmail.com>
|
||||
- Fabrizio Steiner <fabrizio.steiner@gmail.com>
|
||||
- Felix Epp <work@felixepp.de>
|
||||
@@ -124,38 +99,29 @@ Nextcloud is written by:
|
||||
- Felix Nieuwenhuizen <felix@tdlrali.com>
|
||||
- Felix Nüsse <Felix.nuesse@t-online.de>
|
||||
- Felix Rupp <github@felixrupp.com>
|
||||
- Ferdinand Thiessen <opensource@fthiessen.de>
|
||||
- Ferdinand Thiessen <rpm@fthiessen.de>
|
||||
- Filis Futsarov <filisko@users.noreply.github.com>
|
||||
- Florent <florent@coppint.com>
|
||||
- Florian Schunk <florian.schunk@rwth-aachen.de>
|
||||
- Florin Peter <github@florin-peter.de>
|
||||
- Flávio Gomes da Silva Lisboa <flavio.lisboa@serpro.gov.br>
|
||||
- Frank Isemann <frank@isemann.name>
|
||||
- Frank Karlitschek <frank@karlitschek.de>
|
||||
- François Freitag <mail@franek.fr>
|
||||
- François Kubler <francois@kubler.org>
|
||||
- François Ménabé <francois.menabe@gmail.com>
|
||||
- Frederic Werner <frederic-github@werner-net.work>
|
||||
- Frédéric Fortier <frederic.fortier@oronospolytechnique.com>
|
||||
- Gary Kim <gary@garykim.dev>
|
||||
- Georg Ehrke <oc.list@georgehrke.com>
|
||||
- Git'Fellow <12234510+solracsf@users.noreply.github.com>
|
||||
- Git'Fellow <carlos@reendex.com>
|
||||
- Glandos <bugs-github@antipoul.fr>
|
||||
- GrayFix <grayfix@gmail.com>
|
||||
- Greta Doci <gretadoci@gmail.com>
|
||||
- GretaD <gretadoci@gmail.com>
|
||||
- Guillaume COMPAGNON <gcompagnon@outlook.com>
|
||||
- Guillaume Colson <guillaume.colson@univ-lorraine.fr>
|
||||
- Guillaume Virlet <github@virlet.org>
|
||||
- Hasso Tepper <hasso@zone.ee>
|
||||
- Hemanth Kumar Veeranki <hems.india1997@gmail.com>
|
||||
- Hendrik Leppelsack <hendrik@leppelsack.de>
|
||||
- Hinrich Mahler <22366557+Bibo-Joshi@users.noreply.github.com>
|
||||
- Holger Hees <holger.hees@gmail.com>
|
||||
- HouraisanNEET <HouraisanNEET@users.noreply.github.com>
|
||||
- Ilja Neumann <ineumann@owncloud.com>
|
||||
- Ilya Apasov <apasov@users.noreply.github.com>
|
||||
- Immanuel Pasanec <immanuel.pasanec@compaso.de>
|
||||
- Individual IT Services <info@individual-it.net>
|
||||
- Iscle <albertiscle9@gmail.com>
|
||||
- J0WI <J0WI@users.noreply.github.com>
|
||||
@@ -163,15 +129,13 @@ Nextcloud is written by:
|
||||
- Jacob Neplokh <me@jacobneplokh.com>
|
||||
- Jakob Sack <mail@jakobsack.de>
|
||||
- Jakub Onderka <ahoj@jakubonderka.cz>
|
||||
- James Guo <i@ze3kr.com>
|
||||
- James Letendre <James.Letendre@gmail.com>
|
||||
- Jan C. Borchardt <hey@jancborchardt.net>
|
||||
- Jan Messer <jan@mtec-studios.ch>
|
||||
- Jan-Christoph Borchardt <hey@jancborchardt.net>
|
||||
- Jan-Philipp Litza <jpl@plutex.de>
|
||||
- Jan-Philipp Litza <jplitza@users.noreply.github.com>
|
||||
- JanBartels <j.bartels@arcor.de>
|
||||
- Janis Köhr <janis.koehr@novatec-gmbh.de>
|
||||
- Jared Boone <jared.boone@gmail.com>
|
||||
- Jarkko Lehtoranta <devel@jlranta.com>
|
||||
- Jasper Weyne <jasperweyne@gmail.com>
|
||||
- Jean-Louis Dupond <jean-louis@dupond.be>
|
||||
- Jens-Christian Fischer <jens-christian.fischer@switch.ch>
|
||||
- Jesús Macias <jmacias@solidgear.es>
|
||||
@@ -186,31 +150,25 @@ Nextcloud is written by:
|
||||
- Johannes Schlichenmaier <johannes@schlichenmaier.info>
|
||||
- Johannes Willnecker <johannes@willnecker.com>
|
||||
- John Molakvoæ <skjnldsv@protonmail.com>
|
||||
- Jonas <jonas@freesources.org>
|
||||
- Jonas Heinrich <heinrich@synyx.de>
|
||||
- Jonas Meurer <jonas@freesources.org>
|
||||
- Jonas Rittershofer <jotoeri@users.noreply.github.com>
|
||||
- Jonas Sulzer <jonas@violoncello.ch>
|
||||
- Jonny007-MKD <1-23-4-5@web.de>
|
||||
- Jos Poortvliet <jos@opensuse.org>
|
||||
- Jose Quinteiro <github@quinteiro.org>
|
||||
- Josh Richards <josh.t.richards@gmail.com>
|
||||
- Juan Pablo Villafañez <jvillafanez@solidgear.es>
|
||||
- Juan Pablo Villafáñez <jvillafanez@solidgear.es>
|
||||
- Julien Lutran <julien.lutran@corp.ovh.com>
|
||||
- Julien Veyssier <eneiluj@posteo.net>
|
||||
- Julien Veyssier <julien-nc@posteo.net>
|
||||
- Julius Haertl <jus@bitgrid.net>
|
||||
- Julius Härtl <jus@bitgrid.net>
|
||||
- Jérôme Herbinet <33763786+Jerome-Herbinet@users.noreply.github.com>
|
||||
- Jörn Friedrich Dreyer <jfd@butonic.de>
|
||||
- KB7777 <k.burkowski@gmail.com>
|
||||
- Kamil Domanski <kdomanski@kdemail.net>
|
||||
- Karel Hink <info@karelhink.cz>
|
||||
- Kawohl <john@owncloud.com>
|
||||
- Kenneth Newwood <kenneth@newwood.name>
|
||||
- Kevin Lanni <therealklanni@gmail.com>
|
||||
- Kevin Ndung'u <kevgathuku@gmail.com>
|
||||
- Kevin Niehage <k.niehage@syseleven.de>
|
||||
- Kirill Popov <kirill.s.popov@gmail.com>
|
||||
- Kim Brose <kim.brose@rwth-aachen.de>
|
||||
- Klaas Freitag <freitag@owncloud.com>
|
||||
- Knut Ahlers <knut@ahlers.me>
|
||||
- Ko- <k.stoffelen@cs.ru.nl>
|
||||
@@ -221,7 +179,7 @@ Nextcloud is written by:
|
||||
- Lars Knickrehm <mail@lars-sh.de>
|
||||
- Laurens Post <Crote@users.noreply.github.com>
|
||||
- Laurens Post <lkpost@scept.re>
|
||||
- Lee Garrett <lgarrett@rocketjump.eu>
|
||||
- Lauris Binde <laurisb@users.noreply.github.com>
|
||||
- Lennart Rosam <hello@takuto.de>
|
||||
- Lennart Rosam <lennart.rosam@medien-systempartner.de>
|
||||
- Leon Klingele <git@leonklingele.de>
|
||||
@@ -231,22 +189,13 @@ Nextcloud is written by:
|
||||
- Lionel Elie Mamane <lionel@mamane.lu>
|
||||
- Loki3000 <github@labcms.ru>
|
||||
- Lorenzo M. Catucci <lorenzo@sancho.ccd.uniroma2.it>
|
||||
- Lorenzo Tanganelli <35271287+tanganellilore@users.noreply.github.com>
|
||||
- Louis <6653109+artonge@users.noreply.github.com>
|
||||
- Louis Chemineau <louis@chmn.me>
|
||||
- Loïc Hermann <loic.hermann@sciam.fr>
|
||||
- Luka Trovic <luka@nextcloud.com>
|
||||
- Lukas Reschke <lukas@statuscode.ch>
|
||||
- Lukas Stabe <lukas@stabe.de>
|
||||
- Luke Policinski <lpolicinski@gmail.com>
|
||||
- Magnus Walbeck <mw@mwalbeck.org>
|
||||
- Maksim Sukharev <antreesy.web@gmail.com>
|
||||
- Marc Hefter <marchefter@gmail.com>
|
||||
- Marc Hefter <marchefter@march42.net>
|
||||
- Marcel Klehr <mklehr@gmx.net>
|
||||
- Marcel Müller <marcel-mueller@gmx.de>
|
||||
- Marcel Waldvogel <marcel.waldvogel@uni-konstanz.de>
|
||||
- Marco Ambrosini <marcoambrosini@pm.me>
|
||||
- Marco Ziech <marco@ziech.net>
|
||||
- Marin Treselj <marin@pixelipo.com>
|
||||
- Mario Danic <mario@lovelyhq.com>
|
||||
@@ -255,25 +204,19 @@ Nextcloud is written by:
|
||||
- Marius David Wieschollek <git.public@mdns.eu>
|
||||
- Markus Goetz <markus@woboq.com>
|
||||
- Markus Staab <markus.staab@redaxo.de>
|
||||
- Markus Zeller <git@markuszeller.com>
|
||||
- MartB <mart.b@outlook.de>
|
||||
- Martin Brugnara <martin@0x6d62.eu>
|
||||
- Martin <github@diemattels.at>
|
||||
- Martin Konrad <info@martin-konrad.net>
|
||||
- Martin Konrad <konrad@frib.msu.edu>
|
||||
- Martin Mattel <martin.mattel@diemattels.at>
|
||||
- Marvin Thomas Rabe <mrabe@marvinrabe.de>
|
||||
- Masaki Kawabata Neto <masaki.kawabata@gmail.com>
|
||||
- MasterOfDeath <rinat.gumirov@mail.ru>
|
||||
- Matthew Setter <matthew@matthewsetter.com>
|
||||
- Matthieu Gallien <matthieu.gallien@nextcloud.com>
|
||||
- Mattia Narducci <mattianarducci1@gmail.com>
|
||||
- Max <max@nextcloud.com>
|
||||
- Max Kovalenko <mxss1998@yandex.ru>
|
||||
- Max Kunzelmann <maxdev@posteo.de>
|
||||
- Maxence Lange <maxence@artificial-owl.com>
|
||||
- Maxence Lange <maxence@nextcloud.com>
|
||||
- Maxence Lange <maxence@pontapreta.net>
|
||||
- Maxime Besson <maxime.besson@worteks.com>
|
||||
- Maximilian Martin <maximilian_martin@gmx.de>
|
||||
- Maxopoly <max@dermax.org>
|
||||
- MichaIng <28480705+MichaIng@users.noreply.github.com>
|
||||
- MichaIng <micha@dietpi.com>
|
||||
@@ -281,51 +224,40 @@ Nextcloud is written by:
|
||||
- Michael Göhler <somebody.here@gmx.de>
|
||||
- Michael Jobst <mjobst+github@tecratech.de>
|
||||
- Michael Jobst <mjobst@necls.com>
|
||||
- Michael Kuhn <github@ikkoku.de>
|
||||
- Michael Kuhn <michael@ikkoku.de>
|
||||
- Michael Letzgus <www@chronos.michael-letzgus.de>
|
||||
- Michael Roitzsch <reactorcontrol@icloud.com>
|
||||
- Michael Weimann <mail@michael-weimann.eu>
|
||||
- Michael Zamot <michael@zamot.io>
|
||||
- Michał Węgrzynek <michal.wegrzynek@malloc.com.pl>
|
||||
- Michiel de Jong <michiel@unhosted.org>
|
||||
- Micke Nordin <kano@sunet.se>
|
||||
- Mickey Knox <mickey@netfreaks.org>
|
||||
- Miguel Prokop <miguel.prokop@vtu.com>
|
||||
- Mikael Hammarin <mikael@try2.se>
|
||||
- Mikael Nordin <mickenordin@users.noreply.github.com>
|
||||
- Mikael Saarinen <mikaels@iki.fi>
|
||||
- Mikhail Sazanov <m@sazanof.ru>
|
||||
- Mitar <mitar.git@tnode.com>
|
||||
- Mohammed Abdellatif <m.latief@gmail.com>
|
||||
- Morris Jobke <hey@morrisjobke.de>
|
||||
- Mátyás Jani <jzombi@gmail.com>
|
||||
- Naoto Kobayashi <naoto.kobayashi4c@gmail.com>
|
||||
- Nazar Mokrynskyi <nazar@mokrynskyi.com>
|
||||
- Nick Sweeting <git@sweeting.me>
|
||||
- Nicolai Ehemann <en@enlightened.de>
|
||||
- Nicolas Grekas <nicolas.grekas@gmail.com>
|
||||
- Nicolas SIMIDE <2083596+dems54@users.noreply.github.com>
|
||||
- Nils <git@to.nilsschnabel.de>
|
||||
- Nils Wittenbrink <nilswittenbrink@web.de>
|
||||
- Nina Pypchenko <22447785+nina-py@users.noreply.github.com>
|
||||
- NoSleep82 <52562874+NoSleep82@users.noreply.github.com>
|
||||
- Nmz <nemesiz@nmz.lt>
|
||||
- Noveen Sachdeva <noveen.sachdeva@research.iiit.ac.in>
|
||||
- Ole Ostergaard <ole.c.ostergaard@gmail.com>
|
||||
- Ole Ostergaard <ole.ostergaard@knime.com>
|
||||
- Oliver Kohl D.Sc. <oliver@kohl.bz>
|
||||
- Oliver Wegner <void1976@gmail.com>
|
||||
- Olivier Paroz <github@oparoz.com>
|
||||
- Orzu Ionut <orzu.ionut@gmail.com>
|
||||
- Owen Winkler <a_github@midnightcircus.com>
|
||||
- Pascal de Bruijn <pmjdebruijn@pcode.nl>
|
||||
- Patrick Paysant <patrick.paysant@linagora.com>
|
||||
- Patrik Kernstock <info@pkern.at>
|
||||
- Pauli Järvinen <pauli.jarvinen@gmail.com>
|
||||
- Pavel Krasikov <klonishe@gmail.com>
|
||||
- Pawel Boguslawski <pawel.boguslawski@ib.pl>
|
||||
- Pellaeon Lin <nfsmwlin@gmail.com>
|
||||
- Peter Kubica <peter@kubica.ch>
|
||||
- Petre T <petre.tudor@dorkfarm.com>
|
||||
- Phil Davis <phil.davis@inf.org>
|
||||
- Philipp Kapfer <philipp.kapfer@gmx.at>
|
||||
- Philipp Schaffrath <github@philipp.schaffrath.email>
|
||||
@@ -337,7 +269,6 @@ Nextcloud is written by:
|
||||
- Piotr M <mrow4a@yahoo.com>
|
||||
- Piotr Mrowczynski <mrow4a@yahoo.com>
|
||||
- Piotr Mrówczyński <mrow4a@yahoo.com>
|
||||
- Pytal <24800714+Pytal@users.noreply.github.com>
|
||||
- Qingping Hou <dave2008713@gmail.com>
|
||||
- Raghu Nayyar <hey@raghunayyar.com>
|
||||
- Ralph Krimmel <rkrimme1@gwdg.de>
|
||||
@@ -348,10 +279,7 @@ Nextcloud is written by:
|
||||
- RealRancor <fisch.666@gmx.de>
|
||||
- Rello <Rello@users.noreply.github.com>
|
||||
- Remco Brenninkmeijer <requist1@starmail.nl>
|
||||
- Retidurc Silvernight <retidurc@silvernight.social>
|
||||
- Richard Steinmetz <richard@steinmetz.cloud>
|
||||
- Richard de Boer <github@tubul.net>
|
||||
- Rid <rid@cylo.io>
|
||||
- Rinat Gumirov <rinat.gumirov@mail.ru>
|
||||
- Robert Dailey <rcdailey@gmail.com>
|
||||
- Robin Appelman <robin@icewind.nl>
|
||||
@@ -363,7 +291,6 @@ Nextcloud is written by:
|
||||
- Romain Rivière <lecoyote@lecoyote.org>
|
||||
- Roman Kreisel <mail@romankreisel.de>
|
||||
- Ross Nicoll <jrn@jrn.me.uk>
|
||||
- Rsplwe <i@rsplwe.com>
|
||||
- Ruben Homs <ruben@homs.codes>
|
||||
- RussellAult <RussellAult@users.noreply.github.com>
|
||||
- Rémy Jacquin <remy@remyj.fr>
|
||||
@@ -376,10 +303,11 @@ Nextcloud is written by:
|
||||
- Sander Ruitenbeek <s.ruitenbeek@getgoing.nl>
|
||||
- Sander Ruitenbeek <sander@grids.be>
|
||||
- Sandro Lutz <sandro.lutz@temparus.ch>
|
||||
- Sanpi <sanpi@homecomputing.fr>
|
||||
- Sascha Sambale <mastixmc@gmail.com>
|
||||
- Sascha Wiswedel <sascha.wiswedel@nextcloud.com>
|
||||
- Scott Dutton <exussum12@users.noreply.github.com>
|
||||
- Scott Dutton <scott@exussum.co.uk>
|
||||
- Scott Shambarger <devel@shambarger.net>
|
||||
- Sean Comeau <sean@ftlnetworks.ca>
|
||||
- Sean Molenaar <sean@seanmolenaar.eu>
|
||||
- Sebastian Döll <sebastian.doell@libasys.de>
|
||||
@@ -394,16 +322,10 @@ Nextcloud is written by:
|
||||
- Sergey Shliakhov <husband.sergey@gmail.com>
|
||||
- Sergio Bertolin <sbertolin@solidgear.es>
|
||||
- Sergio Bertolín <sbertolin@solidgear.es>
|
||||
- Sijmen Schoon <me@sijmenschoon.nl>
|
||||
- Simon Könnecke <simonkoennecke@gmail.com>
|
||||
- Simon L <szaimen@e.mail.de>
|
||||
- Simon Leiner <simon@leiner.me>
|
||||
- Simon Spannagel <simonspa@kth.se>
|
||||
- Simounet <contact@simounet.net>
|
||||
- Sjors van der Pluijm <sjors@desjors.nl>
|
||||
- Stanimir Bozhilov <stanimir.bozhilov.1998@gmail.com>
|
||||
- Stanimir Bozhilov <stanimir@audriga.com>
|
||||
- Stefan <Stefan.Schilling@EXXETA.com>
|
||||
- Stefan Rado <owncloud@sradonia.net>
|
||||
- Stefan Schneider <stefan.schneider@squareweave.com.au>
|
||||
- Stefan Weiberg <sweiberg@suse.com>
|
||||
@@ -417,7 +339,6 @@ Nextcloud is written by:
|
||||
- Sujith Haridasan <Sujith_Haridasan@mentor.com>
|
||||
- Sujith Haridasan <sujith.h@gmail.com>
|
||||
- Sven Strickroth <email@cs-ware.de>
|
||||
- Sylvain <git@sylvain.dev>
|
||||
- Sylvia van Os <sylvia@hackerchick.me>
|
||||
- Tekhnee <info@tekhnee.org>
|
||||
- Temtaime <temtaime@gmail.com>
|
||||
@@ -436,7 +357,6 @@ Nextcloud is written by:
|
||||
- Timo Förster <tfoerster@webfoersterei.de>
|
||||
- Tobia De Koninck <LEDfan@users.noreply.github.com>
|
||||
- Tobia De Koninck <tobia@ledfan.be>
|
||||
- Tobias Assmann <tobias.assmann@ecsec.de>
|
||||
- Tobias Kaminsky <tobias@kaminsky.me>
|
||||
- Tobias Perschon <tobias@perschon.at>
|
||||
- Tom Grant <TomG736@users.noreply.github.com>
|
||||
@@ -444,42 +364,30 @@ Nextcloud is written by:
|
||||
- Tomasz Grobelny <tomasz@grobelny.net>
|
||||
- Tomasz Paluszkiewicz <tomasz.paluszkiewicz@gmail.com>
|
||||
- Tor Lillqvist <tml@collabora.com>
|
||||
- UmbrellaCodr <umbrella@biohazard.cc>
|
||||
- Unknown <anpz.asutp@gmail.com>
|
||||
- Unpublished <unpublished@gmx.net>
|
||||
- Valdnet <47037905+Valdnet@users.noreply.github.com>
|
||||
- Vanessa Pertsch <vanessa.pertsch@nextcloud.com>
|
||||
- Varun Patil <radialapps@gmail.com>
|
||||
- Varun Patil <varunpatil@ucla.edu>
|
||||
- Victor Dubiniuk <dubiniuk@owncloud.com>
|
||||
- Viktor Szépe <viktor@szepe.net>
|
||||
- Vincent Chan <plus.vincchan@gmail.com>
|
||||
- Vincent Petry <vincent@nextcloud.com>
|
||||
- Vincent Van Houtte <vvh@aplusv.be>
|
||||
- Vinicius Cubas Brand <vinicius@eita.org.br>
|
||||
- Vitor Mattos <vitor@php.rio>
|
||||
- Vlastimil Pecinka <pecinka@email.cz>
|
||||
- Volkan Gezer <volkangezer@gmail.com>
|
||||
- Volker <skydiablo@gmx.net>
|
||||
- William <william.hak57@gmail.com>
|
||||
- William Pain <pain.william@gmail.com>
|
||||
- Xheni Myrtaj <myrtajxheni@gmail.com>
|
||||
- Xuanwo <xuanwo@yunify.com>
|
||||
- ZitronePlus <tobiasscharf92@gmail.com>
|
||||
- acsfer <12234510+acsfer@users.noreply.github.com>
|
||||
- acsfer <carlos@reendex.com>
|
||||
- adrien <adrien.waksberg@believedigital.com>
|
||||
- alanmeeson <alan@carefullycalculated.co.uk>
|
||||
- aler9 <46489434+aler9@users.noreply.github.com>
|
||||
- alexweirig <alex.weirig@technolink.lu>
|
||||
- b108@volgograd "b108@volgograd"
|
||||
- bbx-github <53237674+bbx-github@users.noreply.github.com>
|
||||
- bladewing <lukas@ifflaender-family.de>
|
||||
- bline <scottbeck@gmail.com>
|
||||
- blizzz <blizzz@arthur-schiwon.de>
|
||||
- brad2014 <brad2014@users.noreply.github.com>
|
||||
- brumsel <brumsel@losecatcher.de>
|
||||
- cahogan <caitlin.hogan@swiftsolar.com>
|
||||
- call-me-matt <nextcloud@matthiasheinisch.de>
|
||||
- castillo92 <37965565+castillo92@users.noreply.github.com>
|
||||
- cetra3 <peter@parashift.com.au>
|
||||
@@ -492,32 +400,27 @@ Nextcloud is written by:
|
||||
- duritong <peter.meier+github@immerda.ch>
|
||||
- eduardo <eduardo@vnexu.net>
|
||||
- eleith <online+github@eleith.com>
|
||||
- enoch <lanxenet@hotmail.com>
|
||||
- essys <essys@users.noreply.github.com>
|
||||
- exner104 <59639860+exner104@users.noreply.github.com>
|
||||
- fabian <fabian@web2.0-apps.de>
|
||||
- felixboehm <felix@webhippie.de>
|
||||
- fenn-cs <fenn25.fn@gmail.com>
|
||||
- fnuesse <felix.nuesse@t-online.de>
|
||||
- fnuesse <fnuesse@techfak.uni-bielefeld.de>
|
||||
- greta <gretadoci@gmail.com>
|
||||
- helix84 <helix84@centrum.sk>
|
||||
- hkjolhede <hkjolhede@gmail.com>
|
||||
- hoellen <dev@hoellen.eu>
|
||||
- howardZa <33491519+howardZa@users.noreply.github.com>
|
||||
- ideaship <ideaship@users.noreply.github.com>
|
||||
- j-ed <juergen@eisfair.org>
|
||||
- j3l11234 <297259024@qq.com>
|
||||
- jaltek <jaltek@mailbox.org>
|
||||
- jknockaert <jasper@knockaert.nl>
|
||||
- jld3103 <jld3103yt@gmail.com>
|
||||
- josh4trunks <joshruehlig@gmail.com>
|
||||
- julia.kirschenheuter <julia.kirschenheuter@nextcloud.com>
|
||||
- karakayasemi <karakayasemi@itu.edu.tr>
|
||||
- kevin147147 <kevintamool@gmail.com>
|
||||
- korelstar <korelstar@users.noreply.github.com>
|
||||
- leith abdulla <online-nextcloud@eleith.com>
|
||||
- lui87kw <lukas.ifflaender@uni-wuerzburg.de>
|
||||
- luz paz <luzpaz@github.com>
|
||||
- luz paz <luzpaz@pm.me>
|
||||
- lynn-stephenson <lynn.stephenson@protonmail.com>
|
||||
- macjohnny <estebanmarin@gmx.ch>
|
||||
- marco44 <cousinmarc@gmail.com>
|
||||
@@ -528,6 +431,7 @@ Nextcloud is written by:
|
||||
- michaelletzgus <michaelletzgus@users.noreply.github.com>
|
||||
- michag86 <micha_g@arcor.de>
|
||||
- mmccarn <mmccarn-github@mmsionline.us>
|
||||
- nacho <nacho@ownyourbits.com>
|
||||
- nhirokinet <nhirokinet@nhiroki.net>
|
||||
- nik gaffney <nik@fo.am>
|
||||
- nishiki <nishiki@yaegashi.fr>
|
||||
@@ -535,12 +439,9 @@ Nextcloud is written by:
|
||||
- noveens <noveen.sachdeva@research.iiit.ac.in>
|
||||
- npmbuildbot[bot] "npmbuildbot[bot]@users.noreply.github.com"
|
||||
- onehappycat <one.happy.cat@gmx.com>
|
||||
- oparoz <owncloud@interfasys.ch>
|
||||
- phisch <git@philippschaffrath.de>
|
||||
- pjft <pjft@users.noreply.github.com>
|
||||
- plumbeo <plumbeo@users.noreply.github.com>
|
||||
- rakekniven <2069590+rakekniven@users.noreply.github.com>
|
||||
- rakekniven <mark.ziegler@rakekniven.de>
|
||||
- raul <raul@nextcloud.com>
|
||||
- robottod <83244577+robottod@users.noreply.github.com>
|
||||
- root "root@oc.(none)"
|
||||
- root <root@localhost.localdomain>
|
||||
@@ -550,8 +451,6 @@ Nextcloud is written by:
|
||||
- scolebrook <scolebrook@mac.com>
|
||||
- shkdee <louis.traynard@m4x.org>
|
||||
- simonspa <1677436+simonspa@users.noreply.github.com>
|
||||
- smichel17 <git@smichel.me>
|
||||
- sodimel <corentin@244466666.xyz>
|
||||
- ste101 <stephan_bauer@gmx.de>
|
||||
- sualko <klaus@jsxc.org>
|
||||
- szaimen <szaimen@e.mail.de>
|
||||
@@ -563,7 +462,6 @@ Nextcloud is written by:
|
||||
- v1r0x <vinzenz.rosenkranz@gmail.com>
|
||||
- voxsim "Simon Vocella"
|
||||
- waleczny <michal@walczak.xyz>
|
||||
- zorn-v <zorn7@yandex.ru>
|
||||
- zulan <git@zulan.net>
|
||||
- Łukasz Buśko <busko.lukasz@pm.me>
|
||||
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
# Nextcloud Design contribution guidelines
|
||||
|
||||
## 👋 Welcome
|
||||
|
||||
At Nextcloud we want to make sure to have everything in place to enable designers to contribute – making our apps universally accessible and easy to use.
|
||||
|
||||
## 🚢 How to contribute design
|
||||
|
||||
We have a dedicated page with more in-detail guidelines on our website:
|
||||
https://nextcloud.com/design/
|
||||
|
||||
**TL;DR**
|
||||
|
||||
1. Check out open [issues](https://github.com/nextcloud/server/issues) here on GitHub (we label them with `design`)
|
||||
2. Make sure create publicly accessible assets
|
||||
3. Add your contributions to an issue and we promise we will review your contribution carefully and foster discussions
|
||||
|
||||
[This issue](https://github.com/nextcloud/desktop/issues/877) has examples of other apps, some simple mockups, and specifications about the design. In the discussions in the comments there are updates to the design as well.
|
||||
|
||||
[This pull request](https://github.com/nextcloud/desktop/pull/1565) by a developer has the implementation of that issue, the changes they made, and more design discussions and adjustments.
|
||||
|
||||
**We encourage you to:**
|
||||
|
||||
- Get in touch with the team by joining our [public Talk channel](https://cloud.nextcloud.com/call/gqff69i8)
|
||||
@@ -2,26 +2,25 @@
|
||||
[](https://scrutinizer-ci.com/g/nextcloud/server/?branch=master)
|
||||
[](https://codecov.io/gh/nextcloud/server)
|
||||
[](https://bestpractices.coreinfrastructure.org/projects/209)
|
||||
[](https://contribute.design/nextcloud/server)
|
||||
|
||||
**A safe home for all your data.**
|
||||
|
||||

|
||||

|
||||
|
||||
## Why is this so awesome? 🤩
|
||||
|
||||
* 📁 **Access your Data** You can store your files, contacts, calendars, and more on a server of your choosing.
|
||||
* 🔄 **Sync your Data** You keep your files, contacts, calendars, and more synchronized amongst your devices.
|
||||
* 📁 **Access your Data** You can store your files, contacts, calendars and more on a server of your choosing.
|
||||
* 🔄 **Sync your Data** You keep your files, contacts, calendars and more synchronized amongst your devices.
|
||||
* 🙌 **Share your Data** …by giving others access to the stuff you want them to see or to collaborate with.
|
||||
* 🚀 **Expandable with hundreds of Apps** ...like [Calendar](https://github.com/nextcloud/calendar), [Contacts](https://github.com/nextcloud/contacts), [Mail](https://github.com/nextcloud/mail), [Video Chat](https://github.com/nextcloud/spreed) and all those you can discover in our [App Store](https://apps.nextcloud.com)
|
||||
* 🔒 **Security** with our encryption mechanisms, [HackerOne bounty program](https://hackerone.com/nextcloud) and two-factor authentication.
|
||||
|
||||
Do you want to learn more about how you can use Nextcloud to access, share and protect your files, calendars, contacts, communication & more at home and in your organization? [**Learn about all our Features**](https://nextcloud.com/athome/).
|
||||
You want to learn more about how you can use Nextcloud to access, share and protect your files, calendars, contacts, communication & more at home and at your organization? [**Learn about all our Features**](https://nextcloud.com/athome/).
|
||||
|
||||
## Get your Nextcloud 🚚
|
||||
|
||||
- ☑️ [**Simply sign up**](https://nextcloud.com/signup/) at one of our providers either through our website or through the apps directly.
|
||||
- 🖥 [**Install** a server by yourself](https://nextcloud.com/install/#instructions-server) on your hardware or by using one of our ready to use **appliances**
|
||||
- 🖥 [**Install** a server by yourself](https://nextcloud.com/install/#instructions-server) on your own hardware or by using one of our ready to use **appliances**
|
||||
- 📦 Buy one of the [awesome **devices** coming with a preinstalled Nextcloud](https://nextcloud.com/devices/)
|
||||
- 🏢 Find a [service **provider**](https://nextcloud.com/providers/) who hosts Nextcloud for you or your company
|
||||
|
||||
@@ -39,7 +38,7 @@ You can also [get support for Nextcloud](https://nextcloud.com/support)!
|
||||
|
||||
## Join the team 👪
|
||||
|
||||
There are many ways to contribute, of which development is only one! Find out [how to get involved](https://nextcloud.com/contribute/), including as a translator, designer, tester, helping others, and much more! 😍
|
||||
There are many ways to contribute, of which development is only one! Find out [how to get involved](https://nextcloud.com/contribute/), including as translator, designer, tester, helping others and much more! 😍
|
||||
|
||||
|
||||
### Development setup 👩💻
|
||||
@@ -48,7 +47,7 @@ There are many ways to contribute, of which development is only one! Find out [h
|
||||
2. 🐛 [Pick a good first issue](https://github.com/nextcloud/server/labels/good%20first%20issue)
|
||||
3. 👩🔧 Create a branch and make your changes. Remember to sign off your commits using `git commit -sm "Your commit message"`
|
||||
4. ⬆ Create a [pull request](https://opensource.guide/how-to-contribute/#opening-a-pull-request) and `@mention` the people from the issue to review
|
||||
5. 👍 Fix things that come up during a review
|
||||
5. 👍 Fix things that come up during review
|
||||
6. 🎉 Wait for it to get merged!
|
||||
|
||||
Third-party components are handled as git submodules which have to be initialized first. So aside from the regular git checkout invoking `git submodule update --init` or a similar command is needed, for details see Git documentation.
|
||||
@@ -59,9 +58,9 @@ Otherwise, git checkouts can be handled the same as release archives, by using t
|
||||
|
||||
### Working with front-end code 🏗
|
||||
|
||||
#### Building Vue components and scripts
|
||||
#### Building
|
||||
|
||||
We are moving more and more toward using Vue.js in the front-end, starting with Settings. For building the code on changes, use these terminal commands in the root folder:
|
||||
We are moving more and more towards using Vue.js in the frontend, starting with Settings. For building the code on changes, use these terminal commands in the root folder:
|
||||
|
||||
```bash
|
||||
# install dependencies
|
||||
@@ -77,26 +76,11 @@ make watch-js
|
||||
make build-js-production
|
||||
```
|
||||
|
||||
#### Building styles
|
||||
|
||||
Styles are written in SCSS and compiled to css.
|
||||
|
||||
```bash
|
||||
# install dependencies
|
||||
make dev-setup
|
||||
|
||||
# compile style sheets
|
||||
npm run sass
|
||||
|
||||
# compile style sheets and watch edits
|
||||
npm run sass:watch
|
||||
```
|
||||
|
||||
#### Committing changes
|
||||
|
||||
**When making changes, also commit the compiled files!**
|
||||
|
||||
We still use Handlebars templates in some places in Files and Settings. We will replace these step-by-step with Vue.js, but in the meantime, you need to compile them separately.
|
||||
We still use Handlebars templates some places in Files and Settings. We will replace these step-by-step with Vue.js, but in the meantime you need to compile them separately.
|
||||
|
||||
If you don’t have Handlebars installed yet, you can do it with this terminal command:
|
||||
```bash
|
||||
@@ -123,7 +107,7 @@ Please note that if you used `make build-js` or `make watch-js` before, you'll n
|
||||
|
||||
### Working with back-end code 🏗
|
||||
|
||||
When changing back-end PHP code, in general, no additional steps are needed before checking in.
|
||||
When changing back-end PHP code, in general no additional steps are needed before checking in.
|
||||
|
||||
However, if new files were created, you will need to run the following command to update the autoloader files:
|
||||
```bash
|
||||
@@ -136,20 +120,17 @@ After that, please also include the autoloader file changes in your commits.
|
||||
|
||||
- [👀 BrowserStack](https://browserstack.com) for cross-browser testing
|
||||
- [🌊 WAVE](https://wave.webaim.org/extension/) for accessibility testing
|
||||
- [🚨 Lighthouse](https://developers.google.com/web/tools/lighthouse/) for testing performance, accessibility, and more
|
||||
- [🚨 Lighthouse](https://developers.google.com/web/tools/lighthouse/) for testing of performance, accessibility and more
|
||||
|
||||
#### Helpful bots at github :robot:
|
||||
|
||||
- Comment on a pull request with `/update-3rdparty` to update the 3rd party submodule. It will update to the last commit of the 3rd party branch named like the PR target.
|
||||
|
||||
## Contribution guidelines 📜
|
||||
|
||||
All contributions to this repository from June 16, 2016, and onward are considered to be
|
||||
All contributions to this repository from June, 16 2016 on are considered to be
|
||||
licensed under the AGPLv3 or any later version.
|
||||
|
||||
Nextcloud doesn't require a CLA (Contributor License Agreement).
|
||||
The copyright belongs to all the individual contributors. Therefore we recommend
|
||||
that every contributor adds the following line to the header of a file if they
|
||||
that every contributor adds following line to the header of a file, if they
|
||||
changed it substantially:
|
||||
|
||||
```
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
/**
|
||||
* @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
* @author John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
* @license AGPL-3.0-or-later
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
export default {
|
||||
get: async () => ({ status: 200, data: {} }),
|
||||
delete: async () => ({ status: 200, data: {} }),
|
||||
post: async () => ({ status: 200, data: {} }),
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
/**
|
||||
* @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
* @author John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
* @license AGPL-3.0-or-later
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
import { jest } from '@jest/globals'
|
||||
|
||||
export const showMessage = jest.fn()
|
||||
export const showSuccess = jest.fn()
|
||||
export const showWarning = jest.fn()
|
||||
export const showInfo = jest.fn()
|
||||
export const showError = jest.fn()
|
||||
export const showUndo = jest.fn()
|
||||
@@ -1,6 +0,0 @@
|
||||
{
|
||||
"extends": "../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"verbatimModuleSyntax": false
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
indent_style = tab
|
||||
indent_size = 4
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
@@ -0,0 +1,12 @@
|
||||
.DS_Store
|
||||
node_modules/
|
||||
dist/
|
||||
npm-debug.log
|
||||
yarn-error.log
|
||||
|
||||
# Editor directories and files
|
||||
.idea
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"esversion": 6
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
# compiled vue templates
|
||||
js/
|
||||
@@ -0,0 +1,26 @@
|
||||
all: dev-setup build-js-production
|
||||
|
||||
dev-setup: clean clean-dev npm-init
|
||||
|
||||
npm-init:
|
||||
npm install
|
||||
|
||||
npm-update:
|
||||
npm update
|
||||
|
||||
build-js:
|
||||
npm run dev
|
||||
|
||||
build-js-production:
|
||||
npm run build
|
||||
|
||||
watch-js:
|
||||
npm run watch
|
||||
|
||||
clean:
|
||||
rm -f js/accessibility.js
|
||||
rm -f js/accessibility.js.map
|
||||
|
||||
clean-dev:
|
||||
rm -rf node_modules
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
# Accessibility ♿
|
||||
|
||||
> This app provide multiple features to ease the use of nextcloud.
|
||||
|
||||
## Build Setup
|
||||
|
||||
``` bash
|
||||
# install dependencies
|
||||
make dev-setup
|
||||
|
||||
# build for development
|
||||
make build-js
|
||||
|
||||
# build for development and watch edits
|
||||
make watch-js
|
||||
|
||||
# build for production with minification
|
||||
make build-js-production
|
||||
|
||||
# clean output files
|
||||
make clean
|
||||
```
|
||||
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0"?>
|
||||
<info xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="https://apps.nextcloud.com/schema/apps/info.xsd">
|
||||
<id>accessibility</id>
|
||||
<name>Accessibility</name>
|
||||
<summary>Accessibility options for nextcloud</summary>
|
||||
<description><![CDATA[Provides multiple accessibilities options to ease your use of Nextcloud]]></description>
|
||||
<version>1.10.0</version>
|
||||
<licence>agpl</licence>
|
||||
<author>John Molakvoæ</author>
|
||||
<namespace>Accessibility</namespace>
|
||||
<default_enable/>
|
||||
|
||||
<category>customization</category>
|
||||
|
||||
<bugs>https://github.com/nextcloud/server/issues</bugs>
|
||||
|
||||
<dependencies>
|
||||
<nextcloud min-version="24" max-version="24"/>
|
||||
</dependencies>
|
||||
|
||||
<repair-steps>
|
||||
<pre-migration>
|
||||
<step>OCA\Accessibility\Migration\RepairUserConfig</step>
|
||||
</pre-migration>
|
||||
</repair-steps>
|
||||
|
||||
<settings>
|
||||
<personal>OCA\Accessibility\Settings\Personal</personal>
|
||||
<personal-section>OCA\Accessibility\Settings\PersonalSection</personal-section>
|
||||
</settings>
|
||||
</info>
|
||||
@@ -1,12 +1,11 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>
|
||||
* @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
* @author Alexey Pyltsyn <lex61rus@gmail.com>
|
||||
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
|
||||
* @author Joas Schilling <coding@schilljs.com>
|
||||
* @author John Molakvoæ <skjnldsv@protonmail.com>
|
||||
* @author Julius Härtl <jus@bitgrid.net>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
@@ -24,36 +23,25 @@ declare(strict_types=1);
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
namespace OCP\Authentication\TwoFactorAuth;
|
||||
|
||||
use OCP\EventDispatcher\Event;
|
||||
use OCP\IUser;
|
||||
|
||||
/**
|
||||
* @since 28.0.0
|
||||
*/
|
||||
final class TwoFactorProviderUserDeleted extends Event {
|
||||
/**
|
||||
* @since 28.0.0
|
||||
*/
|
||||
public function __construct(
|
||||
private IUser $user,
|
||||
private string $providerId,
|
||||
) {
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 28.0.0
|
||||
*/
|
||||
public function getUser(): IUser {
|
||||
return $this->user;
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 28.0.0
|
||||
*/
|
||||
public function getProviderId(): string {
|
||||
return $this->providerId;
|
||||
}
|
||||
}
|
||||
return [
|
||||
'routes' => [
|
||||
['name' => 'accessibility#getCss', 'url' => '/css/user-{md5}', 'verb' => 'GET'],
|
||||
],
|
||||
'ocs' => [
|
||||
[
|
||||
'name' => 'Config#getConfig',
|
||||
'url' => '/api/v1/config',
|
||||
'verb' => 'GET',
|
||||
],
|
||||
[
|
||||
'name' => 'Config#setConfig',
|
||||
'url' => '/api/v1/config/{key}',
|
||||
'verb' => 'PUT',
|
||||
],
|
||||
[
|
||||
'name' => 'Config#deleteConfig',
|
||||
'url' => '/api/v1/config/{key}',
|
||||
'verb' => 'DELETE',
|
||||
],
|
||||
]
|
||||
];
|
||||
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
// autoload.php @generated by Composer
|
||||
|
||||
if (PHP_VERSION_ID < 50600) {
|
||||
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
|
||||
exit(1);
|
||||
}
|
||||
|
||||
require_once __DIR__ . '/composer/autoload_real.php';
|
||||
|
||||
return ComposerAutoloaderInitAccessibility::getLoader();
|
||||
@@ -3,11 +3,11 @@
|
||||
"vendor-dir": ".",
|
||||
"optimize-autoloader": true,
|
||||
"classmap-authoritative": true,
|
||||
"autoloader-suffix": "Dashboard"
|
||||
"autoloader-suffix": "Accessibility"
|
||||
},
|
||||
"autoload" : {
|
||||
"psr-4": {
|
||||
"OCA\\Dashboard\\": "../lib/"
|
||||
"OCA\\Accessibility\\": "../lib/"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,5 +14,5 @@
|
||||
"prefer-lowest": false,
|
||||
"platform": [],
|
||||
"platform-dev": [],
|
||||
"plugin-api-version": "2.3.0"
|
||||
"plugin-api-version": "2.1.0"
|
||||
}
|
||||
@@ -42,37 +42,35 @@ namespace Composer\Autoload;
|
||||
*/
|
||||
class ClassLoader
|
||||
{
|
||||
/** @var \Closure(string):void */
|
||||
private static $includeFile;
|
||||
|
||||
/** @var string|null */
|
||||
/** @var ?string */
|
||||
private $vendorDir;
|
||||
|
||||
// PSR-4
|
||||
/**
|
||||
* @var array<string, array<string, int>>
|
||||
* @var array[]
|
||||
* @psalm-var array<string, array<string, int>>
|
||||
*/
|
||||
private $prefixLengthsPsr4 = array();
|
||||
/**
|
||||
* @var array<string, list<string>>
|
||||
* @var array[]
|
||||
* @psalm-var array<string, array<int, string>>
|
||||
*/
|
||||
private $prefixDirsPsr4 = array();
|
||||
/**
|
||||
* @var list<string>
|
||||
* @var array[]
|
||||
* @psalm-var array<string, string>
|
||||
*/
|
||||
private $fallbackDirsPsr4 = array();
|
||||
|
||||
// PSR-0
|
||||
/**
|
||||
* List of PSR-0 prefixes
|
||||
*
|
||||
* Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2')))
|
||||
*
|
||||
* @var array<string, array<string, list<string>>>
|
||||
* @var array[]
|
||||
* @psalm-var array<string, array<string, string[]>>
|
||||
*/
|
||||
private $prefixesPsr0 = array();
|
||||
/**
|
||||
* @var list<string>
|
||||
* @var array[]
|
||||
* @psalm-var array<string, string>
|
||||
*/
|
||||
private $fallbackDirsPsr0 = array();
|
||||
|
||||
@@ -80,7 +78,8 @@ class ClassLoader
|
||||
private $useIncludePath = false;
|
||||
|
||||
/**
|
||||
* @var array<string, string>
|
||||
* @var string[]
|
||||
* @psalm-var array<string, string>
|
||||
*/
|
||||
private $classMap = array();
|
||||
|
||||
@@ -88,29 +87,29 @@ class ClassLoader
|
||||
private $classMapAuthoritative = false;
|
||||
|
||||
/**
|
||||
* @var array<string, bool>
|
||||
* @var bool[]
|
||||
* @psalm-var array<string, bool>
|
||||
*/
|
||||
private $missingClasses = array();
|
||||
|
||||
/** @var string|null */
|
||||
/** @var ?string */
|
||||
private $apcuPrefix;
|
||||
|
||||
/**
|
||||
* @var array<string, self>
|
||||
* @var self[]
|
||||
*/
|
||||
private static $registeredLoaders = array();
|
||||
|
||||
/**
|
||||
* @param string|null $vendorDir
|
||||
* @param ?string $vendorDir
|
||||
*/
|
||||
public function __construct($vendorDir = null)
|
||||
{
|
||||
$this->vendorDir = $vendorDir;
|
||||
self::initializeIncludeClosure();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, list<string>>
|
||||
* @return string[]
|
||||
*/
|
||||
public function getPrefixes()
|
||||
{
|
||||
@@ -122,7 +121,8 @@ class ClassLoader
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, list<string>>
|
||||
* @return array[]
|
||||
* @psalm-return array<string, array<int, string>>
|
||||
*/
|
||||
public function getPrefixesPsr4()
|
||||
{
|
||||
@@ -130,7 +130,8 @@ class ClassLoader
|
||||
}
|
||||
|
||||
/**
|
||||
* @return list<string>
|
||||
* @return array[]
|
||||
* @psalm-return array<string, string>
|
||||
*/
|
||||
public function getFallbackDirs()
|
||||
{
|
||||
@@ -138,7 +139,8 @@ class ClassLoader
|
||||
}
|
||||
|
||||
/**
|
||||
* @return list<string>
|
||||
* @return array[]
|
||||
* @psalm-return array<string, string>
|
||||
*/
|
||||
public function getFallbackDirsPsr4()
|
||||
{
|
||||
@@ -146,7 +148,8 @@ class ClassLoader
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<string, string> Array of classname => path
|
||||
* @return string[] Array of classname => path
|
||||
* @psalm-return array<string, string>
|
||||
*/
|
||||
public function getClassMap()
|
||||
{
|
||||
@@ -154,7 +157,8 @@ class ClassLoader
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, string> $classMap Class to filename map
|
||||
* @param string[] $classMap Class to filename map
|
||||
* @psalm-param array<string, string> $classMap
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
@@ -171,25 +175,24 @@ class ClassLoader
|
||||
* Registers a set of PSR-0 directories for a given prefix, either
|
||||
* appending or prepending to the ones previously set for this prefix.
|
||||
*
|
||||
* @param string $prefix The prefix
|
||||
* @param list<string>|string $paths The PSR-0 root directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
* @param string $prefix The prefix
|
||||
* @param string[]|string $paths The PSR-0 root directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function add($prefix, $paths, $prepend = false)
|
||||
{
|
||||
$paths = (array) $paths;
|
||||
if (!$prefix) {
|
||||
if ($prepend) {
|
||||
$this->fallbackDirsPsr0 = array_merge(
|
||||
$paths,
|
||||
(array) $paths,
|
||||
$this->fallbackDirsPsr0
|
||||
);
|
||||
} else {
|
||||
$this->fallbackDirsPsr0 = array_merge(
|
||||
$this->fallbackDirsPsr0,
|
||||
$paths
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
|
||||
@@ -198,19 +201,19 @@ class ClassLoader
|
||||
|
||||
$first = $prefix[0];
|
||||
if (!isset($this->prefixesPsr0[$first][$prefix])) {
|
||||
$this->prefixesPsr0[$first][$prefix] = $paths;
|
||||
$this->prefixesPsr0[$first][$prefix] = (array) $paths;
|
||||
|
||||
return;
|
||||
}
|
||||
if ($prepend) {
|
||||
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||
$paths,
|
||||
(array) $paths,
|
||||
$this->prefixesPsr0[$first][$prefix]
|
||||
);
|
||||
} else {
|
||||
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||
$this->prefixesPsr0[$first][$prefix],
|
||||
$paths
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -219,9 +222,9 @@ class ClassLoader
|
||||
* Registers a set of PSR-4 directories for a given namespace, either
|
||||
* appending or prepending to the ones previously set for this namespace.
|
||||
*
|
||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param list<string>|string $paths The PSR-4 base directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param string[]|string $paths The PSR-4 base directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*
|
||||
@@ -229,18 +232,17 @@ class ClassLoader
|
||||
*/
|
||||
public function addPsr4($prefix, $paths, $prepend = false)
|
||||
{
|
||||
$paths = (array) $paths;
|
||||
if (!$prefix) {
|
||||
// Register directories for the root namespace.
|
||||
if ($prepend) {
|
||||
$this->fallbackDirsPsr4 = array_merge(
|
||||
$paths,
|
||||
(array) $paths,
|
||||
$this->fallbackDirsPsr4
|
||||
);
|
||||
} else {
|
||||
$this->fallbackDirsPsr4 = array_merge(
|
||||
$this->fallbackDirsPsr4,
|
||||
$paths
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
|
||||
@@ -250,18 +252,18 @@ class ClassLoader
|
||||
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||
}
|
||||
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||
$this->prefixDirsPsr4[$prefix] = $paths;
|
||||
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
||||
} elseif ($prepend) {
|
||||
// Prepend directories for an already registered namespace.
|
||||
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||
$paths,
|
||||
(array) $paths,
|
||||
$this->prefixDirsPsr4[$prefix]
|
||||
);
|
||||
} else {
|
||||
// Append directories for an already registered namespace.
|
||||
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||
$this->prefixDirsPsr4[$prefix],
|
||||
$paths
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -270,8 +272,8 @@ class ClassLoader
|
||||
* Registers a set of PSR-0 directories for a given prefix,
|
||||
* replacing any others previously set for this prefix.
|
||||
*
|
||||
* @param string $prefix The prefix
|
||||
* @param list<string>|string $paths The PSR-0 base directories
|
||||
* @param string $prefix The prefix
|
||||
* @param string[]|string $paths The PSR-0 base directories
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
@@ -288,8 +290,8 @@ class ClassLoader
|
||||
* Registers a set of PSR-4 directories for a given namespace,
|
||||
* replacing any others previously set for this namespace.
|
||||
*
|
||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param list<string>|string $paths The PSR-4 base directories
|
||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param string[]|string $paths The PSR-4 base directories
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*
|
||||
@@ -423,8 +425,7 @@ class ClassLoader
|
||||
public function loadClass($class)
|
||||
{
|
||||
if ($file = $this->findFile($class)) {
|
||||
$includeFile = self::$includeFile;
|
||||
$includeFile($file);
|
||||
includeFile($file);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -475,9 +476,9 @@ class ClassLoader
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the currently registered loaders keyed by their corresponding vendor directories.
|
||||
* Returns the currently registered loaders indexed by their corresponding vendor directories.
|
||||
*
|
||||
* @return array<string, self>
|
||||
* @return self[]
|
||||
*/
|
||||
public static function getRegisteredLoaders()
|
||||
{
|
||||
@@ -554,26 +555,18 @@ class ClassLoader
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
private static function initializeIncludeClosure()
|
||||
{
|
||||
if (self::$includeFile !== null) {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope isolated include.
|
||||
*
|
||||
* Prevents access to $this/self from included files.
|
||||
*
|
||||
* @param string $file
|
||||
* @return void
|
||||
*/
|
||||
self::$includeFile = \Closure::bind(static function($file) {
|
||||
include $file;
|
||||
}, null, null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope isolated include.
|
||||
*
|
||||
* Prevents access to $this/self from included files.
|
||||
*
|
||||
* @param string $file
|
||||
* @return void
|
||||
* @private
|
||||
*/
|
||||
function includeFile($file)
|
||||
{
|
||||
include $file;
|
||||
}
|
||||
@@ -28,7 +28,7 @@ class InstalledVersions
|
||||
{
|
||||
/**
|
||||
* @var mixed[]|null
|
||||
* @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
|
||||
* @psalm-var array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}|array{}|null
|
||||
*/
|
||||
private static $installed;
|
||||
|
||||
@@ -39,7 +39,7 @@ class InstalledVersions
|
||||
|
||||
/**
|
||||
* @var array[]
|
||||
* @psalm-var array<string, array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
|
||||
* @psalm-var array<string, array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
|
||||
*/
|
||||
private static $installedByVendor = array();
|
||||
|
||||
@@ -98,7 +98,7 @@ class InstalledVersions
|
||||
{
|
||||
foreach (self::getInstalled() as $installed) {
|
||||
if (isset($installed['versions'][$packageName])) {
|
||||
return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false;
|
||||
return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,7 +119,7 @@ class InstalledVersions
|
||||
*/
|
||||
public static function satisfies(VersionParser $parser, $packageName, $constraint)
|
||||
{
|
||||
$constraint = $parser->parseConstraints((string) $constraint);
|
||||
$constraint = $parser->parseConstraints($constraint);
|
||||
$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
|
||||
|
||||
return $provided->matches($constraint);
|
||||
@@ -243,7 +243,7 @@ class InstalledVersions
|
||||
|
||||
/**
|
||||
* @return array
|
||||
* @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
|
||||
* @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}
|
||||
*/
|
||||
public static function getRootPackage()
|
||||
{
|
||||
@@ -257,7 +257,7 @@ class InstalledVersions
|
||||
*
|
||||
* @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
|
||||
* @return array[]
|
||||
* @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}
|
||||
* @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}
|
||||
*/
|
||||
public static function getRawData()
|
||||
{
|
||||
@@ -280,7 +280,7 @@ class InstalledVersions
|
||||
* Returns the raw data of all installed.php which are currently loaded for custom implementations
|
||||
*
|
||||
* @return array[]
|
||||
* @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
|
||||
* @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
|
||||
*/
|
||||
public static function getAllRawData()
|
||||
{
|
||||
@@ -303,7 +303,7 @@ class InstalledVersions
|
||||
* @param array[] $data A vendor/composer/installed.php data set
|
||||
* @return void
|
||||
*
|
||||
* @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $data
|
||||
* @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>} $data
|
||||
*/
|
||||
public static function reload($data)
|
||||
{
|
||||
@@ -313,7 +313,7 @@ class InstalledVersions
|
||||
|
||||
/**
|
||||
* @return array[]
|
||||
* @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
|
||||
* @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
|
||||
*/
|
||||
private static function getInstalled()
|
||||
{
|
||||
@@ -328,9 +328,7 @@ class InstalledVersions
|
||||
if (isset(self::$installedByVendor[$vendorDir])) {
|
||||
$installed[] = self::$installedByVendor[$vendorDir];
|
||||
} elseif (is_file($vendorDir.'/composer/installed.php')) {
|
||||
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
|
||||
$required = require $vendorDir.'/composer/installed.php';
|
||||
$installed[] = self::$installedByVendor[$vendorDir] = $required;
|
||||
$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
|
||||
if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
|
||||
self::$installed = $installed[count($installed) - 1];
|
||||
}
|
||||
@@ -342,17 +340,12 @@ class InstalledVersions
|
||||
// only require the installed.php file if this file is loaded from its dumped location,
|
||||
// and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
|
||||
if (substr(__DIR__, -8, 1) !== 'C') {
|
||||
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
|
||||
$required = require __DIR__ . '/installed.php';
|
||||
self::$installed = $required;
|
||||
self::$installed = require __DIR__ . '/installed.php';
|
||||
} else {
|
||||
self::$installed = array();
|
||||
}
|
||||
}
|
||||
|
||||
if (self::$installed !== array()) {
|
||||
$installed[] = self::$installed;
|
||||
}
|
||||
$installed[] = self::$installed;
|
||||
|
||||
return $installed;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
// autoload_classmap.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(__DIR__);
|
||||
$baseDir = $vendorDir;
|
||||
|
||||
return array(
|
||||
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
|
||||
'OCA\\Accessibility\\AccessibilityProvider' => $baseDir . '/../lib/AccessibilityProvider.php',
|
||||
'OCA\\Accessibility\\AppInfo\\Application' => $baseDir . '/../lib/AppInfo/Application.php',
|
||||
'OCA\\Accessibility\\Controller\\AccessibilityController' => $baseDir . '/../lib/Controller/AccessibilityController.php',
|
||||
'OCA\\Accessibility\\Controller\\ConfigController' => $baseDir . '/../lib/Controller/ConfigController.php',
|
||||
'OCA\\Accessibility\\Migration\\RepairUserConfig' => $baseDir . '/../lib/Migration/RepairUserConfig.php',
|
||||
'OCA\\Accessibility\\Service\\JSDataService' => $baseDir . '/../lib/Service/JSDataService.php',
|
||||
'OCA\\Accessibility\\Settings\\Personal' => $baseDir . '/../lib/Settings/Personal.php',
|
||||
'OCA\\Accessibility\\Settings\\PersonalSection' => $baseDir . '/../lib/Settings/PersonalSection.php',
|
||||
);
|
||||
@@ -6,5 +6,5 @@ $vendorDir = dirname(__DIR__);
|
||||
$baseDir = $vendorDir;
|
||||
|
||||
return array(
|
||||
'OCA\\Dashboard\\' => array($baseDir . '/../lib'),
|
||||
'OCA\\Accessibility\\' => array($baseDir . '/../lib'),
|
||||
);
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
// autoload_real.php @generated by Composer
|
||||
|
||||
class ComposerAutoloaderInitWeatherStatus
|
||||
class ComposerAutoloaderInitAccessibility
|
||||
{
|
||||
private static $loader;
|
||||
|
||||
@@ -22,12 +22,12 @@ class ComposerAutoloaderInitWeatherStatus
|
||||
return self::$loader;
|
||||
}
|
||||
|
||||
spl_autoload_register(array('ComposerAutoloaderInitWeatherStatus', 'loadClassLoader'), true, true);
|
||||
spl_autoload_register(array('ComposerAutoloaderInitAccessibility', 'loadClassLoader'), true, true);
|
||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInitWeatherStatus', 'loadClassLoader'));
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInitAccessibility', 'loadClassLoader'));
|
||||
|
||||
require __DIR__ . '/autoload_static.php';
|
||||
call_user_func(\Composer\Autoload\ComposerStaticInitWeatherStatus::getInitializer($loader));
|
||||
call_user_func(\Composer\Autoload\ComposerStaticInitAccessibility::getInitializer($loader));
|
||||
|
||||
$loader->setClassMapAuthoritative(true);
|
||||
$loader->register(true);
|
||||
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
// autoload_static.php @generated by Composer
|
||||
|
||||
namespace Composer\Autoload;
|
||||
|
||||
class ComposerStaticInitAccessibility
|
||||
{
|
||||
public static $prefixLengthsPsr4 = array (
|
||||
'O' =>
|
||||
array (
|
||||
'OCA\\Accessibility\\' => 18,
|
||||
),
|
||||
);
|
||||
|
||||
public static $prefixDirsPsr4 = array (
|
||||
'OCA\\Accessibility\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/../lib',
|
||||
),
|
||||
);
|
||||
|
||||
public static $classMap = array (
|
||||
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
|
||||
'OCA\\Accessibility\\AccessibilityProvider' => __DIR__ . '/..' . '/../lib/AccessibilityProvider.php',
|
||||
'OCA\\Accessibility\\AppInfo\\Application' => __DIR__ . '/..' . '/../lib/AppInfo/Application.php',
|
||||
'OCA\\Accessibility\\Controller\\AccessibilityController' => __DIR__ . '/..' . '/../lib/Controller/AccessibilityController.php',
|
||||
'OCA\\Accessibility\\Controller\\ConfigController' => __DIR__ . '/..' . '/../lib/Controller/ConfigController.php',
|
||||
'OCA\\Accessibility\\Migration\\RepairUserConfig' => __DIR__ . '/..' . '/../lib/Migration/RepairUserConfig.php',
|
||||
'OCA\\Accessibility\\Service\\JSDataService' => __DIR__ . '/..' . '/../lib/Service/JSDataService.php',
|
||||
'OCA\\Accessibility\\Settings\\Personal' => __DIR__ . '/..' . '/../lib/Settings/Personal.php',
|
||||
'OCA\\Accessibility\\Settings\\PersonalSection' => __DIR__ . '/..' . '/../lib/Settings/PersonalSection.php',
|
||||
);
|
||||
|
||||
public static function getInitializer(ClassLoader $loader)
|
||||
{
|
||||
return \Closure::bind(function () use ($loader) {
|
||||
$loader->prefixLengthsPsr4 = ComposerStaticInitAccessibility::$prefixLengthsPsr4;
|
||||
$loader->prefixDirsPsr4 = ComposerStaticInitAccessibility::$prefixDirsPsr4;
|
||||
$loader->classMap = ComposerStaticInitAccessibility::$classMap;
|
||||
|
||||
}, null, ClassLoader::class);
|
||||
}
|
||||
}
|
||||
@@ -1,22 +1,22 @@
|
||||
<?php return array(
|
||||
'root' => array(
|
||||
'name' => '__root__',
|
||||
'pretty_version' => 'dev-master',
|
||||
'version' => 'dev-master',
|
||||
'reference' => '9685b49f0d8f9e7d34f299e51628748a04d0e175',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../',
|
||||
'aliases' => array(),
|
||||
'reference' => 'c6429e6cd19c57582364338362e543580821cf99',
|
||||
'name' => '__root__',
|
||||
'dev' => false,
|
||||
),
|
||||
'versions' => array(
|
||||
'__root__' => array(
|
||||
'pretty_version' => 'dev-master',
|
||||
'version' => 'dev-master',
|
||||
'reference' => '9685b49f0d8f9e7d34f299e51628748a04d0e175',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../',
|
||||
'aliases' => array(),
|
||||
'reference' => 'c6429e6cd19c57582364338362e543580821cf99',
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
),
|
||||
@@ -0,0 +1,112 @@
|
||||
// SCSS variables
|
||||
$color-main-text: #d8d8d8;
|
||||
$color-main-background: #181818;
|
||||
|
||||
$color-background-hover: lighten($color-main-background, 4%);
|
||||
$color-background-dark: lighten($color-main-background, 7%);
|
||||
$color-background-darker: lighten($color-main-background, 14%);
|
||||
|
||||
$color-placeholder-light: lighten($color-main-background, 10%);
|
||||
$color-placeholder-dark: lighten($color-main-background, 20%);
|
||||
|
||||
$color-text-maxcontrast: darken($color-main-text, 30%);
|
||||
$color-text-light: darken($color-main-text, 10%);
|
||||
$color-text-lighter: darken($color-main-text, 20%);
|
||||
|
||||
$color-loading-light: #777;
|
||||
$color-loading-dark: #ccc;
|
||||
|
||||
$color-box-shadow: transparentize(darken($color-main-background, 70%), 0.5);
|
||||
|
||||
$color-border: lighten($color-main-background, 7%);
|
||||
$color-border-dark: lighten($color-main-background, 14%);
|
||||
|
||||
$image-logo: url('../../../core/img/logo/logo.svg?v=1');
|
||||
$image-logoheader: url('../../../core/img/logo/logo.svg?v=1');
|
||||
|
||||
#app-navigation > ul > li > a:first-child,
|
||||
#app-navigation > ul > li > ul > li > a:first-child,
|
||||
#contactsmenu-menu a,
|
||||
#expanddiv a,
|
||||
.activity-section .activity-icon.monochrome {
|
||||
& > img,
|
||||
:not(.avatardiv) > img {
|
||||
filter: invert(100%);
|
||||
}
|
||||
}
|
||||
|
||||
#navigation #apps li a,
|
||||
#body-settings #content-vue.app-settings .app-image-icon,
|
||||
#body-settings #content-vue.app-settings #app-sidebar #app-details-view h2 {
|
||||
svg {
|
||||
filter: invert(100%);
|
||||
}
|
||||
}
|
||||
|
||||
// Otherwise icon-more gets inverted via function
|
||||
#appmenu .icon-more-white {
|
||||
filter: invert(100%);
|
||||
}
|
||||
|
||||
// since svg icons are inverted, revert to white for the header
|
||||
.header-right > * {
|
||||
>[class^='icon-'] {
|
||||
filter: invert(100%);
|
||||
}
|
||||
}
|
||||
|
||||
.bubble,
|
||||
.app-navigation-entry-menu,
|
||||
.popovermenu,
|
||||
.popover__menu {
|
||||
li {
|
||||
> button,
|
||||
> a,
|
||||
> .menuitem, > .popover__menuitem {
|
||||
> img {
|
||||
filter: invert(100%);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.bubble,
|
||||
.app-navigation-entry-menu,
|
||||
.popovermenu,
|
||||
#header .menu {
|
||||
border: 1px solid var(--color-border);
|
||||
}
|
||||
|
||||
.popover[x-placement^='top'] .popover__arrow {
|
||||
border-top-color: var(--color-border);
|
||||
}
|
||||
.popover[x-placement^='bottom'] .popover__arrow {
|
||||
border-bottom-color: var(--color-border);
|
||||
}
|
||||
.popover[x-placement^='left'] .popover__arrow {
|
||||
border-left-color: var(--color-border);
|
||||
}
|
||||
.popover[x-placement^='right'] .popover__arrow {
|
||||
border-right-color: var(--color-border);
|
||||
}
|
||||
.popover .popover__inner {
|
||||
border: 1px solid var(--color-border);
|
||||
}
|
||||
|
||||
// Prevent slideshow icons from going dark
|
||||
#slideshow {
|
||||
[class^='icon-'], [class*=' icon-']{
|
||||
filter: invert(100%);
|
||||
}
|
||||
}
|
||||
|
||||
input[type=checkbox] {
|
||||
&.checkbox {
|
||||
&:checked + label:before {
|
||||
background-image: url('../../../core/img/actions/checkbox-mark-dark.svg');
|
||||
}
|
||||
|
||||
&:indeterminate + label:before {
|
||||
background-image: url('../../../core/img/actions/checkbox-mixed-dark.svg');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
@font-face {
|
||||
font-family: 'OpenDyslexic';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url('../fonts/OpenDyslexic-Regular.woff') format('woff');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'OpenDyslexic';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: url('../fonts/OpenDyslexic-Bold.woff') format('woff');
|
||||
}
|
||||
|
||||
$font-face: OpenDyslexic, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Cantarell, Ubuntu, 'Helvetica Neue', Arial, 'Noto Color Emoji', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
|
||||
|
||||
$image-logo: url('../../../core/img/logo/logo.svg?v=1');
|
||||
$image-logoheader: url('../../../core/img/logo/logo.svg?v=1');
|
||||
@@ -0,0 +1,31 @@
|
||||
// SCSS variables
|
||||
$color-main-text: #000;
|
||||
$color-main-background: #fff;
|
||||
|
||||
$color-background-dark: darken($color-main-background, 30%);
|
||||
$color-background-darker: darken($color-main-background, 30%);
|
||||
|
||||
$color-placeholder-light: darken($color-main-background, 30%);
|
||||
$color-placeholder-dark: darken($color-main-background, 45%);
|
||||
|
||||
$color-text-maxcontrast: $color-main-text;
|
||||
$color-text-light: $color-main-text;
|
||||
$color-text-lighter: $color-main-text;
|
||||
|
||||
$color-loading-light: #ddd;
|
||||
$color-loading-dark: #000;
|
||||
|
||||
$color-box-shadow: $color-main-text;
|
||||
|
||||
$color-border: darken($color-main-background, 50%);
|
||||
$color-border-dark: darken($color-main-background, 50%);
|
||||
|
||||
$image-logo: url('../../../core/img/logo/logo.svg?v=1');
|
||||
$image-logoheader: url('../../../core/img/logo/logo.svg?v=1');
|
||||
|
||||
[class^='icon-'], [class*=' icon-'],
|
||||
.action,
|
||||
#appmenu li a,
|
||||
.menutoggle {
|
||||
opacity: 1 !important;
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
// SCSS variables
|
||||
$color-main-text: #fff;
|
||||
$color-main-background: #000;
|
||||
|
||||
$color-background-dark: lighten($color-main-background, 30%);
|
||||
$color-background-darker: lighten($color-main-background, 30%);
|
||||
|
||||
$color-text-maxcontrast: $color-main-text;
|
||||
$color-text-light: $color-main-text;
|
||||
$color-text-lighter: $color-main-text;
|
||||
|
||||
$color-loading-light: #000;
|
||||
$color-loading-dark: #ddd;
|
||||
|
||||
$color-box-shadow: $color-main-text;
|
||||
|
||||
$color-border: lighten($color-main-background, 50%);
|
||||
$color-border-dark: lighten($color-main-background, 50%);
|
||||
|
||||
[class^='icon-'], [class*=' icon-'],
|
||||
.action,
|
||||
#appmenu li a,
|
||||
.menutoggle {
|
||||
opacity: 1 !important;
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
// Rules we could port to the rest of Nextcloud too
|
||||
|
||||
// Proper highlight for links and focus feedback
|
||||
#accessibility a {
|
||||
font-weight: bold;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
// Highlight checkbox label in bold for focus feedback
|
||||
// Drawback: Text width increases a bit
|
||||
#accessibility .checkbox:focus + label {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
// Limit width of settings sections for readability
|
||||
#accessibility.section p {
|
||||
max-width: 800px;
|
||||
}
|
||||
|
||||
// End of rules we could port to rest of Nextcloud
|
||||
|
||||
|
||||
|
||||
.preview-list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
max-width: 800px;
|
||||
}
|
||||
|
||||
.preview {
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
margin-top: 3em;
|
||||
position: relative;
|
||||
|
||||
&,
|
||||
* {
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.preview-image {
|
||||
flex-basis: 200px;
|
||||
flex-shrink: 0;
|
||||
margin-right: 1em;
|
||||
background-position: top left;
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
border-radius: var(--border-radius);
|
||||
}
|
||||
|
||||
.preview-description {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
label {
|
||||
padding: 12px 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: ($breakpoint-mobile / 2)) {
|
||||
.app-settings #accessibility .preview-list .preview {
|
||||
display: unset;
|
||||
|
||||
.preview-image {
|
||||
height: 150px;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
id="svg2"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 16 16"
|
||||
sodipodi:docname="app-dark.svg"
|
||||
inkscape:version="0.92.2 5c3e80d, 2017-08-06">
|
||||
<metadata
|
||||
id="metadata8">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs6" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1880"
|
||||
inkscape:window-height="993"
|
||||
id="namedview4"
|
||||
showgrid="false"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:zoom="36.460193"
|
||||
inkscape:cx="8.4752826"
|
||||
inkscape:cy="18.273624"
|
||||
inkscape:window-x="20"
|
||||
inkscape:window-y="67"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="g848"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0" />
|
||||
<g
|
||||
id="g848"
|
||||
transform="matrix(1.1307959,0,0,1.0801738,-1.0463882,-0.84269722)"
|
||||
style="stroke-width:0.90481776;fill:#000000">
|
||||
<circle
|
||||
r="1.9587879"
|
||||
cy="2.8315151"
|
||||
cx="7.990303"
|
||||
id="path844"
|
||||
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.90481776;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
|
||||
<path
|
||||
sodipodi:nodetypes="scsssscsccccczzcccccssssccsscs"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path843"
|
||||
d="m 2.3519709,4.2557871 c -0.3126291,0 -0.4819578,0.1287194 -0.5322266,0.4028321 -0.053173,0.2899914 0.1062609,0.5159057 0.4370117,0.6274414 1.420521,0.4790277 2.4256503,0.6675279 3.8410483,0.9800416 0.327839,0.072385 0.6900295,0.2893751 0.6520998,1.0948483 C 6.6985575,8.451345 6.6372144,9.7041167 6.2631031,11.323353 6.0397526,12.290062 5.6782112,13.622766 5.4305838,14.3922 5.3416728,14.668443 5.281658,14.922355 5.281658,15.031849 c 0,0.08257 0.053443,0.249642 0.097656,0.307617 0.023823,0.03125 0.075039,0.07397 0.1147462,0.09522 0.062879,0.03361 0.096262,0.03787 0.2612304,0.03663 0.3361373,-0.0026 0.4608113,-0.08245 0.6665037,-0.429687 0.4838657,-0.939315 0.7378785,-2.132191 0.9402993,-3.014266 0.092189,-0.517235 0.2624476,-1.66347 0.6710287,-1.66347 0.4085811,0 0.4979093,0.95008 0.6812062,1.687228 0.1832969,0.737148 0.6122738,2.295202 0.7738717,2.704862 0.2137476,0.54186 0.5742238,0.836985 0.8764648,0.717774 0.03316,-0.01301 0.116937,-0.04526 0.187989,-0.0708 0.147435,-0.053 0.186715,-0.07824 0.219726,-0.156249 0.0655,-0.154793 -0.01013,-0.454047 -0.349121,-1.41114 C 9.7721847,11.597192 9.2651806,9.3990255 9.3334308,7.2974743 9.3630343,6.3859259 9.6837054,6.305369 10.075725,6.2075087 c 1.17285,-0.2927798 2.00228,-0.379973 3.387085,-0.8579717 0.468513,-0.1617184 0.727539,-0.2608264 0.727539,-0.5590819 0,-0.2554049 -0.153084,-0.4346541 -0.437011,-0.5102538 -0.116851,-0.031101 -0.318383,-0.028905 -0.632326,0.00243 -1.085189,0.10834 -2.939683,0.5153868 -4.0234365,0.6710819 -0.529944,0.076133 -1.7229392,0.094015 -2.2729489,0 C 5.6763224,4.7574297 4.1363176,4.4147025 2.9061699,4.2997326 2.6560099,4.2763537 2.4068766,4.2557871 2.3519709,4.2557871 Z"
|
||||
style="fill:#000000;stroke-width:0.9048177" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.0 KiB |
@@ -0,0 +1,76 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
id="svg2"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 16 16"
|
||||
sodipodi:docname="app.svg"
|
||||
inkscape:version="0.92.2 5c3e80d, 2017-08-06">
|
||||
<metadata
|
||||
id="metadata8">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs6" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1880"
|
||||
inkscape:window-height="993"
|
||||
id="namedview4"
|
||||
showgrid="false"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:zoom="36.460193"
|
||||
inkscape:cx="8.4752826"
|
||||
inkscape:cy="18.273624"
|
||||
inkscape:window-x="20"
|
||||
inkscape:window-y="67"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="g848"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0" />
|
||||
<g
|
||||
id="g848"
|
||||
transform="matrix(1.1307959,0,0,1.0801738,-1.0463882,-0.84269722)"
|
||||
style="stroke-width:0.90481776;fill:#000000">
|
||||
<circle
|
||||
r="1.9587879"
|
||||
cy="2.8315151"
|
||||
cx="7.990303"
|
||||
id="path844"
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.90481776;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
|
||||
<path
|
||||
sodipodi:nodetypes="scsssscsccccczzcccccssssccsscs"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path843"
|
||||
d="m 2.3519709,4.2557871 c -0.3126291,0 -0.4819578,0.1287194 -0.5322266,0.4028321 -0.053173,0.2899914 0.1062609,0.5159057 0.4370117,0.6274414 1.420521,0.4790277 2.4256503,0.6675279 3.8410483,0.9800416 0.327839,0.072385 0.6900295,0.2893751 0.6520998,1.0948483 C 6.6985575,8.451345 6.6372144,9.7041167 6.2631031,11.323353 6.0397526,12.290062 5.6782112,13.622766 5.4305838,14.3922 5.3416728,14.668443 5.281658,14.922355 5.281658,15.031849 c 0,0.08257 0.053443,0.249642 0.097656,0.307617 0.023823,0.03125 0.075039,0.07397 0.1147462,0.09522 0.062879,0.03361 0.096262,0.03787 0.2612304,0.03663 0.3361373,-0.0026 0.4608113,-0.08245 0.6665037,-0.429687 0.4838657,-0.939315 0.7378785,-2.132191 0.9402993,-3.014266 0.092189,-0.517235 0.2624476,-1.66347 0.6710287,-1.66347 0.4085811,0 0.4979093,0.95008 0.6812062,1.687228 0.1832969,0.737148 0.6122738,2.295202 0.7738717,2.704862 0.2137476,0.54186 0.5742238,0.836985 0.8764648,0.717774 0.03316,-0.01301 0.116937,-0.04526 0.187989,-0.0708 0.147435,-0.053 0.186715,-0.07824 0.219726,-0.156249 0.0655,-0.154793 -0.01013,-0.454047 -0.349121,-1.41114 C 9.7721847,11.597192 9.2651806,9.3990255 9.3334308,7.2974743 9.3630343,6.3859259 9.6837054,6.305369 10.075725,6.2075087 c 1.17285,-0.2927798 2.00228,-0.379973 3.387085,-0.8579717 0.468513,-0.1617184 0.727539,-0.2608264 0.727539,-0.5590819 0,-0.2554049 -0.153084,-0.4346541 -0.437011,-0.5102538 -0.116851,-0.031101 -0.318383,-0.028905 -0.632326,0.00243 -1.085189,0.10834 -2.939683,0.5153868 -4.0234365,0.6710819 -0.529944,0.076133 -1.7229392,0.094015 -2.2729489,0 C 5.6763224,4.7574297 4.1363176,4.4147025 2.9061699,4.2997326 2.6560099,4.2763537 2.4068766,4.2557871 2.3519709,4.2557871 Z"
|
||||
style="fill:#ffffff;stroke-width:0.9048177" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 65 KiB |
|
After Width: | Height: | Size: 65 KiB |
|
After Width: | Height: | Size: 30 KiB |