-
Notifications
You must be signed in to change notification settings - Fork 23
Expand file tree
/
Copy pathtasks.rb
More file actions
144 lines (127 loc) · 5.07 KB
/
tasks.rb
File metadata and controls
144 lines (127 loc) · 5.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# encoding: UTF-8
# frozen_string_literal: true
require_relative "../stack.rb"
require "active_support"
require "active_support/inflector"
require "active_support/core_ext"
require "rake"
require "rake/dsl_definition"
module Parse
module Stack
# Loads and installs all Parse::Stack related tasks in a rake file.
def self.load_tasks
Parse::Stack::Tasks.new.install_tasks
end
# Defines all the related Rails tasks for Parse.
class Tasks
include Rake::DSL if defined? Rake::DSL
# Installs the rake tasks.
def install_tasks
if defined?(::Rails)
unless Rake::Task.task_defined?("db:seed") || Rails.root.blank?
namespace :db do
desc "Seeds your database with by loading db/seeds.rb"
task :seed => "parse:env" do
load Rails.root.join("db", "seeds.rb")
end
end
end
end
namespace :parse do
task :env do
if Rake::Task.task_defined?("environment")
Rake::Task["environment"].invoke
if defined?(::Rails)
Rails.application.eager_load! if Rails.application.present?
end
end
end
task :verify_env => :env do
unless Parse::Client.client?
raise "Please make sure you have setup the Parse.setup configuration before invoking task. Usually done in the :environment task."
end
endpoint = ENV["HOOKS_URL"] || ""
unless endpoint.starts_with?("http://") || endpoint.starts_with?("https://")
raise "The ENV variable HOOKS_URL must be a <http/s> url : '#{endpoint}'. Ex. https://12345678.ngrok.io/webhooks"
end
end
desc "Run auto_upgrade on all of your Parse models."
task :upgrade => :env do
puts "Auto Upgrading Parse schemas..."
Parse.auto_upgrade! do |k|
puts "[+] #{k}"
end
end
namespace :webhooks do
desc "Register local webhooks with Parse server"
task :register => :verify_env do
endpoint = ENV["HOOKS_URL"]
puts "Registering Parse Webhooks @ #{endpoint}"
Rake::Task["parse:webhooks:register:functions"].invoke
Rake::Task["parse:webhooks:register:triggers"].invoke
end
desc "List all webhooks and triggers registered with the Parse Server"
task :list => :verify_env do
Rake::Task["parse:webhooks:list:functions"].invoke
Rake::Task["parse:webhooks:list:triggers"].invoke
end
desc "Remove all locally registered webhooks from the Parse Application."
task :remove => :verify_env do
Rake::Task["parse:webhooks:remove:functions"].invoke
Rake::Task["parse:webhooks:remove:triggers"].invoke
end
namespace :list do
task :functions => :verify_env do
endpoint = ENV["HOOKS_URL"] || "-"
Parse.client.functions.each do |r|
name = r["functionName"]
url = r["url"]
star = url.starts_with?(endpoint) ? "*" : " "
puts "[#{star}] #{name} -> #{url}"
end
end
task :triggers => :verify_env do
endpoint = ENV["HOOKS_URL"] || "-"
triggers = Parse.client.triggers.results
triggers.sort! { |x, y| [x["className"], x["triggerName"]] <=> [y["className"], y["triggerName"]] }
triggers.each do |r|
name = r["className"]
trigger = r["triggerName"]
url = r["url"]
star = url.starts_with?(endpoint) ? "*" : " "
puts "[#{star}] #{name}.#{trigger} -> #{url}"
end
end
end
namespace :register do
task :functions => :verify_env do
endpoint = ENV["HOOKS_URL"]
Parse::Webhooks.register_functions!(endpoint) do |name|
puts "[+] function - #{name}"
end
end
task :triggers => :verify_env do
endpoint = ENV["HOOKS_URL"]
Parse::Webhooks.register_triggers!(endpoint, include_wildcard: true) do |trigger, name|
puts "[+] #{trigger.to_s.ljust(12, " ")} - #{name}"
end
end
end
namespace :remove do
task :functions => :verify_env do
Parse::Webhooks.remove_all_functions! do |name|
puts "[-] function - #{name}"
end
end
task :triggers => :verify_env do
Parse::Webhooks.remove_all_triggers! do |trigger, name|
puts "[-] #{trigger.to_s.ljust(12, " ")} - #{name}"
end
end
end
end # webhooks
end # webhooks namespace
end
end # Tasks
end # Webhooks
end # Parse