Commit Graph

66 Commits

Author SHA1 Message Date
6b3e28216c FEATURE: Allow pausing of restore before DB migration and uploads are restored (#30269)
This can be helpful if you need to fix problems in the DB before the DB gets migrated as well as before uploads are restored.
2024-12-16 12:50:08 +01:00
8e2505c0e0 FEATURE: Add --sql-only option to discourse backup (#30009)
This change allows backup CLI user to explicitly  exclude uploads from
the generated backup
2024-12-04 03:16:25 +00:00
dfa591aeae DEV: Support --skip-max-length-violations arg for remap (#29877)
Allow remap eligible rows to be skipped if new text exceeds column's max length constraint
2024-11-25 11:40:51 +00:00
069a0bd6ee DEV: Add force option to discourse remap command (#27770) 2024-07-08 11:01:06 -05:00
5a5086bbd7 FEATURE: Add “s3_uploads” option to “discourse backup” script
Adds the “s3_uploads” option (default: false) to the discourse backup script, which temporarily forces the inclusion of S3 uploads in the backup.

Also removed all unnecessary “require” statements as loading Rails is sufficient.

The rest of the changes were made by the linter.
2024-05-29 19:22:33 +02:00
5417c4fac0 FIX: discourse remap: fix output to avoid UX issue (#24905)
Before this commit, this output is possible:

```
Rewriting all occurrences of STRING1 to STRING2

THIS TASK WILL REWRITE DATA, ARE YOU SURE (type YES)
WILL RUN ON ALL 1 DBS
```

Which, when run from a script, might lead one to believe that YES was
automatically inserted into STDIN and the script is continuing.

Turns out this isn't the case so the obvious expectation is broken.

This commit swaps the order of those last lines to make it clear that
the script is blocked on input.
2023-12-14 16:30:14 -03:00
d81359246a DEV: Be more lenient in CLI confirmation (#16290)
If someone types `yes` rather than `YES`, continue anyway.

The chance of typing `yes`, when you actually want to stop, is non-existent. The chance of typing `yes` when you meant `YES` is  high, and it's very frustrating when the script quite because you got the case wrong!
2022-03-25 20:14:41 +00:00
2fc70c5572 DEV: Correctly tag heredocs (#16061)
This allows text editors to use correct syntax coloring for the heredoc sections.

Heredoc tag names we use:

languages: SQL, JS, RUBY, LUA, HTML, CSS, SCSS, SH, HBS, XML, YAML/YML, MF, ICS
other: MD, TEXT/TXT, RAW, EMAIL
2022-02-28 20:50:55 +01:00
451cd4ec3f DEV: Fix thor deprecation warning (#14680)
```
Deprecation warning: Thor exit with status 0 on errors. To keep this behavior, you must define `exit_on_failure?` in `DiscourseCLI`
```
2021-10-21 21:01:05 +02:00
88da06cba0 FIX: typo in discourse
occurences -> occurrences
2021-06-30 11:08:29 -04:00
59097b207f DEV: Correct typos and spelling mistakes (#12812)
Over the years we accrued many spelling mistakes in the code base. 

This PR attempts to fix spelling mistakes and typos in all areas of the code that are extremely safe to change 

- comments
- test descriptions
- other low risk areas
2021-05-21 11:43:47 +10:00
8b87cb07c3 DEV: Return a non-zero exit code when discourse remap is aborted (#12873)
This makes it much easier to integrate the script with external tools
2021-04-28 14:10:35 +01:00
4d719725c8 FEATURE: Allow overriding the backup location when restoring via CLI (#12015)
You can use `discourse restore --location=local FILENAME` if you want to restore a backup that is stored locally even though the `backup_location` has the value `s3`.
2021-02-09 16:02:44 +01:00
e474cda321 REFACTOR: Restoring of backups and migration of uploads to S3 2020-01-14 11:41:35 +01:00
f34a0141c7 FIX: Correct path to ImportExport module (#8227)
During the move from Classic autoloader to Zeitwerk import_export module was moved to correct file name convention.
427d54b2b0 (diff-d896ec33b95afb7fae9f8bfe73d0580b)

Problem is that export/import is still using old path to require that module

Meta: https://meta.discourse.org/t/topic-and-category-export-import/38930/40
2019-10-23 17:27:14 +11:00
427d54b2b0 DEV: Upgrading Discourse to Zeitwerk (#8098)
Zeitwerk simplifies working with dependencies in dev and makes it easier reloading class chains. 

We no longer need to use Rails "require_dependency" anywhere and instead can just use standard 
Ruby patterns to require files.

This is a far reaching change and we expect some followups here.
2019-10-02 14:01:53 +10:00
19dda59932 FIX: add back verbose option to DbHelper.remap 2019-07-31 17:30:08 +02:00
89fce2ce71 DEV: remove duplicate Remap class and use DbHelper.remap instead
Follow-up to 9cd3f96dee96d3fdda99174077fb79c1d6f26ea3
2019-07-29 18:43:40 +02:00
30990006a9 DEV: enable frozen string literal on all files
This reduces chances of errors where consumers of strings mutate inputs
and reduces memory usage of the app.

Test suite passes now, but there may be some stuff left, so we will run
a few sites on a branch prior to merging
2019-05-13 09:31:32 +08:00
78f8114989 FEATURE: Allow discourse script to skip disabling of emails after restore 2019-03-07 21:49:33 +01:00
cc27d61f9e FIX: discourse script didn't allow backups with paths anymore
This restores the previous functionality. The script now allows the following options:

* `discourse backup` (uses the system generated filename)
* `discourse backup <some_filename>` (uses the provided filename)
* `discourse backup </some/path/to/filename>` (moves the backup to the provided path with the given filename)

Remote backup stores do not support the last option.
Some file extensions (like `.tar.gz`) are automatically removed from the provided filename.
2018-10-17 18:33:44 +02:00
84d4c81a26 FEATURE: Support backup uploads/downloads directly to/from S3.
This reverts commit 3c59106bac4d79f39981bda3ff9db7786c1a78a0.
2018-10-15 09:43:31 +08:00
3c59106bac Revert "FEATURE: Support backup uploads/downloads directly to/from S3."
This reverts commit c29a4dddc1694e2805944f4d5fd0f4fd4514092e.

We're doing a beta bump soon so un-revert this after that is done.
2018-10-11 11:08:23 +08:00
c29a4dddc1 FEATURE: Support backup uploads/downloads directly to/from S3. 2018-10-11 10:38:43 +08:00
8dc1463ab3 Enable Lint/ShadowingOuterLocalVariable for Rubocop. 2018-09-04 10:16:42 +08:00
ac3b0f0164 REFACTOR: move remap out of script into a class 2018-08-15 12:37:52 -04:00
91b73e0c2d FIX: remap shouldn't fail silently when an error occurs 2018-06-19 14:49:43 +10:00
27d94b3a0b Remove unused option from discourse script 2017-11-23 15:22:00 +01:00
d9823f69c6 FEATURE: Option to export multiple categories using export_category method 2017-11-11 19:11:16 +05:30
a00af4d85a FEATURE: Rake task to export and import category structure 2017-11-01 17:17:05 +05:30
e61edfd13a UX: discourse restore -- sort by date 2017-10-05 15:20:14 -07:00
ab12c40e76 Tweak error messages for restore 2017-10-03 14:09:32 -07:00
657e5a8633 Suggest running discourse not script/discourse (#5089)
Having `discourse restore` offer copy/paste of backups is awesome, but doesn't work (rails won't load) if you call script/discourse.
2017-08-28 12:59:56 -04:00
5012d46cbd Add rubocop to our build. (#5004) 2017-07-28 10:20:09 +09:00
6c2f66124f regex remapping: update usage and add help description.
Here is a shell session showing what the new documenation looks like:

vagrant@discourse:~/vagrant$ bundle exec ruby ./script/discourse remap
ERROR: "discourse remap" was called with no arguments
Usage: "discourse remap [--global,--regex] FROM TO"

vagrant@discourse:~/vagrant$ bundle exec ruby ./script/discourse help remap
Usage:
  discourse remap [--global,--regex] FROM TO

Options:
      [--global], [--no-global]
      [--regex], [--no-regex]
  v, [--verbose=VERBOSE]

Description:
  Replace a string sequence FROM with TO across all tables.

  With --global option, the remapping is run on ***ALL*** databases. Instead of just running on the current database, run on every database on this machine. This option is useful for multi-site setups.

  With --regex option, use PostgreSQL function regexp_replace to do the remapping. Enabling this interprets FROM as a PostgreSQL regular expression. TO can contain references to captures in the FROM match. See the "Regular Expression
  Details" section and "regexp_replace" documentation in the PostgreSQL manual for more details.

  Examples:

  discourse remap talk.foo.com talk.bar.com # renaming a Discourse domain name

  discourse remap --regex "[/?color(=[^]]*)*]" "" # removing "color" bbcodes
2017-01-30 14:27:45 -08:00
e63faffdb2 Revert "Revert "FEATURE: make discourse remap optionally do regex_replace (#4367)""
This reverts commit 277e7383f342fc841591fece93f2ed8b22862c39.
2017-01-19 09:33:49 -08:00
277e7383f3 Revert "FEATURE: make discourse remap optionally do regex_replace (#4367)"
This reverts commit f8dda198bd63e6944e71dc952363b01e62fc353e, reversing
changes made to 01ced67ab39a3055cced66e58c9fcf857f4db920.
2016-08-08 17:05:22 -04:00
f8dda198bd FEATURE: make discourse remap optionally do regex_replace (#4367)
This adds a --regex option to discourse remap to use the regexp_replace
feature in PostgreSQL. Example usage:

discourse remap --regex "\[\/?color(=[^\]]*)*]" ""

removes all the "color" bbcodes.

Also, this commit fixes the --global option, which did not work because
of how Thor processes the options.
2016-08-08 14:30:02 -04:00
02d63d5bc6 FIX: Backup script with custom filename needs to include version number. 2016-08-08 09:33:50 +08:00
Sam
31c0ce3dac Revert "FEATURE: make discourse remap optionally do regex_replace" 2016-08-02 08:38:15 +10:00
2a257190e7 FEATURE: make discourse remap optionally do regex_replace (#4116)
This adds a --regex option to discourse remap to use the regexp_replace
feature in PostgreSQL. Example usage:

discourse remap --regex "\[\/?color(=[^\]]*)*]" ""

removes all the "color" bbcodes.

Also, this commit fixes the --global option, which did not work because
of how Thor processes the options.
2016-07-22 10:08:41 +02:00
c2b769bd95 Provide hints about which files can be restored 2016-07-12 12:31:01 -04:00
303a02b901 FEATURE: make discourse remap optionally do regex_replace
This adds a --regex option to discourse remap to use the regexp_replace
feature in PostgreSQL. Example usage:

discourse remap --regex "\[\/?color(=[^\]]*)*]" ""

removes all the "color" bbcodes.

Also, this commit fixes the --global option, which did not work because
of how Thor processes the options.
2016-03-24 11:44:14 -07:00
48cb386d58 Take filename to write to as optional parameter to export_category
My discourse instance will be making regular automated public backups
of specific categories. It's preferred to be able to directly control
the path and filename of the output, rather than letting discourse
choose for me. This was already mostly supported, a filename parameter
just needed to be passed through the cli app.
2016-02-12 22:02:29 -08:00
58610d15a1 FEATURE: export/import topics and categories from one Discourse site to another. (Early-access alpha greenlight. More to do...) 2016-01-26 19:57:54 -05:00
96c23d51a2 FIX: don't break the message bus when restoring a backup 2015-08-27 20:02:13 +02:00
Sam
78bd4508d1 Add multisite support to remap task 2015-07-23 14:39:55 +10:00
189cb3ff12 FEATURE: move migrate_to_new_scheme into a background job
- new hidden site setting 'migrate_to_new_scheme' (defaults to false)
- new rake tasks to toggle migration to new scheme
- FIX: migrate_to_new_scheme also works with CDN
- PERF: improve perf of the DbHelper.remap method
- REFACTOR: UrlHelper is now a class
2015-06-12 12:07:57 +02:00
5504622c1b rename export/import in favor of backup/restore for better consistency 2014-10-10 20:04:07 +02:00
f2cca140b4 FIX: Don't break out of remap action if there is a DB error. Display it
and continue.
2014-09-08 14:21:46 -04:00