Class: MendixBridge::DSL::AppBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/mendix_bridge/dsl.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, version) ⇒ AppBuilder

Returns a new instance of AppBuilder.



30
31
32
33
34
35
36
37
# File 'lib/mendix_bridge/dsl.rb', line 30

def initialize(name, version)
  @name = name.to_s
  @version = version&.to_s
  @modules = []
  @user_roles = []
  @project_security = nil
  @navigation_profiles = []
end

Class Method Details

.build(name, version: nil, &block) ⇒ Object



24
25
26
27
28
# File 'lib/mendix_bridge/dsl.rb', line 24

def self.build(name, version: nil, &block)
  builder = new(name, version)
  builder.instance_eval(&block) if block
  builder.result
end

Instance Method Details

#app_module(name, &block) ⇒ Object



43
44
45
# File 'lib/mendix_bridge/dsl.rb', line 43

def app_module(name, &block)
  add_module(name, &block)
end

#modulo(name, &block) ⇒ Object



39
40
41
# File 'lib/mendix_bridge/dsl.rb', line 39

def modulo(name, &block)
  add_module(name, &block)
end

Raises:

  • (ArgumentError)


75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/mendix_bridge/dsl.rb', line 75

def navigation_profile(
  name,
  home_page:,
  login_page: nil,
  not_found_page: nil,
  &block
)
  raise ArgumentError, "duplicate navigation profile: #{name}" if
    @navigation_profiles.any? { |profile| profile.name == name.to_s }

  @navigation_profiles << NavigationBuilder.build(
    name,
    home_page:,
    login_page:,
    not_found_page:,
    &block
  )
end

#project_security(level:, demo_users: false) ⇒ Object

Raises:

  • (ArgumentError)


61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/mendix_bridge/dsl.rb', line 61

def project_security(level:, demo_users: false)
  raise ArgumentError, "project security is already declared" if @project_security

  normalized_level = level.to_s.downcase
  unless %w[off prototype production].include?(normalized_level)
    raise ArgumentError, "security level must be off, prototype, or production"
  end

  @project_security = Model::ProjectSecurity.new(
    level: normalized_level,
    demo_users: !!demo_users
  )
end

#resultObject



94
95
96
97
98
99
100
101
102
103
# File 'lib/mendix_bridge/dsl.rb', line 94

def result
  Model::App.new(
    name: @name,
    version: @version,
    modules: @modules,
    user_roles: @user_roles,
    project_security: @project_security,
    navigation_profiles: @navigation_profiles
  )
end

#user_role(name, module_roles:, manage_all_roles: false) ⇒ Object

Raises:

  • (ArgumentError)


47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/mendix_bridge/dsl.rb', line 47

def user_role(name, module_roles:, manage_all_roles: false)
  raise ArgumentError, "duplicate user role: #{name}" if
    @user_roles.any? { |role| role.name == name.to_s }

  roles = Array(module_roles).map(&:to_s)
  raise ArgumentError, "user role #{name} requires module roles" if roles.empty?

  @user_roles << Model::UserRole.new(
    name: name.to_s,
    module_roles: roles,
    manage_all_roles:
  )
end