diff --git a/.changes/config.json b/.changes/config.json index d59e3bc42..ba398fbd5 100644 --- a/.changes/config.json +++ b/.changes/config.json @@ -3,18 +3,152 @@ "pkgManagers": { "rust": { "version": true, - "publish": false + "getPublishedVersion": "cargo search ${ pkg.pkg } --limit 1 | sed -nE 's/^[^\"]*\"//; s/\".*//1p' -", + "prepublish": [ + "sudo apt-get update", + "sudo apt-get install -y webkit2gtk-4.0", + { + "command": "cargo generate-lockfile", + "dryRunCommand": true, + "runFromRoot": true, + "pipe": true + }, + { + "command": "echo \"# Cargo Audit\"", + "dryRunCommand": true, + "pipe": true + }, + { + "command": "echo \"\\`\\`\\`\"", + "dryRunCommand": true, + "pipe": true + }, + { + "command": "cargo audit", + "dryRunCommand": true, + "runFromRoot": true, + "pipe": true + }, + { + "command": "echo \"\\`\\`\\`\"", + "dryRunCommand": true, + "pipe": true + }, + { + "command": "cargo package --no-verify --allow-dirty", + "dryRunCommand": true, + "pipe": true + } + ], + "publish": [ + { + "command": "echo \"# Cargo Publish\"", + "dryRunCommand": true, + "pipe": true + }, + { + "command": "echo \"\\`\\`\\`\"", + "dryRunCommand": true, + "pipe": true + }, + { + "command": "cargo publish --no-verify", + "dryRunCommand": "cargo publish --no-verify --dry-run", + "pipe": true + }, + { + "command": "echo \"\\`\\`\\`\"", + "dryRunCommand": true, + "pipe": true + } + ], + "postpublish": [ + "git tag ${ pkg.pkg }-v${ pkgFile.versionMajor } -f", + "git tag ${ pkg.pkg }-v${ pkgFile.versionMajor }.${ pkgFile.versionMinor } -f", + "git push --tags -f" + ], + "assets": [ + { + "path": "${ pkg.path }/${ pkg.pkg }-${ pkgFile.version }.crate", + "name": "${ pkg.pkg }-${ pkgFile.version }.crate" + } + ] }, "javascript": { "version": true, - "publish": false + "getPublishedVersion": "npm view ${ pkgFile.pkg.name } version", + "prepublish": [ + { + "command": "yarn", + "dryRunCommand": true + }, + { + "command": "echo \"# Yarn Audit\n\"", + "dryRunCommand": true, + "pipe": true + }, + { + "command": "echo \"
\nclick to view\n\n\\`\\`\\`\"", + "dryRunCommand": true, + "pipe": true + }, + { + "command": "yarn audit", + "dryRunCommand": true, + "runFromRoot": true, + "pipe": true + }, + { + "command": "echo \"\\`\\`\\`\n\n
\n\"", + "dryRunCommand": true, + "pipe": true + }, + { + "command": "npm pack", + "dryRunCommand": true, + "pipe": true + } + ], + "publish": [ + { + "command": "echo \"# NPM Package Publish\"", + "dryRunCommand": true, + "pipe": true + }, + { + "command": "echo \"\\`\\`\\`\"", + "dryRunCommand": true, + "pipe": true + }, + { + "command": "npm publish --access public", + "dryRunCommand": "npm publish --dry-run --access public", + "pipe": true + }, + { + "command": "echo \"\\`\\`\\`\"", + "dryRunCommand": true, + "pipe": true + } + ], + "postpublish": [ + "git tag ${ pkg.pkg }-v${ pkgFile.versionMajor } -f", + "git tag ${ pkg.pkg }-v${ pkgFile.versionMajor }.${ pkgFile.versionMinor } -f", + "git push --tags -f" + ] } }, "packages": { "tauri.js": { "path": "./cli/tauri.js", "manager": "javascript", - "dependencies": ["tauri"] + "dependencies": ["tauri"], + "assets": [ + { + "path": "./cli/tauri.js/tauri-${ pkgFile.version }.tgz", + "name": "tauri.js-${ pkgFile.version }.tgz" + } + ] }, "tauri-bundler": { "path": "./cli/tauri-bundler", @@ -36,7 +170,8 @@ }, "tauri-updater": { "path": "./tauri-updater", - "manager": "rust" + "manager": "rust", + "publish": false } } } diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 66d9b7307..d399ca557 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -30,7 +30,6 @@ If yes, please describe the impact and migration path for existing applications **The PR fulfills these requirements:** -- [ ] It's submitted to the `dev` branch and _not_ the `latest` branch - [ ] When resolving a specific issue, it's referenced in the PR's title (e.g. `fix: #xxx[,#xxx]`, where "xxx" is the issue number) - [ ] A change file is added if any packages will require a version bump due to this PR per [the instructions in the readme](https://github.com/tauri-apps/tauri/blob/dev/.changes/readme.md). diff --git a/.github/workflows/covector-version-or-publish.yml b/.github/workflows/covector-version-or-publish.yml new file mode 100644 index 000000000..8e44b58a4 --- /dev/null +++ b/.github/workflows/covector-version-or-publish.yml @@ -0,0 +1,77 @@ +name: release-npm + +on: + push: + branches: + - dev + +jobs: + version-or-publish: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - uses: actions/setup-node@v1 + with: + node-version: 12 + registry-url: 'https://registry.npmjs.org' + - name: cargo login + run: cargo login ${{ secrets.crate_token }} + - name: git config + run: | + git config --global user.name "${{ github.event.pusher.name }}" + git config --global user.email "${{ github.event.pusher.email }}" + - name: covector version + uses: jbolda/covector/packages/action@covector-v0 + id: covector + with: + command: 'version-or-publish' + - name: Create Pull Request With Versions Bumped + if: ${{ steps.covector.outputs.command }} == 'version' + uses: tauri-apps/create-pull-request@v2.8.0 + with: + token: ${{ secrets.GITHUB_TOKEN }} + branch: release/version-updates + title: Apply Version Updates From Current Changes + commit-message: "apply version updates" + labels: "version updates" + body: ${{ steps.covector.outputs.change }} + + tangle: + runs-on: ubuntu-latest + needs: version-or-publish + if: ${{ needs.version-or-publish.outputs.covector.successfulPublish }} == 'true' + strategy: + fail-fast: false + matrix: + package: + - name: tauri.js + registryName: tauri + - name: tauri-bundler + registryName: tauri-bundler + - name: tauri-utils + registryName: tauri-utils + - name: tauri-api + registryName: tauri-api + - name: tauri-updater + registryName: tauri-updater + - name: tauri-core + registryName: tauri + + steps: + - uses: actions/checkout@v2 + - run: echo ::set-env name=PUBLISHED::$(jq '.${{ matrix.package.name }}.command' ${{ needs.version-or-publish.outputs.covector.change }}) + - run: echo ::set-env name=PACKAGE_VERSION::$(jq '.${{ matrix.package.name }}.pkg.pkgFile.version' ${{ needs.version-or-publish.outputs.covector.change }}) + - name: Tangle Release + if: env.PUBLISHED != 'false' && !startsWith(env.PUBLISHED, "parse error") && !startsWith(env.PACKAGE_VERSION, "parse error") + id: tangle_release + uses: iotaledger/gh-tangle-release@v0.6.2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + IOTA_SEED: ${{ secrets.IOTA_SEED }} + IOTA_NODE: "https://iotanode.us:14267" + with: + tag_name: ${{ matrix.package.name }}-v${{ env.PACKAGE_VERSION }} + comment: "Release ${{ matrix.package.name }} v${{ env.PACKAGE_VERSION }} [npmjs.com]" diff --git a/.github/workflows/pr-to-latest.yml b/.github/workflows/pr-to-latest.yml deleted file mode 100644 index b326d8b3f..000000000 --- a/.github/workflows/pr-to-latest.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: pr-to-latest - -on: - push: - branches: - - dev - -jobs: - pr-to-latest: - runs-on: ubuntu-latest - if: contains(github.event.head_commit.message, 'version updates') - steps: - - uses: actions/checkout@v2 - with: - ref: latest - fetch-depth: 0 - - name: git config - run: | - git config --global user.name "${{ github.event.pusher.name }}" - git config --global user.email "${{ github.event.pusher.email }}" - - run: git fetch origin dev - - run: git merge -Xours ${{ github.sha }} - - name: Create Pull Request - uses: tauri-apps/create-pull-request@v2.8.0 - with: - token: ${{ secrets.GITHUB_TOKEN }} - commit-message: ${{ github.event.head_commit.message }} - branch: release/latest - branch-suffix: short-commit-hash - title: Publish - labels: "publish" - body: | - Merging this PR will squash and push all changes to the latest branch. - It will kick off the process to release and publish any packages with an incremented version number. diff --git a/.github/workflows/pr-version-updates.yml b/.github/workflows/pr-version-updates.yml deleted file mode 100644 index d422449c1..000000000 --- a/.github/workflows/pr-version-updates.yml +++ /dev/null @@ -1,33 +0,0 @@ -name: pr-version-updates - -on: - push: - branches: - - dev - -jobs: - pr-to-latest: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - name: git config - run: | - git config --global user.name "${{ github.event.pusher.name }}" - git config --global user.email "${{ github.event.pusher.email }}" - - name: covector version - uses: jbolda/covector/packages/action@covector-v0 - id: covector - with: - command: 'version' - - name: Create Pull Request With Versions Bumped - uses: tauri-apps/create-pull-request@v2.8.0 - with: - token: ${{ secrets.GITHUB_TOKEN }} - branch: release/version-updates - title: Apply Version Updates From Current Changes - commit-message: "apply version updates" - labels: "version updates" - body: ${{ steps.covector.outputs.change }} diff --git a/.github/workflows/release-cargo.yml b/.github/workflows/release-cargo.yml deleted file mode 100644 index 6c04d6826..000000000 --- a/.github/workflows/release-cargo.yml +++ /dev/null @@ -1,137 +0,0 @@ -name: release-cargo - -on: - push: - branches: - - latest - paths: - - '**/Cargo.toml' - - '.github/workflows/**' - -jobs: - publish: - runs-on: ubuntu-latest - strategy: - fail-fast: false - max-parallel: 1 - matrix: - package: - - name: tauri-bundler - registryName: tauri-bundler - path: cli/tauri-bundler - publishPath: cli/tauri-bundler/target/package # not in workspace so target folder is nested - auditPath: cli/tauri-bundler - - name: tauri-utils - registryName: tauri-utils - path: tauri-utils - publishPath: target/package - auditPath: ./ - - name: tauri-api - registryName: tauri-api - path: tauri-api - publishPath: target/package - auditPath: ./ - - name: tauri-updater - registryName: tauri-updater - path: tauri-updater - publishPath: target/package - auditPath: ./ - - name: tauri-core - registryName: tauri - path: tauri - publishPath: target/package - auditPath: ./ - steps: - - uses: actions/checkout@v2 - with: - ref: latest - toolchain: stable - - name: get version - working-directory: ${{ matrix.package.path }} - run: echo ::set-env name=PACKAGE_VERSION::$(sed -nE 's/^\s*version = "(.*?)"/\1/p' Cargo.toml) - - name: check published version - run: echo ::set-env name=PUBLISHED_VERSION::$(cargo search ${{ matrix.package.registryName }} --limit 1 | sed -nE 's/^[^"]*"//; s/".*//1p' -) - - name: install webkit2gtk - if: env.PACKAGE_VERSION != env.PUBLISHED_VERSION - run: | - sudo apt-get update - sudo apt-get install -y webkit2gtk-4.0 - - name: cargo login - if: env.PACKAGE_VERSION != env.PUBLISHED_VERSION - run: cargo login ${{ secrets.crate_token }} - - name: cargo generate-lockfile (for audit) - if: env.PACKAGE_VERSION != env.PUBLISHED_VERSION - working-directory: ${{ matrix.package.auditPath }} - env: - TAURI_DIST_DIR: ${{ runner.workspace }}/tauri/tauri/examples/communication/dist - TAURI_DIR: ${{ runner.workspace }}/tauri/tauri/examples/communication/src-tauri - run: | - echo "This is only for the audit. Lock files are listed in the gitignore so it should not be published." - cargo generate-lockfile - - name: cargo package - if: env.PACKAGE_VERSION != env.PUBLISHED_VERSION - working-directory: ${{ matrix.package.path }} - env: - TAURI_DIST_DIR: ${{ runner.workspace }}/tauri/tauri/examples/communication/dist - TAURI_DIR: ${{ runner.workspace }}/tauri/tauri/examples/communication/src-tauri - run: | - cargo package --no-verify - echo "We will publish:" $PACKAGE_VERSION - echo "This is current latest:" $PUBLISHED_VERSION - - name: cargo audit - if: env.PACKAGE_VERSION != env.PUBLISHED_VERSION - working-directory: ${{ matrix.package.auditPath }} - env: - TAURI_DIST_DIR: ${{ runner.workspace }}/tauri/tauri/examples/communication/dist - TAURI_DIR: ${{ runner.workspace }}/tauri/tauri/examples/communication/src-tauri - run: | - cargo install cargo-audit - echo "# Cargo Audit" | tee -a ${{runner.workspace }}/notes.md - echo "\`\`\`" >> ${{runner.workspace }}/notes.md - cargo audit 2>&1 | tee -a ${{runner.workspace }}/notes.md - echo "\`\`\`" >> ${{runner.workspace }}/notes.md - - name: Publish ${{ matrix.package.name }} - if: env.PACKAGE_VERSION != env.PUBLISHED_VERSION - working-directory: ${{ matrix.package.path }} - env: - TAURI_DIST_DIR: ${{ runner.workspace }}/tauri/tauri/examples/communication/dist - TAURI_DIR: ${{ runner.workspace }}/tauri/tauri/examples/communication/src-tauri - run: | - echo "# Cargo Publish" | tee -a ${{runner.workspace }}/notes.md - echo "\`\`\`" >> ${{runner.workspace }}/notes.md - set -o pipefail && cargo publish --no-verify 2>&1 | tee -a ${{runner.workspace }}/notes.md - echo "\`\`\`" >> ${{runner.workspace }}/notes.md - - name: Create Release - id: create_crate_release - if: env.PACKAGE_VERSION != env.PUBLISHED_VERSION - uses: jbolda/create-release@v1.1.0 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ matrix.package.name }}-v${{ env.PACKAGE_VERSION }} - release_name: "Release ${{ matrix.package.name }} v${{ env.PACKAGE_VERSION }} [crates.io]" - bodyFromFile: ./../notes.md - draft: false - prerelease: false - - name: Upload Release Asset - id: upload-release-asset - if: env.PACKAGE_VERSION != env.PUBLISHED_VERSION - uses: actions/upload-release-asset@v1.0.1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_crate_release.outputs.upload_url }} - asset_path: ./${{ matrix.package.publishPath }}/${{ matrix.package.registryName }}-${{ env.PACKAGE_VERSION }}.crate - asset_name: ${{ matrix.package.registryName }}-${{ env.PACKAGE_VERSION }}.crate - asset_content_type: application/x-gtar - - name: Tangle Release - id: tangle_release - if: env.PACKAGE_VERSION != env.PUBLISHED_VERSION - uses: iotaledger/gh-tangle-release@v0.6.2 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - IOTA_SEED: ${{ secrets.IOTA_SEED }} - IOTA_NODE: "https://iotanode.us:14267" - with: - tag_name: ${{ matrix.package.name }}-v${{ env.PACKAGE_VERSION }} - comment: "Release ${{ matrix.package.name }} v${{ env.PACKAGE_VERSION }} [crates.io]" diff --git a/.github/workflows/release-npm.yml b/.github/workflows/release-npm.yml deleted file mode 100644 index 12e0e59b3..000000000 --- a/.github/workflows/release-npm.yml +++ /dev/null @@ -1,106 +0,0 @@ -name: release-npm - -on: - push: - branches: - - latest - paths: - - '**/package.json' - - '.github/workflows/**' - -jobs: - publish: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - package: - - name: tauri.js - registryName: tauri - path: cli/tauri.js - steps: - - uses: actions/checkout@v2 - with: - ref: latest - - uses: actions/setup-node@v1 - with: - node-version: 12 - registry-url: 'https://registry.npmjs.org' - - name: get version - working-directory: ${{ matrix.package.path }} - run: echo ::set-env name=PACKAGE_VERSION::$(node -p "require('./package.json').version") - - name: check published version - run: echo ::set-env name=PUBLISHED_VERSION::$(npm view ${{ matrix.package.registryName }} version) - - name: yarn install - if: env.PACKAGE_VERSION != env.PUBLISHED_VERSION - working-directory: ${{ matrix.package.path }} - run: yarn - - name: npm pack - if: env.PACKAGE_VERSION != env.PUBLISHED_VERSION - working-directory: ${{ matrix.package.path }} - run: | - echo "pack dir:" - ls - npm pack - echo "We will publish:" $PACKAGE_VERSION - echo "This is current latest:" $PUBLISHED_VERSION - echo "post pack dir:" - ls - - name: yarn audit - if: env.PACKAGE_VERSION != env.PUBLISHED_VERSION - working-directory: ${{ matrix.package.path }} - run: | - echo "# Yarn Audit Results" | tee -a ${{runner.workspace }}/notes.md - echo "" >> ${{runner.workspace }}/notes.md - echo "
" >> ${{runner.workspace }}/notes.md - echo "click to view" >> ${{runner.workspace }}/notes.md - echo "" >> ${{runner.workspace }}/notes.md - echo "\`\`\`" >> ${{runner.workspace }}/notes.md - yarn audit 2>&1 | tee -a ${{runner.workspace }}/notes.md - echo "\`\`\`" >> ${{runner.workspace }}/notes.md - echo "
" >> ${{runner.workspace }}/notes.md - echo "" >> ${{runner.workspace }}/notes.md - - name: Publish ${{ matrix.package.name }} - if: env.PACKAGE_VERSION != env.PUBLISHED_VERSION - working-directory: ${{ matrix.package.path }} - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - run: | - echo "# NPM Package Publish" | tee -a ${{runner.workspace }}/notes.md - echo "\`\`\`" >> ${{runner.workspace }}/notes.md - set -o pipefail && npm publish 2>&1 | tee -a ${{runner.workspace }}/notes.md - echo "\`\`\`" >> ${{runner.workspace }}/notes.md - - name: Create Release - id: create_npm_release - if: env.PACKAGE_VERSION != env.PUBLISHED_VERSION - uses: jbolda/create-release@v1.1.0 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ matrix.package.name }}-v${{ env.PACKAGE_VERSION }} - release_name: "Release ${{ matrix.package.name }} v${{ env.PACKAGE_VERSION }} [npmjs.com]" - bodyFromFile: ./../notes.md - draft: false - prerelease: false - - name: Upload Release Asset - id: upload-release-asset - if: env.PACKAGE_VERSION != env.PUBLISHED_VERSION - uses: actions/upload-release-asset@v1.0.1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_npm_release.outputs.upload_url }} - asset_path: ./${{ matrix.package.path }}/${{ matrix.package.registryName }}-${{ env.PACKAGE_VERSION }}.tgz - asset_name: ${{ matrix.package.registryName }}-${{ env.PACKAGE_VERSION }}.tgz - asset_content_type: application/x-gtar - - name: Tangle Release - id: tangle_release - if: env.PACKAGE_VERSION != env.PUBLISHED_VERSION - uses: iotaledger/gh-tangle-release@v0.6.2 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - IOTA_SEED: ${{ secrets.IOTA_SEED }} - IOTA_NODE: "https://iotanode.us:14267" - with: - tag_name: ${{ matrix.package.name }}-v${{ env.PACKAGE_VERSION }} - comment: "Release ${{ matrix.package.name }} v${{ env.PACKAGE_VERSION }} [npmjs.com]" diff --git a/.gitignore b/.gitignore index c7dd43b96..bfaa7ddc1 100644 --- a/.gitignore +++ b/.gitignore @@ -75,8 +75,9 @@ TODO.md # rust compiled folders target -# Cargo lock for libs +# lock for libs Cargo.lock +yarn.lock /cli/tauri.js/test/jest/tmp diff --git a/package.json b/package.json new file mode 100644 index 000000000..fca0416f1 --- /dev/null +++ b/package.json @@ -0,0 +1,14 @@ +{ + "name": "tauri-workspace", + "version": "0.0.0", + "license": "MIT", + "private": true, + "repository": { + "type": "git", + "url": "https://github.com/tauri-apps/tauri.git", + "directory": "cli/tauri.js" + }, + "devDependencies": { + "covector": "^0.2.6" + } +}