Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"clean": "rimraf dist tsconfig.tsbuildinfo oclif.manifest.json",
"lint": "eslint .",
"pretty": "prettier --write **/*.{js,jsx,tsx,ts}",
"postpack": "shx rm -f oclif.manifest.json",
"postpack": "rimraf oclif.manifest.json",
"posttest": "yarn lint",
"prepack": "yarn build && oclif manifest && oclif readme",
"prepare": "husky || true",
Expand All @@ -20,7 +20,7 @@
"migrate:undo": "sequelize db:migrate:undo",
"publish:npm": "npm run build && npm publish --scope=@internxt --registry=https://registry.npmjs.org/ --access public",
"publish:github": "npm run build && npm publish --scope=@internxt --registry=https://npm.pkg.github.com",
"postinstall": "node ./scripts/skip-in-ci.js || internxt webdav restart"
"postinstall": "node ./scripts/skip-in-ci.js || node ./bin/run.js webdav restart"
},
"homepage": "https://github.com/internxt/cli",
"license": "MIT",
Expand Down Expand Up @@ -86,7 +86,6 @@
"prettier": "^3.4.2",
"rimraf": "^6.0.1",
"sequelize-cli": "^6.6.2",
"shx": "^0.3.4",
"ts-node": "^10.9.2",
"typescript": "^5.7.2",
"vitest": "^2.1.8",
Expand Down
10 changes: 4 additions & 6 deletions src/commands/webdav.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ export default class Webdav extends Command {

let message = '';
let success = true;
await PM2Utils.connect();
switch (args.action) {
case 'enable': {
message = await this.enableWebDav();
Expand Down Expand Up @@ -55,6 +56,7 @@ export default class Webdav extends Command {
break;
}
}
PM2Utils.disconnect();
return { success, message, action: args.action };
};

Expand All @@ -71,7 +73,6 @@ export default class Webdav extends Command {
private enableWebDav = async (): Promise<string> => {
CLIUtils.doing('Starting Internxt WebDav server...');
await DriveDatabaseManager.clean();
await PM2Utils.connect();
await PM2Utils.killWebDavServer();
await PM2Utils.startWebDavServer();
CLIUtils.done();
Expand All @@ -98,7 +99,6 @@ export default class Webdav extends Command {

private disableWebDav = async (): Promise<string> => {
CLIUtils.doing('Stopping Internxt WebDav server...');
await PM2Utils.connect();
await PM2Utils.killWebDavServer();
CLIUtils.done();
const message = 'Internxt WebDav server stopped successfully';
Expand All @@ -109,7 +109,6 @@ export default class Webdav extends Command {
private restartWebDav = async (): Promise<string> => {
CLIUtils.doing('Restarting Internxt WebDav server...');
await DriveDatabaseManager.clean();
await PM2Utils.connect();
const { status } = await PM2Utils.webdavServerStatus();
if (status === 'online') {
await PM2Utils.killWebDavServer();
Expand All @@ -120,14 +119,13 @@ export default class Webdav extends Command {
return message;
} else {
CLIUtils.done();
const message = 'Internxt WebDav server is not running, cannot restart';
CLIUtils.error(this.log.bind(this), message);
const message = 'Internxt WebDav server is not running, it wont be restarted';
CLIUtils.warning(this.log.bind(this), message);
return message;
}
};

private webDAVStatus = async (): Promise<string> => {
await PM2Utils.connect();
const { status } = await PM2Utils.webdavServerStatus();
const message = `Internxt WebDAV server status: ${status}`;
CLIUtils.log(this.log.bind(this), message);
Expand Down
34 changes: 34 additions & 0 deletions src/utils/pm2.utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,40 @@ export class PM2Utils {
});
}

static disconnect() {
pm2.disconnect();
}

// TODO: Use this once the issue with PM2 is resolved: https://github.com/Unitech/pm2/issues/4825
static async clean() {
const list = await this.list();
if (list.length === 0) {
// There are NOT other active processes. PM2 daemon can be killed.
return new Promise<void>((resolve, reject) => {
pm2.killDaemon((err) => {
if (err) {
reject(err);
} else {
resolve();
}
});
});
}
}

static list(): Promise<pm2.ProcessDescription[]> {
return new Promise((resolve, reject) => {
pm2.list((err, processes) => {
if (err) {
reject(err);
} else {
// There are active processes. PM2 daemon will not be killed.
resolve(processes);
}
});
});
}

static killWebDavServer() {
return new Promise<void>((resolve) => {
pm2.delete(this.WEBDAV_APP_NAME, () => {
Expand Down
33 changes: 2 additions & 31 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -4717,7 +4717,7 @@ glob@^11.0.0:
package-json-from-dist "^1.0.0"
path-scurry "^2.0.0"

glob@^7.0.0, glob@^7.1.3, glob@^7.1.4:
glob@^7.1.3, glob@^7.1.4:
version "7.2.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
Expand Down Expand Up @@ -5044,11 +5044,6 @@ internal-slot@^1.0.7:
hasown "^2.0.0"
side-channel "^1.0.4"

interpret@^1.0.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==

ip-address@^9.0.5:
version "9.0.5"
resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a"
Expand Down Expand Up @@ -6725,13 +6720,6 @@ readdirp@~3.6.0:
dependencies:
picomatch "^2.2.1"

rechoir@^0.6.2:
version "0.6.2"
resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==
dependencies:
resolve "^1.1.6"

reflect-metadata@^0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.2.2.tgz#400c845b6cba87a21f2c65c4aeb158f4fa4d9c5b"
Expand Down Expand Up @@ -6796,7 +6784,7 @@ resolve-from@^4.0.0:
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==

resolve@^1.1.6, resolve@^1.22.1:
resolve@^1.22.1:
version "1.22.8"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
Expand Down Expand Up @@ -7097,28 +7085,11 @@ shebang-regex@^3.0.0:
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==

shelljs@^0.8.5:
version "0.8.5"
resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c"
integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==
dependencies:
glob "^7.0.0"
interpret "^1.0.0"
rechoir "^0.6.2"

shimmer@^1.2.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337"
integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==

shx@^0.3.4:
version "0.3.4"
resolved "https://registry.yarnpkg.com/shx/-/shx-0.3.4.tgz#74289230b4b663979167f94e1935901406e40f02"
integrity sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==
dependencies:
minimist "^1.2.3"
shelljs "^0.8.5"

side-channel@^1.0.4, side-channel@^1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2"
Expand Down
Loading