Compare commits
1 Commits
refactor/g
...
feature/ne
Author | SHA1 | Date | |
---|---|---|---|
![]() |
f368660cf2 |
@@ -1,542 +0,0 @@
|
|||||||
# CircleCI configuration to build GDevelop app running
|
|
||||||
# on the Electron runtime (newIDE/electron-app) for macOS and Linux.
|
|
||||||
# For Windows, see the appveyor.yml file.
|
|
||||||
|
|
||||||
# This also builds GDevelop.js and store it on a S3 so it can be used to run
|
|
||||||
# GDevelop without building it from scratch.
|
|
||||||
|
|
||||||
# Note that these CircleCI builds/tests are not launched on Pull Requests from forks,
|
|
||||||
# to avoid sharing secrets.
|
|
||||||
|
|
||||||
version: 2.1
|
|
||||||
orbs:
|
|
||||||
aws-cli: circleci/aws-cli@2.0.6
|
|
||||||
macos: circleci/macos@2.5.1 # For Rosetta (see below)
|
|
||||||
node: circleci/node@5.2.0 # For a recent npm version (see below)
|
|
||||||
win: circleci/windows@5.1.0
|
|
||||||
jobs:
|
|
||||||
# Build the **entire** app for macOS (including the GDevelop.js library).
|
|
||||||
build-macos:
|
|
||||||
macos:
|
|
||||||
xcode: 16.4.0
|
|
||||||
resource_class: m4pro.medium
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
# Install Rosetta for AWS CLI and disable TSO to speed up S3 uploads (https://support.circleci.com/hc/en-us/articles/19334402064027-Troubleshooting-slow-uploads-to-S3-for-jobs-using-an-m1-macOS-resource-class)
|
|
||||||
- macos/install-rosetta
|
|
||||||
# - run: sudo sysctl net.inet.tcp.tso=0
|
|
||||||
|
|
||||||
# Install a recent version of npm to workaround a notarization issue because of a symlink made by npm: https://github.com/electron-userland/electron-builder/issues/7755
|
|
||||||
# Node.js v20.14.0 comes with npm v10.7.0.
|
|
||||||
- node/install:
|
|
||||||
node-version: "20.14.0"
|
|
||||||
|
|
||||||
# System dependencies (for Emscripten and upload)
|
|
||||||
- run:
|
|
||||||
name: Install dependencies for Emscripten
|
|
||||||
command: brew install cmake
|
|
||||||
|
|
||||||
- run:
|
|
||||||
name: Install dependencies for AWS S3 upload
|
|
||||||
command: curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg" && sudo installer -pkg AWSCLIV2.pkg -target /
|
|
||||||
|
|
||||||
- run:
|
|
||||||
name: Install Emscripten (for GDevelop.js)
|
|
||||||
command: git clone https://github.com/juj/emsdk.git && cd emsdk && ./emsdk install 3.1.21 && ./emsdk activate 3.1.21 && cd ..
|
|
||||||
|
|
||||||
# GDevelop.js dependencies
|
|
||||||
- restore_cache:
|
|
||||||
keys:
|
|
||||||
- gd-macos-nodejs-dependencies-{{ checksum "newIDE/app/package.json" }}-{{ checksum "newIDE/electron-app/package.json" }}-{{ checksum "GDevelop.js/package.json" }}-{{ checksum "GDJS/package-lock.json" }}
|
|
||||||
# fallback to using the latest cache if no exact match is found
|
|
||||||
- gd-macos-nodejs-dependencies-
|
|
||||||
|
|
||||||
- run:
|
|
||||||
name: Install GDevelop.js dependencies
|
|
||||||
command: cd GDevelop.js && npm install && cd ..
|
|
||||||
|
|
||||||
# Build GDevelop.js (and run tests to ensure it works)
|
|
||||||
- run:
|
|
||||||
name: Build GDevelop.js
|
|
||||||
command: cd GDevelop.js && source ../emsdk/emsdk_env.sh && npm run build && npm test && cd ..
|
|
||||||
|
|
||||||
# GDevelop IDE dependencies (after building GDevelop.js to avoid downloading a pre-built version)
|
|
||||||
- run:
|
|
||||||
name: Install GDevelop IDE dependencies
|
|
||||||
command: cd newIDE/app && npm install && cd ../electron-app && npm install
|
|
||||||
|
|
||||||
- save_cache:
|
|
||||||
paths:
|
|
||||||
- newIDE/electron-app/node_modules
|
|
||||||
- newIDE/app/node_modules
|
|
||||||
- GDevelop.js/node_modules
|
|
||||||
- GDJS/node_modules
|
|
||||||
key: gd-macos-nodejs-dependencies-{{ checksum "newIDE/app/package.json" }}-{{ checksum "newIDE/electron-app/package.json" }}-{{ checksum "GDevelop.js/package.json" }}-{{ checksum "GDJS/package-lock.json" }}
|
|
||||||
|
|
||||||
# Build GDevelop IDE (seems like we need to allow Node.js to use more space than usual)
|
|
||||||
# Note: Code signing is done using CSC_LINK (see https://www.electron.build/code-signing).
|
|
||||||
# To test signing the code in the CI, add "export CSC_FOR_PULL_REQUEST=true && " before the command.
|
|
||||||
- run:
|
|
||||||
name: Build GDevelop IDE
|
|
||||||
command: export CSC_FOR_PULL_REQUEST=true && export NODE_OPTIONS="--max-old-space-size=7168" && cd newIDE/electron-app && CI=false npm run build -- --mac --publish=never
|
|
||||||
|
|
||||||
- run:
|
|
||||||
name: Clean dist folder to keep only installers/binaries.
|
|
||||||
command: rm -rf "newIDE/electron-app/dist/mac-universal/GDevelop 5.app"
|
|
||||||
|
|
||||||
# Upload artifacts (CircleCI)
|
|
||||||
- store_artifacts:
|
|
||||||
path: newIDE/electron-app/dist
|
|
||||||
|
|
||||||
|
|
||||||
# Upload artifacts (AWS)
|
|
||||||
- run:
|
|
||||||
name: Deploy to S3 (specific commit)
|
|
||||||
command: |
|
|
||||||
export PATH=~/.local/bin:$PATH
|
|
||||||
for i in 1 2 3 4 5 6 7; do
|
|
||||||
aws s3 sync newIDE/electron-app/dist s3://gdevelop-releases/$(git rev-parse --abbrev-ref HEAD)/commit/$(git rev-parse HEAD)/ && break
|
|
||||||
echo "Retry $i failed... retrying in 10 seconds"
|
|
||||||
sleep 10
|
|
||||||
done
|
|
||||||
if [ $i -eq 7 ]; then
|
|
||||||
echo "All retries for deployment failed!" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
- run:
|
|
||||||
name: Deploy to S3 (latest)
|
|
||||||
command: |
|
|
||||||
export PATH=~/.local/bin:$PATH
|
|
||||||
for i in 1 2 3 4 5 6 7; do
|
|
||||||
aws s3 sync newIDE/electron-app/dist s3://gdevelop-releases/$(git rev-parse --abbrev-ref HEAD)/latest/ && break
|
|
||||||
echo "Retry $i failed... retrying in 10 seconds"
|
|
||||||
sleep 10
|
|
||||||
done
|
|
||||||
if [ $i -eq 7 ]; then
|
|
||||||
echo "All retries for deployment failed!" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Build the app for Linux (using a pre-built GDevelop.js library).
|
|
||||||
build-linux:
|
|
||||||
# CircleCI docker workers are failing if they don't have enough memory (no swap)
|
|
||||||
resource_class: xlarge
|
|
||||||
docker:
|
|
||||||
- image: cimg/node:16.13
|
|
||||||
|
|
||||||
working_directory: ~/GDevelop
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- aws-cli/setup
|
|
||||||
|
|
||||||
# System dependencies (for Electron Builder)
|
|
||||||
- run:
|
|
||||||
name: Update system dependencies
|
|
||||||
command: sudo apt-get update
|
|
||||||
|
|
||||||
- run:
|
|
||||||
name: Install system dependencies for Electron builder
|
|
||||||
command: sudo apt install icnsutils && sudo apt install graphicsmagick && sudo apt install rsync
|
|
||||||
|
|
||||||
- restore_cache:
|
|
||||||
keys:
|
|
||||||
- gd-linux-nodejs-dependencies-{{ checksum "newIDE/app/package.json" }}-{{ checksum "newIDE/electron-app/package.json" }}-{{ checksum "GDevelop.js/package.json" }}-{{ checksum "GDJS/package-lock.json" }}
|
|
||||||
# fallback to using the latest cache if no exact match is found
|
|
||||||
- gd-linux-nodejs-dependencies-
|
|
||||||
|
|
||||||
# GDevelop IDE dependencies (using an exact version of GDevelop.js, built previously)
|
|
||||||
- run:
|
|
||||||
name: Install GDevelop IDE dependencies
|
|
||||||
command: export REQUIRES_EXACT_LIBGD_JS_VERSION=true && cd newIDE/app && npm install && cd ../electron-app && npm install
|
|
||||||
|
|
||||||
- save_cache:
|
|
||||||
paths:
|
|
||||||
- newIDE/electron-app/node_modules
|
|
||||||
- newIDE/app/node_modules
|
|
||||||
- GDevelop.js/node_modules
|
|
||||||
- GDJS/node_modules
|
|
||||||
key: gd-linux-nodejs-dependencies-{{ checksum "newIDE/app/package.json" }}-{{ checksum "newIDE/electron-app/package.json" }}-{{ checksum "GDevelop.js/package.json" }}-{{ checksum "GDJS/package-lock.json" }}
|
|
||||||
|
|
||||||
# Build GDevelop IDE (seems like we need to allow Node.js to use more space than usual)
|
|
||||||
- run:
|
|
||||||
name: Build GDevelop IDE
|
|
||||||
command: export NODE_OPTIONS="--max-old-space-size=7168" && cd newIDE/electron-app && npm run build -- --linux --publish=never
|
|
||||||
|
|
||||||
- run:
|
|
||||||
name: Clean dist folder to keep only installers/binaries.
|
|
||||||
command: rm -rf newIDE/electron-app/dist/linux-unpacked && rm -rf newIDE/electron-app/dist/linux-arm64-unpacked
|
|
||||||
|
|
||||||
# Upload artifacts (CircleCI)
|
|
||||||
- store_artifacts:
|
|
||||||
path: newIDE/electron-app/dist
|
|
||||||
|
|
||||||
# Upload artifacts (AWS)
|
|
||||||
- run:
|
|
||||||
name: Deploy to S3 (specific commit)
|
|
||||||
command: aws s3 sync newIDE/electron-app/dist s3://gdevelop-releases/$(git rev-parse --abbrev-ref HEAD)/commit/$(git rev-parse HEAD)/
|
|
||||||
- run:
|
|
||||||
name: Deploy to S3 (latest)
|
|
||||||
command: aws s3 sync newIDE/electron-app/dist s3://gdevelop-releases/$(git rev-parse --abbrev-ref HEAD)/latest/
|
|
||||||
|
|
||||||
# Build the WebAssembly library only (so that it's cached on a S3 and easy to re-use).
|
|
||||||
build-gdevelop_js-wasm-only:
|
|
||||||
resource_class: medium+ # Compilation time decrease linearly with the number of CPUs, but not linking (so "large" does not speedup total build time).
|
|
||||||
docker:
|
|
||||||
- image: cimg/node:16.13
|
|
||||||
|
|
||||||
working_directory: ~/GDevelop
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- aws-cli/setup
|
|
||||||
|
|
||||||
# System dependencies (for Emscripten)
|
|
||||||
- run:
|
|
||||||
name: Install dependencies for Emscripten
|
|
||||||
command: sudo apt-get update && sudo apt install cmake
|
|
||||||
|
|
||||||
- run:
|
|
||||||
name: Install Python3 dependencies for Emscripten
|
|
||||||
command: sudo apt install python-is-python3 python3-distutils -y
|
|
||||||
|
|
||||||
- run:
|
|
||||||
name: Install Emscripten (for GDevelop.js)
|
|
||||||
command: git clone https://github.com/juj/emsdk.git && cd emsdk && ./emsdk install 3.1.21 && ./emsdk activate 3.1.21 && cd ..
|
|
||||||
|
|
||||||
# GDevelop.js dependencies
|
|
||||||
- restore_cache:
|
|
||||||
keys:
|
|
||||||
- gdevelop.js-linux-nodejs-dependencies-{{ checksum "GDevelop.js/package-lock.json" }}
|
|
||||||
# fallback to using the latest cache if no exact match is found
|
|
||||||
- gdevelop.js-linux-nodejs-dependencies-
|
|
||||||
|
|
||||||
- run:
|
|
||||||
name: Install GDevelop.js dependencies and build it
|
|
||||||
command: cd GDevelop.js && npm install && cd ..
|
|
||||||
|
|
||||||
# Build GDevelop.js (and run tests to ensure it works)
|
|
||||||
- run:
|
|
||||||
name: Build GDevelop.js
|
|
||||||
# Use "--runInBand" as it's faster and avoid deadlocks on CircleCI Linux machines (probably because limited in processes number).
|
|
||||||
command: cd GDevelop.js && source ../emsdk/emsdk_env.sh && npm run build && npm test -- --runInBand && cd ..
|
|
||||||
|
|
||||||
- save_cache:
|
|
||||||
paths:
|
|
||||||
- GDevelop.js/node_modules
|
|
||||||
key: gdevelop.js-linux-nodejs-dependencies-{{ checksum "GDevelop.js/package-lock.json" }}
|
|
||||||
|
|
||||||
# Upload artifacts (CircleCI)
|
|
||||||
- store_artifacts:
|
|
||||||
path: Binaries/embuild/GDevelop.js
|
|
||||||
|
|
||||||
# Upload artifacts (AWS)
|
|
||||||
- run:
|
|
||||||
name: Deploy to S3 (specific commit)
|
|
||||||
command: aws s3 sync Binaries/embuild/GDevelop.js s3://gdevelop-gdevelop.js/$(git rev-parse --abbrev-ref HEAD)/commit/$(git rev-parse HEAD)/
|
|
||||||
- run:
|
|
||||||
name: Deploy to S3 (latest)
|
|
||||||
command: aws s3 sync Binaries/embuild/GDevelop.js s3://gdevelop-gdevelop.js/$(git rev-parse --abbrev-ref HEAD)/latest/
|
|
||||||
|
|
||||||
# Build the WebAssembly library with clang-tidy and memory sanitizers.
|
|
||||||
build-gdevelop_js-debug-sanitizers-and-extra-checks:
|
|
||||||
resource_class: xlarge # Total time decrease linearly with the number of CPUs.
|
|
||||||
docker:
|
|
||||||
- image: cimg/node:16.13
|
|
||||||
|
|
||||||
working_directory: ~/GDevelop
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- aws-cli/setup
|
|
||||||
|
|
||||||
# System dependencies (for Emscripten)
|
|
||||||
- run:
|
|
||||||
name: Install dependencies for Emscripten
|
|
||||||
command: sudo apt-get update && sudo apt install cmake
|
|
||||||
|
|
||||||
- run:
|
|
||||||
name: Install dependencies for clang-tidy v19
|
|
||||||
command: wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh && sudo ./llvm.sh 19 && sudo apt install clang-tidy-19
|
|
||||||
|
|
||||||
- run:
|
|
||||||
name: Install Python3 dependencies for Emscripten
|
|
||||||
command: sudo apt install python-is-python3 python3-distutils -y
|
|
||||||
|
|
||||||
- run:
|
|
||||||
name: Install Emscripten (for GDevelop.js)
|
|
||||||
command: git clone https://github.com/juj/emsdk.git && cd emsdk && ./emsdk install 3.1.21 && ./emsdk activate 3.1.21 && cd ..
|
|
||||||
|
|
||||||
# GDevelop.js dependencies
|
|
||||||
- restore_cache:
|
|
||||||
keys:
|
|
||||||
- gdevelop.js-linux-nodejs-dependencies-{{ checksum "GDevelop.js/package-lock.json" }}
|
|
||||||
# fallback to using the latest cache if no exact match is found
|
|
||||||
- gdevelop.js-linux-nodejs-dependencies-
|
|
||||||
|
|
||||||
- run:
|
|
||||||
name: Install GDevelop.js dependencies and build it
|
|
||||||
command: cd GDevelop.js && npm install && cd ..
|
|
||||||
|
|
||||||
# Build GDevelop.js
|
|
||||||
- run:
|
|
||||||
name: Build GDevelop.js ('debug-sanitizers' variant)
|
|
||||||
command: cd GDevelop.js && source ../emsdk/emsdk_env.sh && npm run build -- --variant=debug-sanitizers
|
|
||||||
|
|
||||||
- run:
|
|
||||||
name: Run clang-tidy
|
|
||||||
command: cd GDevelop.js && npm run lint
|
|
||||||
|
|
||||||
- run:
|
|
||||||
name: Run tests
|
|
||||||
command: cd GDevelop.js && npm run test -- --maxWorkers=4
|
|
||||||
|
|
||||||
# Upload artifacts (CircleCI)
|
|
||||||
- store_artifacts:
|
|
||||||
path: Binaries/embuild/GDevelop.js
|
|
||||||
|
|
||||||
# Upload artifacts (AWS)
|
|
||||||
- run:
|
|
||||||
name: Deploy to S3 (specific commit)
|
|
||||||
command: aws s3 sync Binaries/embuild/GDevelop.js s3://gdevelop-gdevelop.js/$(git rev-parse --abbrev-ref HEAD)/variant/debug-sanitizers/commit/$(git rev-parse HEAD)/
|
|
||||||
|
|
||||||
# Trigger AppVeyor build, which also does a Windows build (keep it for redundancy).
|
|
||||||
trigger-appveyor-windows-build:
|
|
||||||
docker:
|
|
||||||
- image: cimg/node:16.13
|
|
||||||
steps:
|
|
||||||
- run:
|
|
||||||
name: Trigger AppVeyor Windows build
|
|
||||||
command: |
|
|
||||||
curl -H "Content-Type: application/json" \
|
|
||||||
-H "Authorization: Bearer ${APPVEYOR_API_KEY}" \
|
|
||||||
--data "{
|
|
||||||
\"accountName\": \"4ian\",
|
|
||||||
\"projectSlug\": \"gdevelop\",
|
|
||||||
\"branch\": \"${CIRCLE_BRANCH}\"
|
|
||||||
}" \
|
|
||||||
-X POST https://ci.appveyor.com/api/builds
|
|
||||||
|
|
||||||
build-windows:
|
|
||||||
executor:
|
|
||||||
name: win/default
|
|
||||||
size: medium
|
|
||||||
working_directory: /home/circleci/project
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- run:
|
|
||||||
# See https://www.ssl.com/how-to/how-to-integrate-esigner-cka-with-ci-cd-tools-for-automated-code-signing/
|
|
||||||
#
|
|
||||||
# This is necessary because of "signing to be FIPS-140 compliant". See
|
|
||||||
# https://github.com/electron-userland/electron-builder/issues/6158
|
|
||||||
#
|
|
||||||
# Make sure to DISABLE "malware blocker" in SSL.com to avoid errors like:
|
|
||||||
# Error information: "Error: SignerSign() failed." (-2146893821/0x80090003)
|
|
||||||
name: Download and Unzip eSignerCKA Setup
|
|
||||||
command: |
|
|
||||||
|
|
||||||
Invoke-WebRequest -OutFile eSigner_CKA_1.0.3.zip "https://www.ssl.com/download/ssl-com-esigner-cka-1-0-3"
|
|
||||||
|
|
||||||
Expand-Archive -Force eSigner_CKA_1.0.3.zip
|
|
||||||
|
|
||||||
Remove-Item eSigner_CKA_1.0.3.zip
|
|
||||||
|
|
||||||
Move-Item -Destination "eSigner_CKA_1.0.3.exe" -Path "eSigner_CKA_*\*.exe"
|
|
||||||
- run:
|
|
||||||
name: Setup eSignerCKA in Silent Mode
|
|
||||||
command: |
|
|
||||||
|
|
||||||
mkdir -p "/home/circleci/project/eSignerCKA"
|
|
||||||
|
|
||||||
./eSigner_CKA_1.0.3.exe /CURRENTUSER /VERYSILENT /SUPPRESSMSGBOXES /DIR="/home/circleci/project/eSignerCKA" | Out-Null
|
|
||||||
- run:
|
|
||||||
name: Config Account Information on eSignerCKA
|
|
||||||
command: |
|
|
||||||
|
|
||||||
/home/circleci/project/eSignerCKA/eSignerCKATool.exe config -mode product -user "$env:ESIGNER_USER_NAME" -pass "$env:ESIGNER_USER_PASSWORD" -totp "$env:ESIGNER_USER_TOTP" -key "/home/circleci/project/eSignerCKA/master.key" -r
|
|
||||||
- run:
|
|
||||||
name: Load Certificate into Windows Store
|
|
||||||
command: |
|
|
||||||
|
|
||||||
/home/circleci/project/eSignerCKA/eSignerCKATool.exe unload
|
|
||||||
|
|
||||||
/home/circleci/project/eSignerCKA/eSignerCKATool.exe load
|
|
||||||
- run:
|
|
||||||
name: Select Certificate From Windows Store and Sign Sample File with SignTool
|
|
||||||
command: |
|
|
||||||
|
|
||||||
$CodeSigningCert = Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert | Select-Object -First 1
|
|
||||||
|
|
||||||
echo Certificate: $CodeSigningCert
|
|
||||||
|
|
||||||
- restore_cache:
|
|
||||||
name: Restore node_modules cache
|
|
||||||
keys:
|
|
||||||
- v1-win-node-{{ checksum "newIDE/app/package-lock.json" }}-{{ checksum "newIDE/electron-app/package-lock.json" }}-{{ checksum "GDJS/package-lock.json" }}
|
|
||||||
- v1-win-node-
|
|
||||||
|
|
||||||
- run:
|
|
||||||
name: Install dependencies
|
|
||||||
no_output_timeout: 25m
|
|
||||||
# Remove package-lock.json because they seems to cause the npm install to be stuck. We should try again after re-generating them.
|
|
||||||
# Also install setuptools as something requires distutils in electron-app, and it was removed in Python 3.12.
|
|
||||||
# setuptools will make distutils available again (but we should migrate our packages probably).
|
|
||||||
command: |
|
|
||||||
pip install setuptools
|
|
||||||
|
|
||||||
cd newIDE\app
|
|
||||||
|
|
||||||
npm -v
|
|
||||||
|
|
||||||
Remove-Item package-lock.json
|
|
||||||
|
|
||||||
$Env:REQUIRES_EXACT_LIBGD_JS_VERSION = "true"
|
|
||||||
|
|
||||||
npm install
|
|
||||||
|
|
||||||
cd ..\electron-app
|
|
||||||
|
|
||||||
Remove-Item package-lock.json
|
|
||||||
|
|
||||||
npm install
|
|
||||||
|
|
||||||
cd ..\..
|
|
||||||
|
|
||||||
- save_cache:
|
|
||||||
name: Save node_modules cache
|
|
||||||
key: v1-win-node-{{ checksum "newIDE/app/package-lock.json" }}-{{ checksum "newIDE/electron-app/package-lock.json" }}-{{ checksum "GDJS/package-lock.json" }}
|
|
||||||
paths:
|
|
||||||
- newIDE/app/node_modules
|
|
||||||
- newIDE/electron-app/node_modules
|
|
||||||
- GDJS/node_modules
|
|
||||||
|
|
||||||
- run:
|
|
||||||
name: Build NSIS executable (with code signing)
|
|
||||||
command: |
|
|
||||||
cd newIDE\electron-app
|
|
||||||
|
|
||||||
$CodeSigningCert = Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert | Select-Object -First 1
|
|
||||||
|
|
||||||
echo Certificate: $CodeSigningCert
|
|
||||||
|
|
||||||
# Use a custom signtool path because of the signtool.exe bundled withy electron-builder not working for some reason.
|
|
||||||
# Can also be found in versioned folders like "C:/Program Files (x86)/Windows Kits/10/bin/10.0.22000.0/x86/signtool.exe".
|
|
||||||
# or "C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x86\signtool.exe".
|
|
||||||
|
|
||||||
$Env:SIGNTOOL_PATH = "C:\Program Files (x86)\Windows Kits\10\App Certification Kit\signtool.exe"
|
|
||||||
|
|
||||||
# Extract thumbprint and subject name of the certificate (will be passed to electron-builder).
|
|
||||||
|
|
||||||
$Env:GD_SIGNTOOL_THUMBPRINT = $CodeSigningCert.Thumbprint
|
|
||||||
|
|
||||||
$Env:GD_SIGNTOOL_SUBJECT_NAME = ($CodeSigningCert.Subject -replace ", ?", "`n" | ConvertFrom-StringData).CN
|
|
||||||
|
|
||||||
# Build the nsis installer (signed: electron-builder will use SignTool.exe with the certificate)
|
|
||||||
|
|
||||||
node scripts/build.js --win nsis --publish=never
|
|
||||||
|
|
||||||
cd ..\..
|
|
||||||
- run:
|
|
||||||
name: Build AppX (without code signing)
|
|
||||||
# Don't sign the appx (it will be signed by the Microsoft Store).
|
|
||||||
command: |
|
|
||||||
cd newIDE\electron-app
|
|
||||||
|
|
||||||
# Build the appx (not signed). Ensure all variables used for code signing are empty.
|
|
||||||
|
|
||||||
$Env:GD_SIGNTOOL_THUMBPRINT = ''
|
|
||||||
|
|
||||||
$Env:GD_SIGNTOOL_SUBJECT_NAME = ''
|
|
||||||
|
|
||||||
$Env:CSC_LINK = ''
|
|
||||||
|
|
||||||
$Env:CSC_KEY_PASSWORD = ''
|
|
||||||
|
|
||||||
node scripts/build.js --skip-app-build --win appx --publish=never
|
|
||||||
|
|
||||||
cd ..\..
|
|
||||||
|
|
||||||
- run:
|
|
||||||
name: Clean binaries
|
|
||||||
shell: cmd.exe
|
|
||||||
command: |
|
|
||||||
rmdir /s /q newIDE\electron-app\dist\win-unpacked
|
|
||||||
|
|
||||||
- run:
|
|
||||||
name: Install AWS CLI
|
|
||||||
command: |
|
|
||||||
# Install the CLI for the current user
|
|
||||||
|
|
||||||
pip install --quiet --upgrade --user awscli
|
|
||||||
|
|
||||||
# Add the user-Scripts dir to PATH for this step and the next.
|
|
||||||
|
|
||||||
$binDir = (python -m site --user-base) + "\Scripts"
|
|
||||||
$Env:Path += ";$binDir"
|
|
||||||
|
|
||||||
# Sanity check:
|
|
||||||
aws --version
|
|
||||||
|
|
||||||
# Upload artifacts (S3)
|
|
||||||
- run:
|
|
||||||
name: Deploy to S3 (specific commit)
|
|
||||||
command: |
|
|
||||||
aws s3 sync newIDE\electron-app\dist "s3://gdevelop-releases/$Env:CIRCLE_BRANCH/commit/$Env:CIRCLE_SHA1/"
|
|
||||||
|
|
||||||
- run:
|
|
||||||
name: Deploy to S3 (latest)
|
|
||||||
command: |
|
|
||||||
aws s3 sync newIDE\electron-app\dist "s3://gdevelop-releases/$Env:CIRCLE_BRANCH/latest/"
|
|
||||||
|
|
||||||
# Upload artifacts (CircleCI)
|
|
||||||
- store_artifacts:
|
|
||||||
path: newIDE/electron-app/dist
|
|
||||||
|
|
||||||
workflows:
|
|
||||||
gdevelop_js-wasm-extra-checks:
|
|
||||||
jobs:
|
|
||||||
- build-gdevelop_js-debug-sanitizers-and-extra-checks:
|
|
||||||
# Extra checks are resource intensive so don't always run them.
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- master
|
|
||||||
- /experimental-build.*/
|
|
||||||
builds:
|
|
||||||
jobs:
|
|
||||||
- build-gdevelop_js-wasm-only
|
|
||||||
- build-macos:
|
|
||||||
# The macOS version builds by itself GDevelop.js
|
|
||||||
# (so we verify we can build it on macOS).
|
|
||||||
# requires:
|
|
||||||
# - build-gdevelop_js-wasm-only
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- master
|
|
||||||
- /experimental-build.*/
|
|
||||||
- build-linux:
|
|
||||||
requires:
|
|
||||||
- build-gdevelop_js-wasm-only
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- master
|
|
||||||
- /experimental-build.*/
|
|
||||||
- build-windows:
|
|
||||||
requires:
|
|
||||||
- build-gdevelop_js-wasm-only
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- master
|
|
||||||
- /experimental-build.*/
|
|
||||||
- trigger-appveyor-windows-build:
|
|
||||||
requires:
|
|
||||||
- build-gdevelop_js-wasm-only
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- master
|
|
||||||
- /experimental-build.*/
|
|
@@ -1,4 +0,0 @@
|
|||||||
Checks: 'clang-diagnostic-*,clang-analyzer-*,cppcoreguidelines-*,-cppcoreguidelines-explicit-virtual-functions,-cppcoreguidelines-avoid-const-or-ref-data-members,-cppcoreguidelines-special-member-functions,-cppcoreguidelines-avoid-magic-numbers,-cppcoreguidelines-non-private-member-variables-in-classes,-cppcoreguidelines-owning-memory,-cppcoreguidelines-virtual-class-destructor,-clang-analyzer-optin.performance.Padding,-cppcoreguidelines-narrowing-conversions'
|
|
||||||
WarningsAsErrors: 'cppcoreguidelines-pro-type-member-init, clang-analyzer-optin.cplusplus.UninitializedObject'
|
|
||||||
HeaderFilterRegex: '.*'
|
|
||||||
FormatStyle: none
|
|
@@ -5,13 +5,22 @@
|
|||||||
-DGD_IDE_ONLY
|
-DGD_IDE_ONLY
|
||||||
-DMACOS
|
-DMACOS
|
||||||
-DRELEASE
|
-DRELEASE
|
||||||
|
-DWXUSINGDLL
|
||||||
-D_FILE_OFFSET_BITS=64
|
-D_FILE_OFFSET_BITS=64
|
||||||
|
-D__WXMAC__
|
||||||
|
-D__WXOSX_COCOA__
|
||||||
|
-D__WXOSX__
|
||||||
|
-DwxDEBUG_LEVEL=0
|
||||||
-D_WCHAR_H_CPLUSPLUS_98_CONFORMANCE_
|
-D_WCHAR_H_CPLUSPLUS_98_CONFORMANCE_
|
||||||
-Wno-potentially-evaluated-expression
|
-Wno-potentially-evaluated-expression
|
||||||
-std=gnu++11
|
-std=gnu++11
|
||||||
|
-I/usr/local/Cellar/wxmac/3.0.2/include/wx-3.0
|
||||||
-DNDEBUG
|
-DNDEBUG
|
||||||
-fPIC
|
-fPIC
|
||||||
-I./ExtLibs/SFML/include
|
-I/Users/florian/Projects/F/GD/ExtLibs/SFML/include
|
||||||
-I./Core
|
-I/Users/florian/Projects/F/GD/Core
|
||||||
-I./GDJS/.
|
-I/usr/local/Cellar/wxmac/3.0.2/lib/wx/include/osx_cocoa-unicode-3.0
|
||||||
-F./ExtLibs/SFML/extlibs/libs-osx/Frameworks
|
-I/usr/local/Cellar/wxmac/3.0.2/include/wx-3.0
|
||||||
|
-I/Users/florian/Projects/F/GD/GDCpp/.
|
||||||
|
-I/Users/florian/Projects/F/GD/GDJS/.
|
||||||
|
-F/Users/florian/Projects/F/GD/ExtLibs/SFML/extlibs/libs-osx/Frameworks
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
{BasedOnStyle: Google, BinPackParameters: false, BinPackArguments: false}
|
|
@@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"image": "mcr.microsoft.com/devcontainers/universal:2",
|
|
||||||
"onCreateCommand": "cd newIDE/app && npm install && cd ../electron-app && npm install",
|
|
||||||
"forwardPorts": [3000],
|
|
||||||
"customizations": {
|
|
||||||
"vscode": {
|
|
||||||
"extensions": [
|
|
||||||
"esbenp.prettier-vscode",
|
|
||||||
"ms-vscode.cpptools",
|
|
||||||
"flowtype.flow-for-vscode"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
24
.eslintrc
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"globals": {
|
||||||
|
"angular": false,
|
||||||
|
"require": false,
|
||||||
|
"console": false,
|
||||||
|
"gd" : true,
|
||||||
|
"module" : true,
|
||||||
|
"process": false,
|
||||||
|
"describe": false,
|
||||||
|
"expect": false,
|
||||||
|
"it": false,
|
||||||
|
"after": false,
|
||||||
|
"gdjs": true
|
||||||
|
},
|
||||||
|
"rules": {
|
||||||
|
"quotes": 0,
|
||||||
|
"global-strict": 0,
|
||||||
|
"no-console": 0,
|
||||||
|
"curly": 0,
|
||||||
|
"no-redeclare": 0,
|
||||||
|
"no-underscore-dangle": 0,
|
||||||
|
"strict": 0
|
||||||
|
}
|
||||||
|
}
|
12
.gitattributes
vendored
@@ -1,12 +0,0 @@
|
|||||||
Core/GDCore/Serialization/rapidjson/rapidjson.h/* linguist-vendored
|
|
||||||
Extensions/ParticleSystem/SPARK/* linguist-vendored
|
|
||||||
Extensions/PhysicsBehavior/Box2D/* linguist-vendored
|
|
||||||
Extensions/PhysicsBehavior/box2djs/* linguist-vendored
|
|
||||||
Extensions/Physics2Behavior/box2d.js linguist-vendored
|
|
||||||
Extensions/Physics3DBehavior/*.wasm-compat.js linguist-vendored
|
|
||||||
Extensions/BBText/pixi-multistyle-text/* linguist-vendored
|
|
||||||
Extensions/P2P/A_peer.js linguist-vendored
|
|
||||||
Extensions/Multiplayer/peer.js linguist-vendored
|
|
||||||
Extensions/Shopify/shopify-buy.umd.polyfilled.min.js linguist-vendored
|
|
||||||
Extensions/TileMap/pako/* linguist-vendored
|
|
||||||
Extensions/TileMap/pixi-tilemap/* linguist-vendored
|
|
2
.github/CODEOWNERS
vendored
@@ -1,2 +0,0 @@
|
|||||||
* @4ian
|
|
||||||
Extensions/Firebase @arthuro555
|
|
@@ -1,19 +0,0 @@
|
|||||||
---
|
|
||||||
name: "📦 Asset Store submission"
|
|
||||||
about: Submit a free asset pack for the GDevelop Asset Store.
|
|
||||||
title: ''
|
|
||||||
labels: "📦 Asset Store submission"
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
BEFORE opening a new submission, please make sure that you:
|
|
||||||
|
|
||||||
- You have packaged the asset pack according [these rules](https://wiki.gdevelop.io/gdevelop5/community/contribute-to-the-assets-store). Otherwise, your package may be rejected or we will ask you to do the changes.
|
|
||||||
|
|
||||||
## Description
|
|
||||||
|
|
||||||
- License:
|
|
||||||
- Author:
|
|
||||||
- Link to the original website:
|
|
||||||
- Zip file:
|
|
37
.github/ISSUE_TEMPLATE/--automatic-crash.yml
vendored
@@ -1,37 +0,0 @@
|
|||||||
name: 💥 Automatic crash report
|
|
||||||
description: Do not use this template for bug reports. This template is only for automatic crash reports.
|
|
||||||
body:
|
|
||||||
- type: textarea
|
|
||||||
id: description
|
|
||||||
attributes:
|
|
||||||
label: Describe what you were doing when the crash happened
|
|
||||||
description: If applicable, add screenshots to help explain your problem.
|
|
||||||
placeholder: |
|
|
||||||
1. Went to '...'
|
|
||||||
2. Clicked on '...'
|
|
||||||
3. Scrolled down to '...'
|
|
||||||
4. Saw error
|
|
||||||
- type: input
|
|
||||||
id: gdevelop_version
|
|
||||||
attributes:
|
|
||||||
label: GDevelop version
|
|
||||||
description: |
|
|
||||||
The version of GDevelop used. Leave the prefilled value.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: textarea
|
|
||||||
id: platform_info
|
|
||||||
attributes:
|
|
||||||
label: Platform info
|
|
||||||
description: |
|
|
||||||
The platform you are using GDevelop on. Leave the prefilled value.
|
|
||||||
- type: textarea
|
|
||||||
id: error_stack
|
|
||||||
attributes:
|
|
||||||
label: Additional error context
|
|
||||||
description: Additonal context about the problem. Leave the prefilled value.
|
|
||||||
- type: textarea
|
|
||||||
id: component_stack
|
|
||||||
attributes:
|
|
||||||
label: Additional component context
|
|
||||||
description: Additonal context about the problem. Leave the prefilled value.
|
|
78
.github/ISSUE_TEMPLATE/--bug-report.yml
vendored
@@ -1,78 +0,0 @@
|
|||||||
name: 🐛Bug report
|
|
||||||
description: Create a bug report about GDevelop or the game engine
|
|
||||||
body:
|
|
||||||
- type: checkboxes
|
|
||||||
id: searched_issues
|
|
||||||
attributes:
|
|
||||||
label: Is there an existing issue for this?
|
|
||||||
options:
|
|
||||||
- label: I have searched the [existing issues](https://github.com/4ian/GDevelop/issues)
|
|
||||||
required: true
|
|
||||||
- type: textarea
|
|
||||||
id: description
|
|
||||||
attributes:
|
|
||||||
label: Describe the bug
|
|
||||||
description: A clear and concise description of what the bug is.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: textarea
|
|
||||||
id: reproduction_steps
|
|
||||||
attributes:
|
|
||||||
label: Steps to reproduce
|
|
||||||
description: |
|
|
||||||
* Please include a link to a game if possible!
|
|
||||||
* If applicable, add screenshots to help explain your problem.
|
|
||||||
placeholder: |
|
|
||||||
1. Go to '...'
|
|
||||||
2. Click on '...'
|
|
||||||
3. Scroll down to '...'
|
|
||||||
4. See error
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: dropdown
|
|
||||||
id: platform
|
|
||||||
attributes:
|
|
||||||
label: GDevelop platform
|
|
||||||
description: Which platform of GDevelop are you using?
|
|
||||||
multiple: true
|
|
||||||
options:
|
|
||||||
- Desktop
|
|
||||||
- Web
|
|
||||||
- Mobile
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: input
|
|
||||||
id: gdevelop_version
|
|
||||||
attributes:
|
|
||||||
label: GDevelop version
|
|
||||||
description: |
|
|
||||||
Which version of GDevelop are you using?
|
|
||||||
Take a look here: [Editor Home - About GDevelop - "This version of GDevelop is: ~~~"]
|
|
||||||
placeholder: 5.1.159? 5.1.160?
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: textarea
|
|
||||||
id: platform_info
|
|
||||||
attributes:
|
|
||||||
label: Platform info
|
|
||||||
value: |
|
|
||||||
<details>
|
|
||||||
|
|
||||||
*OS (e.g. Windows, Linux, macOS, Android, iOS)*
|
|
||||||
>
|
|
||||||
|
|
||||||
*OS Version (e.g. Windows 10, macOS 10.15)*
|
|
||||||
>
|
|
||||||
|
|
||||||
*Browser(For Web) (e.g. Chrome, Firefox, Safari)*
|
|
||||||
>
|
|
||||||
|
|
||||||
*Device(For Mobile) (e.g. iPhone 12, Samsung Galaxy S21)*
|
|
||||||
>
|
|
||||||
|
|
||||||
</details>
|
|
||||||
- type: textarea
|
|
||||||
id: additional_context
|
|
||||||
attributes:
|
|
||||||
label: Additional context
|
|
||||||
description: Add any other context about the problem here.
|
|
35
.github/ISSUE_TEMPLATE/--feature-request.md
vendored
@@ -1,35 +0,0 @@
|
|||||||
---
|
|
||||||
name: "\U0001F4A1Feature request"
|
|
||||||
about: Suggest an idea for this project AFTER discussing it on Discord or Forum first.
|
|
||||||
We'll create a card for it on the roadmap.
|
|
||||||
title: ''
|
|
||||||
labels: "✨ enhancement"
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
BEFORE opening a new feature request, please make sure that you:
|
|
||||||
|
|
||||||
- Understand the implications of your feature with the help of [the Forum](https://forum.gdevelop.io/c/gdevelop-general/feature-requests/35), OR
|
|
||||||
- Peer-reviewed it with other users on Discord,
|
|
||||||
- Consider commenting on the [Feature Request Forum](https://forum.gdevelop.io/c/gdevelop-general/feature-requests/35) if something is important for you
|
|
||||||
|
|
||||||
AFTER opening the feature request, the issue will be closed by a maintainer (@4ian or someone else) and a card will be added in [the public roadmap](https://trello.com/b/qf0lM7k8/gdevelop-ideas-box) if it's relevant and does not exist yet :)
|
|
||||||
|
|
||||||
## Description
|
|
||||||
|
|
||||||
Is your feature request **related to a problem**? Please describe.
|
|
||||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
|
||||||
|
|
||||||
## Solution suggested
|
|
||||||
|
|
||||||
**Describe the solution**
|
|
||||||
A clear and concise description of what could be done.
|
|
||||||
|
|
||||||
Add any other context or screenshots about the feature request here.
|
|
||||||
|
|
||||||
Explain if you can help to implement the solution.
|
|
||||||
|
|
||||||
## Alternatives considered
|
|
||||||
|
|
||||||
A clear and concise description of any alternative solutions or features you've considered.
|
|
17
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -1,17 +0,0 @@
|
|||||||
blank_issues_enabled: false
|
|
||||||
contact_links:
|
|
||||||
- name: GDevelop Discord
|
|
||||||
url: https://discord.gg/rjdYHvj
|
|
||||||
about: Discuss on the forum or on the Discord to get help creating a game or identifying a bug.
|
|
||||||
- name: GDevelop Forums
|
|
||||||
url: https://forum.gdevelop.io
|
|
||||||
about: You can also discuss game creation, new feature requests and bugs on the forum.
|
|
||||||
- name: GDevelop Roadmap
|
|
||||||
url: https://trello.com/b/qf0lM7k8/gdevelop-roadmap
|
|
||||||
about: Look at the roadmap and vote on features that you want to see in GDevelop.
|
|
||||||
- name: Submit a new game example that you created
|
|
||||||
url: https://github.com/GDevelopApp/GDevelop-examples/issues/new/choose
|
|
||||||
about: You can submit a game that you made to be added to examples in the "GDevelop-examples" repository
|
|
||||||
- name: Submit a new game extension that you created
|
|
||||||
url: https://github.com/4ian/GDevelop-extensions/issues/new/choose
|
|
||||||
about: You can submit an extension that you made in the "GDevelop-extensions" repository
|
|
15
.github/stale.yml
vendored
@@ -1,15 +0,0 @@
|
|||||||
# Automatically close issues with certain tags indicating that we need more information,
|
|
||||||
# after some days have passed.
|
|
||||||
|
|
||||||
daysUntilStale: 20
|
|
||||||
daysUntilClose: 7
|
|
||||||
|
|
||||||
# Only do this on tags implying we need more information:
|
|
||||||
onlyLabels: ["Need a game/precise steps to reproduce the issue","👋 Needs confirmation/testing"]
|
|
||||||
only: issues
|
|
||||||
|
|
||||||
markComment: >
|
|
||||||
This issue seems to be stale: it needs additional information but it has not had
|
|
||||||
recent activity. It will be closed in 7 days if no further activity occurs. Thank you
|
|
||||||
for your contributions.
|
|
||||||
|
|
71
.github/workflows/build-storybook.yml
vendored
@@ -1,71 +0,0 @@
|
|||||||
# GitHub Action to build the Storybook of the editor and publish it for testing.
|
|
||||||
#
|
|
||||||
# Note that only the Storybook is built and GDevelop.js is not rebuilt (for speed concerns),
|
|
||||||
# so changes in the C++ source could not be reflected if the CI run by Travis-CI
|
|
||||||
# did not upload a freshly built GDevelop.js.
|
|
||||||
|
|
||||||
name: Build Storybook
|
|
||||||
|
|
||||||
on:
|
|
||||||
# Launch on all commits.
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- "**"
|
|
||||||
tags-ignore:
|
|
||||||
- "**" # Don't run on new tags
|
|
||||||
# Allows to run this workflow manually from the Actions tab,
|
|
||||||
# to publish on Chromatic (not done by default).
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-storybook:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
fetch-depth: 50
|
|
||||||
|
|
||||||
- uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: 16
|
|
||||||
cache: "npm"
|
|
||||||
cache-dependency-path: "newIDE/app/package-lock.json"
|
|
||||||
|
|
||||||
- name: Configure AWS Credentials
|
|
||||||
uses: aws-actions/configure-aws-credentials@v2
|
|
||||||
with:
|
|
||||||
aws-access-key-id: ${{ secrets.BUILD_STORYBOOK_AWS_ACCESS_KEY_ID }}
|
|
||||||
aws-secret-access-key: ${{ secrets.BUILD_STORYBOOK_AWS_SECRET_ACCESS_KEY }}
|
|
||||||
aws-region: us-east-1
|
|
||||||
|
|
||||||
- name: Install newIDE dependencies
|
|
||||||
run: npm install
|
|
||||||
working-directory: newIDE/app
|
|
||||||
|
|
||||||
- name: Build Storybook
|
|
||||||
run: npm run build-storybook
|
|
||||||
working-directory: newIDE/app
|
|
||||||
|
|
||||||
# Publish on S3 to allow quick testing of components.
|
|
||||||
- name: Publish Storybook to S3 bucket (specific commit)
|
|
||||||
run: aws s3 sync ./build-storybook/ s3://gdevelop-storybook/$(git rev-parse --abbrev-ref HEAD)/commit/$(git rev-parse HEAD)/ --delete
|
|
||||||
working-directory: newIDE/app
|
|
||||||
|
|
||||||
- name: Publish Storybook to S3 bucket (latest)
|
|
||||||
run: aws s3 sync ./build-storybook/ s3://gdevelop-storybook/$(git rev-parse --abbrev-ref HEAD)/latest/ --delete
|
|
||||||
working-directory: newIDE/app
|
|
||||||
|
|
||||||
- name: Log urls to the Storybook
|
|
||||||
run: |
|
|
||||||
echo "Find the latest Storybook for this branch on https://gdevelop-storybook.s3.amazonaws.com/$(git rev-parse --abbrev-ref HEAD)/latest/index.html"
|
|
||||||
echo "Find the Storybook for this commit on https://gdevelop-storybook.s3.amazonaws.com/$(git rev-parse --abbrev-ref HEAD)/commit/$(git rev-parse HEAD)/index.html"
|
|
||||||
|
|
||||||
# Publish on Chromatic, only when manually launched (too costly to run on every commit).
|
|
||||||
- name: Publish Storybook to Chromatic
|
|
||||||
if: github.event_name == 'workflow_dispatch'
|
|
||||||
uses: chromaui/action@v1
|
|
||||||
with:
|
|
||||||
workingDir: newIDE/app
|
|
||||||
storybookBuildDir: "build-storybook"
|
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
|
|
46
.github/workflows/extract-translations.yml
vendored
@@ -1,46 +0,0 @@
|
|||||||
# GitHub Action to extract translations and (later) upload them to Crowdin.
|
|
||||||
|
|
||||||
name: Extract translations
|
|
||||||
on:
|
|
||||||
# Execute for all commits (to ensure translations extraction works)
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- "**"
|
|
||||||
tags-ignore:
|
|
||||||
- "**" # Don't run on new tags
|
|
||||||
# Allows to run this workflow manually from the Actions tab.
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
extract-translations:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: 16
|
|
||||||
cache: "npm"
|
|
||||||
cache-dependency-path: "newIDE/app/package-lock.json"
|
|
||||||
|
|
||||||
- name: Install gettext
|
|
||||||
run: sudo apt update && sudo apt install gettext -y
|
|
||||||
|
|
||||||
- name: Install newIDE dependencies
|
|
||||||
run: npm ci
|
|
||||||
working-directory: newIDE/app
|
|
||||||
|
|
||||||
- name: Extract translations
|
|
||||||
run: npm run extract-all-translations
|
|
||||||
working-directory: newIDE/app
|
|
||||||
|
|
||||||
# Only upload on Crowdin for the master branch
|
|
||||||
- name: Install Crowdin CLI
|
|
||||||
if: github.ref == 'refs/heads/master'
|
|
||||||
run: npm i -g @crowdin/cli
|
|
||||||
|
|
||||||
- name: Upload translations to Crowdin
|
|
||||||
run: crowdin upload sources
|
|
||||||
if: github.ref == 'refs/heads/master'
|
|
||||||
env:
|
|
||||||
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
|
|
||||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
|
22
.github/workflows/gdcore-tools-hook.yml
vendored
@@ -1,22 +0,0 @@
|
|||||||
# This worflow notifies arthuro555's gdcore-tools repository when a new release is published.
|
|
||||||
#
|
|
||||||
# This is used to allow gdcore-tools, a library to use GDCore outside of GDevelop,
|
|
||||||
# to attempt to automatically build, test, and publish a release for the new
|
|
||||||
# GDevelop version.
|
|
||||||
name: Trigger gdcore-tools pipeline
|
|
||||||
|
|
||||||
on:
|
|
||||||
release:
|
|
||||||
types: [published]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
dispatch-event:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Repository Dispatch
|
|
||||||
uses: peter-evans/repository-dispatch@v3
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.GDCORE_TOOLS_PAT }}
|
|
||||||
repository: arthuro555/gdcore-tools
|
|
||||||
event-type: gdevelop-release
|
|
||||||
client-payload: '{"release": ${{ toJson(github.event.release) }}}'
|
|
19
.github/workflows/issues.yml
vendored
@@ -1,19 +0,0 @@
|
|||||||
name: GDevelop Issues automatic workflow
|
|
||||||
on:
|
|
||||||
issues:
|
|
||||||
types: [opened]
|
|
||||||
jobs:
|
|
||||||
autocomment:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
if: contains(github.event.issue.body, 'The node to be removed is not a child of this node')
|
|
||||||
steps:
|
|
||||||
- name: Autocomment indications on bug if it looks like #3453
|
|
||||||
uses: peter-evans/create-or-update-comment@v3
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
issue-number: ${{ github.event.issue.number }}
|
|
||||||
body: |
|
|
||||||
Hi @${{ github.actor }}!
|
|
||||||
Thank you for taking the time to open an issue.
|
|
||||||
|
|
||||||
The solved issue #3453 mentioned a similar error, maybe it could help fix this new issue.
|
|
53
.github/workflows/pull-requests.yml
vendored
@@ -1,53 +0,0 @@
|
|||||||
name: GDevelop Issues automatic workflow
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
types:
|
|
||||||
- opened
|
|
||||||
- reopened
|
|
||||||
- synchronize
|
|
||||||
jobs:
|
|
||||||
read-locales-metadata:
|
|
||||||
if: github.event.pull_request.title == '[Auto PR] Update translations'
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
env:
|
|
||||||
COMMENT_TITLE: "Translation ratio changes"
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
- name: Read and format locales metadata
|
|
||||||
env:
|
|
||||||
BASE: ${{ github.event.pull_request.base.sha }}
|
|
||||||
HEAD: ${{ github.event.pull_request.head.sha }}
|
|
||||||
run: |
|
|
||||||
LANS=($(git diff $BASE...$HEAD -- newIDE/app/src/locales/LocalesMetadata.js | grep -E "^\s+\"languageName" | sed -E "s/^ *\"languageName\": \"//g" | sed -E "s/\",//g" | sed -E "s/ /_/g"))
|
|
||||||
ADDS=($(git diff $BASE...$HEAD -- newIDE/app/src/locales/LocalesMetadata.js | grep -E "^\+\s*\"translationRatio\"" | sed -E "s/^\+ *\"translationRatio\": //g"))
|
|
||||||
SUBS=($(git diff $BASE...$HEAD -- newIDE/app/src/locales/LocalesMetadata.js | grep -E "^\-\s*\"translationRatio\"" | sed -E "s/^\- *\"translationRatio\": //g"))
|
|
||||||
touch sumup.md
|
|
||||||
echo "## $COMMENT_TITLE" >> sumup.md
|
|
||||||
echo "" >> sumup.md
|
|
||||||
echo "| Language | Change |" >> sumup.md
|
|
||||||
echo "| --- | --- |" >> sumup.md
|
|
||||||
for index in ${!ADDS[@]}; do
|
|
||||||
DELTA=$(echo "scale=3; (${ADDS[index]} - ${SUBS[index]})*100/1" | bc)
|
|
||||||
if (( $(echo "$DELTA == 0" | bc -l) )); then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
LANGUAGE=${LANS[index]//_/ }
|
|
||||||
echo "| $LANGUAGE | $(printf "%1.3f" $DELTA) % |" >> sumup.md
|
|
||||||
done
|
|
||||||
- name: Find Comment
|
|
||||||
uses: peter-evans/find-comment@v2
|
|
||||||
id: fc
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
issue-number: ${{ github.event.number }}
|
|
||||||
body-includes: ${{ env.COMMENT_TITLE }}
|
|
||||||
- name: Autocomment pull request with sumup
|
|
||||||
uses: peter-evans/create-or-update-comment@v3
|
|
||||||
with:
|
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
issue-number: ${{ github.event.number }}
|
|
||||||
comment-id: ${{ steps.fc.outputs.comment-id }}
|
|
||||||
edit-mode: replace
|
|
||||||
body-path: "sumup.md"
|
|
@@ -1,47 +0,0 @@
|
|||||||
# GitHub Action to update extension translations.
|
|
||||||
# It copies the latest messages.js files from the GDevelop-extensions repository
|
|
||||||
# and opens a Pull Request with the changes on GDevelop's repository.
|
|
||||||
|
|
||||||
name: Update extension translations
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
tags-ignore:
|
|
||||||
- "**" # Don't run on new tags
|
|
||||||
workflow_dispatch: # Allows manual triggering from the Actions tab
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
update-extension-translations:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout current repository
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Clone GDevelop-extensions repository
|
|
||||||
run: git clone https://github.com/GDevelopApp/GDevelop-extensions.git /tmp/GDevelop-extensions
|
|
||||||
|
|
||||||
- name: Copy and rename translation files
|
|
||||||
run: |
|
|
||||||
mkdir -p newIDE/app/src/locales
|
|
||||||
for folder in /tmp/GDevelop-extensions/.translations/*; do
|
|
||||||
if [ -d "$folder" ]; then
|
|
||||||
lang=$(basename "$folder")
|
|
||||||
mkdir -p "newIDE/app/src/locales/$lang"
|
|
||||||
cp "$folder/messages.js" "newIDE/app/src/locales/$lang/extension-messages.js"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
cp /tmp/GDevelop-extensions/.translations/LocalesMetadata.js newIDE/app/src/locales/ExtensionLocalesMetadata.js
|
|
||||||
|
|
||||||
- name: Create Pull Request with updated translations
|
|
||||||
uses: peter-evans/create-pull-request@v6
|
|
||||||
with:
|
|
||||||
commit-message: Update extension translations [skip ci]
|
|
||||||
branch: chore/update-extension-translations
|
|
||||||
delete-branch: true
|
|
||||||
title: "[Auto PR] Update extension translations"
|
|
||||||
body: |
|
|
||||||
This updates the extension translations by copying the latest messages.js files from the GDevelop-extensions repository.
|
|
||||||
Each messages.js file is renamed to extension-messages.js and placed in the corresponding language folder under `newIDE/app/src/locales`.
|
|
||||||
|
|
||||||
Please review the changes carefully before merging.
|
|
70
.github/workflows/update-translations.yml
vendored
@@ -1,70 +0,0 @@
|
|||||||
# GitHub Action to update translations by downloading them from Crowdin,
|
|
||||||
# and open a Pull Request with the changes.
|
|
||||||
|
|
||||||
name: Update translations
|
|
||||||
on:
|
|
||||||
# Execute only on master
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
tags-ignore:
|
|
||||||
- "**" # Don't run on new tags
|
|
||||||
# Allows to run this workflow manually from the Actions tab.
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
update-translations:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: 20
|
|
||||||
cache: "npm"
|
|
||||||
cache-dependency-path: "newIDE/app/package-lock.json"
|
|
||||||
|
|
||||||
- name: Install gettext
|
|
||||||
run: sudo apt update && sudo apt install gettext -y
|
|
||||||
|
|
||||||
- name: Install newIDE dependencies
|
|
||||||
run: npm install
|
|
||||||
working-directory: newIDE/app
|
|
||||||
|
|
||||||
# We need to extract translations first to make sure all the source strings
|
|
||||||
# are included in the English catalogs. Otherwise, missing source strings
|
|
||||||
# with parameters (like "My name is {0}.") would be shown as-is when
|
|
||||||
# the app is built (but not in development - unclear why, LinguiJS issue?).
|
|
||||||
- name: Extract translations
|
|
||||||
run: npm run extract-all-translations
|
|
||||||
working-directory: newIDE/app
|
|
||||||
|
|
||||||
# (Build and) download the most recent translations (PO files) from Crowdin.
|
|
||||||
- name: Install Crowdin CLI
|
|
||||||
run: npm i -g @crowdin/cli
|
|
||||||
|
|
||||||
- name: Download new translations from Crowdin
|
|
||||||
run: crowdin download
|
|
||||||
env:
|
|
||||||
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
|
|
||||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
|
||||||
|
|
||||||
# Seems like the three letters code is not handled properly by LinguiJS?
|
|
||||||
# Do without this language while we find a solution.
|
|
||||||
- name: Remove catalogs not handled properly by LinguiJS compile command.
|
|
||||||
run: rm -rf newIDE/app/src/locales/pcm_NG/
|
|
||||||
|
|
||||||
- name: Compile translations into .js files that are read by LinguiJS
|
|
||||||
run: npm run compile-translations
|
|
||||||
working-directory: newIDE/app
|
|
||||||
|
|
||||||
- name: Create a Pull Request with the changes
|
|
||||||
uses: peter-evans/create-pull-request@v6
|
|
||||||
with:
|
|
||||||
commit-message: Update translations [skip ci]
|
|
||||||
branch: chore/update-translations
|
|
||||||
delete-branch: true
|
|
||||||
title: "[Auto PR] Update translations"
|
|
||||||
body: |
|
|
||||||
This updates the translations by downloading them from Crowdin and compiling them for usage by the app.
|
|
||||||
|
|
||||||
Please double check the values in `newIDE/app/src/locales/LocalesMetadata.js` to ensure the changes are sensible.
|
|
66
.gitignore
vendored
@@ -1,24 +1,73 @@
|
|||||||
/docs
|
/Core/GDCore/Tools/VersionPriv.h
|
||||||
/docs-wiki
|
/docs/GDJS Runtime Documentation
|
||||||
|
/docs/GDJS Documentation
|
||||||
|
/docs/GDCpp Documentation
|
||||||
|
/docs/GDCore Documentation
|
||||||
|
/ExtLibs/wxwidgets
|
||||||
|
/ExtLibs/wxWidgets
|
||||||
/ExtLibs/SFML
|
/ExtLibs/SFML
|
||||||
/ExtLibs/*.7z
|
/ExtLibs/*.7z
|
||||||
|
/scripts/Repository keys
|
||||||
/scripts/logs/*.txt
|
/scripts/logs/*.txt
|
||||||
/scripts/gdcore-gdcpp-gdjs-extensions-messages.pot
|
|
||||||
/Binaries/.build*
|
/Binaries/.build*
|
||||||
/Binaries/.embuild*
|
/Binaries/.embuild*
|
||||||
/Binaries/build*
|
/Binaries/build*
|
||||||
/Binaries/embuild*
|
/Binaries/embuild*
|
||||||
/emsdk
|
/Binaries/Releases/*.exe
|
||||||
|
/Binaries/Releases/**/*.7z
|
||||||
|
/Binaries/Releases/**/*.tar.bz2
|
||||||
|
/Binaries/Releases/**/*.tar.lzma
|
||||||
|
/Binaries/Releases/**/*.zip
|
||||||
|
/Binaries/Releases/**/*.deb
|
||||||
|
Binaries/Packaging/debian-source-package/gdevelop/
|
||||||
|
Binaries/Packaging/opensuse-build-service/gdevelop/
|
||||||
|
Binaries/Packaging/opensuse-build-service/final/
|
||||||
|
Binaries/Packaging/GDevelop.app
|
||||||
|
Binaries/Packaging/GDevelop.zip
|
||||||
|
Binaries/Packaging/GDevelop.pkg
|
||||||
|
Binaries/Packaging/logs
|
||||||
|
/GDevelop.js
|
||||||
|
*.depend
|
||||||
|
*.layout
|
||||||
|
*.xgdwe
|
||||||
|
*.xgdw
|
||||||
|
*.xgdle
|
||||||
|
*.xgdl
|
||||||
|
*.xgdme
|
||||||
|
*.xgdm
|
||||||
*.dll
|
*.dll
|
||||||
*.exe
|
*.exe
|
||||||
*.a
|
*.a
|
||||||
*.so
|
*.so
|
||||||
*.bc
|
*.bc
|
||||||
/Binaries/Output
|
*.debhelper.log
|
||||||
|
/Binaries/Output/Debug_Linux/**
|
||||||
|
/Binaries/Output/Release_Linux/**
|
||||||
|
/Binaries/Output/Debug_Darwin/**
|
||||||
|
/Binaries/Output/Release_Darwin/**
|
||||||
|
/Binaries/Output/Frameworks/
|
||||||
|
!/Binaries/Output/Release_Linux/StartGDevelop.sh
|
||||||
|
!/Binaries/Output/Release_Linux/CppPlatform/
|
||||||
|
/Binaries/**/MinGW32
|
||||||
|
/Binaries/**/CppPlatform/Runtime
|
||||||
|
/Binaries/**/CppPlatform/Sources
|
||||||
|
/Binaries/**/CppPlatform/include
|
||||||
|
/Binaries/**/CppPlatform/Extensions/include
|
||||||
|
/Binaries/**/JsPlatform/Runtime
|
||||||
|
/Binaries/**/JsPlatform/*.dll
|
||||||
|
/Binaries/**/JsPlatform/*.dll.a
|
||||||
|
/Binaries/Output/Release_Windows/newIDE
|
||||||
*.autosave
|
*.autosave
|
||||||
|
/Binaries/Output/libGD.js/Release
|
||||||
|
/Binaries/Output/libGD.js/Debug
|
||||||
|
/Binaries/Output/libGD.js/libGD.raw.js
|
||||||
|
!/GDCpp/scripts/bcp.exe
|
||||||
!/scripts/libgettextlib-0-17.dll
|
!/scripts/libgettextlib-0-17.dll
|
||||||
!/scripts/libgettextsrc-0-17.dll
|
!/scripts/libgettextsrc-0-17.dll
|
||||||
!/xgettext.exe
|
!/xgettext.exe
|
||||||
|
!/Binaries/Output/Release_Windows/locale/*.dll
|
||||||
|
!/Binaries/Output/Release_Windows/locale/msgcat.exe
|
||||||
|
!/Binaries/Output/Release_Windows/locale/msgfmt.exe
|
||||||
!/ExtLibs/curl.exe
|
!/ExtLibs/curl.exe
|
||||||
!/ExtLibs/7za.exe
|
!/ExtLibs/7za.exe
|
||||||
!/ExtLibs/SFML/extlibs/**/*.dll
|
!/ExtLibs/SFML/extlibs/**/*.dll
|
||||||
@@ -27,10 +76,3 @@
|
|||||||
**/.DS_Store
|
**/.DS_Store
|
||||||
**/node_modules/
|
**/node_modules/
|
||||||
.idea
|
.idea
|
||||||
.vscode/ipch
|
|
||||||
/newIDE/app/src/UI/Theme/**/*ThemeVariables.*
|
|
||||||
.DS_Store
|
|
||||||
.Spotlight-V100
|
|
||||||
.Trashes
|
|
||||||
Thumbs.db
|
|
||||||
.claude
|
|
||||||
|
25
.gitpod.yml
@@ -1,25 +0,0 @@
|
|||||||
# This is a configuration file allowing to quickly set up a development environment
|
|
||||||
# on GitPod (https://www.gitpod.io/).
|
|
||||||
# Also check GitHub codespaces if you're interested in working
|
|
||||||
# on a remote development server.
|
|
||||||
|
|
||||||
# This works well for:
|
|
||||||
# - The editor web-app, including the C++ classes.
|
|
||||||
# This is not yet adapted for:
|
|
||||||
# - Working on the game engine or extensions, as they can't be easily tested on the web-app.
|
|
||||||
# - Working on the desktop app (Electron).
|
|
||||||
|
|
||||||
tasks:
|
|
||||||
- name: Install dependencies for Emscripten and build GDevelop.js
|
|
||||||
init: |
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt install cmake python-is-python3 python3-distutils -y
|
|
||||||
git clone https://github.com/juj/emsdk.git && cd emsdk && ./emsdk install 3.1.21 && ./emsdk activate 3.1.21 && cd ..
|
|
||||||
cd GDevelop.js
|
|
||||||
npm install
|
|
||||||
source ../emsdk/emsdk_env.sh && npm run build -- --dev
|
|
||||||
cd ..
|
|
||||||
- name: Install GDevelop IDE dependencies
|
|
||||||
init: cd newIDE/app && npm install && cd ../electron-app && npm install
|
|
||||||
|
|
||||||
|
|
@@ -1,108 +0,0 @@
|
|||||||
version: v1.0
|
|
||||||
name: Fast tests (not building GDevelop.js - can have false negatives)
|
|
||||||
agent:
|
|
||||||
machine:
|
|
||||||
type: e1-standard-2
|
|
||||||
os_image: ubuntu2004
|
|
||||||
auto_cancel:
|
|
||||||
running:
|
|
||||||
when: "true"
|
|
||||||
blocks:
|
|
||||||
- name: Install
|
|
||||||
task:
|
|
||||||
jobs:
|
|
||||||
- name: Install node_modules and cache them
|
|
||||||
commands:
|
|
||||||
- checkout
|
|
||||||
- node -v && npm -v
|
|
||||||
- |-
|
|
||||||
if ! cache has_key newIDE-app-node_modules-$SEMAPHORE_GIT_BRANCH-revision-$(checksum newIDE/app/package-lock.json); then
|
|
||||||
cd newIDE/app
|
|
||||||
npm ci
|
|
||||||
cd ../..
|
|
||||||
cache store newIDE-app-node_modules-$SEMAPHORE_GIT_BRANCH-revision-$(checksum newIDE/app/package-lock.json) newIDE/app/node_modules
|
|
||||||
fi
|
|
||||||
- |-
|
|
||||||
if ! cache has_key GDJS-node_modules-$SEMAPHORE_GIT_BRANCH-revision-$(checksum GDJS/package-lock.json); then
|
|
||||||
cd GDJS
|
|
||||||
git checkout package-lock.json # Ensure no changes was made by newIDE post-install tasks.
|
|
||||||
npm ci
|
|
||||||
cd ..
|
|
||||||
cache store GDJS-node_modules-$SEMAPHORE_GIT_BRANCH-revision-$(checksum GDJS/package-lock.json) GDJS/node_modules
|
|
||||||
fi
|
|
||||||
- |-
|
|
||||||
if ! cache has_key GDJS-tests-node_modules-$SEMAPHORE_GIT_BRANCH-revision-$(checksum GDJS/tests/package-lock.json); then
|
|
||||||
cd GDJS/tests
|
|
||||||
npm ci
|
|
||||||
cd ../..
|
|
||||||
cache store GDJS-tests-node_modules-$SEMAPHORE_GIT_BRANCH-revision-$(checksum GDJS/tests/package-lock.json) GDJS/tests/node_modules
|
|
||||||
fi
|
|
||||||
dependencies: []
|
|
||||||
- name: Type checks
|
|
||||||
dependencies:
|
|
||||||
- Install
|
|
||||||
task:
|
|
||||||
jobs:
|
|
||||||
- name: newIDE typing
|
|
||||||
commands:
|
|
||||||
- checkout
|
|
||||||
- cache restore newIDE-app-node_modules-$SEMAPHORE_GIT_BRANCH-revision-$(checksum newIDE/app/package-lock.json)
|
|
||||||
- cache restore GDJS-node_modules-$SEMAPHORE_GIT_BRANCH-revision-$(checksum GDJS/package-lock.json)
|
|
||||||
- cd newIDE/app
|
|
||||||
- npm run postinstall
|
|
||||||
- npm run flow
|
|
||||||
- npm run check-script-types
|
|
||||||
- cd ../..
|
|
||||||
- name: GDJS typing and documentation generation
|
|
||||||
commands:
|
|
||||||
- checkout
|
|
||||||
- cache restore newIDE-app-node_modules-$SEMAPHORE_GIT_BRANCH-revision-$(checksum newIDE/app/package-lock.json)
|
|
||||||
- cache restore GDJS-node_modules-$SEMAPHORE_GIT_BRANCH-revision-$(checksum GDJS/package-lock.json)
|
|
||||||
- cache restore GDJS-tests-node_modules-$SEMAPHORE_GIT_BRANCH-revision-$(checksum GDJS/tests/package-lock.json)
|
|
||||||
- cd GDJS
|
|
||||||
- npm run check-types
|
|
||||||
- npm run generate-doc
|
|
||||||
- name: Auto formatting
|
|
||||||
dependencies:
|
|
||||||
- Install
|
|
||||||
task:
|
|
||||||
jobs:
|
|
||||||
- name: newIDE auto-formatting
|
|
||||||
commands:
|
|
||||||
- checkout
|
|
||||||
- cache restore newIDE-app-node_modules-$SEMAPHORE_GIT_BRANCH-revision-$(checksum newIDE/app/package-lock.json)
|
|
||||||
- cache restore GDJS-node_modules-$SEMAPHORE_GIT_BRANCH-revision-$(checksum GDJS/package-lock.json)
|
|
||||||
- cd newIDE/app
|
|
||||||
- npm run postinstall
|
|
||||||
- npm run check-format
|
|
||||||
- cd ../..
|
|
||||||
- name: GDJS auto-formatting
|
|
||||||
commands:
|
|
||||||
- checkout
|
|
||||||
- cache restore GDJS-node_modules-$SEMAPHORE_GIT_BRANCH-revision-$(checksum GDJS/package-lock.json)
|
|
||||||
- cd GDJS
|
|
||||||
- npm run check-format
|
|
||||||
- cd ..
|
|
||||||
- name: Tests
|
|
||||||
dependencies:
|
|
||||||
- Install
|
|
||||||
task:
|
|
||||||
jobs:
|
|
||||||
- name: newIDE tests
|
|
||||||
commands:
|
|
||||||
- checkout
|
|
||||||
- cache restore newIDE-app-node_modules-$SEMAPHORE_GIT_BRANCH-revision-$(checksum newIDE/app/package-lock.json)
|
|
||||||
- cache restore GDJS-node_modules-$SEMAPHORE_GIT_BRANCH-revision-$(checksum GDJS/package-lock.json)
|
|
||||||
- cd newIDE/app
|
|
||||||
- npm run postinstall
|
|
||||||
- npm run analyze-test-coverage
|
|
||||||
- cd ../..
|
|
||||||
- name: GDJS tests
|
|
||||||
commands:
|
|
||||||
- checkout
|
|
||||||
- cache restore GDJS-node_modules-$SEMAPHORE_GIT_BRANCH-revision-$(checksum GDJS/package-lock.json)
|
|
||||||
- cache restore GDJS-tests-node_modules-$SEMAPHORE_GIT_BRANCH-revision-$(checksum GDJS/tests/package-lock.json)
|
|
||||||
- cd GDJS
|
|
||||||
- npm run build
|
|
||||||
- npm run test
|
|
||||||
- cd ../..
|
|
103
.travis.yml
@@ -1,80 +1,69 @@
|
|||||||
# Travis CI configuration to build and run all tests
|
|
||||||
# (and typing/formatting) for the Core, newIDE, GDJS.
|
|
||||||
#
|
|
||||||
# See also Semaphore CI for quick tests (not building GDevelop.js, so
|
|
||||||
# faster but not always reliable).
|
|
||||||
|
|
||||||
language: cpp
|
language: cpp
|
||||||
sudo: false
|
sudo: false
|
||||||
compiler:
|
compiler:
|
||||||
|
- gcc
|
||||||
- clang
|
- clang
|
||||||
|
|
||||||
# Cache .npm folder for faster npm install
|
git:
|
||||||
cache:
|
depth: 999999
|
||||||
directories:
|
|
||||||
- $HOME/.npm
|
env:
|
||||||
|
global:
|
||||||
|
- GCC_VERSION="4.8"
|
||||||
|
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
sources:
|
sources:
|
||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
packages:
|
packages:
|
||||||
# Build dependencies:
|
#Build dependencies:
|
||||||
- cmake
|
- cmake
|
||||||
- p7zip-full
|
- p7zip-full
|
||||||
|
- g++-4.8
|
||||||
|
#SFML dependencies:
|
||||||
|
- libopenal-dev
|
||||||
|
- libjpeg-dev
|
||||||
|
- libglew-dev
|
||||||
|
- libudev-dev
|
||||||
|
- libxrandr-dev
|
||||||
|
- libsndfile1-dev
|
||||||
|
- libglu1-mesa-dev
|
||||||
|
- libfreetype6-dev
|
||||||
|
|
||||||
|
#Activate X Virtual Framebuffer to allow tests to
|
||||||
|
#use SFML.
|
||||||
before_install:
|
before_install:
|
||||||
# This workaround is required to avoid libstdc++ errors (Emscripten requires a recent version of libstdc++)
|
- "export DISPLAY=:99.0"
|
||||||
- wget -q -O libstdc++6 http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.12_amd64.deb
|
- "sh -e /etc/init.d/xvfb start"
|
||||||
- sudo dpkg --force-all -i libstdc++6
|
|
||||||
|
|
||||||
install:
|
install:
|
||||||
# Ensure we use a recent version of Node.js (and npm).
|
#Install newIDE tests dependencies
|
||||||
- nvm install v16 && nvm use v16
|
|
||||||
#Compile the tests only for GDCore
|
|
||||||
- mkdir .build-tests
|
|
||||||
- cd .build-tests
|
|
||||||
- cmake -DBUILD_GDJS=FALSE -DBUILD_TESTS=TRUE -DCMAKE_CXX_COMPILER=$(which $CXX) -DCMAKE_C_COMPILER=$(which $CC) ..
|
|
||||||
- make -j 4
|
|
||||||
- cd ..
|
|
||||||
# Install Emscripten (for GDevelop.js)
|
|
||||||
# Specify the tag for the core repository to avois breaking changes.
|
|
||||||
- git clone --depth 1 --branch 3.1.21 https://github.com/juj/emsdk.git
|
|
||||||
- cd emsdk && ./emsdk install 3.1.21 && ./emsdk activate 3.1.21 && cd ..
|
|
||||||
# Install GDevelop.js dependencies
|
|
||||||
- cd GDevelop.js && npm install && cd ..
|
|
||||||
# Build GDevelop.js
|
|
||||||
# (in a subshell to avoid Emscripten polluting the Node.js and npm version for the rest of the build)
|
|
||||||
- (set -e; cd GDevelop.js && source ../emsdk/emsdk_env.sh && npm run build && cd ..)
|
|
||||||
# Install newIDE tests dependencies
|
|
||||||
- npm -v
|
|
||||||
- cd newIDE/app && npm install
|
- cd newIDE/app && npm install
|
||||||
- cd ../..
|
- cd ../..
|
||||||
# Install GDJS tests dependencies
|
#Install GDJS tests dependencies
|
||||||
- cd GDJS && npm install && cd tests && npm install
|
- cd GDJS/tests && npm install
|
||||||
- cd ../..
|
- cd ../..
|
||||||
|
#Get the correct version of gcc/g++
|
||||||
|
- if [ "$CXX" = "g++" ]; then export CXX="g++-${GCC_VERSION}" CC="gcc-${GCC_VERSION}"; fi
|
||||||
|
#Compile the tests only
|
||||||
|
- mkdir .build-tests
|
||||||
|
- cd .build-tests
|
||||||
|
- cmake -DBUILD_GDJS=FALSE -DBUILD_IDE=FALSE -DBUILD_TESTS=TRUE -DNO_GUI=TRUE -DCMAKE_CXX_COMPILER=$(which $CXX) -DCMAKE_C_COMPILER=$(which $CC) ..
|
||||||
|
- make -j 4
|
||||||
|
- cd ..
|
||||||
|
|
||||||
script:
|
script:
|
||||||
# GDCore tests:
|
#newIDE tests:
|
||||||
- cd .build-tests
|
|
||||||
- Core/GDCore_tests
|
|
||||||
- cd ..
|
|
||||||
# GDevelop.js tests
|
|
||||||
- cd GDevelop.js
|
|
||||||
- npm test
|
|
||||||
- cd ..
|
|
||||||
# newIDE tests:
|
|
||||||
- cd newIDE/app
|
- cd newIDE/app
|
||||||
- npm test
|
- npm test
|
||||||
- npm run flow
|
- npm run flow
|
||||||
- npm run check-format
|
|
||||||
- npm run check-script-types
|
|
||||||
- cd ../..
|
- cd ../..
|
||||||
# GDJS tests:
|
#GDJS game engine tests:
|
||||||
- cd GDJS
|
- cd GDJS/tests && npm test
|
||||||
- npm run check-format
|
- cd ../..
|
||||||
- cd ..
|
#GDCore and GDCpp game engine tests:
|
||||||
# GDJS game engine tests, disabled on Travis CI because ChromeHeadless can't be started.
|
- cd .build-tests
|
||||||
# See them running on Semaphore-CI instead: https://gdevelop.semaphoreci.com/projects/GDevelop
|
- Core/GDCore_tests
|
||||||
# - cd GDJS/tests && npm test
|
- GDCpp/GDCpp_tests
|
||||||
# - cd ../..
|
- Extensions/PathfindingBehavior/PathfindingBehavior_Runtime_tests
|
||||||
|
- Extensions/LinkedObjects/LinkedObjects_Runtime_tests
|
||||||
|
129
.vscode/GDevelopExtensions.code-snippets
vendored
@@ -1,129 +0,0 @@
|
|||||||
{
|
|
||||||
"Define extension": {
|
|
||||||
"scope": "javascript",
|
|
||||||
"description": "Adds the boilerplate code of a GDevelop extension definition.",
|
|
||||||
"prefix": "gdext",
|
|
||||||
"body": [
|
|
||||||
"// @flow",
|
|
||||||
"/**",
|
|
||||||
" * This is a declaration of an extension for GDevelop 5.",
|
|
||||||
" *",
|
|
||||||
" * ℹ️ Changes in this file are watched and automatically imported if the editor",
|
|
||||||
" * is running. You can also manually run `node import-GDJS-Runtime.js` (in newIDE/app/scripts).",
|
|
||||||
" *",
|
|
||||||
" * The file must be named \"JsExtension.js\", otherwise GDevelop won't load it.",
|
|
||||||
" * ⚠️ If you make a change and the extension is not loaded, open the developer console",
|
|
||||||
" * and search for any errors.",
|
|
||||||
" *",
|
|
||||||
" * More information on https://github.com/4ian/GDevelop/blob/master/newIDE/README-extensions.md",
|
|
||||||
" */",
|
|
||||||
"",
|
|
||||||
"/*::",
|
|
||||||
"// Import types to allow Flow to do static type checking on this file.",
|
|
||||||
"// Extensions declaration are typed using Flow (like the editor), but the files",
|
|
||||||
"// for the game engine are checked with TypeScript annotations.",
|
|
||||||
"import { type ObjectsRenderingService, type ObjectsEditorService } from '../JsExtensionTypes.flow.js'",
|
|
||||||
"*/",
|
|
||||||
"",
|
|
||||||
"module.exports = {",
|
|
||||||
"\tcreateExtension: function (",
|
|
||||||
"\t\t/*: (string) => string */,",
|
|
||||||
"\t\tgd /*: libGDevelop */",
|
|
||||||
"\t) {",
|
|
||||||
"\t\tconst extension = new gd.PlatformExtension();",
|
|
||||||
"\t\textension",
|
|
||||||
"\t\t\t.setExtensionInformation(",
|
|
||||||
"\t\t\t\t'${1:${TM_DIRECTORY/(.*)[\\\\\\/](.*)[\\\\\\/]?$/$2/}}',",
|
|
||||||
"\t\t\t\t_('${2:Extension Name}'),",
|
|
||||||
"\t\t\t\t_(",
|
|
||||||
"\t\t\t\t\t'${3:Extension description}'",
|
|
||||||
"\t\t\t\t),",
|
|
||||||
"\t\t\t\t'${4:Extension author}',",
|
|
||||||
"\t\t\t\t'MIT'",
|
|
||||||
"\t\t\t);",
|
|
||||||
"",
|
|
||||||
"\t\t$0",
|
|
||||||
"",
|
|
||||||
"\t\treturn extension;",
|
|
||||||
"\t},",
|
|
||||||
"\trunExtensionSanityTests: function (",
|
|
||||||
"\t\tgd /*: libGDevelop */,",
|
|
||||||
"\t\textension /*: gdPlatformExtension*/",
|
|
||||||
"\t) {",
|
|
||||||
"\t\treturn [];",
|
|
||||||
"\t},",
|
|
||||||
"};",
|
|
||||||
""
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Define instruction": {
|
|
||||||
"scope": "javascript",
|
|
||||||
"description": "Define an instruction in a GDevelop extension definition.",
|
|
||||||
"prefix": "gdinstr",
|
|
||||||
"body": [
|
|
||||||
"extension",
|
|
||||||
"\t.add${1|Condition,Action|}(",
|
|
||||||
"\t\t'${2:InstructionInternalName}',",
|
|
||||||
"\t\t_('${3:Instruction full name}'),",
|
|
||||||
"\t\t_(",
|
|
||||||
"\t\t\t'${4:Instruction description}'",
|
|
||||||
"\t\t),",
|
|
||||||
"\t\t_('${5:Event sheet sentence}'),",
|
|
||||||
"\t\t_('${6:Events group}'),",
|
|
||||||
"\t\t'JsPlatform/Extensions/${8:icon}.png',",
|
|
||||||
"\t\t'JsPlatform/Extensions/${8:icon}.png'",
|
|
||||||
"\t)",
|
|
||||||
"\t.getCodeExtraInformation()",
|
|
||||||
"\t.setIncludeFile('Extensions/${TM_DIRECTORY/(.*)[\\\\\\/](.*)[\\\\\\/]?$/$2/}/${9:${TM_DIRECTORY/(.*)[\\\\\\/](.*)[\\\\\\/]?$/${2:/downcase}/}tools}.js')",
|
|
||||||
"\t.setFunctionName('gdjs.evtTools.${7:${TM_DIRECTORY/(.*)[\\\\\\/](.*)[\\\\\\/]?$/${2:/downcase}/}.}');",
|
|
||||||
"",
|
|
||||||
"$0"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Define expression": {
|
|
||||||
"scope": "javascript",
|
|
||||||
"description": "Define an expression in a GDevelop extension definition.",
|
|
||||||
"prefix": "gdexp",
|
|
||||||
"body": [
|
|
||||||
"extension",
|
|
||||||
"\t.add${1|Expression,StrExpression|}(",
|
|
||||||
"\t\t'${2:ExpressionsInternalName}',",
|
|
||||||
"\t\t_('${3:Expression full name}'),",
|
|
||||||
"\t\t_(",
|
|
||||||
"\t\t\t'${4:Expression description}'",
|
|
||||||
"\t\t),",
|
|
||||||
"\t\t_('${5:Events group}'),",
|
|
||||||
"\t\t'JsPlatform/Extensions/${7:icon}.png'",
|
|
||||||
"\t)",
|
|
||||||
"\t.getCodeExtraInformation()",
|
|
||||||
"\t.setIncludeFile('Extensions/${TM_DIRECTORY/(.*)[\\\\\\/](.*)[\\\\\\/]?$/$2/}/${8:${TM_DIRECTORY/(.*)[\\\\\\/](.*)[\\\\\\/]?$/${2:/downcase}/}tools}.js')",
|
|
||||||
"\t.setFunctionName('gdjs.evtTools.${6:${TM_DIRECTORY/(.*)[\\\\\\/](.*)[\\\\\\/]?$/${2:/downcase}/}.}');",
|
|
||||||
"",
|
|
||||||
"$0"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Add parameter": {
|
|
||||||
"scope": "javascript",
|
|
||||||
"description": "Define a parameter in a GDevelop extension definition.",
|
|
||||||
"prefix": "gdparam",
|
|
||||||
"body": [
|
|
||||||
".addParameter('${1|string,expression,object,behavior,yesorno,stringWithSelector,scenevar,globalvar,objectvar,objectList,objectListWithoutPicking,color,key,sceneName,file,layer,relationalOperator,operator,trueorfalse,musicfile,soundfile,mouse,passwordjoyaxis,camera,objectPtr,forceMultiplier|}', '${2:Parameter description}', '${3:Optional parameter data}', /*parameterIsOptional=*/${4|false,true|})"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Add code only parameter": {
|
|
||||||
"scope": "javascript",
|
|
||||||
"description": "Define a parameter in a GDevelop extension definition.",
|
|
||||||
"prefix": "gdcoparam",
|
|
||||||
"body": [
|
|
||||||
".addCodeOnlyParameter('${1|inlineCode,currentScene,objectsContext,eventsFunctionContext,conditionInverted|}', '${2:Inline code (for inlineCode parameter)}')"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Add include": {
|
|
||||||
"scope": "javascript",
|
|
||||||
"description": "Define an include file in a GDevelop extension definition.",
|
|
||||||
"prefix": "gdincl",
|
|
||||||
"body": [
|
|
||||||
".addIncludeFile('Extensions/${TM_DIRECTORY/(.*)[\\\\\\/](.*)[\\\\\\/]?$/$2/}/${1:include}.js')"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
66
.vscode/c_cpp_properties.json
vendored
@@ -4,59 +4,55 @@
|
|||||||
"name": "Mac",
|
"name": "Mac",
|
||||||
"includePath": [
|
"includePath": [
|
||||||
"${workspaceRoot}",
|
"${workspaceRoot}",
|
||||||
|
"${workspaceRoot}/IDE",
|
||||||
|
"${workspaceRoot}/GDCpp",
|
||||||
"${workspaceRoot}/GDJS",
|
"${workspaceRoot}/GDJS",
|
||||||
"${workspaceRoot}/Extensions",
|
"${workspaceRoot}/Extensions",
|
||||||
"${workspaceRoot}/Core",
|
"${workspaceRoot}/Core",
|
||||||
|
"${workspaceRoot}/ExtLibs/SFML/include",
|
||||||
|
"/usr/local/lib/wx/include/osx_cocoa-unicode-3.0",
|
||||||
|
"/usr/local/include/wx-3.0",
|
||||||
|
"/usr/include/machine",
|
||||||
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1",
|
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1",
|
||||||
"/usr/local/include",
|
"/usr/local/include",
|
||||||
|
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/8.0.0/include",
|
||||||
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include",
|
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include",
|
||||||
"${workspaceRoot}"
|
"/usr/include"
|
||||||
],
|
],
|
||||||
"defines": [
|
"defines": [
|
||||||
"EMSCRIPTEN",
|
|
||||||
"GD_IDE_ONLY",
|
"GD_IDE_ONLY",
|
||||||
"GD_CORE_API=/* Macro used to export classes on Windows, please ignore */",
|
"__WXMAC__",
|
||||||
"GD_API=/* Macro used to export classes on Windows, please ignore */",
|
"__WXOSX__",
|
||||||
"GD_EXTENSION_API=/* Macro used to export classes on Windows, please ignore */"
|
"__WXOSX_COCOA__",
|
||||||
|
"GD_CORE_API=\" \"",
|
||||||
|
"WXUSINGDLL"
|
||||||
],
|
],
|
||||||
"intelliSenseMode": "clang-x64",
|
|
||||||
"browse": {
|
"browse": {
|
||||||
"path": [
|
"path": [
|
||||||
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1",
|
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1",
|
||||||
"/usr/local/include",
|
"/usr/local/include",
|
||||||
|
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/8.0.0/include",
|
||||||
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include",
|
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include",
|
||||||
|
"/usr/include",
|
||||||
"${workspaceRoot}"
|
"${workspaceRoot}"
|
||||||
],
|
],
|
||||||
"limitSymbolsToIncludedHeaders": true,
|
"limitSymbolsToIncludedHeaders": true,
|
||||||
"databaseFilename": ""
|
"databaseFilename": ""
|
||||||
},
|
},
|
||||||
|
"intelliSenseMode": "clang-x64",
|
||||||
"macFrameworkPath": [
|
"macFrameworkPath": [
|
||||||
"/System/Library/Frameworks",
|
"/System/Library/Frameworks",
|
||||||
"/Library/Frameworks"
|
"/Library/Frameworks"
|
||||||
],
|
]
|
||||||
"compilerPath": "/usr/bin/clang",
|
|
||||||
"cStandard": "c11",
|
|
||||||
"cppStandard": "c++17"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Linux",
|
"name": "Linux",
|
||||||
"includePath": [
|
"includePath": [
|
||||||
"${workspaceRoot}",
|
"${workspaceRoot}",
|
||||||
"${workspaceRoot}/GDJS",
|
|
||||||
"${workspaceRoot}/Extensions",
|
|
||||||
"${workspaceRoot}/Core",
|
|
||||||
"/usr/include",
|
"/usr/include",
|
||||||
"/usr/local/include",
|
"/usr/local/include"
|
||||||
"${workspaceRoot}"
|
|
||||||
],
|
],
|
||||||
"defines": [
|
"defines": [],
|
||||||
"EMSCRIPTEN",
|
|
||||||
"GD_IDE_ONLY",
|
|
||||||
"GD_CORE_API=/* Macro used to export classes on Windows, please ignore */",
|
|
||||||
"GD_API=/* Macro used to export classes on Windows, please ignore */",
|
|
||||||
"GD_EXTENSION_API=/* Macro used to export classes on Windows, please ignore */"
|
|
||||||
],
|
|
||||||
"intelliSenseMode": "clang-x64",
|
|
||||||
"browse": {
|
"browse": {
|
||||||
"path": [
|
"path": [
|
||||||
"/usr/include",
|
"/usr/include",
|
||||||
@@ -65,35 +61,29 @@
|
|||||||
],
|
],
|
||||||
"limitSymbolsToIncludedHeaders": true,
|
"limitSymbolsToIncludedHeaders": true,
|
||||||
"databaseFilename": ""
|
"databaseFilename": ""
|
||||||
}
|
},
|
||||||
|
"intelliSenseMode": "clang-x64"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Win32",
|
"name": "Win32",
|
||||||
"includePath": [
|
"includePath": [
|
||||||
"${workspaceRoot}",
|
"${workspaceRoot}",
|
||||||
"${workspaceRoot}/GDJS",
|
"C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include"
|
||||||
"${workspaceRoot}/Extensions",
|
|
||||||
"${workspaceRoot}/Core",
|
|
||||||
"${workspaceRoot}"
|
|
||||||
],
|
],
|
||||||
"defines": [
|
"defines": [
|
||||||
"_DEBUG",
|
"_DEBUG",
|
||||||
"UNICODE",
|
"UNICODE"
|
||||||
"EMSCRIPTEN",
|
|
||||||
"GD_IDE_ONLY",
|
|
||||||
"GD_CORE_API=/* Macro used to export classes on Windows, please ignore */",
|
|
||||||
"GD_API=/* Macro used to export classes on Windows, please ignore */",
|
|
||||||
"GD_EXTENSION_API=/* Macro used to export classes on Windows, please ignore */"
|
|
||||||
],
|
],
|
||||||
"intelliSenseMode": "msvc-x64",
|
|
||||||
"browse": {
|
"browse": {
|
||||||
"path": [
|
"path": [
|
||||||
|
"C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include/*",
|
||||||
"${workspaceRoot}"
|
"${workspaceRoot}"
|
||||||
],
|
],
|
||||||
"limitSymbolsToIncludedHeaders": true,
|
"limitSymbolsToIncludedHeaders": true,
|
||||||
"databaseFilename": ""
|
"databaseFilename": ""
|
||||||
}
|
},
|
||||||
|
"intelliSenseMode": "msvc-x64"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"version": 4
|
"version": 3
|
||||||
}
|
}
|
8
.vscode/extensions.json
vendored
@@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
"recommendations": [
|
|
||||||
"esbenp.prettier-vscode",
|
|
||||||
"xaver.clang-format",
|
|
||||||
"ms-vscode.cpptools",
|
|
||||||
"flowtype.flow-for-vscode"
|
|
||||||
]
|
|
||||||
}
|
|
53
.vscode/launch.json
vendored
@@ -1,53 +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": [
|
|
||||||
{
|
|
||||||
"type": "node",
|
|
||||||
"request": "launch",
|
|
||||||
"name": "GDevelop.js Jest tests (all)",
|
|
||||||
"program": "${workspaceFolder}/GDevelop.js/node_modules/.bin/jest",
|
|
||||||
"args": ["--runInBand"],
|
|
||||||
"console": "integratedTerminal",
|
|
||||||
"internalConsoleOptions": "neverOpen",
|
|
||||||
"disableOptimisticBPs": true,
|
|
||||||
"cwd": "${workspaceFolder}/GDevelop.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "node",
|
|
||||||
"request": "launch",
|
|
||||||
"name": "newIDE/app Jest tests (current file)",
|
|
||||||
"program": "${workspaceFolder}/newIDE/app/node_modules/.bin/react-scripts",
|
|
||||||
"args": [
|
|
||||||
"test", "--env=node",
|
|
||||||
"${fileBasenameNoExtension}"
|
|
||||||
],
|
|
||||||
"console": "integratedTerminal",
|
|
||||||
"internalConsoleOptions": "neverOpen",
|
|
||||||
"disableOptimisticBPs": true,
|
|
||||||
"cwd": "${workspaceFolder}/newIDE/app"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "node",
|
|
||||||
"request": "launch",
|
|
||||||
"name": "GDevelop.js Jest tests (current file)",
|
|
||||||
"program": "${workspaceFolder}/GDevelop.js/node_modules/.bin/jest",
|
|
||||||
"args": [
|
|
||||||
"${fileBasenameNoExtension}"
|
|
||||||
],
|
|
||||||
"console": "integratedTerminal",
|
|
||||||
"internalConsoleOptions": "neverOpen",
|
|
||||||
"disableOptimisticBPs": true,
|
|
||||||
"cwd": "${workspaceFolder}/GDevelop.js"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "pwa-chrome",
|
|
||||||
"request": "launch",
|
|
||||||
"name": "Debug with Chrome (web-app, local development server)",
|
|
||||||
"url": "http://localhost:3000",
|
|
||||||
"webRoot": "${workspaceFolder}"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
214
.vscode/settings.json
vendored
@@ -1,136 +1,84 @@
|
|||||||
// Place your settings in this file to overwrite default and user settings.
|
// Place your settings in this file to overwrite default and user settings.
|
||||||
{
|
{
|
||||||
"files.associations": {
|
"files.associations": {
|
||||||
"*.idl": "java",
|
"*.idl": "java",
|
||||||
"Fastfile": "ruby",
|
"iosfwd": "cpp",
|
||||||
"iosfwd": "cpp",
|
"functional": "cpp",
|
||||||
"functional": "cpp",
|
"type_traits": "cpp",
|
||||||
"type_traits": "cpp",
|
"utility": "cpp",
|
||||||
"utility": "cpp",
|
"algorithm": "cpp",
|
||||||
"algorithm": "cpp",
|
"random": "cpp",
|
||||||
"random": "cpp",
|
"__config": "cpp",
|
||||||
"__config": "cpp",
|
"cstddef": "cpp",
|
||||||
"cstddef": "cpp",
|
"exception": "cpp",
|
||||||
"exception": "cpp",
|
"initializer_list": "cpp",
|
||||||
"initializer_list": "cpp",
|
"new": "cpp",
|
||||||
"new": "cpp",
|
"stdexcept": "cpp",
|
||||||
"stdexcept": "cpp",
|
"typeinfo": "cpp",
|
||||||
"typeinfo": "cpp",
|
"*.tcc": "cpp",
|
||||||
"*.tcc": "cpp",
|
"cctype": "cpp",
|
||||||
"cctype": "cpp",
|
"clocale": "cpp",
|
||||||
"clocale": "cpp",
|
"cmath": "cpp",
|
||||||
"cmath": "cpp",
|
"complex": "cpp",
|
||||||
"complex": "cpp",
|
"cstdarg": "cpp",
|
||||||
"cstdarg": "cpp",
|
"cstdio": "cpp",
|
||||||
"cstdio": "cpp",
|
"cstdlib": "cpp",
|
||||||
"cstdlib": "cpp",
|
"ctime": "cpp",
|
||||||
"ctime": "cpp",
|
"cwchar": "cpp",
|
||||||
"cwchar": "cpp",
|
"cwctype": "cpp",
|
||||||
"cwctype": "cpp",
|
"istream": "cpp",
|
||||||
"istream": "cpp",
|
"limits": "cpp",
|
||||||
"limits": "cpp",
|
"memory": "cpp",
|
||||||
"memory": "cpp",
|
"ostream": "cpp",
|
||||||
"ostream": "cpp",
|
"sstream": "cpp",
|
||||||
"sstream": "cpp",
|
"streambuf": "cpp",
|
||||||
"streambuf": "cpp",
|
"hashtable": "cpp",
|
||||||
"hashtable": "cpp",
|
"tuple": "cpp",
|
||||||
"tuple": "cpp",
|
"unordered_map": "cpp",
|
||||||
"unordered_map": "cpp",
|
"unordered_set": "cpp",
|
||||||
"unordered_set": "cpp",
|
"__split_buffer": "cpp",
|
||||||
"__split_buffer": "cpp",
|
"deque": "cpp",
|
||||||
"deque": "cpp",
|
"iterator": "cpp",
|
||||||
"iterator": "cpp",
|
"list": "cpp",
|
||||||
"list": "cpp",
|
"map": "cpp",
|
||||||
"map": "cpp",
|
"queue": "cpp",
|
||||||
"queue": "cpp",
|
"regex": "cpp",
|
||||||
"regex": "cpp",
|
"set": "cpp",
|
||||||
"set": "cpp",
|
"stack": "cpp",
|
||||||
"stack": "cpp",
|
"string": "cpp",
|
||||||
"string": "cpp",
|
"vector": "cpp",
|
||||||
"vector": "cpp",
|
"iostream": "cpp",
|
||||||
"iostream": "cpp",
|
"__functional_03": "cpp",
|
||||||
"__functional_03": "cpp",
|
"__hash_table": "cpp",
|
||||||
"__hash_table": "cpp",
|
"__tree": "cpp",
|
||||||
"__tree": "cpp",
|
"bitset": "cpp",
|
||||||
"bitset": "cpp",
|
"__bit_reference": "cpp",
|
||||||
"__bit_reference": "cpp",
|
"__mutex_base": "cpp",
|
||||||
"__mutex_base": "cpp",
|
"fstream": "cpp",
|
||||||
"fstream": "cpp",
|
"ios": "cpp",
|
||||||
"ios": "cpp",
|
"__locale": "cpp",
|
||||||
"__locale": "cpp",
|
"valarray": "cpp",
|
||||||
"valarray": "cpp",
|
"freeglut_spaceball.c": "cpp",
|
||||||
"freeglut_spaceball.c": "cpp",
|
"__tuple": "cpp",
|
||||||
"__tuple": "cpp",
|
"hash_map": "cpp",
|
||||||
"hash_map": "cpp",
|
"hash_set": "cpp",
|
||||||
"hash_set": "cpp",
|
"system_error": "cpp"
|
||||||
"system_error": "cpp",
|
},
|
||||||
"__nullptr": "cpp",
|
"files.exclude": {
|
||||||
"__functional_base": "cpp",
|
"Binaries/*build*": true,
|
||||||
"__functional_base_03": "cpp",
|
"Binaries/Output": true,
|
||||||
"chrono": "cpp",
|
"Binaries/Packaging/GDevelop.app": true,
|
||||||
"ratio": "cpp",
|
"ExtLibs/SFML": true,
|
||||||
"atomic": "cpp",
|
"docs": true,
|
||||||
"locale": "cpp",
|
"GDJS/docs": true,
|
||||||
"string_view": "cpp",
|
"GDCpp/docs": true,
|
||||||
"__string": "cpp",
|
"Core/docs": true,
|
||||||
"cstring": "cpp",
|
"Extensions/CommonDialogs/dlib-18.16": true,
|
||||||
"iomanip": "cpp",
|
"newIDE/electron-app/dist": true,
|
||||||
"cstdint": "cpp",
|
"newIDE/app/build": true,
|
||||||
"forward_list": "cpp",
|
"newIDE/app/resources/GDJS": true,
|
||||||
"mutex": "cpp",
|
"newIDE/electron-app/app/www": true
|
||||||
"__hash": "cpp",
|
},
|
||||||
"__debug": "cpp",
|
// Support for Flowtype:
|
||||||
"__threading_support": "cpp",
|
"javascript.validate.enable": false
|
||||||
"any": "cpp",
|
|
||||||
"array": "cpp",
|
|
||||||
"cinttypes": "cpp",
|
|
||||||
"numeric": "cpp",
|
|
||||||
"__memory": "cpp",
|
|
||||||
"__errc": "cpp",
|
|
||||||
"__node_handle": "cpp",
|
|
||||||
"bit": "cpp",
|
|
||||||
"optional": "cpp",
|
|
||||||
"filesystem": "cpp",
|
|
||||||
"compare": "cpp",
|
|
||||||
"concepts": "cpp",
|
|
||||||
"xfacet": "cpp",
|
|
||||||
"xhash": "cpp",
|
|
||||||
"xiosbase": "cpp",
|
|
||||||
"xlocale": "cpp",
|
|
||||||
"xlocinfo": "cpp",
|
|
||||||
"xlocmon": "cpp",
|
|
||||||
"xlocnum": "cpp",
|
|
||||||
"xloctime": "cpp",
|
|
||||||
"xmemory": "cpp",
|
|
||||||
"xstddef": "cpp",
|
|
||||||
"xstring": "cpp",
|
|
||||||
"xtr1common": "cpp",
|
|
||||||
"xtree": "cpp",
|
|
||||||
"xutility": "cpp",
|
|
||||||
"xlocbuf": "cpp",
|
|
||||||
"xlocmes": "cpp",
|
|
||||||
"xmemory0": "cpp",
|
|
||||||
"memory_resource": "cpp",
|
|
||||||
"__bits": "cpp",
|
|
||||||
"__verbose_abort": "cpp",
|
|
||||||
"variant": "cpp",
|
|
||||||
"charconv": "cpp",
|
|
||||||
"execution": "cpp"
|
|
||||||
},
|
|
||||||
"files.exclude": {
|
|
||||||
"Binaries/*build*": true,
|
|
||||||
"Binaries/Output": true,
|
|
||||||
"GDJS/Runtime-dist": true,
|
|
||||||
"docs": true,
|
|
||||||
"newIDE/electron-app/dist": true,
|
|
||||||
"newIDE/app/build": true,
|
|
||||||
"newIDE/app/resources/GDJS": true,
|
|
||||||
"newIDE/electron-app/app/www": true
|
|
||||||
},
|
|
||||||
// Support for Flowtype (for newIDE):
|
|
||||||
"javascript.validate.enable": false,
|
|
||||||
"flow.useNPMPackagedFlow": true,
|
|
||||||
|
|
||||||
// Clang format styling (duplicated in scripts/CMakeClangUtils.txt)
|
|
||||||
"C_Cpp.clang_format_style": "{BasedOnStyle: Google, BinPackParameters: false, BinPackArguments: false}"
|
|
||||||
}
|
}
|
||||||
|
100
.vscode/tasks.json
vendored
@@ -1,100 +0,0 @@
|
|||||||
{
|
|
||||||
"version": "2.0.0",
|
|
||||||
"tasks": [
|
|
||||||
{
|
|
||||||
"type": "npm",
|
|
||||||
"script": "start",
|
|
||||||
"path": "newIDE/app/",
|
|
||||||
"group": "build",
|
|
||||||
"label": "Start development server",
|
|
||||||
"detail": "Starts the GDevelop development server.",
|
|
||||||
"options": { "env": { "NODE_OPTIONS": "--max-old-space-size=8192" } },
|
|
||||||
"problemMatcher": [
|
|
||||||
{
|
|
||||||
"owner": "cra",
|
|
||||||
"fileLocation": ["relative", "${workspaceFolder}/newIDE/app"],
|
|
||||||
"source": "create-react-app",
|
|
||||||
"applyTo": "allDocuments",
|
|
||||||
"pattern": [
|
|
||||||
{
|
|
||||||
"regexp": "^([^\\s].*?)$",
|
|
||||||
"file": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"regexp": "^ Line\\s+(\\d+):\\s+(.*)\\s\\s+(.*)$",
|
|
||||||
"line": 1,
|
|
||||||
"message": 2,
|
|
||||||
"code": 3,
|
|
||||||
"loop": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"background": {
|
|
||||||
"activeOnStart": true,
|
|
||||||
"beginsPattern": "^(?:Compiled with warnings\\.|Compiled successfully!)$",
|
|
||||||
"endsPattern": "^(?:Search for the keywords to learn more about each warning\\.|Note that the development build is not optimized\\.)$"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"presentation": {
|
|
||||||
"reveal": "silent"
|
|
||||||
},
|
|
||||||
"isBackground": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "npm",
|
|
||||||
"script": "start",
|
|
||||||
"path": "newIDE/electron-app/",
|
|
||||||
"group": "build",
|
|
||||||
"problemMatcher": [],
|
|
||||||
"label": "Start electron app",
|
|
||||||
"detail": "Starts the development local version of GDevelop."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "npm",
|
|
||||||
"script": "build",
|
|
||||||
"path": "GDevelop.js/",
|
|
||||||
"group": "build",
|
|
||||||
"problemMatcher": [],
|
|
||||||
"label": "Build GDevelop.js",
|
|
||||||
"detail": "Builds GDCore for newIDE."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "npm",
|
|
||||||
"script": "format",
|
|
||||||
"path": "newIDE/app/",
|
|
||||||
"problemMatcher": [],
|
|
||||||
"label": "Format newIDE",
|
|
||||||
"detail": "Run auto-formatting (with Prettier) for the newIDE/app directory."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "npm",
|
|
||||||
"script": "test",
|
|
||||||
"path": "newIDE/app/",
|
|
||||||
"group": {
|
|
||||||
"kind": "test",
|
|
||||||
"isDefault": true
|
|
||||||
},
|
|
||||||
"problemMatcher": [],
|
|
||||||
"label": "Run newIDE tests",
|
|
||||||
"detail": "Run tests for newIDE."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "typescript",
|
|
||||||
"tsconfig": "tsconfig.json",
|
|
||||||
"option": "watch",
|
|
||||||
"problemMatcher": ["$tsc-watch"],
|
|
||||||
"group": "test",
|
|
||||||
"label": "GDJS TS Check",
|
|
||||||
"detail": "Runs a types check on the GDJS Runtime."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "npm",
|
|
||||||
"script": "test",
|
|
||||||
"path": "GDJS/",
|
|
||||||
"group": "test",
|
|
||||||
"problemMatcher": [],
|
|
||||||
"label": "Run GDJS tests",
|
|
||||||
"detail": "Run tests for GDJS."
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
6
Binaries/.directory
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[Dolphin]
|
||||||
|
Timestamp=2015,4,21,21,49,19
|
||||||
|
Version=3
|
||||||
|
|
||||||
|
[Settings]
|
||||||
|
HiddenFilesShown=true
|
7
Binaries/Output/Release_Linux/CppPlatform/Runtime/PlayLinux
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
#Execute this file to launch the game
|
||||||
|
#If you can not launch it, make sure that this file
|
||||||
|
#as well as 'ExeLinux' have the right to be executed
|
||||||
|
#(Right click on file > Properties)
|
||||||
|
|
||||||
|
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
|
||||||
|
./ExeLinux
|
26
Binaries/Output/Release_Linux/StartGDevelop.sh
Executable file
@@ -0,0 +1,26 @@
|
|||||||
|
#Execute this file to launch GDevelop
|
||||||
|
#If you can not launch GD, make sure that this file
|
||||||
|
#as well as 'GDIDE' have the right to be executed
|
||||||
|
#(Right click on file > Properties)
|
||||||
|
|
||||||
|
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
|
||||||
|
if [ -z ${1+x} ]; then
|
||||||
|
GDK_BACKEND=x11 ./GDIDE
|
||||||
|
else
|
||||||
|
GDK_BACKEND=x11 ./GDIDE "$1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$?" = "127" ]; then
|
||||||
|
mkdir -p ~/.GDevelop
|
||||||
|
GDK_BACKEND=x11 ./GDIDE 1> ~/.GDevelop/errorMsgWhileLoadingGD.txt 2> ~/.GDevelop/errorMsgWhileLoadingGD.txt
|
||||||
|
|
||||||
|
errorMsg=$(cat < ~/.GDevelop/errorMsgWhileLoadingGD.txt)
|
||||||
|
|
||||||
|
echo "$errorMsg" | grep "loading shared"
|
||||||
|
if [ "$?" == "0" ]; then
|
||||||
|
zenity --error --text="Unable to launch GDevelop! Here is the error message:\n\n <b>$errorMsg</b>\n\nMay be a <b>package is not installed</b>.\nCheck if you can find the package in the Software Center.";
|
||||||
|
else
|
||||||
|
zenity --error --text="Unable to launch GDevelop, a unknown error happened! Here is the full error message:\n\n <b>$errorMsg</b>\n\n.";
|
||||||
|
fi;
|
||||||
|
fi;
|
||||||
|
|
Before Width: | Height: | Size: 380 B After Width: | Height: | Size: 380 B |
Before Width: | Height: | Size: 581 B After Width: | Height: | Size: 581 B |
Before Width: | Height: | Size: 419 B After Width: | Height: | Size: 419 B |
Before Width: | Height: | Size: 323 B After Width: | Height: | Size: 323 B |
Before Width: | Height: | Size: 685 B After Width: | Height: | Size: 685 B |
Before Width: | Height: | Size: 308 B After Width: | Height: | Size: 308 B |
Before Width: | Height: | Size: 226 B After Width: | Height: | Size: 226 B |
Before Width: | Height: | Size: 303 B After Width: | Height: | Size: 303 B |
Before Width: | Height: | Size: 667 B After Width: | Height: | Size: 667 B |
Before Width: | Height: | Size: 804 B After Width: | Height: | Size: 804 B |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 639 B After Width: | Height: | Size: 639 B |
Before Width: | Height: | Size: 826 B After Width: | Height: | Size: 826 B |
Before Width: | Height: | Size: 319 B After Width: | Height: | Size: 319 B |
Before Width: | Height: | Size: 290 B After Width: | Height: | Size: 290 B |
Before Width: | Height: | Size: 613 B After Width: | Height: | Size: 613 B |
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 340 B |
Before Width: | Height: | Size: 273 B After Width: | Height: | Size: 273 B |
Before Width: | Height: | Size: 281 B After Width: | Height: | Size: 281 B |
Before Width: | Height: | Size: 388 B After Width: | Height: | Size: 388 B |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 374 B After Width: | Height: | Size: 374 B |
Before Width: | Height: | Size: 334 B After Width: | Height: | Size: 334 B |
Before Width: | Height: | Size: 717 B After Width: | Height: | Size: 717 B |
Before Width: | Height: | Size: 545 B After Width: | Height: | Size: 545 B |
Before Width: | Height: | Size: 436 B After Width: | Height: | Size: 436 B |
Before Width: | Height: | Size: 998 B After Width: | Height: | Size: 998 B |
Before Width: | Height: | Size: 478 B After Width: | Height: | Size: 478 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 716 B After Width: | Height: | Size: 716 B |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 601 B After Width: | Height: | Size: 601 B |
Before Width: | Height: | Size: 470 B After Width: | Height: | Size: 470 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 787 B After Width: | Height: | Size: 787 B |
Before Width: | Height: | Size: 612 B After Width: | Height: | Size: 612 B |
Before Width: | Height: | Size: 612 B After Width: | Height: | Size: 612 B |
Before Width: | Height: | Size: 378 B After Width: | Height: | Size: 378 B |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 462 B After Width: | Height: | Size: 462 B |
Before Width: | Height: | Size: 306 B After Width: | Height: | Size: 306 B |
Before Width: | Height: | Size: 797 B After Width: | Height: | Size: 797 B |
Before Width: | Height: | Size: 388 B After Width: | Height: | Size: 388 B |
Before Width: | Height: | Size: 331 B After Width: | Height: | Size: 331 B |
Before Width: | Height: | Size: 708 B After Width: | Height: | Size: 708 B |
Before Width: | Height: | Size: 314 B After Width: | Height: | Size: 314 B |
Before Width: | Height: | Size: 260 B After Width: | Height: | Size: 260 B |
Before Width: | Height: | Size: 594 B After Width: | Height: | Size: 594 B |
Before Width: | Height: | Size: 386 B After Width: | Height: | Size: 386 B |
Before Width: | Height: | Size: 305 B After Width: | Height: | Size: 305 B |
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 819 B |
Before Width: | Height: | Size: 394 B After Width: | Height: | Size: 394 B |
Before Width: | Height: | Size: 858 B After Width: | Height: | Size: 858 B |
Before Width: | Height: | Size: 859 B After Width: | Height: | Size: 859 B |
Before Width: | Height: | Size: 406 B After Width: | Height: | Size: 406 B |
Before Width: | Height: | Size: 486 B After Width: | Height: | Size: 486 B |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 943 B After Width: | Height: | Size: 943 B |
Before Width: | Height: | Size: 531 B After Width: | Height: | Size: 531 B |
Before Width: | Height: | Size: 287 B After Width: | Height: | Size: 287 B |
Before Width: | Height: | Size: 380 B After Width: | Height: | Size: 380 B |
Before Width: | Height: | Size: 640 B After Width: | Height: | Size: 640 B |