aboutsummaryrefslogtreecommitdiffstats
path: root/actionmailbox/lib/tasks
diff options
context:
space:
mode:
authorGeorge Claghorn <george@basecamp.com>2018-12-24 15:16:22 -0500
committerGeorge Claghorn <george@basecamp.com>2018-12-25 21:32:35 -0500
commita5b2fff64ca0c1fa7be5124f40a251d991c10a85 (patch)
tree33a79841402b7151e52d9ad3949ce54f320c10aa /actionmailbox/lib/tasks
parent4298df00ae6219b9b5b7c40f281d4fa4d66f4383 (diff)
parentdcddff1d2d0c695318670686a27429a76f20ae03 (diff)
downloadrails-a5b2fff64ca0c1fa7be5124f40a251d991c10a85.tar.gz
rails-a5b2fff64ca0c1fa7be5124f40a251d991c10a85.tar.bz2
rails-a5b2fff64ca0c1fa7be5124f40a251d991c10a85.zip
Import Action Mailbox
Diffstat (limited to 'actionmailbox/lib/tasks')
-rw-r--r--actionmailbox/lib/tasks/ingress.rake24
-rw-r--r--actionmailbox/lib/tasks/install.rake20
2 files changed, 44 insertions, 0 deletions
diff --git a/actionmailbox/lib/tasks/ingress.rake b/actionmailbox/lib/tasks/ingress.rake
new file mode 100644
index 0000000000..f775bbdfd7
--- /dev/null
+++ b/actionmailbox/lib/tasks/ingress.rake
@@ -0,0 +1,24 @@
+# frozen_string_literal: true
+
+namespace :action_mailbox do
+ namespace :ingress do
+ desc "Pipe an inbound email from STDIN to the Postfix ingress (URL and INGRESS_PASSWORD required)"
+ task :postfix do
+ require "active_support"
+ require "active_support/core_ext/object/blank"
+ require "action_mailbox/postfix_relayer"
+
+ url, password = ENV.values_at("URL", "INGRESS_PASSWORD")
+
+ if url.blank? || password.blank?
+ print "4.3.5 URL and INGRESS_PASSWORD are required"
+ exit 1
+ end
+
+ ActionMailbox::PostfixRelayer.new(url: url, password: password).relay(STDIN.read).tap do |result|
+ print result.output
+ exit result.success?
+ end
+ end
+ end
+end
diff --git a/actionmailbox/lib/tasks/install.rake b/actionmailbox/lib/tasks/install.rake
new file mode 100644
index 0000000000..0885e2d6a5
--- /dev/null
+++ b/actionmailbox/lib/tasks/install.rake
@@ -0,0 +1,20 @@
+# frozen_string_literal: true
+
+namespace :action_mailbox do
+ # Prevent migration installation task from showing up twice.
+ Rake::Task["install:migrations"].clear_comments
+
+ desc "Copy over the migration"
+ task install: %w[ environment run_installer copy_migrations ]
+
+ task :run_installer do
+ installer_template = File.expand_path("../rails/generators/installer.rb", __dir__)
+ system "#{RbConfig.ruby} ./bin/rails app:template LOCATION=#{installer_template}"
+ end
+
+ task :copy_migrations do
+ Rake::Task["active_storage:install:migrations"].invoke
+ Rake::Task["railties:install:migrations"].reenable # Otherwise you can't run 2 migration copy tasks in one invocation
+ Rake::Task["action_mailbox:install:migrations"].invoke
+ end
+end