mirror of
https://github.com/enso-org/enso.git
synced 2024-12-22 22:21:40 +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
|
||||
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.
|
||||
- [ ] 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.
|
||||
@ -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 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).
|
||||
|
||||
|
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"
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||
"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": {
|
||||
"version": "1.1.11",
|
||||
"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",
|
||||
"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": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
|
||||
@ -172,6 +180,14 @@
|
||||
"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": {
|
||||
"version": "3.0.4",
|
||||
"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",
|
||||
"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": {
|
||||
"version": "2.0.0",
|
||||
"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",
|
||||
"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": {
|
||||
"version": "15.3.0",
|
||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.0.tgz",
|
||||
|
@ -4,10 +4,11 @@
|
||||
"description": "Build Scripts",
|
||||
"repository": "git@github.com:enso-org/ide.git",
|
||||
"dependencies": {
|
||||
"binaryen": "^91.0.0",
|
||||
"glob": "^7.1.6",
|
||||
"ncp": "^2.0.0",
|
||||
"yargs": "^15.3.0"
|
||||
"yargs": "^15.3.0",
|
||||
"js-yaml": "4.0.0",
|
||||
"semver": "7.3.4"
|
||||
},
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
|
@ -16,12 +16,17 @@ paths.script.main = path.join(paths.root,'run')
|
||||
paths.script.root = path.join(paths.root,'build')
|
||||
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.root = path.join(paths.root,'dist')
|
||||
paths.dist.client = path.join(paths.dist.root,'client')
|
||||
paths.dist.content = path.join(paths.dist.root,'content')
|
||||
paths.dist.bin = path.join(paths.dist.root, 'bin')
|
||||
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.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')
|
||||
|
||||
process.on('unhandledRejection', error => { throw(error) })
|
||||
process.chdir(paths.root)
|
||||
|
||||
|
||||
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 release = require('./release')
|
||||
const stream = require('stream')
|
||||
const workflow = require('./workflow')
|
||||
const yargs = require('yargs')
|
||||
const zlib = require('zlib')
|
||||
const { promisify } = require('util')
|
||||
const pipe = promisify(stream.pipeline)
|
||||
|
||||
async function gzip(input, output) {
|
||||
const gzip = zlib.createGzip()
|
||||
const source = fss.createReadStream(input)
|
||||
const destination = fss.createWriteStream(output)
|
||||
await pipe(source,gzip,destination)
|
||||
}
|
||||
|
||||
|
||||
// ==============
|
||||
// === Errors ===
|
||||
// ==============
|
||||
|
||||
process.on('unhandledRejection', error => { throw(error) })
|
||||
process.chdir(paths.root)
|
||||
|
||||
|
||||
|
||||
@ -46,6 +45,13 @@ let targetArgs = undefined
|
||||
// === 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.
|
||||
async function copy(src,tgt) {
|
||||
return new Promise((resolve, reject) => {
|
||||
@ -95,6 +101,8 @@ function run_project_manager() {
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
// ================
|
||||
// === Commands ===
|
||||
// ================
|
||||
@ -110,7 +118,10 @@ commands.clean.js = async function() {
|
||||
await cmd.with_cwd(paths.js.root, async () => {
|
||||
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() {
|
||||
@ -136,6 +147,7 @@ commands.build.options = {
|
||||
}
|
||||
}
|
||||
commands.build.js = async function() {
|
||||
await installJsDeps()
|
||||
console.log(`Building JS target.`)
|
||||
await run('npm',['run','build'])
|
||||
}
|
||||
@ -192,6 +204,7 @@ commands.start.rust = async function(argv) {
|
||||
}
|
||||
|
||||
commands.start.js = async function (argv) {
|
||||
await installJsDeps()
|
||||
console.log(`Building JS target.` + argv)
|
||||
const args = targetArgs.concat([
|
||||
`--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() {
|
||||
await installJsDeps()
|
||||
await cmd.with_cwd(paths.js.root, async () => {
|
||||
await run('npm',['run','watch'])
|
||||
})
|
||||
@ -286,12 +300,42 @@ commands.dist.rust = async function(argv) {
|
||||
}
|
||||
|
||||
commands.dist.js = async function() {
|
||||
await installJsDeps()
|
||||
await cmd.with_cwd(paths.js.root, async () => {
|
||||
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 ===
|
||||
@ -378,7 +422,7 @@ for (let command of commandList) {
|
||||
|
||||
function defaultConfig() {
|
||||
return {
|
||||
version: "2.0.0-alpha.0",
|
||||
version: `${release.currentVersion()}`,
|
||||
author: {
|
||||
name: "Enso Team",
|
||||
email: "contact@enso.org"
|
||||
@ -419,10 +463,10 @@ async function processPackageConfigs() {
|
||||
// ============
|
||||
|
||||
async function updateBuildVersion (argv) {
|
||||
const target = get_target_platform(argv)
|
||||
let config = {}
|
||||
let configPath = paths.dist.buildInfo
|
||||
let exists = fss.existsSync(configPath)
|
||||
const target = get_target_platform(argv)
|
||||
let config = {}
|
||||
let configPath = paths.dist.buildInfo
|
||||
let exists = fss.existsSync(configPath)
|
||||
if(exists) {
|
||||
let configFile = await fs.readFile(configPath)
|
||||
config = JSON.parse(configFile)
|
||||
@ -452,7 +496,8 @@ async function installJsDeps() {
|
||||
await cmd.run('npm',['run','install'])
|
||||
})
|
||||
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()
|
||||
await updateBuildVersion(argv)
|
||||
await processPackageConfigs()
|
||||
workflow.generate()
|
||||
let command = argv._[0]
|
||||
if(command === 'clean') {
|
||||
try { await fs.unlink(paths.dist.init) } catch {}
|
||||
} else {
|
||||
await installJsDeps()
|
||||
}
|
||||
|
||||
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**
|
||||
Please be sure to fix all errors reported by `node ./run lint` before
|
||||
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) {
|
||||
cmd.section('Initialization')
|
||||
console.log('Installing build script dependencies.')
|
||||
await cmd.with_cwd('build', async () => {
|
||||
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: {
|
||||
"create-servers": "^3.1.0",
|
||||
"electron-is-dev": "^1.1.0",
|
||||
"enso-studio-common": "2.0.0-alpha.0",
|
||||
"enso-studio-content": "2.0.0-alpha.0",
|
||||
"enso-studio-icons": "2.0.0-alpha.0",
|
||||
"enso-studio-common": "1.0.0",
|
||||
"enso-studio-content": "1.0.0",
|
||||
"enso-studio-icons": "1.0.0",
|
||||
"yargs": "^15.3.0"
|
||||
},
|
||||
|
||||
@ -43,7 +43,8 @@ let config = {
|
||||
config.build = {
|
||||
appId: 'org.enso',
|
||||
productName: 'Enso',
|
||||
copyright: 'Copyright © 2020 ${author}.',
|
||||
copyright: 'Copyright © 2021 ${author}.',
|
||||
artifactName: 'enso-${os}-${version}.${ext}',
|
||||
mac: {
|
||||
icon: `${paths.dist.root}/icons/icon.icns`,
|
||||
category: 'public.app-category.developer-tools',
|
||||
|
@ -1,4 +1,5 @@
|
||||
let config = {
|
||||
version: "1.0.0",
|
||||
name: "enso-studio-common",
|
||||
}
|
||||
|
||||
|
@ -1,11 +1,12 @@
|
||||
let config = {
|
||||
name: "enso-studio-content",
|
||||
version: "1.0.0",
|
||||
scripts: {
|
||||
"build": "npx webpack",
|
||||
"watch": "npx webpack-dev-server"
|
||||
},
|
||||
dependencies: {
|
||||
"enso-studio-common": "2.0.0-alpha.0",
|
||||
"enso-studio-common": "1.0.0",
|
||||
"copy-webpack-plugin": "^5.1.1",
|
||||
"mixpanel-browser": "2.40.1"
|
||||
},
|
||||
|
@ -1,5 +1,6 @@
|
||||
let config = {
|
||||
name: "enso-studio-icons",
|
||||
version: "1.0.0",
|
||||
scripts: {
|
||||
"build": "node src/index.js"
|
||||
},
|
||||
|
@ -174,7 +174,8 @@ async function genIcons() {
|
||||
}
|
||||
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()
|
||||
|
@ -1,5 +1,6 @@
|
||||
let config = {
|
||||
name: 'enso-studio-project-manager',
|
||||
version: "1.0.0",
|
||||
scripts: {
|
||||
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",
|
||||
"version": "2.0.0-alpha.0",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
@ -1223,9 +1223,9 @@
|
||||
}
|
||||
},
|
||||
"@octokit/openapi-types": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-3.2.1.tgz",
|
||||
"integrity": "sha512-OOXW6e+vSIpA63Zp5Q+hio3tnQsWFnn9xx1xco0arjTOBcKW/NwFsmhpmj4Yt5IddUS1V7PVGSfRRDO5qZhEqQ==",
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-3.3.0.tgz",
|
||||
"integrity": "sha512-s3dd32gagPmKaSLNJ9aPNok7U+tl69YLESf6DgQz5Ml/iipPZtif3GLvWpNXoA6qspFm1LFUZX+C3SqWX/Y/TQ==",
|
||||
"dev": true
|
||||
},
|
||||
"@octokit/plugin-enterprise-rest": {
|
||||
@ -1369,12 +1369,12 @@
|
||||
}
|
||||
},
|
||||
"@octokit/types": {
|
||||
"version": "6.5.3",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.5.3.tgz",
|
||||
"integrity": "sha512-kKefDpNiYXQoZvvbDxgdTDKn1pzopxyn9W/7nkIxNaiRC20jKDEC8vVT8GN6R8eTz8pImz2198jCXTgEMck+sA==",
|
||||
"version": "6.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.6.0.tgz",
|
||||
"integrity": "sha512-nmFoU3HCbw1AmnZU/eto2VvzV06+N7oAqXwMmAHGlNDF+KFykksh/VlAl85xc1P5T7Mw8fKYvXNaImNHCCH/rg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@octokit/openapi-types": "^3.2.1",
|
||||
"@octokit/openapi-types": "^3.3.0",
|
||||
"@types/node": ">= 8"
|
||||
}
|
||||
},
|
||||
@ -1443,9 +1443,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"@types/yargs": {
|
||||
"version": "15.0.12",
|
||||
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.12.tgz",
|
||||
"integrity": "sha512-f+fD/fQAo3BCbCDlrUpznF1A5Zp9rB0noS5vnoormHSIPFKL0Z2DcUJ3Gxp5ytH4uLRNxy7AwYUC9exZzqGMAw==",
|
||||
"version": "15.0.13",
|
||||
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz",
|
||||
"integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==",
|
||||
"requires": {
|
||||
"@types/yargs-parser": "*"
|
||||
}
|
||||
@ -1877,9 +1877,9 @@
|
||||
}
|
||||
},
|
||||
"hosted-git-info": {
|
||||
"version": "3.0.7",
|
||||
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.7.tgz",
|
||||
"integrity": "sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ==",
|
||||
"version": "3.0.8",
|
||||
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz",
|
||||
"integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==",
|
||||
"requires": {
|
||||
"lru-cache": "^6.0.0"
|
||||
}
|
||||
@ -6248,9 +6248,9 @@
|
||||
}
|
||||
},
|
||||
"git-url-parse": {
|
||||
"version": "11.4.3",
|
||||
"resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.4.3.tgz",
|
||||
"integrity": "sha512-LZTTk0nqJnKN48YRtOpR8H5SEfp1oM2tls90NuZmBxN95PnCvmuXGzqQ4QmVirBgKx2KPYfPGteX3/raWjKenQ==",
|
||||
"version": "11.4.4",
|
||||
"resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.4.4.tgz",
|
||||
"integrity": "sha512-Y4o9o7vQngQDIU9IjyCmRJBin5iYjI5u9ZITnddRZpD7dcCFQj2sL2XuMNbLRE4b4B/4ENPsp2Q8P44fjAZ0Pw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"git-up": "^4.0.0"
|
||||
@ -7878,9 +7878,9 @@
|
||||
}
|
||||
},
|
||||
"hosted-git-info": {
|
||||
"version": "3.0.7",
|
||||
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.7.tgz",
|
||||
"integrity": "sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ==",
|
||||
"version": "3.0.8",
|
||||
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz",
|
||||
"integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"lru-cache": "^6.0.0"
|
||||
@ -8026,12 +8026,6 @@
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
|
||||
"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 = {
|
||||
name: 'root',
|
||||
version: '2.0.0-alpha.0',
|
||||
version: '1.0.0',
|
||||
private: true,
|
||||
devDependencies: {
|
||||
lerna: '^3.20.2',
|
||||
|
@ -782,7 +782,7 @@ impl Var {
|
||||
// === 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
|
||||
/// variables which are automatically bound to the most specific style sheet. See `Var`, `Query` ,
|
||||
/// and `Sheet` to learn more.
|
||||
|
Loading…
Reference in New Issue
Block a user