-
Notifications
You must be signed in to change notification settings - Fork 104
/
generator_helpers.rb
65 lines (62 loc) · 2.2 KB
/
generator_helpers.rb
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
module NginxStage
# Module that adds common options to generators.
module GeneratorHelpers
# Add support for accepting USER as an option
# @return [void]
def add_user_support
# @!method user
# The user that the per-user NGINX will run as
# @return [User] the user of the nginx process
# @raise [MissingOption] if user isn't supplied
self.add_option :user do
{
opt_args: ["-u", "--user=USER", "# The USER of the per-user nginx process"],
required: true,
before_init: -> (user) do
raise InvalidUser, "invalid user name syntax: #{user}" unless user =~ NginxStage.user_regex
user ? User.new(user) : nil
end
}
end
# Validate that the user isn't a special user (i.e., `root`)
self.add_hook :validate_user_not_special do
min_uid = NginxStage.min_uid
if user.uid < min_uid
raise InvalidUser, "user is special: #{user} (#{user.uid} < #{min_uid})"
end
end
end
# Add support for accepting SKIP_NGINX as an option
# @return [void]
def add_skip_nginx_support
# @!method skip_nginx
# Whether we skip calling the NGINX process
# @return [Boolean] if true, skip calling the nginx binary
add_option :skip_nginx do
{
opt_args: ["-N", "--[no-]skip-nginx", "# Skip execution of the per-user nginx process", "# Default: false"],
default: false
}
end
end
# Add support for accepting SUB_URI as an option
# @return [void]
def add_sub_uri_support
# @!method sub_uri
# The sub-uri that distinguishes the per-user NGINX process
# @example An app is requested through '/pun/usr/user/appname/...'
# sub_uri #=> "/pun"
# @return [String] the sub-uri for nginx
add_option :sub_uri do
{
opt_args: ["-i", "--sub-uri=SUB_URI", "# The SUB_URI that requests the per-user nginx", "# Default: ''"],
default: '',
before_init: -> (sub_uri) do
raise InvalidSubUri, "invalid sub-uri syntax: #{sub_uri}" if sub_uri =~ /[^-\w\/]/
sub_uri
end
}
end
end
end
end