mirror of
https://github.com/enso-org/enso.git
synced 2024-12-23 03:21:44 +03:00
Making CI config more generic (https://github.com/enso-org/ide/pull/1158)
Original commit: 66e45cd1dd
This commit is contained in:
parent
3fe294187f
commit
74619c6731
2
gui/.github/PULL_REQUEST_TEMPLATE.md
vendored
2
gui/.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -13,6 +13,7 @@
|
|||||||
### Checklist
|
### Checklist
|
||||||
Please include the following checklist in your PR:
|
Please include the following checklist in your PR:
|
||||||
|
|
||||||
|
- [ ] The `CHANGELOG.md` was updated with the changes introduced in this PR.
|
||||||
- [ ] The documentation has been updated if necessary.
|
- [ ] The documentation has been updated if necessary.
|
||||||
- [ ] All code conforms to the [Rust](https://github.com/enso-org/enso/blob/main/docs/style-guide/rust.md) style guide.
|
- [ ] All code conforms to the [Rust](https://github.com/enso-org/enso/blob/main/docs/style-guide/rust.md) style guide.
|
||||||
- [ ] All code has automatic tests where possible.
|
- [ ] All code has automatic tests where possible.
|
||||||
@ -21,4 +22,3 @@ Please include the following checklist in your PR:
|
|||||||
- [ ] All code has been manually tested in the "debug/interface" scene.
|
- [ ] All code has been manually tested in the "debug/interface" scene.
|
||||||
- [ ] All code has been manually tested by the PR owner against our [test scenarios](https://docs.google.com/spreadsheets/d/1RatJDM_f9_3bvYhl3Bpq2d8SyKgtVdrV1RkGxPU17c8/edit?ts=5faa7049#gid=0).
|
- [ ] All code has been manually tested by the PR owner against our [test scenarios](https://docs.google.com/spreadsheets/d/1RatJDM_f9_3bvYhl3Bpq2d8SyKgtVdrV1RkGxPU17c8/edit?ts=5faa7049#gid=0).
|
||||||
- [ ] All code has been manually tested by at least one reviewer against our [test scenarios](https://docs.google.com/spreadsheets/d/1RatJDM_f9_3bvYhl3Bpq2d8SyKgtVdrV1RkGxPU17c8/edit?ts=5faa7049#gid=0).
|
- [ ] All code has been manually tested by at least one reviewer against our [test scenarios](https://docs.google.com/spreadsheets/d/1RatJDM_f9_3bvYhl3Bpq2d8SyKgtVdrV1RkGxPU17c8/edit?ts=5faa7049#gid=0).
|
||||||
|
|
||||||
|
122
gui/.github/workflows/build.yml
vendored
122
gui/.github/workflows/build.yml
vendored
@ -1,122 +0,0 @@
|
|||||||
name: Build (MacOS, Linux, Windows)
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: main
|
|
||||||
|
|
||||||
# Please check if all components are available before updating the rust toolchain version.
|
|
||||||
# https://rust-lang.github.io/rustup-components-history/x86_64-unknown-linux-gnu.html
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
|
|
||||||
|
|
||||||
build:
|
|
||||||
name: Build
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
os: [windows-latest, macOS-latest, ubuntu-latest]
|
|
||||||
fail-fast: false
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v1
|
|
||||||
|
|
||||||
- name: Install Rust
|
|
||||||
uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
toolchain: nightly-2019-11-04
|
|
||||||
override: true
|
|
||||||
|
|
||||||
- name: Install wasm-pack (MacOS)
|
|
||||||
# We could use cargo install wasm-pack, but that takes 3.5 minutes compared to few seconds.
|
|
||||||
env:
|
|
||||||
WASMPACKURL: https://github.com/rustwasm/wasm-pack/releases/download/v0.9.1
|
|
||||||
WASMPACKDIR: wasm-pack-v0.9.1-x86_64-apple-darwin
|
|
||||||
run: |
|
|
||||||
curl -L "$WASMPACKURL/$WASMPACKDIR.tar.gz" | tar -xz -C .
|
|
||||||
mv $WASMPACKDIR/wasm-pack ~/.cargo/bin
|
|
||||||
rm -r $WASMPACKDIR
|
|
||||||
shell: bash
|
|
||||||
if: matrix.os == 'macOS-latest'
|
|
||||||
|
|
||||||
- name: Install wasm-pack (Linux)
|
|
||||||
# We could use cargo install wasm-pack, but that takes 3.5 minutes compared to few seconds.
|
|
||||||
env:
|
|
||||||
WASMPACKURL: https://github.com/rustwasm/wasm-pack/releases/download/v0.9.1
|
|
||||||
WASMPACKDIR: wasm-pack-v0.9.1-x86_64-unknown-linux-musl
|
|
||||||
run: |
|
|
||||||
curl -L "$WASMPACKURL/$WASMPACKDIR.tar.gz" | tar -xz -C .
|
|
||||||
mv $WASMPACKDIR/wasm-pack ~/.cargo/bin
|
|
||||||
rm -r $WASMPACKDIR
|
|
||||||
shell: bash
|
|
||||||
if: matrix.os == 'ubuntu-latest'
|
|
||||||
|
|
||||||
- name: Install wasm-pack (Windows)
|
|
||||||
# We could use cargo install wasm-pack, but that takes 3.5 minutes compared to few seconds.
|
|
||||||
env:
|
|
||||||
WASMPACKURL: https://github.com/rustwasm/wasm-pack/releases/download/v0.9.1
|
|
||||||
WASMPACKDIR: wasm-pack-v0.9.1-x86_64-pc-windows-msvc
|
|
||||||
run: |
|
|
||||||
curl -L "$WASMPACKURL/$WASMPACKDIR.tar.gz" | tar -xz -C .
|
|
||||||
mv $WASMPACKDIR/wasm-pack ~/.cargo/bin
|
|
||||||
rm -r $WASMPACKDIR
|
|
||||||
shell: bash
|
|
||||||
if: matrix.os == 'windows-latest'
|
|
||||||
|
|
||||||
- name: Install Node
|
|
||||||
uses: actions/setup-node@v1
|
|
||||||
with:
|
|
||||||
node-version: '14.15.0'
|
|
||||||
|
|
||||||
- name: Build (Ubuntu)
|
|
||||||
run: node ./run dist --skip-version-validation --target linux
|
|
||||||
if: matrix.os == 'ubuntu-latest'
|
|
||||||
|
|
||||||
- name: Build (Windows)
|
|
||||||
run: node ./run dist --skip-version-validation --target win
|
|
||||||
if: matrix.os == 'windows-latest'
|
|
||||||
|
|
||||||
- name: Build (MacOs)
|
|
||||||
run: node ./run dist --skip-version-validation --target macos
|
|
||||||
if: matrix.os == 'macos-latest'
|
|
||||||
|
|
||||||
- name: Upload Artifacts (Ubuntu, AppImage)
|
|
||||||
uses: actions/upload-artifact@v1
|
|
||||||
with:
|
|
||||||
name: Enso IDE (Linux, AppImage)
|
|
||||||
path: dist/client/Enso-2.0.0-alpha.0.AppImage
|
|
||||||
if: matrix.os == 'ubuntu-latest'
|
|
||||||
|
|
||||||
- name: Upload Artifacts (Ubuntu, not packed)
|
|
||||||
uses: actions/upload-artifact@v1
|
|
||||||
with:
|
|
||||||
name: Enso IDE (Linux, not packed)
|
|
||||||
path: dist/client/linux-unpacked
|
|
||||||
if: matrix.os == 'ubuntu-latest'
|
|
||||||
|
|
||||||
- name: Upload Artifacts (Windows, Installer)
|
|
||||||
uses: actions/upload-artifact@v1
|
|
||||||
if: matrix.os == 'windows-latest'
|
|
||||||
with:
|
|
||||||
name: Enso IDE (Windows, installer)
|
|
||||||
path: dist/client/Enso Setup 2.0.0-alpha.0.exe
|
|
||||||
|
|
||||||
- name: Upload Artifacts (Windows, not packed)
|
|
||||||
uses: actions/upload-artifact@v1
|
|
||||||
if: matrix.os == 'windows-latest'
|
|
||||||
with:
|
|
||||||
name: Enso IDE (Windows, not packed)
|
|
||||||
path: dist/client/win-unpacked
|
|
||||||
|
|
||||||
- name: Upload Artifacts (macOS, dmg)
|
|
||||||
uses: actions/upload-artifact@v1
|
|
||||||
if: matrix.os == 'macos-latest'
|
|
||||||
with:
|
|
||||||
name: Enso IDE (macOS, dmg)
|
|
||||||
path: dist/client/Enso-2.0.0-alpha.0.dmg
|
|
||||||
|
|
||||||
- name: Upload Artifacts (macOS, app)
|
|
||||||
uses: actions/upload-artifact@v1
|
|
||||||
if: matrix.os == 'macos-latest'
|
|
||||||
with:
|
|
||||||
name: Enso IDE (macOS, app)
|
|
||||||
path: dist/client/mac/Enso.app
|
|
168
gui/.github/workflows/check.yml
vendored
168
gui/.github/workflows/check.yml
vendored
@ -1,168 +0,0 @@
|
|||||||
name: Check
|
|
||||||
|
|
||||||
on: [push]
|
|
||||||
|
|
||||||
# Please check if all components are available before updating the rust toolchain version.
|
|
||||||
# https://rust-lang.github.io/rustup-components-history/x86_64-unknown-linux-gnu.html
|
|
||||||
|
|
||||||
# TODO
|
|
||||||
# We might want to select the latest LTS node version automatically (right now we have hardcoded
|
|
||||||
# the '14.15.0' version below), but this issue needs to be resolved first:
|
|
||||||
# https://github.com/actions/setup-node/pull/58
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
|
|
||||||
build:
|
|
||||||
name: Build
|
|
||||||
runs-on: macOS-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v1
|
|
||||||
|
|
||||||
- name: Install Rust
|
|
||||||
uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
toolchain: nightly-2019-11-04
|
|
||||||
override: true
|
|
||||||
|
|
||||||
- name: Install wasm-pack
|
|
||||||
# We could use cargo install wasm-pack, but that takes 3.5 minutes compared to few seconds.
|
|
||||||
env:
|
|
||||||
WASMPACKURL: https://github.com/rustwasm/wasm-pack/releases/download/v0.9.1
|
|
||||||
WASMPACKDIR: wasm-pack-v0.9.1-x86_64-apple-darwin
|
|
||||||
run: |
|
|
||||||
curl -L "$WASMPACKURL/$WASMPACKDIR.tar.gz" | tar -xz -C .
|
|
||||||
mv $WASMPACKDIR/wasm-pack ~/.cargo/bin
|
|
||||||
rm -r $WASMPACKDIR
|
|
||||||
shell: bash
|
|
||||||
|
|
||||||
|
|
||||||
- name: Install Node
|
|
||||||
uses: actions/setup-node@v1
|
|
||||||
with:
|
|
||||||
node-version: '14.15.0'
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
run: node ./run build --skip-version-validation
|
|
||||||
|
|
||||||
|
|
||||||
check:
|
|
||||||
name: Linter
|
|
||||||
runs-on: macOS-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v1
|
|
||||||
|
|
||||||
- name: Install Rust
|
|
||||||
uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
toolchain: nightly-2019-11-04
|
|
||||||
override: true
|
|
||||||
|
|
||||||
- name: Install Node
|
|
||||||
uses: actions/setup-node@v1
|
|
||||||
with:
|
|
||||||
node-version: '14.15.0'
|
|
||||||
|
|
||||||
- name: Install prettier
|
|
||||||
run: npm install --save-dev --save-exact prettier
|
|
||||||
|
|
||||||
- name: Lint JS
|
|
||||||
run: npx prettier --check "src/**/*.js"
|
|
||||||
|
|
||||||
- name: Install Clippy
|
|
||||||
run: rustup component add clippy
|
|
||||||
|
|
||||||
- name: Building Rust Sources
|
|
||||||
run: node ./run lint --skip-version-validation
|
|
||||||
|
|
||||||
|
|
||||||
test:
|
|
||||||
name: Tests
|
|
||||||
runs-on: macOS-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v1
|
|
||||||
|
|
||||||
- name: Install Rust
|
|
||||||
uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
toolchain: nightly-2019-11-04
|
|
||||||
override: true
|
|
||||||
|
|
||||||
- name: Install Node
|
|
||||||
uses: actions/setup-node@v1
|
|
||||||
with:
|
|
||||||
node-version: '14.15.0'
|
|
||||||
|
|
||||||
- name: Run tests
|
|
||||||
run: node ./run test --no-wasm --skip-version-validation
|
|
||||||
|
|
||||||
|
|
||||||
wasm-test:
|
|
||||||
name: WASM Tests
|
|
||||||
runs-on: macOS-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v1
|
|
||||||
|
|
||||||
- name: Install Rust
|
|
||||||
uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
toolchain: nightly-2019-11-04
|
|
||||||
override: true
|
|
||||||
|
|
||||||
- name: Install wasm-pack
|
|
||||||
# We could use cargo install wasm-pack, but that takes 3.5 minutes compared to few seconds.
|
|
||||||
env:
|
|
||||||
WASMPACKURL: https://github.com/rustwasm/wasm-pack/releases/download/v0.9.1
|
|
||||||
WASMPACKDIR: wasm-pack-v0.9.1-x86_64-apple-darwin
|
|
||||||
run: |
|
|
||||||
curl -L "$WASMPACKURL/$WASMPACKDIR.tar.gz" | tar -xz -C .
|
|
||||||
mv $WASMPACKDIR/wasm-pack ~/.cargo/bin
|
|
||||||
rm -r $WASMPACKDIR
|
|
||||||
shell: bash
|
|
||||||
|
|
||||||
|
|
||||||
- name: Install Node
|
|
||||||
uses: actions/setup-node@v1
|
|
||||||
with:
|
|
||||||
node-version: '14.15.0'
|
|
||||||
|
|
||||||
- name: Run tests
|
|
||||||
run: node ./run test --no-native --skip-version-validation
|
|
||||||
|
|
||||||
|
|
||||||
# TODO: enable after fixing https://github.com/actions-rs/grcov/issues/50
|
|
||||||
# coverage:
|
|
||||||
# name: Coverage
|
|
||||||
# runs-on: ubuntu-latest
|
|
||||||
# steps:
|
|
||||||
# - uses: actions/checkout@v1
|
|
||||||
#
|
|
||||||
# - name: Install Rust
|
|
||||||
# uses: actions-rs/toolchain@v1
|
|
||||||
# with:
|
|
||||||
# toolchain: nightly-2019-11-04
|
|
||||||
# override: true
|
|
||||||
#
|
|
||||||
# - name: Install Node
|
|
||||||
# uses: actions/setup-node@v1
|
|
||||||
# with:
|
|
||||||
# node-version: '14.15.0'
|
|
||||||
#
|
|
||||||
# - name: Generate test profile
|
|
||||||
# working-directory: src/rust
|
|
||||||
# run: cargo test --all-features --no-fail-fast
|
|
||||||
# env:
|
|
||||||
# 'CARGO_INCREMENTAL': '0'
|
|
||||||
# 'RUSTFLAGS': '-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Zno-landing-pads'
|
|
||||||
#
|
|
||||||
# - name: Generate coverage report
|
|
||||||
# id: coverage
|
|
||||||
# uses: actions-rs/grcov@v0.1
|
|
||||||
#
|
|
||||||
# - name: Show the coverage report
|
|
||||||
# run: cat ${{ steps.coverage.outputs.report }}
|
|
||||||
#
|
|
||||||
# - name: Upload the coverage report
|
|
||||||
# uses: codecov/codecov-action@v1.0.2
|
|
||||||
# with:
|
|
||||||
# token: ${{ secrets.CODECOV_TOKEN }}
|
|
||||||
# file: ./lcov.info
|
|
63
gui/.github/workflows/codeql-analysis.yml
vendored
63
gui/.github/workflows/codeql-analysis.yml
vendored
@ -1,63 +0,0 @@
|
|||||||
# For most projects, this workflow file will not need changing; you simply need
|
|
||||||
# to commit it to your repository.
|
|
||||||
#
|
|
||||||
# You may wish to alter this file to override the set of languages analyzed,
|
|
||||||
# or to provide custom queries or build logic.
|
|
||||||
|
|
||||||
|
|
||||||
name: "CodeQL"
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ main ]
|
|
||||||
pull_request:
|
|
||||||
# The branches below must be a subset of the branches above
|
|
||||||
branches: [ main ]
|
|
||||||
schedule:
|
|
||||||
- cron: '26 15 * * 5'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
analyze:
|
|
||||||
name: Analyze
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
language: [ 'javascript' ]
|
|
||||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
|
|
||||||
# Learn more:
|
|
||||||
# https://docs.github.com/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
|
||||||
- name: Initialize CodeQL
|
|
||||||
uses: github/codeql-action/init@v1
|
|
||||||
with:
|
|
||||||
languages: ${{ matrix.language }}
|
|
||||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
|
||||||
# By default, queries listed here will override any specified in a config file.
|
|
||||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
|
||||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
|
||||||
|
|
||||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
|
||||||
# If this step fails, then you should remove it and run the build manually (see below)
|
|
||||||
- name: Autobuild
|
|
||||||
uses: github/codeql-action/autobuild@v1
|
|
||||||
|
|
||||||
# ℹ️ Command-line programs to run using the OS shell.
|
|
||||||
# 📚 https://git.io/JvXDl
|
|
||||||
|
|
||||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
|
||||||
# and modify them (or add more) to build your code if your project
|
|
||||||
# uses a compiled language
|
|
||||||
|
|
||||||
#- run: |
|
|
||||||
# make bootstrap
|
|
||||||
# make release
|
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
|
||||||
uses: github/codeql-action/analyze@v1
|
|
39
gui/.github/workflows/docs.yml
vendored
39
gui/.github/workflows/docs.yml
vendored
@ -1,39 +0,0 @@
|
|||||||
name: Publish Developer Docs
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
paths:
|
|
||||||
- 'docs/**'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
checkout:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
repository: 'enso-org/enso-org.github.io'
|
|
||||||
ref: 'sources'
|
|
||||||
token: ${{ secrets.ENSO_PAT }}
|
|
||||||
- name: set identity email
|
|
||||||
run: git config --global user.email "actions@github.com"
|
|
||||||
- name: set identity name
|
|
||||||
run: git config --global user.name "GitHub Actions"
|
|
||||||
- name: Checkout submodules
|
|
||||||
run: git submodule update --init
|
|
||||||
- name: Update submodules
|
|
||||||
id: status
|
|
||||||
run: |
|
|
||||||
git submodule update --init
|
|
||||||
git submodule update --remote --merge
|
|
||||||
if [ -n "$(git status --porcelain)" ]; then
|
|
||||||
echo "::set-output name=has_changes::1"
|
|
||||||
fi
|
|
||||||
- name: Push changes
|
|
||||||
run: |
|
|
||||||
git add .
|
|
||||||
git commit -m "Update submodules"
|
|
||||||
git push origin sources
|
|
||||||
if: steps.status.outputs.has_changes == '1'
|
|
||||||
|
|
423
gui/.github/workflows/gui-ci.yml
vendored
Normal file
423
gui/.github/workflows/gui-ci.yml
vendored
Normal file
@ -0,0 +1,423 @@
|
|||||||
|
|
||||||
|
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
# DO NOT CHANGE THIS FILE. IT WAS GENERATED FROM 'build/workflow.js'. READ DOCS THERE TO LEARN MORE.
|
||||||
|
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
name: GUI CI
|
||||||
|
'on':
|
||||||
|
- push
|
||||||
|
jobs:
|
||||||
|
version_assertions:
|
||||||
|
name: Version Assertions
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- macOS-latest
|
||||||
|
fail-fast: false
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Read changelog info
|
||||||
|
id: changelog
|
||||||
|
run: |2-
|
||||||
|
|
||||||
|
node ./run ci-gen --skip-version-validation
|
||||||
|
content=`cat CURRENT_RELEASE_CHANGELOG.json`
|
||||||
|
echo "::set-output name=content::$content"
|
||||||
|
|
||||||
|
shell: bash
|
||||||
|
- name: Assert Version Unstable
|
||||||
|
run: node ./run assert-version-unstable --skip-version-validation
|
||||||
|
if: github.ref == 'refs/heads/unstable'
|
||||||
|
- name: Assert Version Stable
|
||||||
|
run: node ./run assert-version-stable --skip-version-validation
|
||||||
|
if: github.ref == 'refs/heads/stable'
|
||||||
|
- id: checkCurrentReleaseTag
|
||||||
|
uses: mukunku/tag-exists-action@v1.0.0
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
tag: v${{fromJson(steps.changelog.outputs.content).version}}
|
||||||
|
- name: Fail if release already exists
|
||||||
|
run: >-
|
||||||
|
if [[ ${{ steps.checkCurrentReleaseTag.outputs.exists }} == true ]];
|
||||||
|
then exit 1; fi
|
||||||
|
lint:
|
||||||
|
name: Linter
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- macOS-latest
|
||||||
|
fail-fast: false
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Install Node
|
||||||
|
uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: 14.15.0
|
||||||
|
- name: Install Rust
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: nightly-2019-11-04
|
||||||
|
override: true
|
||||||
|
- name: Install Prettier
|
||||||
|
run: npm install --save-dev --save-exact prettier
|
||||||
|
- name: Install Clippy
|
||||||
|
run: rustup component add clippy
|
||||||
|
- name: Lint JavaScript sources
|
||||||
|
run: npx prettier --check 'src/**/*.js'
|
||||||
|
- name: Lint Rust sources
|
||||||
|
run: node ./run lint --skip-version-validation
|
||||||
|
test:
|
||||||
|
name: Tests
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- macOS-latest
|
||||||
|
fail-fast: false
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Install Node
|
||||||
|
uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: 14.15.0
|
||||||
|
- name: Install Rust
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: nightly-2019-11-04
|
||||||
|
override: true
|
||||||
|
- name: Run tests (no WASM)
|
||||||
|
run: node ./run test --no-wasm --skip-version-validation
|
||||||
|
wasm-test:
|
||||||
|
name: WASM Tests
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- macOS-latest
|
||||||
|
fail-fast: false
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Install Node
|
||||||
|
uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: 14.15.0
|
||||||
|
- name: Install Rust
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: nightly-2019-11-04
|
||||||
|
override: true
|
||||||
|
- name: Install wasm-pack (macOS)
|
||||||
|
env:
|
||||||
|
WASMPACKURL: https://github.com/rustwasm/wasm-pack/releases/download/v0.9.1
|
||||||
|
WASMPACKDIR: wasm-pack-v0.9.1-x86_64-apple-darwin
|
||||||
|
run: |2-
|
||||||
|
|
||||||
|
curl -L "$WASMPACKURL/$WASMPACKDIR.tar.gz" | tar -xz -C .
|
||||||
|
mv $WASMPACKDIR/wasm-pack ~/.cargo/bin
|
||||||
|
rm -r $WASMPACKDIR
|
||||||
|
shell: bash
|
||||||
|
if: matrix.os == 'macOS-latest'
|
||||||
|
- name: Install wasm-pack (Windows)
|
||||||
|
env:
|
||||||
|
WASMPACKURL: https://github.com/rustwasm/wasm-pack/releases/download/v0.9.1
|
||||||
|
WASMPACKDIR: wasm-pack-v0.9.1-x86_64-pc-windows-msvc
|
||||||
|
run: |2-
|
||||||
|
|
||||||
|
curl -L "$WASMPACKURL/$WASMPACKDIR.tar.gz" | tar -xz -C .
|
||||||
|
mv $WASMPACKDIR/wasm-pack ~/.cargo/bin
|
||||||
|
rm -r $WASMPACKDIR
|
||||||
|
shell: bash
|
||||||
|
if: matrix.os == 'windows-latest'
|
||||||
|
- name: Install wasm-pack (Linux)
|
||||||
|
env:
|
||||||
|
WASMPACKURL: https://github.com/rustwasm/wasm-pack/releases/download/v0.9.1
|
||||||
|
WASMPACKDIR: wasm-pack-v0.9.1-x86_64-unknown-linux-musl
|
||||||
|
run: |2-
|
||||||
|
|
||||||
|
curl -L "$WASMPACKURL/$WASMPACKDIR.tar.gz" | tar -xz -C .
|
||||||
|
mv $WASMPACKDIR/wasm-pack ~/.cargo/bin
|
||||||
|
rm -r $WASMPACKDIR
|
||||||
|
shell: bash
|
||||||
|
if: matrix.os == 'ubuntu-latest'
|
||||||
|
- name: Run tests (WASM)
|
||||||
|
run: node ./run test --no-native --skip-version-validation
|
||||||
|
simple_build:
|
||||||
|
name: Simple Build (WASM size limit check)
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- macOS-latest
|
||||||
|
fail-fast: false
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Install Node
|
||||||
|
uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: 14.15.0
|
||||||
|
- name: Install Rust
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: nightly-2019-11-04
|
||||||
|
override: true
|
||||||
|
- name: Install wasm-pack (macOS)
|
||||||
|
env:
|
||||||
|
WASMPACKURL: https://github.com/rustwasm/wasm-pack/releases/download/v0.9.1
|
||||||
|
WASMPACKDIR: wasm-pack-v0.9.1-x86_64-apple-darwin
|
||||||
|
run: |2-
|
||||||
|
|
||||||
|
curl -L "$WASMPACKURL/$WASMPACKDIR.tar.gz" | tar -xz -C .
|
||||||
|
mv $WASMPACKDIR/wasm-pack ~/.cargo/bin
|
||||||
|
rm -r $WASMPACKDIR
|
||||||
|
shell: bash
|
||||||
|
if: matrix.os == 'macOS-latest'
|
||||||
|
- name: Install wasm-pack (Windows)
|
||||||
|
env:
|
||||||
|
WASMPACKURL: https://github.com/rustwasm/wasm-pack/releases/download/v0.9.1
|
||||||
|
WASMPACKDIR: wasm-pack-v0.9.1-x86_64-pc-windows-msvc
|
||||||
|
run: |2-
|
||||||
|
|
||||||
|
curl -L "$WASMPACKURL/$WASMPACKDIR.tar.gz" | tar -xz -C .
|
||||||
|
mv $WASMPACKDIR/wasm-pack ~/.cargo/bin
|
||||||
|
rm -r $WASMPACKDIR
|
||||||
|
shell: bash
|
||||||
|
if: matrix.os == 'windows-latest'
|
||||||
|
- name: Install wasm-pack (Linux)
|
||||||
|
env:
|
||||||
|
WASMPACKURL: https://github.com/rustwasm/wasm-pack/releases/download/v0.9.1
|
||||||
|
WASMPACKDIR: wasm-pack-v0.9.1-x86_64-unknown-linux-musl
|
||||||
|
run: |2-
|
||||||
|
|
||||||
|
curl -L "$WASMPACKURL/$WASMPACKDIR.tar.gz" | tar -xz -C .
|
||||||
|
mv $WASMPACKDIR/wasm-pack ~/.cargo/bin
|
||||||
|
rm -r $WASMPACKDIR
|
||||||
|
shell: bash
|
||||||
|
if: matrix.os == 'ubuntu-latest'
|
||||||
|
- name: Build (macos)
|
||||||
|
run: node ./run dist --skip-version-validation --target macos
|
||||||
|
if: matrix.os == 'macos-latest'
|
||||||
|
if: >-
|
||||||
|
!(contains(github.event.head_commit.message,'[ci build]') || github.ref ==
|
||||||
|
'refs/heads/main' || github.ref == 'refs/heads/develop' || github.ref ==
|
||||||
|
'refs/heads/unstable' || github.ref == 'refs/heads/stable')
|
||||||
|
build:
|
||||||
|
name: Build
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- windows-latest
|
||||||
|
- macOS-latest
|
||||||
|
- ubuntu-latest
|
||||||
|
fail-fast: false
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Read changelog info
|
||||||
|
id: changelog
|
||||||
|
run: |2-
|
||||||
|
|
||||||
|
node ./run ci-gen --skip-version-validation
|
||||||
|
content=`cat CURRENT_RELEASE_CHANGELOG.json`
|
||||||
|
echo "::set-output name=content::$content"
|
||||||
|
|
||||||
|
shell: bash
|
||||||
|
- name: Install Node
|
||||||
|
uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: 14.15.0
|
||||||
|
- name: Install Rust
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: nightly-2019-11-04
|
||||||
|
override: true
|
||||||
|
- name: Install wasm-pack (macOS)
|
||||||
|
env:
|
||||||
|
WASMPACKURL: https://github.com/rustwasm/wasm-pack/releases/download/v0.9.1
|
||||||
|
WASMPACKDIR: wasm-pack-v0.9.1-x86_64-apple-darwin
|
||||||
|
run: |2-
|
||||||
|
|
||||||
|
curl -L "$WASMPACKURL/$WASMPACKDIR.tar.gz" | tar -xz -C .
|
||||||
|
mv $WASMPACKDIR/wasm-pack ~/.cargo/bin
|
||||||
|
rm -r $WASMPACKDIR
|
||||||
|
shell: bash
|
||||||
|
if: matrix.os == 'macOS-latest'
|
||||||
|
- name: Install wasm-pack (Windows)
|
||||||
|
env:
|
||||||
|
WASMPACKURL: https://github.com/rustwasm/wasm-pack/releases/download/v0.9.1
|
||||||
|
WASMPACKDIR: wasm-pack-v0.9.1-x86_64-pc-windows-msvc
|
||||||
|
run: |2-
|
||||||
|
|
||||||
|
curl -L "$WASMPACKURL/$WASMPACKDIR.tar.gz" | tar -xz -C .
|
||||||
|
mv $WASMPACKDIR/wasm-pack ~/.cargo/bin
|
||||||
|
rm -r $WASMPACKDIR
|
||||||
|
shell: bash
|
||||||
|
if: matrix.os == 'windows-latest'
|
||||||
|
- name: Install wasm-pack (Linux)
|
||||||
|
env:
|
||||||
|
WASMPACKURL: https://github.com/rustwasm/wasm-pack/releases/download/v0.9.1
|
||||||
|
WASMPACKDIR: wasm-pack-v0.9.1-x86_64-unknown-linux-musl
|
||||||
|
run: |2-
|
||||||
|
|
||||||
|
curl -L "$WASMPACKURL/$WASMPACKDIR.tar.gz" | tar -xz -C .
|
||||||
|
mv $WASMPACKDIR/wasm-pack ~/.cargo/bin
|
||||||
|
rm -r $WASMPACKDIR
|
||||||
|
shell: bash
|
||||||
|
if: matrix.os == 'ubuntu-latest'
|
||||||
|
- name: Build (macos)
|
||||||
|
run: node ./run dist --skip-version-validation --target macos
|
||||||
|
if: matrix.os == 'macos-latest'
|
||||||
|
- name: Build (win)
|
||||||
|
run: node ./run dist --skip-version-validation --target win
|
||||||
|
if: matrix.os == 'windows-latest'
|
||||||
|
- name: Build (linux)
|
||||||
|
run: node ./run dist --skip-version-validation --target linux
|
||||||
|
if: matrix.os == 'ubuntu-latest'
|
||||||
|
- name: Upload Content Artifacts
|
||||||
|
uses: actions/upload-artifact@v1
|
||||||
|
with:
|
||||||
|
name: content
|
||||||
|
path: dist/content
|
||||||
|
if: matrix.os == 'macOS-latest'
|
||||||
|
- name: Upload Artifacts (Linux, AppImage)
|
||||||
|
uses: actions/upload-artifact@v1
|
||||||
|
with:
|
||||||
|
name: >-
|
||||||
|
enso-linux-${{fromJson(steps.changelog.outputs.content).version}}.AppImage
|
||||||
|
path: >-
|
||||||
|
dist/client/enso-linux-${{fromJson(steps.changelog.outputs.content).version}}.AppImage
|
||||||
|
if: matrix.os == 'ubuntu-latest'
|
||||||
|
- name: Upload Artifacts (Windows, exe)
|
||||||
|
uses: actions/upload-artifact@v1
|
||||||
|
with:
|
||||||
|
name: enso-win-${{fromJson(steps.changelog.outputs.content).version}}.exe
|
||||||
|
path: >-
|
||||||
|
dist/client/enso-win-${{fromJson(steps.changelog.outputs.content).version}}.exe
|
||||||
|
if: matrix.os == 'windows-latest'
|
||||||
|
- name: Upload Artifacts (macOS, dmg)
|
||||||
|
uses: actions/upload-artifact@v1
|
||||||
|
with:
|
||||||
|
name: enso-mac-${{fromJson(steps.changelog.outputs.content).version}}.dmg
|
||||||
|
path: >-
|
||||||
|
dist/client/enso-mac-${{fromJson(steps.changelog.outputs.content).version}}.dmg
|
||||||
|
if: matrix.os == 'macos-latest'
|
||||||
|
if: >-
|
||||||
|
contains(github.event.head_commit.message,'[ci build]') || github.ref ==
|
||||||
|
'refs/heads/main' || github.ref == 'refs/heads/develop' || github.ref ==
|
||||||
|
'refs/heads/unstable' || github.ref == 'refs/heads/stable'
|
||||||
|
release_to_github:
|
||||||
|
name: GitHub Release
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- macOS-latest
|
||||||
|
fail-fast: false
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Download artifacts
|
||||||
|
uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
path: artifacts
|
||||||
|
- name: Read changelog info
|
||||||
|
id: changelog
|
||||||
|
run: |2-
|
||||||
|
|
||||||
|
node ./run ci-gen --skip-version-validation
|
||||||
|
content=`cat CURRENT_RELEASE_CHANGELOG.json`
|
||||||
|
echo "::set-output name=content::$content"
|
||||||
|
|
||||||
|
shell: bash
|
||||||
|
- id: checkCurrentReleaseTag
|
||||||
|
uses: mukunku/tag-exists-action@v1.0.0
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
tag: v${{fromJson(steps.changelog.outputs.content).version}}
|
||||||
|
- name: Fail if release already exists
|
||||||
|
run: >-
|
||||||
|
if [[ ${{ steps.checkCurrentReleaseTag.outputs.exists }} == true ]];
|
||||||
|
then exit 1; fi
|
||||||
|
- name: Upload GitHub Release
|
||||||
|
uses: softprops/action-gh-release@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
files: artifacts/**/enso-*
|
||||||
|
name: Enso ${{fromJson(steps.changelog.outputs.content).version}}
|
||||||
|
tag_name: v${{fromJson(steps.changelog.outputs.content).version}}
|
||||||
|
body: ${{fromJson(steps.changelog.outputs.content).body}}
|
||||||
|
prerelease: ${{fromJson(steps.changelog.outputs.content).prerelease}}
|
||||||
|
if: github.ref == 'refs/heads/unstable' || github.ref == 'refs/heads/stable'
|
||||||
|
needs:
|
||||||
|
- version_assertions
|
||||||
|
- lint
|
||||||
|
- test
|
||||||
|
- wasm-test
|
||||||
|
- build
|
||||||
|
release_to_cdn:
|
||||||
|
name: CDN Release
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- ubuntu-latest
|
||||||
|
fail-fast: false
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Download artifacts
|
||||||
|
uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
path: artifacts
|
||||||
|
- name: Read changelog info
|
||||||
|
id: changelog
|
||||||
|
run: |2-
|
||||||
|
|
||||||
|
node ./run ci-gen --skip-version-validation
|
||||||
|
content=`cat CURRENT_RELEASE_CHANGELOG.json`
|
||||||
|
echo "::set-output name=content::$content"
|
||||||
|
|
||||||
|
shell: bash
|
||||||
|
- shell: bash
|
||||||
|
run: |2-
|
||||||
|
|
||||||
|
aws configure --profile s3-upload <<-EOF > /dev/null 2>&1
|
||||||
|
${{ secrets.ARTEFACT_S3_ACCESS_KEY_ID }}
|
||||||
|
${{ secrets.ARTEFACT_S3_SECRET_ACCESS_KEY }}
|
||||||
|
us-west-1
|
||||||
|
text
|
||||||
|
EOF
|
||||||
|
|
||||||
|
- name: Upload 'index.js.gz' to CDN
|
||||||
|
shell: bash
|
||||||
|
run: >-
|
||||||
|
aws s3 cp ./artifacts/content/assets/index.js.gz
|
||||||
|
s3://ensocdn/ide/${{fromJson(steps.changelog.outputs.content).version}}/index.js.gz
|
||||||
|
--profile s3-upload --acl public-read --content-encoding gzip
|
||||||
|
- name: Upload 'style.css' to CDN
|
||||||
|
shell: bash
|
||||||
|
run: >-
|
||||||
|
aws s3 cp ./artifacts/content/assets/style.css
|
||||||
|
s3://ensocdn/ide/${{fromJson(steps.changelog.outputs.content).version}}/style.css
|
||||||
|
--profile s3-upload --acl public-read --content-encoding gzip
|
||||||
|
- name: Upload 'ide.wasm' to CDN
|
||||||
|
shell: bash
|
||||||
|
run: >-
|
||||||
|
aws s3 cp ./artifacts/content/assets/ide.wasm
|
||||||
|
s3://ensocdn/ide/${{fromJson(steps.changelog.outputs.content).version}}/ide.wasm
|
||||||
|
--profile s3-upload --acl public-read --content-encoding gzip
|
||||||
|
- name: Upload 'wasm_imports.js.gz' to CDN
|
||||||
|
shell: bash
|
||||||
|
run: >-
|
||||||
|
aws s3 cp ./artifacts/content/assets/wasm_imports.js.gz
|
||||||
|
s3://ensocdn/ide/${{fromJson(steps.changelog.outputs.content).version}}/wasm_imports.js.gz
|
||||||
|
--profile s3-upload --acl public-read --content-encoding gzip
|
||||||
|
if: github.ref == 'refs/heads/unstable' || github.ref == 'refs/heads/stable'
|
||||||
|
needs:
|
||||||
|
- version_assertions
|
||||||
|
- lint
|
||||||
|
- test
|
||||||
|
- wasm-test
|
||||||
|
- build
|
106
gui/.github/workflows/release.yml
vendored
106
gui/.github/workflows/release.yml
vendored
@ -1,106 +0,0 @@
|
|||||||
name: Release CI
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags:
|
|
||||||
- "ide-*.*.*"
|
|
||||||
|
|
||||||
env:
|
|
||||||
rustToolchain: nightly-2019-11-04
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: Build
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
timeout-minutes: 60
|
|
||||||
strategy:
|
|
||||||
fail-fast: true
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
|
|
||||||
- name: Install Rust
|
|
||||||
uses: actions-rs/toolchain@v1.0.6
|
|
||||||
with:
|
|
||||||
toolchain: ${{ env.rustToolchain }}
|
|
||||||
override: true
|
|
||||||
|
|
||||||
- name: Install wasm-pack
|
|
||||||
uses: actions-rs/cargo@v1
|
|
||||||
with:
|
|
||||||
command: install
|
|
||||||
args: wasm-pack --version 0.9.1
|
|
||||||
|
|
||||||
- name: Install Node
|
|
||||||
uses: actions/setup-node@v1
|
|
||||||
with:
|
|
||||||
node-version: '14.15.0'
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
run: node ./run dist --skip-version-validation
|
|
||||||
|
|
||||||
- name: Upload Artifacts
|
|
||||||
uses: actions/upload-artifact@v1
|
|
||||||
with:
|
|
||||||
name: ide-dist
|
|
||||||
path: dist/content
|
|
||||||
|
|
||||||
|
|
||||||
upload-cdn:
|
|
||||||
name: Prepare Release
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: build
|
|
||||||
steps:
|
|
||||||
- uses: actions/download-artifact@v2
|
|
||||||
with:
|
|
||||||
path: artifacts
|
|
||||||
|
|
||||||
- name: Install Node
|
|
||||||
uses: actions/setup-node@v1
|
|
||||||
with:
|
|
||||||
node-version: '14.15.0'
|
|
||||||
|
|
||||||
- name: Prepare Distribution Version
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
ref=${{ github.ref }}
|
|
||||||
refversion=${ref#"refs/tags/ide-"}
|
|
||||||
echo "DIST_VERSION=$refversion" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Prepare AWS Session
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
aws configure --profile s3-upload <<-EOF > /dev/null 2>&1
|
|
||||||
${{ secrets.ARTEFACT_S3_ACCESS_KEY_ID }}
|
|
||||||
${{ secrets.ARTEFACT_S3_SECRET_ACCESS_KEY }}
|
|
||||||
us-west-1
|
|
||||||
text
|
|
||||||
EOF
|
|
||||||
|
|
||||||
- name: Upload the index.js to S3
|
|
||||||
shell: bash
|
|
||||||
run: >
|
|
||||||
aws s3 cp ./artifacts/ide-dist/assets/index.js.gz
|
|
||||||
s3://ensocdn/ide/${{ env.DIST_VERSION }}/index.js.gz --profile
|
|
||||||
s3-upload --acl public-read --content-encoding gzip
|
|
||||||
|
|
||||||
- name: Upload the style.css to S3
|
|
||||||
shell: bash
|
|
||||||
run: >
|
|
||||||
aws s3 cp ./artifacts/ide-dist/assets/style.css
|
|
||||||
s3://ensocdn/ide/${{ env.DIST_VERSION }}/style.css --profile
|
|
||||||
s3-upload --acl public-read --content-encoding gzip
|
|
||||||
|
|
||||||
- name: Upload the ide.wasm to S3
|
|
||||||
shell: bash
|
|
||||||
run: >
|
|
||||||
aws s3 cp ./artifacts/ide-dist/assets/ide.wasm
|
|
||||||
s3://ensocdn/ide/${{ env.DIST_VERSION }}/ide.wasm --profile
|
|
||||||
s3-upload --acl public-read --content-type 'application/wasm'
|
|
||||||
|
|
||||||
- name: Upload the wasm_imports.js to S3
|
|
||||||
shell: bash
|
|
||||||
run: >
|
|
||||||
aws s3 cp ./artifacts/ide-dist/assets/wasm_imports.js.gz
|
|
||||||
s3://ensocdn/ide/${{ env.DIST_VERSION }}/wasm_imports.js.gz --profile
|
|
||||||
s3-upload --acl public-read --content-encoding gzip
|
|
32
gui/CHANGELOG.md
Normal file
32
gui/CHANGELOG.md
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
# Next Release
|
||||||
|
This is a minor update exposing more control over the anonymous data collection. You are now allowed
|
||||||
|
to run the application with `--no-errors-data-collection`, and `--no-data-collection`. The options
|
||||||
|
disable the collection of errors data (keeping the collection of other events), and disables the
|
||||||
|
collection of all data, respectively. To learn more what data is collected in Enso alpha releases,
|
||||||
|
read the notes of the `Enso 2.0.0-alpha.1` release.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Enso 2.0.0-alpha.1 (2020-01-26)
|
||||||
|
This is the first release of Enso, a general-purpose programming language and environment for
|
||||||
|
interactive data processing. It is a tool that spans the entire stack, going from high-level
|
||||||
|
visualization and communication to the nitty-gritty of backend services, all in a single language.
|
||||||
|
|
||||||
|
<br/>![Release Notes](/docs/assets/tags/release_notes.svg)
|
||||||
|
|
||||||
|
#### Anonymous Data Collection
|
||||||
|
Please note that this release collects anonymous usage data which will be used to improve Enso and
|
||||||
|
prepare it for a stable release. We will switch to opt-in data collection in stable version
|
||||||
|
releases. The usage data will not contain your code (expressions above nodes), however, reported
|
||||||
|
errors may contain brief snippets of out of context code that specifically leads to the error, like
|
||||||
|
"the method 'foo' does not exist on Number". The following data will be collected:
|
||||||
|
- Session length.
|
||||||
|
- Graph editing events (node create, dele, position change, connect, disconnect, collapse, edit
|
||||||
|
start, edit end). This will not include any information about node expressions used.
|
||||||
|
- Navigation events (camera movement, scope change).
|
||||||
|
- Visualization events (visualization open, close, switch). This will not include any information
|
||||||
|
about the displayed data nor the rendered visualization itself.
|
||||||
|
- Project management events (project open, close, rename).
|
||||||
|
- Errors (IDE crashes, WASM panics, Project Manager errors, Language Server errors, Compiler
|
||||||
|
errors).
|
||||||
|
- Performance statistics (minimum, maximum, average GUI refresh rate).
|
39
gui/build/package-lock.json
generated
39
gui/build/package-lock.json
generated
@ -42,16 +42,16 @@
|
|||||||
"color-convert": "^2.0.1"
|
"color-convert": "^2.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"argparse": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
|
||||||
|
},
|
||||||
"balanced-match": {
|
"balanced-match": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
|
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
|
||||||
},
|
},
|
||||||
"binaryen": {
|
|
||||||
"version": "91.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/binaryen/-/binaryen-91.0.0.tgz",
|
|
||||||
"integrity": "sha512-IPeiSHceT5/VXOQ9W4f9k/ryoA1QGdCvpeyFPKsIZQvctN8e1xgvVFK5HHxgfAPf2gWy+plrFdJK5xSe4W8cFQ=="
|
|
||||||
},
|
|
||||||
"brace-expansion": {
|
"brace-expansion": {
|
||||||
"version": "1.1.11",
|
"version": "1.1.11",
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||||
@ -164,6 +164,14 @@
|
|||||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
||||||
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
|
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
|
||||||
},
|
},
|
||||||
|
"js-yaml": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==",
|
||||||
|
"requires": {
|
||||||
|
"argparse": "^2.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"locate-path": {
|
"locate-path": {
|
||||||
"version": "5.0.0",
|
"version": "5.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
|
||||||
@ -172,6 +180,14 @@
|
|||||||
"p-locate": "^4.1.0"
|
"p-locate": "^4.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"lru-cache": {
|
||||||
|
"version": "6.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
|
||||||
|
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
||||||
|
"requires": {
|
||||||
|
"yallist": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"minimatch": {
|
"minimatch": {
|
||||||
"version": "3.0.4",
|
"version": "3.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||||
@ -264,6 +280,14 @@
|
|||||||
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
|
||||||
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
|
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
|
||||||
},
|
},
|
||||||
|
"semver": {
|
||||||
|
"version": "7.3.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
|
||||||
|
"integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
|
||||||
|
"requires": {
|
||||||
|
"lru-cache": "^6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"set-blocking": {
|
"set-blocking": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
|
||||||
@ -312,6 +336,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
|
||||||
"integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
|
"integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
|
||||||
},
|
},
|
||||||
|
"yallist": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
||||||
|
},
|
||||||
"yargs": {
|
"yargs": {
|
||||||
"version": "15.3.0",
|
"version": "15.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.0.tgz",
|
||||||
|
@ -4,10 +4,11 @@
|
|||||||
"description": "Build Scripts",
|
"description": "Build Scripts",
|
||||||
"repository": "git@github.com:enso-org/ide.git",
|
"repository": "git@github.com:enso-org/ide.git",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"binaryen": "^91.0.0",
|
|
||||||
"glob": "^7.1.6",
|
"glob": "^7.1.6",
|
||||||
"ncp": "^2.0.0",
|
"ncp": "^2.0.0",
|
||||||
"yargs": "^15.3.0"
|
"yargs": "^15.3.0",
|
||||||
|
"js-yaml": "4.0.0",
|
||||||
|
"semver": "7.3.4"
|
||||||
},
|
},
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
@ -16,12 +16,17 @@ paths.script.main = path.join(paths.root,'run')
|
|||||||
paths.script.root = path.join(paths.root,'build')
|
paths.script.root = path.join(paths.root,'build')
|
||||||
paths.script.run = path.join(paths.script.root,'run')
|
paths.script.run = path.join(paths.script.root,'run')
|
||||||
|
|
||||||
|
paths.github = {}
|
||||||
|
paths.github.root = path.join(paths.root,'.github')
|
||||||
|
paths.github.workflows = path.join(paths.github.root,'workflows')
|
||||||
|
|
||||||
paths.dist = {}
|
paths.dist = {}
|
||||||
paths.dist.root = path.join(paths.root,'dist')
|
paths.dist.root = path.join(paths.root,'dist')
|
||||||
paths.dist.client = path.join(paths.dist.root,'client')
|
paths.dist.client = path.join(paths.dist.root,'client')
|
||||||
paths.dist.content = path.join(paths.dist.root,'content')
|
paths.dist.content = path.join(paths.dist.root,'content')
|
||||||
paths.dist.bin = path.join(paths.dist.root, 'bin')
|
paths.dist.bin = path.join(paths.dist.root, 'bin')
|
||||||
paths.dist.init = path.join(paths.dist.root,'init')
|
paths.dist.init = path.join(paths.dist.root,'init')
|
||||||
|
paths.dist.buildInit = path.join(paths.dist.root,'build-init')
|
||||||
paths.dist.buildInfo = path.join(paths.dist.root,'build.json')
|
paths.dist.buildInfo = path.join(paths.dist.root,'build.json')
|
||||||
|
|
||||||
paths.dist.wasm = {}
|
paths.dist.wasm = {}
|
||||||
|
187
gui/build/release.js
Normal file
187
gui/build/release.js
Normal file
@ -0,0 +1,187 @@
|
|||||||
|
/// Package release utilities. Especially, utilities to load `CHANGELOG.md`, extract the newest
|
||||||
|
/// entry, and use it to generate package version and description.
|
||||||
|
|
||||||
|
const fss = require('fs')
|
||||||
|
const path = require('path')
|
||||||
|
const paths = require('./paths')
|
||||||
|
const semver = require('semver')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// =================
|
||||||
|
// === Constants ===
|
||||||
|
// =================
|
||||||
|
|
||||||
|
const CHANGELOG_FILE_NAME = 'CHANGELOG.md'
|
||||||
|
const CHANGELOG_FILE = path.join(paths.root,CHANGELOG_FILE_NAME)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ===============
|
||||||
|
// === Version ===
|
||||||
|
// ===============
|
||||||
|
|
||||||
|
class NextReleaseVersion {
|
||||||
|
/// Version used for config files when building the package with "next version" in changelog.
|
||||||
|
toString() {
|
||||||
|
return "0.0.0"
|
||||||
|
}
|
||||||
|
|
||||||
|
isPrerelease() {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Version {
|
||||||
|
constructor(major,minor,patch,tag,tagVersion) {
|
||||||
|
this.major = major
|
||||||
|
this.minor = minor
|
||||||
|
this.patch = patch
|
||||||
|
this.tag = tag
|
||||||
|
this.tagVersion = tagVersion
|
||||||
|
}
|
||||||
|
|
||||||
|
lt(that) {
|
||||||
|
if (this.major < that.major) { return true }
|
||||||
|
if (this.minor < that.minor) { return true }
|
||||||
|
if (this.patch < that.patch) { return true }
|
||||||
|
if (this.tag === 'alpha' && that.tag === 'beta') { return true }
|
||||||
|
if (this.tag === 'alpha' && that.tag === 'rc') { return true }
|
||||||
|
if (this.tag === 'beta' && that.tag === 'rc') { return true }
|
||||||
|
if (this.tagVersion < that.tagVersion) { return true }
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
isPrerelease() {
|
||||||
|
if (this.tag) { return true } else { return false }
|
||||||
|
}
|
||||||
|
|
||||||
|
toString() {
|
||||||
|
let suffix = ''
|
||||||
|
if (this.tag) {
|
||||||
|
suffix = `-${this.tag}.${this.tagVersion}`
|
||||||
|
}
|
||||||
|
return `${this.major}.${this.minor}.${this.patch}${suffix}`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ======================
|
||||||
|
// === ChangelogEntry ===
|
||||||
|
// ======================
|
||||||
|
|
||||||
|
class ChangelogEntry {
|
||||||
|
constructor(version,body) {
|
||||||
|
this.version = version
|
||||||
|
this.body = body
|
||||||
|
}
|
||||||
|
|
||||||
|
assert_is_newest_version_defined() {
|
||||||
|
if (this.version instanceof NextReleaseVersion) {
|
||||||
|
throw `The newest entry in CHANGELOG.md does not have version assigned.`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
assert_is_unstable() {
|
||||||
|
assert_is_newest_version_defined()
|
||||||
|
if (!this.isPrerelease()) {
|
||||||
|
throw "Assertion failed. The version is stable."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
assert_is_stable() {
|
||||||
|
assert_is_newest_version_defined()
|
||||||
|
if (this.isPrerelease()) {
|
||||||
|
throw "Assertion failed. The version is unstable."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
isPrerelease() {
|
||||||
|
return this.version.isPrerelease()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// =================
|
||||||
|
// === Changelog ===
|
||||||
|
// =================
|
||||||
|
|
||||||
|
class Changelog {
|
||||||
|
constructor() {
|
||||||
|
this.entries = changelogEntries()
|
||||||
|
}
|
||||||
|
|
||||||
|
newestEntry() {
|
||||||
|
return this.entries[0]
|
||||||
|
}
|
||||||
|
|
||||||
|
currentVersion() {
|
||||||
|
return this.newestEntry().version
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function changelogSections() {
|
||||||
|
let text = '\n' + fss.readFileSync(CHANGELOG_FILE,"utf8")
|
||||||
|
let chunks = text.split(/\r?\n#(?!#)/)
|
||||||
|
return chunks.filter((s) => s != '')
|
||||||
|
}
|
||||||
|
|
||||||
|
function changelogEntries() {
|
||||||
|
let sections = changelogSections()
|
||||||
|
let entries = []
|
||||||
|
let firstSection = true
|
||||||
|
for (let section of sections) {
|
||||||
|
let splitPoint = section.indexOf('\n')
|
||||||
|
let header = section.substring(0,splitPoint)
|
||||||
|
let body = section.substring(splitPoint).trim()
|
||||||
|
if (firstSection && header.startsWith(' Next Release')) {
|
||||||
|
let version = new NextReleaseVersion
|
||||||
|
entries.push(new ChangelogEntry(version,body))
|
||||||
|
} else {
|
||||||
|
let headerReg = /^ Enso (?<major>[0-9]+)\.(?<minor>[0-9]+)\.(?<patch>[0-9]+)(-(?<tag>alpha|beta|rc)\.(?<tagVersion>[0-9]+))? \((?<year>[0-9][0-9][0-9][0-9])-(?<month>[0-9][0-9])-(?<day>[0-9][0-9])\)/
|
||||||
|
let match = header.match(headerReg)
|
||||||
|
if (!match) {
|
||||||
|
throw `Improper changelog entry header: '${header}'. See the 'CHANGELOG_TEMPLATE.md' for details.`
|
||||||
|
}
|
||||||
|
let grps = match.groups
|
||||||
|
let version = new Version(grps.major,grps.minor,grps.patch,grps.tag,grps.tagVersion)
|
||||||
|
entries.push(new ChangelogEntry(version,body))
|
||||||
|
}
|
||||||
|
firstSection = false
|
||||||
|
}
|
||||||
|
|
||||||
|
let firstEntry = true
|
||||||
|
let lastVersion = null
|
||||||
|
for (let entry of entries) {
|
||||||
|
if (!(firstEntry && entry.version instanceof NextReleaseVersion)) {
|
||||||
|
if (lastVersion !== null) {
|
||||||
|
if (!entry.version.lt(lastVersion)) {
|
||||||
|
let v1 = entry.version.toString()
|
||||||
|
let v2 = lastVersion.toString()
|
||||||
|
throw `Versions are not properly ordered in the changelog (${v1} >= ${v2}).`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
lastVersion = entry.version
|
||||||
|
}
|
||||||
|
firstEntry = false
|
||||||
|
}
|
||||||
|
return entries
|
||||||
|
}
|
||||||
|
|
||||||
|
function changelog() {
|
||||||
|
return new Changelog
|
||||||
|
}
|
||||||
|
|
||||||
|
function currentVersion() {
|
||||||
|
return changelog().currentVersion()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ===============
|
||||||
|
// === Exports ===
|
||||||
|
// ===============
|
||||||
|
|
||||||
|
module.exports = {Version,NextReleaseVersion,changelog,currentVersion}
|
112
gui/build/run.js
112
gui/build/run.js
@ -1,30 +1,29 @@
|
|||||||
const cmd = require('./cmd')
|
|
||||||
const fs = require('fs').promises
|
|
||||||
const fss = require('fs')
|
|
||||||
const glob = require('glob')
|
|
||||||
const ncp = require('ncp').ncp
|
|
||||||
const os = require('os')
|
|
||||||
const path = require('path')
|
|
||||||
const paths = require('./paths')
|
|
||||||
const prettier = require("prettier")
|
|
||||||
const stream = require('stream')
|
|
||||||
const yargs = require('yargs')
|
|
||||||
const zlib = require('zlib')
|
|
||||||
const child_process = require('child_process')
|
const child_process = require('child_process')
|
||||||
|
const cmd = require('./cmd')
|
||||||
process.on('unhandledRejection', error => { throw(error) })
|
const fs = require('fs').promises
|
||||||
process.chdir(paths.root)
|
const fss = require('fs')
|
||||||
|
const glob = require('glob')
|
||||||
|
const ncp = require('ncp').ncp
|
||||||
|
const os = require('os')
|
||||||
|
const path = require('path')
|
||||||
|
const paths = require('./paths')
|
||||||
|
const prettier = require("prettier")
|
||||||
|
const release = require('./release')
|
||||||
|
const stream = require('stream')
|
||||||
|
const workflow = require('./workflow')
|
||||||
|
const yargs = require('yargs')
|
||||||
|
const zlib = require('zlib')
|
||||||
const { promisify } = require('util')
|
const { promisify } = require('util')
|
||||||
const pipe = promisify(stream.pipeline)
|
const pipe = promisify(stream.pipeline)
|
||||||
|
|
||||||
async function gzip(input, output) {
|
|
||||||
const gzip = zlib.createGzip()
|
|
||||||
const source = fss.createReadStream(input)
|
// ==============
|
||||||
const destination = fss.createWriteStream(output)
|
// === Errors ===
|
||||||
await pipe(source,gzip,destination)
|
// ==============
|
||||||
}
|
|
||||||
|
process.on('unhandledRejection', error => { throw(error) })
|
||||||
|
process.chdir(paths.root)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -46,6 +45,13 @@ let targetArgs = undefined
|
|||||||
// === Utils ===
|
// === Utils ===
|
||||||
// =============
|
// =============
|
||||||
|
|
||||||
|
async function gzip(input, output) {
|
||||||
|
const gzip = zlib.createGzip()
|
||||||
|
const source = fss.createReadStream(input)
|
||||||
|
const destination = fss.createWriteStream(output)
|
||||||
|
await pipe(source,gzip,destination)
|
||||||
|
}
|
||||||
|
|
||||||
/// Copy files and directories.
|
/// Copy files and directories.
|
||||||
async function copy(src,tgt) {
|
async function copy(src,tgt) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
@ -95,6 +101,8 @@ function run_project_manager() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ================
|
// ================
|
||||||
// === Commands ===
|
// === Commands ===
|
||||||
// ================
|
// ================
|
||||||
@ -110,7 +118,10 @@ commands.clean.js = async function() {
|
|||||||
await cmd.with_cwd(paths.js.root, async () => {
|
await cmd.with_cwd(paths.js.root, async () => {
|
||||||
await run('npm',['run','clean'])
|
await run('npm',['run','clean'])
|
||||||
})
|
})
|
||||||
try { await fs.unlink(paths.dist.init) } catch {}
|
try {
|
||||||
|
await fs.unlink(paths.dist.init)
|
||||||
|
await fs.unlink(paths.dist.buildInit)
|
||||||
|
} catch {}
|
||||||
}
|
}
|
||||||
|
|
||||||
commands.clean.rust = async function() {
|
commands.clean.rust = async function() {
|
||||||
@ -136,6 +147,7 @@ commands.build.options = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
commands.build.js = async function() {
|
commands.build.js = async function() {
|
||||||
|
await installJsDeps()
|
||||||
console.log(`Building JS target.`)
|
console.log(`Building JS target.`)
|
||||||
await run('npm',['run','build'])
|
await run('npm',['run','build'])
|
||||||
}
|
}
|
||||||
@ -192,6 +204,7 @@ commands.start.rust = async function(argv) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
commands.start.js = async function (argv) {
|
commands.start.js = async function (argv) {
|
||||||
|
await installJsDeps()
|
||||||
console.log(`Building JS target.` + argv)
|
console.log(`Building JS target.` + argv)
|
||||||
const args = targetArgs.concat([
|
const args = targetArgs.concat([
|
||||||
`--backend-path ${paths.get_project_manager_path(paths.dist.bin)}`,
|
`--backend-path ${paths.get_project_manager_path(paths.dist.bin)}`,
|
||||||
@ -272,6 +285,7 @@ commands.watch.rust = async function(argv) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
commands.watch.js = async function() {
|
commands.watch.js = async function() {
|
||||||
|
await installJsDeps()
|
||||||
await cmd.with_cwd(paths.js.root, async () => {
|
await cmd.with_cwd(paths.js.root, async () => {
|
||||||
await run('npm',['run','watch'])
|
await run('npm',['run','watch'])
|
||||||
})
|
})
|
||||||
@ -286,12 +300,42 @@ commands.dist.rust = async function(argv) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
commands.dist.js = async function() {
|
commands.dist.js = async function() {
|
||||||
|
await installJsDeps()
|
||||||
await cmd.with_cwd(paths.js.root, async () => {
|
await cmd.with_cwd(paths.js.root, async () => {
|
||||||
await run('npm',['run','dist'])
|
await run('npm',['run','dist'])
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// === CI Gen ===
|
||||||
|
|
||||||
|
/// The command is used by CI to generate the file `CURRENT_RELEASE_CHANGELOG.json`, which contains
|
||||||
|
/// information about the newest release. It is then used by CI to generate version and description
|
||||||
|
/// of the product release.
|
||||||
|
commands['ci-gen'] = command(`Generate CI build related files`)
|
||||||
|
commands['ci-gen'].rust = async function(argv) {
|
||||||
|
let entry = release.changelog().newestEntry()
|
||||||
|
let body = entry.body
|
||||||
|
let version = entry.version.toString()
|
||||||
|
let prerelease = entry.isPrerelease()
|
||||||
|
let obj = {version,body,prerelease};
|
||||||
|
let json = JSON.stringify(obj)
|
||||||
|
fss.writeFileSync(path.join(paths.root,'CURRENT_RELEASE_CHANGELOG.json'),json)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Asserts whether the current version of the package (newest in CHANGELOG.md) is unstable.
|
||||||
|
commands['assert-version-unstable'] = command(`Assert the current version is unstable`)
|
||||||
|
commands['assert-version-unstable'].rust = async function(argv) {
|
||||||
|
let entry = release.changelog().newestEntry().assert_is_unstable()
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Asserts whether the current version of the package (newest in CHANGELOG.md) is stable.
|
||||||
|
commands['assert-version-stable'] = command(`Assert the current version is stable`)
|
||||||
|
commands['assert-version-stable'].rust = async function(argv) {
|
||||||
|
let entry = release.changelog().newestEntry().assert_is_stable()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ===========================
|
// ===========================
|
||||||
// === Command Line Parser ===
|
// === Command Line Parser ===
|
||||||
@ -378,7 +422,7 @@ for (let command of commandList) {
|
|||||||
|
|
||||||
function defaultConfig() {
|
function defaultConfig() {
|
||||||
return {
|
return {
|
||||||
version: "2.0.0-alpha.0",
|
version: `${release.currentVersion()}`,
|
||||||
author: {
|
author: {
|
||||||
name: "Enso Team",
|
name: "Enso Team",
|
||||||
email: "contact@enso.org"
|
email: "contact@enso.org"
|
||||||
@ -419,10 +463,10 @@ async function processPackageConfigs() {
|
|||||||
// ============
|
// ============
|
||||||
|
|
||||||
async function updateBuildVersion (argv) {
|
async function updateBuildVersion (argv) {
|
||||||
const target = get_target_platform(argv)
|
const target = get_target_platform(argv)
|
||||||
let config = {}
|
let config = {}
|
||||||
let configPath = paths.dist.buildInfo
|
let configPath = paths.dist.buildInfo
|
||||||
let exists = fss.existsSync(configPath)
|
let exists = fss.existsSync(configPath)
|
||||||
if(exists) {
|
if(exists) {
|
||||||
let configFile = await fs.readFile(configPath)
|
let configFile = await fs.readFile(configPath)
|
||||||
config = JSON.parse(configFile)
|
config = JSON.parse(configFile)
|
||||||
@ -452,7 +496,8 @@ async function installJsDeps() {
|
|||||||
await cmd.run('npm',['run','install'])
|
await cmd.run('npm',['run','install'])
|
||||||
})
|
})
|
||||||
await fs.mkdir(paths.dist.root, {recursive:true})
|
await fs.mkdir(paths.dist.root, {recursive:true})
|
||||||
await fs.open(paths.dist.init,'w')
|
let handle = await fs.open(paths.dist.init,'w')
|
||||||
|
await handle.close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -511,13 +556,8 @@ async function main () {
|
|||||||
let argv = optParser.parse()
|
let argv = optParser.parse()
|
||||||
await updateBuildVersion(argv)
|
await updateBuildVersion(argv)
|
||||||
await processPackageConfigs()
|
await processPackageConfigs()
|
||||||
|
workflow.generate()
|
||||||
let command = argv._[0]
|
let command = argv._[0]
|
||||||
if(command === 'clean') {
|
|
||||||
try { await fs.unlink(paths.dist.init) } catch {}
|
|
||||||
} else {
|
|
||||||
await installJsDeps()
|
|
||||||
}
|
|
||||||
|
|
||||||
await runCommand(command,argv)
|
await runCommand(command,argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
402
gui/build/workflow.js
Normal file
402
gui/build/workflow.js
Normal file
@ -0,0 +1,402 @@
|
|||||||
|
/// GitHub workflow generator. We are using custom generator in order to re-use sub-steps. This
|
||||||
|
/// may not be needed anymore after this feature request will be resolved by GitHub:
|
||||||
|
/// https://github.community/t/support-for-yaml-anchors/16128
|
||||||
|
|
||||||
|
const fss = require('fs')
|
||||||
|
const path = require('path')
|
||||||
|
const paths = require('./paths')
|
||||||
|
const yaml = require('js-yaml')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// =================
|
||||||
|
// === Constants ===
|
||||||
|
// =================
|
||||||
|
|
||||||
|
const NODE_VERSION = '14.15.0'
|
||||||
|
const RUST_VERSION = 'nightly-2019-11-04'
|
||||||
|
const WASM_PACK_VERSION = '0.9.1'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// =============
|
||||||
|
// === Utils ===
|
||||||
|
// =============
|
||||||
|
|
||||||
|
function job(platforms,name,steps,cfg) {
|
||||||
|
if (!cfg) { cfg = {} }
|
||||||
|
return {
|
||||||
|
name: name,
|
||||||
|
"runs-on": "${{ matrix.os }}",
|
||||||
|
strategy: {
|
||||||
|
matrix: {
|
||||||
|
os: platforms
|
||||||
|
},
|
||||||
|
"fail-fast": false
|
||||||
|
},
|
||||||
|
steps : list({uses:"actions/checkout@v2"}, ...steps),
|
||||||
|
...cfg
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function job_on_all_platforms(...args) {
|
||||||
|
return job(["windows-latest", "macOS-latest", "ubuntu-latest"],...args)
|
||||||
|
}
|
||||||
|
|
||||||
|
function job_on_macos(...args) {
|
||||||
|
return job(["macOS-latest"],...args)
|
||||||
|
}
|
||||||
|
|
||||||
|
function job_on_linux(...args) {
|
||||||
|
return job(["ubuntu-latest"],...args)
|
||||||
|
}
|
||||||
|
|
||||||
|
function list(...args) {
|
||||||
|
let out = []
|
||||||
|
for (let arg of args) {
|
||||||
|
if (Array.isArray(arg)) {
|
||||||
|
out.push(...arg)
|
||||||
|
} else {
|
||||||
|
out.push(arg)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ====================
|
||||||
|
// === Dependencies ===
|
||||||
|
// ====================
|
||||||
|
|
||||||
|
let installRust = {
|
||||||
|
name: "Install Rust",
|
||||||
|
uses: "actions-rs/toolchain@v1",
|
||||||
|
with: {
|
||||||
|
toolchain: RUST_VERSION,
|
||||||
|
override: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let installNode = {
|
||||||
|
name: "Install Node",
|
||||||
|
uses: "actions/setup-node@v1",
|
||||||
|
with: {
|
||||||
|
"node-version": NODE_VERSION,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let installPrettier = {
|
||||||
|
name: "Install Prettier",
|
||||||
|
run: "npm install --save-dev --save-exact prettier"
|
||||||
|
}
|
||||||
|
|
||||||
|
let installClippy = {
|
||||||
|
name: "Install Clippy",
|
||||||
|
run: "rustup component add clippy"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function installWasmPackOn(name,sys,pkg) {
|
||||||
|
return {
|
||||||
|
name: `Install wasm-pack (${name})`,
|
||||||
|
env: {
|
||||||
|
WASMPACKURL: `https://github.com/rustwasm/wasm-pack/releases/download/v${WASM_PACK_VERSION}`,
|
||||||
|
WASMPACKDIR: `wasm-pack-v${WASM_PACK_VERSION}-x86_64-${pkg}`,
|
||||||
|
},
|
||||||
|
run: `
|
||||||
|
curl -L "$WASMPACKURL/$WASMPACKDIR.tar.gz" | tar -xz -C .
|
||||||
|
mv $WASMPACKDIR/wasm-pack ~/.cargo/bin
|
||||||
|
rm -r $WASMPACKDIR`,
|
||||||
|
shell: "bash",
|
||||||
|
if: `matrix.os == '${sys}-latest'`,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let installWasmPackOnMacOS = installWasmPackOn('macOS','macOS','apple-darwin')
|
||||||
|
let installWasmPackOnWindows = installWasmPackOn('Windows','windows','pc-windows-msvc')
|
||||||
|
let installWasmPackOnLinux = installWasmPackOn('Linux','ubuntu','unknown-linux-musl')
|
||||||
|
|
||||||
|
// We could use cargo install wasm-pack, but that takes 3.5 minutes compared to few seconds.
|
||||||
|
let installWasmPack = [installWasmPackOnMacOS, installWasmPackOnWindows, installWasmPackOnLinux]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// =============================
|
||||||
|
// === Build, Lint, and Test ===
|
||||||
|
// =============================
|
||||||
|
|
||||||
|
function buildOn(name,sys) {
|
||||||
|
return {
|
||||||
|
name: `Build (${name})`,
|
||||||
|
run: `node ./run dist --skip-version-validation --target ${name}`,
|
||||||
|
if: `matrix.os == '${sys}-latest'`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
buildOnMacOS = buildOn('macos','macos')
|
||||||
|
buildOnWindows = buildOn('win','windows')
|
||||||
|
buildOnLinux = buildOn('linux','ubuntu')
|
||||||
|
|
||||||
|
let lintJavaScript = {
|
||||||
|
name: "Lint JavaScript sources",
|
||||||
|
run: "npx prettier --check 'src/**/*.js'",
|
||||||
|
}
|
||||||
|
|
||||||
|
let lintRust = {
|
||||||
|
name: "Lint Rust sources",
|
||||||
|
run: "node ./run lint --skip-version-validation",
|
||||||
|
}
|
||||||
|
|
||||||
|
let testNoWASM = {
|
||||||
|
name: "Run tests (no WASM)",
|
||||||
|
run: "node ./run test --no-wasm --skip-version-validation",
|
||||||
|
}
|
||||||
|
|
||||||
|
let testWASM = {
|
||||||
|
name: "Run tests (WASM)",
|
||||||
|
run: "node ./run test --no-native --skip-version-validation",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// =================
|
||||||
|
// === Artifacts ===
|
||||||
|
// =================
|
||||||
|
|
||||||
|
let uploadContentArtifacts = {
|
||||||
|
name: `Upload Content Artifacts`,
|
||||||
|
uses: "actions/upload-artifact@v1",
|
||||||
|
with: {
|
||||||
|
name: 'content',
|
||||||
|
path: `dist/content`
|
||||||
|
},
|
||||||
|
if: `matrix.os == 'macOS-latest'`
|
||||||
|
}
|
||||||
|
|
||||||
|
function uploadBinArtifactsFor(name,sys,ext,os) {
|
||||||
|
return {
|
||||||
|
name: `Upload Artifacts (${name}, ${ext})`,
|
||||||
|
uses: "actions/upload-artifact@v1",
|
||||||
|
with: {
|
||||||
|
name: `enso-${os}-\${{fromJson(steps.changelog.outputs.content).version}}.${ext}`,
|
||||||
|
path: `dist/client/enso-${os}-\${{fromJson(steps.changelog.outputs.content).version}}.${ext}`
|
||||||
|
},
|
||||||
|
if: `matrix.os == '${sys}-latest'`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uploadBinArtifactsForMacOS = uploadBinArtifactsFor('Linux','ubuntu','AppImage','linux')
|
||||||
|
uploadBinArtifactsForWindows = uploadBinArtifactsFor('Windows','windows','exe','win')
|
||||||
|
uploadBinArtifactsForLinux = uploadBinArtifactsFor('macOS','macos','dmg','mac')
|
||||||
|
|
||||||
|
let downloadArtifacts = {
|
||||||
|
name: "Download artifacts",
|
||||||
|
uses: "actions/download-artifact@v2",
|
||||||
|
with: {
|
||||||
|
path: "artifacts"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ======================
|
||||||
|
// === GitHub Release ===
|
||||||
|
// ======================
|
||||||
|
|
||||||
|
let getCurrentReleaseChangelogInfo = {
|
||||||
|
name: 'Read changelog info',
|
||||||
|
id: 'changelog',
|
||||||
|
run: `
|
||||||
|
node ./run ci-gen --skip-version-validation
|
||||||
|
content=\`cat CURRENT_RELEASE_CHANGELOG.json\`
|
||||||
|
echo "::set-output name=content::$content"
|
||||||
|
`,
|
||||||
|
shell: 'bash'
|
||||||
|
}
|
||||||
|
|
||||||
|
let uploadGitHubRelease = {
|
||||||
|
name: `Upload GitHub Release`,
|
||||||
|
uses: "softprops/action-gh-release@v1",
|
||||||
|
env: {
|
||||||
|
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
||||||
|
},
|
||||||
|
with: {
|
||||||
|
files: "artifacts/**/enso-*",
|
||||||
|
name: "Enso ${{fromJson(steps.changelog.outputs.content).version}}",
|
||||||
|
tag_name: "v${{fromJson(steps.changelog.outputs.content).version}}",
|
||||||
|
body: "${{fromJson(steps.changelog.outputs.content).body}}",
|
||||||
|
prerelease: "${{fromJson(steps.changelog.outputs.content).prerelease}}",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ===================
|
||||||
|
// === CDN Release ===
|
||||||
|
// ===================
|
||||||
|
|
||||||
|
prepareAwsSessionCDN = {
|
||||||
|
shell: "bash",
|
||||||
|
run: `
|
||||||
|
aws configure --profile s3-upload <<-EOF > /dev/null 2>&1
|
||||||
|
\${{ secrets.ARTEFACT_S3_ACCESS_KEY_ID }}
|
||||||
|
\${{ secrets.ARTEFACT_S3_SECRET_ACCESS_KEY }}
|
||||||
|
us-west-1
|
||||||
|
text
|
||||||
|
EOF
|
||||||
|
`
|
||||||
|
}
|
||||||
|
|
||||||
|
function uploadToCDN(...names) {
|
||||||
|
let actions = []
|
||||||
|
for (let name of names) {
|
||||||
|
let action = {
|
||||||
|
name: `Upload '${name}' to CDN`,
|
||||||
|
shell: "bash",
|
||||||
|
run: `aws s3 cp ./artifacts/content/assets/${name} `
|
||||||
|
+ `s3://ensocdn/ide/\${{fromJson(steps.changelog.outputs.content).version}}/${name} --profile `
|
||||||
|
+ `s3-upload --acl public-read --content-encoding gzip`
|
||||||
|
}
|
||||||
|
actions.push(action)
|
||||||
|
}
|
||||||
|
return actions
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ==================
|
||||||
|
// === Assertions ===
|
||||||
|
// ==================
|
||||||
|
|
||||||
|
let assertVersionUnstable = {
|
||||||
|
name: "Assert Version Unstable",
|
||||||
|
run: "node ./run assert-version-unstable --skip-version-validation",
|
||||||
|
if: `github.ref == 'refs/heads/unstable'`
|
||||||
|
}
|
||||||
|
|
||||||
|
let assertVersionStable = {
|
||||||
|
name: "Assert Version Stable",
|
||||||
|
run: "node ./run assert-version-stable --skip-version-validation",
|
||||||
|
if: `github.ref == 'refs/heads/stable'`
|
||||||
|
}
|
||||||
|
|
||||||
|
let assertReleaseDoNotExists = [
|
||||||
|
{
|
||||||
|
id: 'checkCurrentReleaseTag',
|
||||||
|
uses: 'mukunku/tag-exists-action@v1.0.0',
|
||||||
|
env: {
|
||||||
|
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
||||||
|
},
|
||||||
|
with: {
|
||||||
|
tag: 'v${{fromJson(steps.changelog.outputs.content).version}}'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Fail if release already exists',
|
||||||
|
run: 'if [[ ${{ steps.checkCurrentReleaseTag.outputs.exists }} == true ]]; then exit 1; fi',
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
let assertions = list(
|
||||||
|
assertVersionUnstable,
|
||||||
|
assertVersionStable,
|
||||||
|
assertReleaseDoNotExists
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ================
|
||||||
|
// === Workflow ===
|
||||||
|
// ================
|
||||||
|
|
||||||
|
let releaseCondition = `github.ref == 'refs/heads/unstable' || github.ref == 'refs/heads/stable'`
|
||||||
|
let buildCondition = `contains(github.event.head_commit.message,'[ci build]') || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop' || ${releaseCondition}`
|
||||||
|
|
||||||
|
let workflow = {
|
||||||
|
name : "GUI CI",
|
||||||
|
on: ['push'],
|
||||||
|
jobs: {
|
||||||
|
version_assertions: job_on_macos("Version Assertions", [
|
||||||
|
getCurrentReleaseChangelogInfo,
|
||||||
|
assertions
|
||||||
|
]),
|
||||||
|
lint: job_on_macos("Linter", [
|
||||||
|
installNode,
|
||||||
|
installRust,
|
||||||
|
installPrettier,
|
||||||
|
installClippy,
|
||||||
|
lintJavaScript,
|
||||||
|
lintRust
|
||||||
|
]),
|
||||||
|
test: job_on_macos("Tests", [
|
||||||
|
installNode,
|
||||||
|
installRust,
|
||||||
|
testNoWASM,
|
||||||
|
]),
|
||||||
|
"wasm-test": job_on_macos("WASM Tests", [
|
||||||
|
installNode,
|
||||||
|
installRust,
|
||||||
|
installWasmPack,
|
||||||
|
testWASM
|
||||||
|
]),
|
||||||
|
simple_build: job_on_macos("Simple Build (WASM size limit check)", [
|
||||||
|
installNode,
|
||||||
|
installRust,
|
||||||
|
installWasmPack,
|
||||||
|
buildOnMacOS,
|
||||||
|
],{if:`!(${buildCondition})`}),
|
||||||
|
build: job_on_all_platforms("Build", [
|
||||||
|
getCurrentReleaseChangelogInfo,
|
||||||
|
installNode,
|
||||||
|
installRust,
|
||||||
|
installWasmPack,
|
||||||
|
buildOnMacOS,
|
||||||
|
buildOnWindows,
|
||||||
|
buildOnLinux,
|
||||||
|
uploadContentArtifacts,
|
||||||
|
uploadBinArtifactsForMacOS,
|
||||||
|
uploadBinArtifactsForWindows,
|
||||||
|
uploadBinArtifactsForLinux,
|
||||||
|
],{if:buildCondition}),
|
||||||
|
release_to_github: job_on_macos("GitHub Release", [
|
||||||
|
downloadArtifacts,
|
||||||
|
getCurrentReleaseChangelogInfo,
|
||||||
|
// This assertion is checked earlier, but we should double-check it in case several
|
||||||
|
// CI jobs wil be run on this branch and a release was created when this workflow was
|
||||||
|
// running.
|
||||||
|
assertReleaseDoNotExists,
|
||||||
|
uploadGitHubRelease,
|
||||||
|
],{ if:releaseCondition,
|
||||||
|
needs:['version_assertions','lint','test','wasm-test','build']
|
||||||
|
}),
|
||||||
|
release_to_cdn: job_on_linux("CDN Release", [
|
||||||
|
downloadArtifacts,
|
||||||
|
getCurrentReleaseChangelogInfo,
|
||||||
|
prepareAwsSessionCDN,
|
||||||
|
uploadToCDN('index.js.gz','style.css','ide.wasm','wasm_imports.js.gz'),
|
||||||
|
],{ if:releaseCondition,
|
||||||
|
needs:['version_assertions','lint','test','wasm-test','build']
|
||||||
|
}),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let header = `
|
||||||
|
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
# DO NOT CHANGE THIS FILE. IT WAS GENERATED FROM 'build/workflow.js'. READ DOCS THERE TO LEARN MORE.
|
||||||
|
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
`
|
||||||
|
|
||||||
|
/// Generates a new GitHub workflow file (in .github/workflow/...).
|
||||||
|
function generate() {
|
||||||
|
let workflow_script = header + '\n' + yaml.dump(workflow,{noRefs:true})
|
||||||
|
fss.writeFileSync(path.join(paths.github.workflows,'gui-ci.yml'),workflow_script)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ===============
|
||||||
|
// === Exports ===
|
||||||
|
// ===============
|
||||||
|
|
||||||
|
module.exports = {generate}
|
162
gui/docs/CHANGELOG_TEMPLATE.md
Normal file
162
gui/docs/CHANGELOG_TEMPLATE.md
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
# Next Release
|
||||||
|
This update contains major performance improvements and exposes new privacy user settings. We will
|
||||||
|
work towards stabilizing it in the next weeks in order to make these updates be shipped in a stable
|
||||||
|
release before the end of the year.
|
||||||
|
|
||||||
|
|
||||||
|
<br/>![New Features](/docs/assets/tags/new_features.svg)
|
||||||
|
|
||||||
|
#### Visual Environment
|
||||||
|
- [You can now launch missiles directly from the GUI][79270]. It was technically possible since
|
||||||
|
version 3.0.0-alpha.7, but it was never exposed as a button.
|
||||||
|
- [The graph editor stops shaking and running away when you are pasting JavaScript code][79271].
|
||||||
|
|
||||||
|
#### Runtime
|
||||||
|
- [The JiT compiler got new optimizations and produces code up to 10x faster than C++][79272].
|
||||||
|
- [You do not need to keep your computer in -20°C to prevent the engine from crashing anymore][79273].
|
||||||
|
|
||||||
|
#### Libraries
|
||||||
|
- [The new JSON library allows you to parse 2Gb files in 50ms][79274].
|
||||||
|
- [The Regexp library exposes now methods to test the expressions directly on humans][79275].
|
||||||
|
|
||||||
|
|
||||||
|
<br/>![Bug Fixes](/docs/assets/tags/bug_fixes.svg)
|
||||||
|
|
||||||
|
#### Visual Environment
|
||||||
|
- [You can now launch missiles directly from the GUI][79270]. It was technically possible since
|
||||||
|
version 3.0.0-alpha.7, but it was never exposed as a button.
|
||||||
|
- [The graph editor stops shaking and running away when you are pasting JavaScript code][79271].
|
||||||
|
|
||||||
|
#### Runtime
|
||||||
|
- [The JiT compiler got new optimizations and produces code up to 10x faster than C++][79272].
|
||||||
|
- [You do not need to keep your computer in -20°C to prevent the engine from crashing anymore][79273].
|
||||||
|
|
||||||
|
#### Libraries
|
||||||
|
- [The new JSON library allows you to parse 2Gb files in 50ms][79274].
|
||||||
|
- [The Regexp library exposes now methods to test the expressions directly on humans][79275].
|
||||||
|
|
||||||
|
|
||||||
|
<br/>![New Learning Resources](/docs/assets/tags/new_learning_resources.svg)
|
||||||
|
|
||||||
|
#### Visual Environment
|
||||||
|
- [You can now launch missiles directly from the GUI][79270]. It was technically possible since
|
||||||
|
version 3.0.0-alpha.7, but it was never exposed as a button.
|
||||||
|
- [The graph editor stops shaking and running away when you are pasting JavaScript code][79271].
|
||||||
|
|
||||||
|
#### Runtime
|
||||||
|
- [The JiT compiler got new optimizations and produces code up to 10x faster than C++][79272].
|
||||||
|
- [You do not need to keep your computer in -20°C to prevent the engine from crashing anymore][79273].
|
||||||
|
|
||||||
|
#### Libraries
|
||||||
|
- [The new JSON library allows you to parse 2Gb files in 50ms][79274].
|
||||||
|
- [The Regexp library exposes now methods to test the expressions directly on humans][79275].
|
||||||
|
|
||||||
|
|
||||||
|
<br/>![Release Notes](/docs/assets/tags/release_notes.svg)
|
||||||
|
|
||||||
|
#### Visual Environment
|
||||||
|
- [You can now launch missiles directly from the GUI][79270]. It was technically possible since
|
||||||
|
version 3.0.0-alpha.7, but it was never exposed as a button.
|
||||||
|
- [The graph editor stops shaking and running away when you are pasting JavaScript code][79271].
|
||||||
|
|
||||||
|
#### Runtime
|
||||||
|
- [The JiT compiler got new optimizations and produces code up to 10x faster than C++][79272].
|
||||||
|
- [You do not need to keep your computer in -20°C to prevent the engine from crashing anymore][79273].
|
||||||
|
|
||||||
|
#### Libraries
|
||||||
|
- [The new JSON library allows you to parse 2Gb files in 50ms][79274].
|
||||||
|
- [The Regexp library exposes now methods to test the expressions directly on humans][79275].
|
||||||
|
|
||||||
|
|
||||||
|
[79270]: http://github.com/ticket
|
||||||
|
[79271]: http://github.com/ticket
|
||||||
|
[79272]: http://github.com/ticket
|
||||||
|
[79273]: http://github.com/ticket
|
||||||
|
[79274]: http://github.com/ticket
|
||||||
|
[79275]: http://github.com/ticket
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Enso 47.0.0-alpha.8 (2049-01-22)
|
||||||
|
This update contains major performance improvements and exposes new privacy user settings. We will
|
||||||
|
work towards stabilizing it in the next weeks in order to make these updates be shipped in a stable
|
||||||
|
release before the end of the year.
|
||||||
|
|
||||||
|
|
||||||
|
<br/>![New Features](/docs/assets/tags/new_features.svg)
|
||||||
|
|
||||||
|
#### Visual Environment
|
||||||
|
- [You can now launch missiles directly from the GUI][79270]. It was technically possible since
|
||||||
|
version 3.0.0-alpha.7, but it was never exposed as a button.
|
||||||
|
- [The graph editor stops shaking and running away when you are pasting JavaScript code][79271].
|
||||||
|
|
||||||
|
#### Runtime
|
||||||
|
- [The JiT compiler got new optimizations and produces code up to 10x faster than C++][79272].
|
||||||
|
- [You do not need to keep your computer in -20°C to prevent the engine from crashing anymore][79273].
|
||||||
|
|
||||||
|
#### Libraries
|
||||||
|
- [The new JSON library allows you to parse 2Gb files in 50ms][79274].
|
||||||
|
- [The Regexp library exposes now methods to test the expressions directly on humans][79275].
|
||||||
|
|
||||||
|
|
||||||
|
<br/>![Bug Fixes](/docs/assets/tags/bug_fixes.svg)
|
||||||
|
|
||||||
|
#### Visual Environment
|
||||||
|
- [You can now launch missiles directly from the GUI][79270]. It was technically possible since
|
||||||
|
version 3.0.0-alpha.7, but it was never exposed as a button.
|
||||||
|
- [The graph editor stops shaking and running away when you are pasting JavaScript code][79271].
|
||||||
|
|
||||||
|
#### Runtime
|
||||||
|
- [The JiT compiler got new optimizations and produces code up to 10x faster than C++][79272].
|
||||||
|
- [You do not need to keep your computer in -20°C to prevent the engine from crashing anymore][79273].
|
||||||
|
|
||||||
|
#### Libraries
|
||||||
|
- [The new JSON library allows you to parse 2Gb files in 50ms][79274].
|
||||||
|
- [The Regexp library exposes now methods to test the expressions directly on humans][79275].
|
||||||
|
|
||||||
|
|
||||||
|
<br/>![New Learning Resources](/docs/assets/tags/new_learning_resources.svg)
|
||||||
|
|
||||||
|
#### Visual Environment
|
||||||
|
- [You can now launch missiles directly from the GUI][79270]. It was technically possible since
|
||||||
|
version 3.0.0-alpha.7, but it was never exposed as a button.
|
||||||
|
- [The graph editor stops shaking and running away when you are pasting JavaScript code][79271].
|
||||||
|
|
||||||
|
#### Runtime
|
||||||
|
- [The JiT compiler got new optimizations and produces code up to 10x faster than C++][79272].
|
||||||
|
- [You do not need to keep your computer in -20°C to prevent the engine from crashing anymore][79273].
|
||||||
|
|
||||||
|
#### Libraries
|
||||||
|
- [The new JSON library allows you to parse 2Gb files in 50ms][79274].
|
||||||
|
- [The Regexp library exposes now methods to test the expressions directly on humans][79275].
|
||||||
|
|
||||||
|
|
||||||
|
<br/>![Release Notes](/docs/assets/tags/release_notes.svg)
|
||||||
|
|
||||||
|
#### Visual Environment
|
||||||
|
- [You can now launch missiles directly from the GUI][79270]. It was technically possible since
|
||||||
|
version 3.0.0-alpha.7, but it was never exposed as a button.
|
||||||
|
- [The graph editor stops shaking and running away when you are pasting JavaScript code][79271].
|
||||||
|
|
||||||
|
#### Runtime
|
||||||
|
- [The JiT compiler got new optimizations and produces code up to 10x faster than C++][79272].
|
||||||
|
- [You do not need to keep your computer in -20°C to prevent the engine from crashing anymore][79273].
|
||||||
|
|
||||||
|
#### Libraries
|
||||||
|
- [The new JSON library allows you to parse 2Gb files in 50ms][79274].
|
||||||
|
- [The Regexp library exposes now methods to test the expressions directly on humans][79275].
|
||||||
|
|
||||||
|
|
||||||
|
[79270]: http://github.com/ticket
|
||||||
|
[79271]: http://github.com/ticket
|
||||||
|
[79272]: http://github.com/ticket
|
||||||
|
[79273]: http://github.com/ticket
|
||||||
|
[79274]: http://github.com/ticket
|
||||||
|
[79275]: http://github.com/ticket
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Enso 47.0.0-alpha.7 (2049-01-07)
|
||||||
|
...
|
@ -227,3 +227,53 @@ have prepared several scripts which maximally automate the process:
|
|||||||
- **Linting**
|
- **Linting**
|
||||||
Please be sure to fix all errors reported by `node ./run lint` before
|
Please be sure to fix all errors reported by `node ./run lint` before
|
||||||
creating a pull request to this repository.
|
creating a pull request to this repository.
|
||||||
|
|
||||||
|
|
||||||
|
### Development Branches
|
||||||
|
The following branches are used to develop the product:
|
||||||
|
|
||||||
|
- **wip/[initials]/[feature]**
|
||||||
|
Feature branches. These are temporary branches used by the team to develop a particular feature.
|
||||||
|
|
||||||
|
- **develop**
|
||||||
|
Contains the most recent changes to the product. After successful review, the feature branches are
|
||||||
|
merged here. Each commit to this branch will result in a nightly build of the product accessible
|
||||||
|
as CI artifacts.
|
||||||
|
|
||||||
|
- **unstable**
|
||||||
|
Contains only those commits which can be considered unstable product releases. Each commit to this
|
||||||
|
branch will result in an unstable release of the product and will be published on GitHub as a
|
||||||
|
pre-release. The build version and build description will be automatically fetched from the newest
|
||||||
|
`CHANGELOG.md` entry and will fail if the version will not be of the form
|
||||||
|
`[major].[minor].[patch]-[sfx]`, where `[sfx]` is one of `alpha.[n]`, `beta.[n]`, or `rc.[n]`,
|
||||||
|
where `[n]` is an unstable build number.
|
||||||
|
|
||||||
|
- **stable**
|
||||||
|
Contains only those commits which can be considered stable product releases. Each commit to this
|
||||||
|
branch will result in a stable release of the product and will be published on GitHub as a
|
||||||
|
release. The build version and build description will be automatically fetched from the newest
|
||||||
|
`CHANGELOG.md` entry and will fail if the version will not be of the form
|
||||||
|
`[major].[minor].[patch]`.
|
||||||
|
|
||||||
|
|
||||||
|
### Forcing CI builds
|
||||||
|
By default, CI would not build artifacts from `wip` and `develop` branches in order to save time and
|
||||||
|
resources. If you want the artifacts to be build for your commit, simply add `[ci build]` anywhere
|
||||||
|
in your commit message.
|
||||||
|
|
||||||
|
|
||||||
|
### Publishing Results
|
||||||
|
All new changes should be proposed in the form of Pull Requests (PRs) to this repository. Each PR
|
||||||
|
should contain changes to documentation and `CHANGELOG.md` if applicable.
|
||||||
|
|
||||||
|
|
||||||
|
## Changelog
|
||||||
|
Please remember to update the `CHANGELOG.md` on every new bug fix or feature implementation. Please
|
||||||
|
note that `CHANGELOG.md` is used to establish the current product version (the `run` script extracts
|
||||||
|
it from the newest changelog entry). Thus, be sure to always increase the newest version in the
|
||||||
|
changelog after a release, otherwise CI will fail. Please use the `docs/CHANGELOG_TEMPLATE.md` as
|
||||||
|
the template to create new changelog entries. Please note, that there is a special syntax for
|
||||||
|
defining features of the upcoming release. The newest changelog entry can have a title
|
||||||
|
"Next Release". In such a case, the build version will be `0.0.0` and CI would fail when trying to
|
||||||
|
publish it as a release.
|
||||||
|
|
7
gui/docs/assets/tags/bug_fixes.svg
Normal file
7
gui/docs/assets/tags/bug_fixes.svg
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<svg version="1.1" width="91" height="36" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<style>
|
||||||
|
.txt { font: 15px sans-serif; fill:white; }
|
||||||
|
</style>
|
||||||
|
<rect width="91" height="36" rx="18" fill="#e02424"/>
|
||||||
|
<text x="12" y="23" class="txt">Bug Fixes</text>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 273 B |
7
gui/docs/assets/tags/new_features.svg
Normal file
7
gui/docs/assets/tags/new_features.svg
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<svg version="1.1" width="117" height="36" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<style>
|
||||||
|
.txt { font: 15px sans-serif; fill:white; }
|
||||||
|
</style>
|
||||||
|
<rect width="117" height="36" rx="18" fill="#1c64f2"/>
|
||||||
|
<text x="12" y="23" class="txt">New Features</text>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 278 B |
7
gui/docs/assets/tags/new_learning_resources.svg
Normal file
7
gui/docs/assets/tags/new_learning_resources.svg
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<svg version="1.1" width="192" height="36" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<style>
|
||||||
|
.txt { font: 15px sans-serif; fill:white; }
|
||||||
|
</style>
|
||||||
|
<rect width="192" height="36" rx="18" fill="#047481"/>
|
||||||
|
<text x="12" y="23" class="txt">New Learning Resources</text>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 288 B |
7
gui/docs/assets/tags/release_notes.svg
Normal file
7
gui/docs/assets/tags/release_notes.svg
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<svg version="1.1" width="123" height="36" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<style>
|
||||||
|
.txt { font: 15px sans-serif; fill:white; }
|
||||||
|
</style>
|
||||||
|
<rect width="123" height="36" rx="18" fill="#5850ec"/>
|
||||||
|
<text x="12" y="23" class="txt">Release Notes</text>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 279 B |
4
gui/run
4
gui/run
@ -25,13 +25,15 @@ async function init () {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
let initialized = fss.existsSync(paths.dist.init)
|
let initialized = fss.existsSync(paths.dist.buildInit)
|
||||||
if (!initialized) {
|
if (!initialized) {
|
||||||
cmd.section('Initialization')
|
cmd.section('Initialization')
|
||||||
console.log('Installing build script dependencies.')
|
console.log('Installing build script dependencies.')
|
||||||
await cmd.with_cwd('build', async () => {
|
await cmd.with_cwd('build', async () => {
|
||||||
await cmd.run('npm',['install'])
|
await cmd.run('npm',['install'])
|
||||||
})
|
})
|
||||||
|
await fs.mkdir(paths.dist.root, {recursive:true})
|
||||||
|
await fs.open(paths.dist.buildInit,'w')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,9 +19,9 @@ let config = {
|
|||||||
dependencies: {
|
dependencies: {
|
||||||
"create-servers": "^3.1.0",
|
"create-servers": "^3.1.0",
|
||||||
"electron-is-dev": "^1.1.0",
|
"electron-is-dev": "^1.1.0",
|
||||||
"enso-studio-common": "2.0.0-alpha.0",
|
"enso-studio-common": "1.0.0",
|
||||||
"enso-studio-content": "2.0.0-alpha.0",
|
"enso-studio-content": "1.0.0",
|
||||||
"enso-studio-icons": "2.0.0-alpha.0",
|
"enso-studio-icons": "1.0.0",
|
||||||
"yargs": "^15.3.0"
|
"yargs": "^15.3.0"
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -43,7 +43,8 @@ let config = {
|
|||||||
config.build = {
|
config.build = {
|
||||||
appId: 'org.enso',
|
appId: 'org.enso',
|
||||||
productName: 'Enso',
|
productName: 'Enso',
|
||||||
copyright: 'Copyright © 2020 ${author}.',
|
copyright: 'Copyright © 2021 ${author}.',
|
||||||
|
artifactName: 'enso-${os}-${version}.${ext}',
|
||||||
mac: {
|
mac: {
|
||||||
icon: `${paths.dist.root}/icons/icon.icns`,
|
icon: `${paths.dist.root}/icons/icon.icns`,
|
||||||
category: 'public.app-category.developer-tools',
|
category: 'public.app-category.developer-tools',
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
let config = {
|
let config = {
|
||||||
|
version: "1.0.0",
|
||||||
name: "enso-studio-common",
|
name: "enso-studio-common",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
let config = {
|
let config = {
|
||||||
name: "enso-studio-content",
|
name: "enso-studio-content",
|
||||||
|
version: "1.0.0",
|
||||||
scripts: {
|
scripts: {
|
||||||
"build": "npx webpack",
|
"build": "npx webpack",
|
||||||
"watch": "npx webpack-dev-server"
|
"watch": "npx webpack-dev-server"
|
||||||
},
|
},
|
||||||
dependencies: {
|
dependencies: {
|
||||||
"enso-studio-common": "2.0.0-alpha.0",
|
"enso-studio-common": "1.0.0",
|
||||||
"copy-webpack-plugin": "^5.1.1",
|
"copy-webpack-plugin": "^5.1.1",
|
||||||
"mixpanel-browser": "2.40.1"
|
"mixpanel-browser": "2.40.1"
|
||||||
},
|
},
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
let config = {
|
let config = {
|
||||||
name: "enso-studio-icons",
|
name: "enso-studio-icons",
|
||||||
|
version: "1.0.0",
|
||||||
scripts: {
|
scripts: {
|
||||||
"build": "node src/index.js"
|
"build": "node src/index.js"
|
||||||
},
|
},
|
||||||
|
@ -174,7 +174,8 @@ async function genIcons() {
|
|||||||
}
|
}
|
||||||
toIco(files).then(buf => { fss.writeFileSync(`${distPath}/icon.ico`, buf) })
|
toIco(files).then(buf => { fss.writeFileSync(`${distPath}/icon.ico`, buf) })
|
||||||
|
|
||||||
await fs.open(donePath,'w')
|
let handle = await fs.open(donePath,'w')
|
||||||
|
await handle.close()
|
||||||
}
|
}
|
||||||
|
|
||||||
genIcons()
|
genIcons()
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
let config = {
|
let config = {
|
||||||
name: 'enso-studio-project-manager',
|
name: 'enso-studio-project-manager',
|
||||||
|
version: "1.0.0",
|
||||||
scripts: {
|
scripts: {
|
||||||
build: 'npx ts-node src/build.ts',
|
build: 'npx ts-node src/build.ts',
|
||||||
},
|
},
|
||||||
|
46
gui/src/js/package-lock.json
generated
46
gui/src/js/package-lock.json
generated
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "root",
|
"name": "root",
|
||||||
"version": "2.0.0-alpha.0",
|
"version": "1.0.0",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -1223,9 +1223,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@octokit/openapi-types": {
|
"@octokit/openapi-types": {
|
||||||
"version": "3.2.1",
|
"version": "3.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-3.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-3.3.0.tgz",
|
||||||
"integrity": "sha512-OOXW6e+vSIpA63Zp5Q+hio3tnQsWFnn9xx1xco0arjTOBcKW/NwFsmhpmj4Yt5IddUS1V7PVGSfRRDO5qZhEqQ==",
|
"integrity": "sha512-s3dd32gagPmKaSLNJ9aPNok7U+tl69YLESf6DgQz5Ml/iipPZtif3GLvWpNXoA6qspFm1LFUZX+C3SqWX/Y/TQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@octokit/plugin-enterprise-rest": {
|
"@octokit/plugin-enterprise-rest": {
|
||||||
@ -1369,12 +1369,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@octokit/types": {
|
"@octokit/types": {
|
||||||
"version": "6.5.3",
|
"version": "6.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.5.3.tgz",
|
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.6.0.tgz",
|
||||||
"integrity": "sha512-kKefDpNiYXQoZvvbDxgdTDKn1pzopxyn9W/7nkIxNaiRC20jKDEC8vVT8GN6R8eTz8pImz2198jCXTgEMck+sA==",
|
"integrity": "sha512-nmFoU3HCbw1AmnZU/eto2VvzV06+N7oAqXwMmAHGlNDF+KFykksh/VlAl85xc1P5T7Mw8fKYvXNaImNHCCH/rg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@octokit/openapi-types": "^3.2.1",
|
"@octokit/openapi-types": "^3.3.0",
|
||||||
"@types/node": ">= 8"
|
"@types/node": ">= 8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -1443,9 +1443,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/yargs": {
|
"@types/yargs": {
|
||||||
"version": "15.0.12",
|
"version": "15.0.13",
|
||||||
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.12.tgz",
|
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz",
|
||||||
"integrity": "sha512-f+fD/fQAo3BCbCDlrUpznF1A5Zp9rB0noS5vnoormHSIPFKL0Z2DcUJ3Gxp5ytH4uLRNxy7AwYUC9exZzqGMAw==",
|
"integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/yargs-parser": "*"
|
"@types/yargs-parser": "*"
|
||||||
}
|
}
|
||||||
@ -1877,9 +1877,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"hosted-git-info": {
|
"hosted-git-info": {
|
||||||
"version": "3.0.7",
|
"version": "3.0.8",
|
||||||
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.7.tgz",
|
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz",
|
||||||
"integrity": "sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ==",
|
"integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"lru-cache": "^6.0.0"
|
"lru-cache": "^6.0.0"
|
||||||
}
|
}
|
||||||
@ -6248,9 +6248,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"git-url-parse": {
|
"git-url-parse": {
|
||||||
"version": "11.4.3",
|
"version": "11.4.4",
|
||||||
"resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.4.3.tgz",
|
"resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.4.4.tgz",
|
||||||
"integrity": "sha512-LZTTk0nqJnKN48YRtOpR8H5SEfp1oM2tls90NuZmBxN95PnCvmuXGzqQ4QmVirBgKx2KPYfPGteX3/raWjKenQ==",
|
"integrity": "sha512-Y4o9o7vQngQDIU9IjyCmRJBin5iYjI5u9ZITnddRZpD7dcCFQj2sL2XuMNbLRE4b4B/4ENPsp2Q8P44fjAZ0Pw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"git-up": "^4.0.0"
|
"git-up": "^4.0.0"
|
||||||
@ -7878,9 +7878,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"hosted-git-info": {
|
"hosted-git-info": {
|
||||||
"version": "3.0.7",
|
"version": "3.0.8",
|
||||||
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.7.tgz",
|
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz",
|
||||||
"integrity": "sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ==",
|
"integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"lru-cache": "^6.0.0"
|
"lru-cache": "^6.0.0"
|
||||||
@ -8026,12 +8026,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
|
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
|
||||||
"yargs-parser": {
|
|
||||||
"version": "20.2.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
|
|
||||||
"integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
|
|
||||||
"dev": true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
let config = {
|
let config = {
|
||||||
name: 'root',
|
name: 'root',
|
||||||
version: '2.0.0-alpha.0',
|
version: '1.0.0',
|
||||||
private: true,
|
private: true,
|
||||||
devDependencies: {
|
devDependencies: {
|
||||||
lerna: '^3.20.2',
|
lerna: '^3.20.2',
|
||||||
|
@ -782,7 +782,7 @@ impl Var {
|
|||||||
// === Sheet ===
|
// === Sheet ===
|
||||||
// =============
|
// =============
|
||||||
|
|
||||||
/// Cascading style sheet. Implemented as a tree of `SheedNode`s. Each style sheet node can be
|
/// Cascading style sheet. Implemented as a tree of `SheetNode`s. Each style sheet node can be
|
||||||
/// assigned with a value of type `Data` or an expression to compute one. It also allows creating
|
/// assigned with a value of type `Data` or an expression to compute one. It also allows creating
|
||||||
/// variables which are automatically bound to the most specific style sheet. See `Var`, `Query` ,
|
/// variables which are automatically bound to the most specific style sheet. See `Var`, `Query` ,
|
||||||
/// and `Sheet` to learn more.
|
/// and `Sheet` to learn more.
|
||||||
|
Loading…
Reference in New Issue
Block a user