discourse/script
David Taylor 16b6e86932 DEV: Introduce feature-flag for Ember 5 upgrade
This commit introduces the scaffolding for us to easily switch between Ember 3.28 and Ember 5 on the `main` branch of Discourse. Unfortunately, there is no built-in system to apply this kind of flagging within yarn / ember-cli. There are projects like `ember-try` which are designed for running against multiple version of a dependency, but they do not allow us to 'lock' dependency/sub-dependency versions, and are therefore unsuitable for our use in production.

Instead, we will be maintaining two root `package.json` files, and two `yarn.lock` files. For ember-3, they remain as-is. For ember5, we use a yarn 'resolution' to override the version for ember-source across the entire yarn workspace.

To allow for easy switching with minimal diff against the repository, `package.json` and `yarn.lock` are symlinks which point to `package-ember3.json` and `yarn-ember3.lock` by default. To switch to Ember 5, we can run `script/switch ember version 5` to update the symlinks to point to `package-ember5.json` and `package-ember3.json` respectively. In production, and when using `bin/ember-cli` for development, the ember version can also be upgraded using the `EMBER_VERSION=5` environment variable.

When making changes to dependencies, these should be made against the default `ember3` versions, and then `script/regen_ember_5_lockfile` should be used to regenerate `yarn-ember5.lock` accordingly. A new 'Ember Version Lockfiles' GitHub workflow will automate this process on Dependabot PRs.

When running a local environment against Ember 5, the two symlink changes will show up as git diffs. To avoid us accidentally committing/pushing that change, another GitHub workflow is introduced which checks the default Ember version and raises an error if it is greater than v3.

Supporting two ember versions simultaneously obviously carries significant overhead, so our aim will be to get themes/plugins updated as quickly as possible, and then drop this flag.
2023-11-27 16:40:22 +00:00
..
benchmarks DEV: Apply syntax_tree formatting to script/* 2023-01-09 11:13:22 +00:00
bulk_import DEV: Adding polls, solutions, upload references and other improvements to the Discourse merger script (#23689) 2023-11-16 14:32:53 +01:00
demon_test FIX: Revert Demon::DemonBase back to Demon::Base (#8132) 2019-10-02 14:54:08 +10:00
import_scripts FIX: A typo bug in an import script (#24553) 2023-11-25 18:10:42 +01:00
.gitignore improvements to the mbox import script 2017-11-18 17:16:44 +01:00
alice.txt more progress towards live unread and new counts, unread message implemented, still to implement delete messages 2013-05-30 16:49:57 +10:00
analyse_message_bus.rb DEV: Apply syntax_tree formatting to script/* 2023-01-09 11:13:22 +00:00
analyze_sidekiq_queues.rb DEV: Apply syntax_tree formatting to script/* 2023-01-09 11:13:22 +00:00
bench.rb DEV: Remove RUBY_GLOBAL_METHOD_CACHE_SIZE (#21249) 2023-04-26 10:39:39 +02:00
biggest_objects.rb DEV: Apply syntax_tree formatting to script/* 2023-01-09 11:13:22 +00:00
boot_mem.rb DEV: Apply syntax_tree formatting to script/* 2023-01-09 11:13:22 +00:00
build_jsconfig.rb DEV: Consolidate and update jsconfig, and add types packages (#23824) 2023-10-18 12:13:20 +01:00
cache_critical_dns DEV(cache_critical_dns): sort resolved SRV targets by priority 2023-11-22 08:26:00 +10:00
check_forking.rb DEV: Apply syntax_tree formatting to script/* 2023-01-09 11:13:22 +00:00
check_reproducible_assets.rb DEV: introduce Embroider behind a flag, and start testing in CI (#23005) 2023-09-07 13:15:43 +01:00
copyright-deposit Add script for compiling copyright deposits (#9646) 2020-05-06 12:51:45 -04:00
db_timestamps_mover.rb FIX: require date db_timestamps_mover script (#21248) 2023-04-26 17:59:20 +10:00
diff_heaps.rb DEV: Apply syntax_tree formatting to script/* 2023-01-09 11:13:22 +00:00
discourse DEV: Be more lenient in CLI confirmation (#16290) 2022-03-25 20:14:41 +00:00
docker_test.rb DEV: Fix typo in docker_test.rb script (#23456) 2023-09-07 15:36:27 +08:00
i18n_lint.rb REFACTOR: Fix pluralized strings in chat plugin (#20357) 2023-02-20 10:31:02 +01:00
install_minio_binaries.rb DEV: Add S3 upload system specs using minio (#22975) 2023-08-23 11:18:33 +10:00
local_minio_s3.rb DEV: Add S3 upload system specs using minio (#22975) 2023-08-23 11:18:33 +10:00
measure.rb DEV: Apply syntax_tree formatting to script/* 2023-01-09 11:13:22 +00:00
memory-analysis DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
memstats.rb DEV: Apply syntax_tree formatting to script/* 2023-01-09 11:13:22 +00:00
micro_bench.rb DEV: Replace #pluck_first freedom patch with AR #pick in core (#19893) 2023-02-13 12:39:45 +08:00
mwrap_sidekiq PERF: avoid shelling to get hostname aggressively 2020-02-18 15:13:19 +11:00
profile_db_generator.rb DEV: Apply syntax_tree formatting to script/* 2023-01-09 11:13:22 +00:00
promote_migrations DEV: Promote historic post_deploy migrations (#19492) 2022-12-16 13:36:30 +02:00
rails DEV: enable frozen string literal on all files 2019-05-13 09:31:32 +08:00
redis_memory.rb DEV: Apply syntax_tree formatting to script/* 2023-01-09 11:13:22 +00:00
regen_ember_5_lockfile DEV: Introduce feature-flag for Ember 5 upgrade 2023-11-27 16:40:22 +00:00
require_profiler.rb DEV: Apply syntax_tree formatting to script/* 2023-01-09 11:13:22 +00:00
silence_successful_output DEV: Silence successful database migration output in github actions (#24416) 2023-11-16 15:55:41 +00:00
spawn_backup_restore.rb DEV: Apply syntax_tree formatting to script/* 2023-01-09 11:13:22 +00:00
start_test_db.rb DEV: Add docker:test:setup Rake task (#23430) 2023-09-07 13:46:23 +08:00
switch_container_ruby DEV: add script to switch ruby version from inside container 2019-03-25 17:41:24 +11:00
switch_ember_version DEV: Introduce feature-flag for Ember 5 upgrade 2023-11-27 16:40:22 +00:00
test_email_settings.rb DEV: Apply syntax_tree formatting to script/* 2023-01-09 11:13:22 +00:00
test_mem.rb DEV: Apply syntax_tree formatting to script/* 2023-01-09 11:13:22 +00:00
test_memory_leak.rb DEV: Apply syntax_tree formatting to script/* 2023-01-09 11:13:22 +00:00
test_pretty_text.rb DEV: Apply syntax_tree formatting to script/* 2023-01-09 11:13:22 +00:00
thread_detective.rb DEV: Apply syntax_tree formatting to script/* 2023-01-09 11:13:22 +00:00
user_simulator.rb DEV: Apply syntax_tree formatting to script/* 2023-01-09 11:13:22 +00:00