The chain+link framework is now used for all the steps in the backup
command.
## Automation
/test sanity
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/12080116829>
> Commit: fcc016fd1fa0bbe9b4cae2478bf4f7750ee5459d
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=12080116829&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Sanity`
> Spec:
> <hr>Fri, 29 Nov 2024 07:12:22 UTC
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
## Release Notes
- **New Features**
- Introduced new classes for managing backup processes, including
`BackupFolderLink`, `DiskSpaceLink`, `EnvFileLink`, `GitStorageLink`,
`MongoDumpLink`, and `ManifestLink`.
- Added functionality for checking available disk space and managing
temporary backup folders.
- Enhanced encryption handling with a new password prompt mechanism.
- **Bug Fixes**
- Streamlined backup process by removing redundant functions and
ensuring proper error handling.
- **Documentation**
- Updated comments and documentation for new classes and methods to
improve clarity.
- **Refactor**
- Restructured backup functionality for improved modularity and
maintainability.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Backup implementation changed to be modular, and made up of separate
pieces. Each piece (link in a chain) is responsible for one
component/functionality of all the data that's being backed up. This PR
introduces the framework for this modularization. The next PR will
finish migration to that architecture.
## Automation
/test sanity
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/12063841586>
> Commit: 75c1d787c874ff1dd398b7e7228d062a2c66c141
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=12063841586&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Sanity`
> Spec:
> <hr>Thu, 28 Nov 2024 07:23:30 UTC
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
## Release Notes
- **New Features**
- Introduced a modular backup system with `BackupState`,
`DiskSpaceLink`, `EncryptionLink`, and `ManifestLink` classes to manage
backup operations more efficiently.
- Added command-line argument support for the backup command, enhancing
flexibility.
- Improved user interaction during backup restoration with prompts for
encryption passwords.
- **Bug Fixes**
- Enhanced error handling and clarity in the restoration process,
particularly for manifest file reading.
- **Documentation**
- Updated test structure to reflect new directory organization and
improved focus on backup cleanup logic.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
When backups are renamed from their original generated name, restore
operation can't process that backup anymore. This PR should fix that.
## Automation
/test sanity
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/12004342912>
> Commit: ef62c35bd16142dfecd268797c4846a894d2c628
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=12004342912&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Sanity`
> Spec:
> <hr>Mon, 25 Nov 2024 06:54:45 UTC
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Introduced a new function to determine the contents path within backup
archives, enhancing backup restoration capabilities.
- **Bug Fixes**
- Improved error handling for invalid backup file indices and password
attempts during restoration.
- **Refactor**
- Streamlined output and error handling in the backup process, including
cleanup and email notifications for backup errors.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Now that we've moved to TypeScript, this PR fixes missing type
annotations in `backup.ts` and `restore.ts`.
## Automation
/test sanity
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/11988138792>
> Commit: 5770dd0c1fe2c97787a6d8d454b36005d2f169f3
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=11988138792&attempt=2"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Sanity`
> Spec:
> <hr>Sun, 24 Nov 2024 01:02:33 UTC
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Enhanced error handling for password mismatches during backup
encryption.
- Improved test coverage for backup functionality, including backup
paths and disk space validation.
- **Bug Fixes**
- Refined backup cleanup logic to ensure proper file retention and
removal.
- **Refactor**
- Introduced a new `BackupState` class to manage backup process state.
- Streamlined password handling and improved code structure for better
readability.
- Updated type safety for several functions in the backup and restore
processes.
- Simplified exit process in error handling for restore functionality.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Loading env variables at import time doesn't work now since we're
importing first, and them loading env variables, after having moved to
TypeScript.
This PR fixes that in the mailer module.
## Automation
/test sanity
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!CAUTION]
> If you modify the content in this section, you are likely to disrupt
the CI result for your PR.
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **Bug Fixes**
- Improved error handling for email configuration by ensuring
environment variables are validated before sending emails.
- **Refactor**
- Adjusted the scope of several environment variables to enhance code
organization and maintainability.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Fix linting exceptions in `ctl`.
## Automation
/test sanity
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!WARNING]
> Tests have not run on the HEAD
1f2242abcfac193fb321dee8d64cb194dea0f803 yet
> <hr>Fri, 22 Nov 2024 10:06:23 UTC
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
## Release Notes
- **New Features**
- Enhanced backup and restore processes with improved user prompts and
error handling.
- Added support for optional command-line flags during database imports.
- **Bug Fixes**
- Improved error handling for various operations, including database
exports and imports.
- Enhanced logging for backup errors to provide more context.
- **Documentation**
- Updated user prompts and error messages for clarity during backup and
restore operations.
- **Tests**
- Expanded test coverage for backup functionalities and utility
functions to ensure robust error handling and output validation.
- **Chores**
- Updated dependencies to enhance TypeScript development experience.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This PR converts the Javscript code of the `ctl` module, into
Typescript, and in the process already fixing two small bugs that went
undetected because... of lack of good type checking.
The linting exceptions are still there and will be removed in the next
PR. Didn't want to change anymore than necessary or Git will detect
these changes as "new files" instead of as "renames".
## Automation
/test sanity
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/11949059369>
> Commit: e156dacbc5cb513030052535c3d1f25ce1c7f222
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=11949059369&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Sanity`
> Spec:
> <hr>Thu, 21 Nov 2024 08:45:48 UTC
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
## Release Notes
- **New Features**
- Introduced TypeScript support by updating entry points and adding type
definitions for `nodemailer` and `readline-sync`.
- Enhanced logging and error handling functionalities across various
modules.
- **Improvements**
- Transitioned from CommonJS to ES module syntax for better
compatibility and maintainability.
- Improved clarity and structure in command handling and test files.
- **Bug Fixes**
- Corrected regex patterns and variable declarations in tests to enhance
reliability.
- **Chores**
- Updated dependencies and refined module exports for better
organization.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Move the `appsmithctl` code to RTS.
RTS' own build system will build `appsmithctl` as well. We're adding two
command scripts, `ctl` and `appsmithctl` to `/opt/bin`, which will be
the entrypoints for this. The `appsmithctl` is now just an alias to the
much shorter and non-redundancy-inducing `ctl`.
We aren't migrating to TypeScript in this PR so we're ignoring the new
`ctl` folder in both `tsconfig.json` and `.eslintrc`. That's temporary,
the next PR will fix that.
## Automation
/test sanity
### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢🟢🟢 All cypress tests have passed! 🎉🎉🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/11930931528>
> Commit: 90b5f97b801ac8d4b4b0126d85edff3dccc050bd
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=11930931528&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.Sanity`
> Spec:
> <hr>Wed, 20 Nov 2024 10:36:02 UTC
<!-- end of auto-generated comment: Cypress test results -->
## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
## Release Notes
- **New Features**
- Introduced the `appsmithctl` command for easier command execution.
- Updated build process to include additional entry points.
- **Bug Fixes**
- Streamlined Docker build process, enhancing efficiency and reducing
complexity.
- **Documentation**
- Added a new section in the README for `appsmithctl` command
description.
- **Chores**
- Updated dependencies in `package.json`.
- Removed obsolete files and workflows to simplify project structure.
- **Style**
- Added a new ESLint configuration for specific project needs.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->