Skip to content

Commit

Permalink
Fix uncaught error. Symlink not working with scoped packages (#6233)
Browse files Browse the repository at this point in the history
  • Loading branch information
SamTV12345 committed Mar 17, 2024
1 parent 8a7dfce commit 3ba0d45
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 48 deletions.
89 changes: 47 additions & 42 deletions .github/workflows/upgrade-from-latest-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,50 @@ jobs:
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- uses: pnpm/action-setup@v3
name: Install pnpm
with:
version: 8
run_install: false
- name: Only install direct dependencies
run: pnpm config set auto-install-peers false
- name: Install libreoffice
uses: awalsh128/[email protected]
with:
packages: libreoffice libreoffice-pdfimport
version: 1.0
- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- uses: actions/cache@v4
name: Setup pnpm cache
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Only install direct dependencies
run: pnpm config set auto-install-peers false
-
name: Install libreoffice
uses: awalsh128/[email protected]
with:
packages: libreoffice libreoffice-pdfimport
version: 1.0
-
name: Install all dependencies and symlink for ep_etherpad-lite
run: bin/installDeps.sh
- name: Install admin ui
working-directory: admin
run: pnpm install
- name: Build admin ui
working-directory: admin
run: pnpm build
-
name: Install Etherpad plugins
# Important: Installer for old master which does not have pnpm right now
# The --legacy-peer-deps flag is required to work around a bug in npm v7:
# https://github.com/npm/cli/issues/2199
run: >
npm install --no-save --legacy-peer-deps
pnpm run install-plugins
ep_align
ep_author_hover
ep_cursortrace
Expand All @@ -49,12 +86,12 @@ jobs:
ep_spellcheck
ep_subscript_and_superscript
ep_table_of_contents
-
name: Install all dependencies and symlink for ep_etherpad-lite
run: src/bin/installDeps.sh
-
name: Run the backend tests
run: cd src && npm test
run: pnpm run test
-
name: Install all dependencies and symlink for ep_etherpad-lite
run: ./bin/installDeps.sh
# Because actions/checkout@v4 is called with "ref: master" and without
# "fetch-depth: 0", the local clone does not have the ${GITHUB_SHA}
# commit. Fetch ${GITHUB_REF} to get the ${GITHUB_SHA} commit. Note that a
Expand All @@ -70,44 +107,12 @@ jobs:
# For pull requests, ${GITHUB_SHA} is the automatically generated merge
# commit that merges the PR's source branch to its destination branch.
run: git checkout "${GITHUB_SHA}"
- uses: pnpm/action-setup@v3
name: Install pnpm
with:
version: 8
run_install: false
- name: Only install direct dependencies
run: pnpm config set auto-install-peers false
-
name: Install libreoffice
uses: awalsh128/[email protected]
with:
packages: libreoffice libreoffice-pdfimport
version: 1.0
- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- uses: actions/cache@v4
name: Setup pnpm cache
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-

-
name: Install all dependencies and symlink for ep_etherpad-lite
run: bin/installDeps.sh
-
name: Run the backend tests
run: pnpm test
-
name: Install Cypress
working-directory: ./src
run: pnpm install cypress
-
name: Run Etherpad & Test Frontend
working-directory: ./src
run: |
pnpm run dev &
curl --connect-timeout 10 --max-time 20 --retry 5 --retry-delay 10 --retry-max-time 60 --retry-connrefused http://127.0.0.1:9001/p/test
./node_modules/cypress/bin/cypress run --config-file tests/frontend/cypress/cypress.config.js
pnpm run test-ui --project=chromium
17 changes: 13 additions & 4 deletions src/static/js/pluginfw/LinkInstaller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ export class LinkInstaller {
this.dependenciesMap.set(dependency, new Set([name]))
}
}

}

public async installFromPath(path: string) {
Expand Down Expand Up @@ -177,9 +176,10 @@ export class LinkInstaller {
// We already added the sub dependency
this.dependenciesMap.get(dependency)?.add(plugin)
} else {
this.linkDependency(dependency)
// Read sub dependencies

try {
this.linkDependency(dependency)
// Read sub dependencies
const json:IPluginInfo = JSON.parse(
readFileSync(pathToFileURL(path.join(pluginInstallPath, dependency, 'package.json'))) as unknown as string);
if(json.dependencies){
Expand All @@ -199,7 +199,16 @@ export class LinkInstaller {
// Check if the dependency is already installed
accessSync(path.join(node_modules, dependency), constants.F_OK)
} catch (err) {
symlinkSync(path.join(pluginInstallPath, dependency), path.join(node_modules, dependency), 'dir')
try {
if(dependency.startsWith("@")){
const newDependency = dependency.split("@")[0]
symlinkSync(path.join(pluginInstallPath, dependency), path.join(node_modules, newDependency), 'dir')
} else {
symlinkSync(path.join(pluginInstallPath, dependency), path.join(node_modules, dependency), 'dir')
}
} catch (e) {
// Nothing to do. We're all set
}
}
}

Expand Down
2 changes: 0 additions & 2 deletions src/static/js/pluginfw/installer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,6 @@ export const checkForMigration = async () => {
// Initialize linkInstaller
await linkInstaller.init()



try {
await fs.access(installedPluginsPath, fs.constants.F_OK);
} catch (err) {
Expand Down

0 comments on commit 3ba0d45

Please sign in to comment.