lotusrb 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +57 -14
- data/FEATURES.md +21 -0
- data/LICENSE.md +1 -1
- data/README.md +8 -7
- data/bin/lotus +1 -0
- data/lib/lotus.rb +6 -0
- data/lib/lotus/action/csrf_protection.rb +1 -1
- data/lib/lotus/application.rb +4 -4
- data/lib/lotus/application_name.rb +8 -6
- data/lib/lotus/cli.rb +75 -66
- data/lib/lotus/cli_sub_commands/assets.rb +29 -0
- data/lib/lotus/{commands → cli_sub_commands}/db.rb +24 -29
- data/lib/lotus/cli_sub_commands/destroy.rb +102 -0
- data/lib/lotus/cli_sub_commands/generate.rb +127 -0
- data/lib/lotus/commands/assets/precompile.rb +35 -0
- data/lib/lotus/commands/console.rb +28 -8
- data/lib/lotus/commands/db/abstract.rb +6 -2
- data/lib/lotus/commands/db/console.rb +5 -5
- data/lib/lotus/commands/generate/abstract.rb +63 -0
- data/lib/lotus/commands/generate/action.rb +262 -0
- data/lib/lotus/commands/generate/app.rb +116 -0
- data/lib/lotus/commands/generate/mailer.rb +118 -0
- data/lib/lotus/commands/generate/migration.rb +63 -0
- data/lib/lotus/commands/generate/model.rb +96 -0
- data/lib/lotus/commands/new/abstract.rb +128 -0
- data/lib/lotus/commands/new/app.rb +116 -0
- data/lib/lotus/commands/new/container.rb +102 -0
- data/lib/lotus/commands/routes.rb +19 -2
- data/lib/lotus/commands/server.rb +16 -2
- data/lib/lotus/config/framework_configuration.rb +13 -1
- data/lib/lotus/configuration.rb +24 -76
- data/lib/lotus/container.rb +15 -2
- data/lib/lotus/environment.rb +43 -4
- data/lib/lotus/frameworks.rb +1 -0
- data/lib/lotus/generators/action/action_spec.minitest.tt +1 -1
- data/lib/lotus/generators/action/action_spec.rspec.tt +1 -1
- data/lib/lotus/generators/action/view_spec.minitest.tt +1 -1
- data/lib/lotus/generators/action/view_spec.rspec.tt +1 -1
- data/lib/lotus/generators/{slice → app}/.gitkeep.tt +0 -0
- data/lib/lotus/generators/{slice → app}/application.rb.tt +61 -23
- data/lib/lotus/generators/app/config/initializers/.gitkeep +0 -0
- data/lib/lotus/generators/{slice → app}/config/routes.rb.tt +0 -0
- data/lib/lotus/generators/app/favicon.ico +0 -0
- data/lib/lotus/generators/{slice → app}/templates/application.html.erb.tt +2 -1
- data/lib/lotus/generators/app/views/application_layout.rb.tt +7 -0
- data/lib/lotus/generators/application/app/.env.development.tt +1 -0
- data/lib/lotus/generators/application/app/.env.test.tt +1 -0
- data/lib/lotus/generators/application/app/Gemfile.tt +1 -0
- data/lib/lotus/generators/application/app/Rakefile.minitest.tt +1 -0
- data/lib/lotus/generators/application/app/Rakefile.rspec.tt +1 -0
- data/lib/lotus/generators/application/app/config/application.rb.tt +56 -18
- data/lib/lotus/generators/application/app/config/initializers/.gitkeep +0 -0
- data/lib/lotus/generators/application/app/favicon.ico +0 -0
- data/lib/lotus/generators/application/app/gitignore.tt +2 -0
- data/lib/lotus/generators/application/app/lotusrc.tt +3 -3
- data/lib/lotus/generators/application/app/spec_helper.rb.rspec.tt +5 -1
- data/lib/lotus/generators/application/app/templates/application.html.erb.tt +1 -0
- data/lib/lotus/generators/application/container/.env.development.tt +1 -0
- data/lib/lotus/generators/application/container/.env.test.tt +1 -0
- data/lib/lotus/generators/application/container/Gemfile.tt +1 -1
- data/lib/lotus/generators/application/container/Rakefile.minitest.tt +1 -0
- data/lib/lotus/generators/application/container/Rakefile.rspec.tt +1 -0
- data/lib/lotus/generators/application/container/config/initializers/.gitkeep +0 -0
- data/lib/lotus/generators/application/container/gitignore.tt +2 -0
- data/lib/lotus/generators/application/container/lib/chirp/mailers/.gitkeep +0 -0
- data/lib/lotus/generators/application/container/lib/chirp/mailers/templates/.gitkeep +0 -0
- data/lib/lotus/generators/application/container/lotusrc.tt +3 -3
- data/lib/lotus/generators/application/container/spec_helper.rb.rspec.tt +5 -1
- data/lib/lotus/generators/database_config.rb +17 -4
- data/lib/lotus/generators/generatable.rb +51 -0
- data/lib/lotus/generators/generator.rb +35 -0
- data/lib/lotus/generators/test_framework.rb +42 -0
- data/lib/lotus/loader.rb +43 -0
- data/lib/lotus/lotusrc.rb +50 -49
- data/lib/lotus/middleware.rb +28 -10
- data/lib/lotus/rake_helper.rb +68 -0
- data/lib/lotus/rake_tasks.rb +2 -0
- data/lib/lotus/rendering_policy.rb +2 -2
- data/lib/lotus/repositories/car_repository.rb +3 -0
- data/lib/lotus/repositories/name_repository.rb +3 -0
- data/lib/lotus/setup.rb +1 -3
- data/lib/lotus/static.rb +77 -0
- data/lib/lotus/templates/welcome.html.erb +7 -4
- data/lib/lotus/version.rb +1 -1
- data/lib/lotus/views/default.rb +2 -1
- data/lib/lotus/views/default_template_finder.rb +4 -3
- data/lotusrb.gemspec +11 -9
- metadata +79 -60
- data/lib/lotus/commands/generate.rb +0 -97
- data/lib/lotus/commands/new.rb +0 -43
- data/lib/lotus/config/assets.rb +0 -81
- data/lib/lotus/generators/abstract.rb +0 -31
- data/lib/lotus/generators/action.rb +0 -235
- data/lib/lotus/generators/app.rb +0 -39
- data/lib/lotus/generators/app/.gitkeep +0 -1
- data/lib/lotus/generators/application/app.rb +0 -129
- data/lib/lotus/generators/application/container.rb +0 -111
- data/lib/lotus/generators/mailer.rb +0 -112
- data/lib/lotus/generators/migration.rb +0 -58
- data/lib/lotus/generators/model.rb +0 -90
- data/lib/lotus/generators/slice.rb +0 -94
- data/lib/lotus/generators/slice/views/application_layout.rb.tt +0 -7
File without changes
|
File without changes
|
File without changes
|
@@ -1,3 +1,3 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
<%= Lotus::Lotusrc::ARCHITECTURE_KEY %>=<%= Lotus::Lotusrc::DEFAULT_ARCHITECTURE %>
|
2
|
+
<%= Lotus::Lotusrc::TEST_KEY %>=<%= config[:test] %>
|
3
|
+
<%= Lotus::Lotusrc::TEMPLATE_KEY %>=<%= Lotus::Lotusrc::DEFAULT_TEMPLATE %>
|
@@ -58,6 +58,11 @@ RSpec.configure do |config|
|
|
58
58
|
config.filter_run :focus
|
59
59
|
config.run_all_when_everything_filtered = true
|
60
60
|
|
61
|
+
# Allows RSpec to persist some state between runs in order to support
|
62
|
+
# the `--only-failures` and `--next-failure` CLI options. We recommend
|
63
|
+
# you configure your source control system to ignore this file.
|
64
|
+
config.example_status_persistence_file_path = "spec/examples.txt"
|
65
|
+
|
61
66
|
# Limits the available syntax to the non-monkey patched syntax that is
|
62
67
|
# recommended. For more details, see:
|
63
68
|
# - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
|
@@ -97,4 +102,3 @@ RSpec.configure do |config|
|
|
97
102
|
Kernel.srand config.seed
|
98
103
|
=end
|
99
104
|
end
|
100
|
-
|
@@ -1,6 +1,9 @@
|
|
1
|
+
require 'shellwords'
|
2
|
+
|
1
3
|
module Lotus
|
2
4
|
module Generators
|
3
5
|
class DatabaseConfig
|
6
|
+
|
4
7
|
SUPPORTED_ENGINES = {
|
5
8
|
'mysql' => { type: :sql, mri: 'mysql2', jruby: 'jdbc-mysql' },
|
6
9
|
'mysql2' => { type: :sql, mri: 'mysql2', jruby: 'jdbc-mysql' },
|
@@ -12,13 +15,15 @@ module Lotus
|
|
12
15
|
'memory' => { type: :memory, mri: nil, jruby: nil }
|
13
16
|
}.freeze
|
14
17
|
|
18
|
+
DEFAULT_ENGINE = 'filesystem'.freeze
|
19
|
+
|
15
20
|
attr_reader :engine, :name
|
16
21
|
|
17
22
|
def initialize(engine, name)
|
18
23
|
@engine = engine
|
19
24
|
@name = name
|
20
25
|
|
21
|
-
SUPPORTED_ENGINES.key?(engine) or fail "\"#{ engine }\" is not a valid database type"
|
26
|
+
SUPPORTED_ENGINES.key?(engine.to_s) or fail "\"#{ engine }\" is not a valid database type"
|
22
27
|
end
|
23
28
|
|
24
29
|
def to_hash
|
@@ -37,6 +42,10 @@ module Lotus
|
|
37
42
|
type == :sql
|
38
43
|
end
|
39
44
|
|
45
|
+
def filesystem?
|
46
|
+
type == :file_system
|
47
|
+
end
|
48
|
+
|
40
49
|
private
|
41
50
|
|
42
51
|
def platform
|
@@ -44,7 +53,7 @@ module Lotus
|
|
44
53
|
end
|
45
54
|
|
46
55
|
def platform_prefix
|
47
|
-
:
|
56
|
+
'jdbc:'.freeze if Lotus::Utils.jruby?
|
48
57
|
end
|
49
58
|
|
50
59
|
def uri
|
@@ -61,7 +70,11 @@ module Lotus
|
|
61
70
|
def base_uri
|
62
71
|
case engine
|
63
72
|
when 'mysql', 'mysql2'
|
64
|
-
|
73
|
+
if Lotus::Utils.jruby?
|
74
|
+
"mysql://localhost/#{ name }"
|
75
|
+
else
|
76
|
+
"mysql2://localhost/#{ name }"
|
77
|
+
end
|
65
78
|
when 'postgresql', 'postgres'
|
66
79
|
"postgres://localhost/#{ name }"
|
67
80
|
when 'sqlite', 'sqlite3'
|
@@ -78,7 +91,7 @@ module Lotus
|
|
78
91
|
when 'sqlite', 'sqlite3'
|
79
92
|
"#{ platform_prefix }#{ base_uri }_#{ environment }.sqlite"
|
80
93
|
else
|
81
|
-
"#{ platform_prefix }#{ base_uri }_#{ environment }"
|
94
|
+
"#{ platform_prefix if sql? }#{ base_uri }_#{ environment }"
|
82
95
|
end
|
83
96
|
end
|
84
97
|
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'lotus/generators/generator'
|
2
|
+
|
3
|
+
module Lotus
|
4
|
+
module Generators
|
5
|
+
module Generatable
|
6
|
+
|
7
|
+
def start
|
8
|
+
map_templates
|
9
|
+
process_templates
|
10
|
+
end
|
11
|
+
|
12
|
+
def destroy
|
13
|
+
generator.behavior = :revoke
|
14
|
+
self
|
15
|
+
end
|
16
|
+
|
17
|
+
def generator
|
18
|
+
@generator ||= Lotus::Generators::Generator.new(template_source_path, target_path)
|
19
|
+
end
|
20
|
+
|
21
|
+
def map_templates
|
22
|
+
raise NotImplementedError, "must implement the map_templates method"
|
23
|
+
end
|
24
|
+
|
25
|
+
def add_mapping(source, target)
|
26
|
+
generator.add_mapping(source, target)
|
27
|
+
end
|
28
|
+
|
29
|
+
def process_templates
|
30
|
+
generator.process_templates(template_options)
|
31
|
+
post_process_templates
|
32
|
+
end
|
33
|
+
|
34
|
+
def post_process_templates
|
35
|
+
nil
|
36
|
+
end
|
37
|
+
|
38
|
+
def template_options
|
39
|
+
{}
|
40
|
+
end
|
41
|
+
|
42
|
+
def template_source_path
|
43
|
+
raise NotImplementedError, "must implement the template_source_path method"
|
44
|
+
end
|
45
|
+
|
46
|
+
def target_path
|
47
|
+
raise NotImplementedError, "must implement the target_path method"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'forwardable'
|
3
|
+
|
4
|
+
module Lotus
|
5
|
+
module Generators
|
6
|
+
class Generator
|
7
|
+
|
8
|
+
extend Forwardable
|
9
|
+
|
10
|
+
def_delegators :@processor, :run, :behavior=, :inject_into_file, :append_to_file, :prepend_to_file
|
11
|
+
|
12
|
+
class Processor < Thor
|
13
|
+
include Thor::Actions
|
14
|
+
end
|
15
|
+
|
16
|
+
def initialize(template_source_path, target_path)
|
17
|
+
@template_source_path = template_source_path
|
18
|
+
@target_path = target_path
|
19
|
+
@template_mappings = []
|
20
|
+
@processor = Processor.new
|
21
|
+
@processor.class.source_root(@template_source_path)
|
22
|
+
end
|
23
|
+
|
24
|
+
def add_mapping(source, target)
|
25
|
+
@template_mappings << [source, target]
|
26
|
+
end
|
27
|
+
|
28
|
+
def process_templates(options = {})
|
29
|
+
@template_mappings.each do |src, dst|
|
30
|
+
@processor.template(@template_source_path.join(src), @target_path.join(dst), options)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'lotus/lotusrc'
|
2
|
+
module Lotus
|
3
|
+
module Generators
|
4
|
+
class TestFramework
|
5
|
+
RSPEC = 'rspec'.freeze
|
6
|
+
MINITEST = 'minitest'.freeze
|
7
|
+
VALID_FRAMEWORKS = [RSPEC, MINITEST].freeze
|
8
|
+
|
9
|
+
attr_reader :framework
|
10
|
+
|
11
|
+
def initialize(lotusrc, framework)
|
12
|
+
@framework = (framework || lotusrc.options.fetch(:test))
|
13
|
+
assert_framework!
|
14
|
+
end
|
15
|
+
|
16
|
+
def rspec?
|
17
|
+
framework == RSPEC
|
18
|
+
end
|
19
|
+
|
20
|
+
def minitest?
|
21
|
+
framework == MINITEST
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def assert_framework!
|
27
|
+
if !supported_framework?
|
28
|
+
raise ArgumentError.new("Unknown test framework '#{ framework}'. Please use one of #{ valid_test_frameworks.join(', ')}")
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def valid_test_frameworks
|
33
|
+
VALID_FRAMEWORKS.map { |name| "'#{ name }'"}
|
34
|
+
end
|
35
|
+
|
36
|
+
def supported_framework?
|
37
|
+
VALID_FRAMEWORKS.include?(framework)
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
data/lib/lotus/loader.rb
CHANGED
@@ -31,6 +31,7 @@ module Lotus
|
|
31
31
|
load_configuration_load_paths!
|
32
32
|
load_rack!
|
33
33
|
load_frameworks!
|
34
|
+
load_initializers!
|
34
35
|
end
|
35
36
|
end
|
36
37
|
|
@@ -45,6 +46,7 @@ module Lotus
|
|
45
46
|
_configure_model_framework! if defined?(Lotus::Model)
|
46
47
|
_configure_controller_framework!
|
47
48
|
_configure_view_framework!
|
49
|
+
_configure_assets_framework!
|
48
50
|
_configure_logger!
|
49
51
|
end
|
50
52
|
|
@@ -97,6 +99,34 @@ module Lotus
|
|
97
99
|
end
|
98
100
|
end
|
99
101
|
|
102
|
+
def _configure_assets_framework!
|
103
|
+
config = configuration
|
104
|
+
|
105
|
+
unless application_module.const_defined?('Assets')
|
106
|
+
assets = Lotus::Assets.duplicate(namespace) do
|
107
|
+
root config.root
|
108
|
+
|
109
|
+
scheme config.scheme
|
110
|
+
host config.host
|
111
|
+
port config.port
|
112
|
+
|
113
|
+
public_directory Lotus.public_directory
|
114
|
+
prefix Utils::PathPrefix.new('/assets').join(config.path_prefix)
|
115
|
+
|
116
|
+
manifest Lotus.public_directory.join('assets.json')
|
117
|
+
compile true
|
118
|
+
|
119
|
+
config.assets.__apply(self)
|
120
|
+
end
|
121
|
+
|
122
|
+
assets.configure do
|
123
|
+
cdn host != config.host
|
124
|
+
end
|
125
|
+
|
126
|
+
application_module.const_set('Assets', assets)
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
100
130
|
def _configure_model_framework!
|
101
131
|
config = configuration
|
102
132
|
if _lotus_model_loaded? && !application_module.const_defined?('Model')
|
@@ -122,6 +152,7 @@ module Lotus
|
|
122
152
|
|
123
153
|
def load_frameworks!
|
124
154
|
_load_view_framework!
|
155
|
+
_load_assets_framework!
|
125
156
|
_load_model_framework!
|
126
157
|
end
|
127
158
|
|
@@ -131,6 +162,12 @@ module Lotus
|
|
131
162
|
}
|
132
163
|
end
|
133
164
|
|
165
|
+
def _load_assets_framework!
|
166
|
+
application_module.module_eval %{
|
167
|
+
#{ application_module }::Assets.load!
|
168
|
+
}
|
169
|
+
end
|
170
|
+
|
134
171
|
def _load_model_framework!
|
135
172
|
return unless _load_model_framework?
|
136
173
|
|
@@ -211,5 +248,11 @@ module Lotus
|
|
211
248
|
def namespace
|
212
249
|
configuration.namespace || application_module
|
213
250
|
end
|
251
|
+
|
252
|
+
def load_initializers!
|
253
|
+
Dir["#{configuration.root}/config/initializers/**/*.rb"].each do |file|
|
254
|
+
require file
|
255
|
+
end
|
256
|
+
end
|
214
257
|
end
|
215
258
|
end
|
data/lib/lotus/lotusrc.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
require 'pathname'
|
2
2
|
require 'dotenv/parser'
|
3
|
+
require 'lotus/utils/hash'
|
3
4
|
|
4
5
|
module Lotus
|
5
|
-
#
|
6
|
+
# Read the .lotusrc file in the root of the application
|
6
7
|
#
|
7
8
|
# @since 0.3.0
|
8
9
|
# @api private
|
@@ -20,15 +21,21 @@ module Lotus
|
|
20
21
|
# @since 0.3.0
|
21
22
|
# @api private
|
22
23
|
#
|
23
|
-
# @see Lotus::Lotusrc#
|
24
|
+
# @see Lotus::Lotusrc#options
|
24
25
|
DEFAULT_ARCHITECTURE = 'container'.freeze
|
25
26
|
|
27
|
+
# Application architecture value
|
28
|
+
#
|
29
|
+
# @since 0.6.0
|
30
|
+
# @api private
|
31
|
+
APP_ARCHITECTURE = 'app'.freeze
|
32
|
+
|
26
33
|
# Architecture key for writing the lotusrc file
|
27
34
|
#
|
28
35
|
# @since 0.3.0
|
29
36
|
# @api private
|
30
37
|
#
|
31
|
-
# @see Lotus::Lotusrc
|
38
|
+
# @see Lotus::Lotusrc::DEFAULT_OPTIONS
|
32
39
|
ARCHITECTURE_KEY = 'architecture'.freeze
|
33
40
|
|
34
41
|
# Test suite default value
|
@@ -36,7 +43,7 @@ module Lotus
|
|
36
43
|
# @since 0.3.0
|
37
44
|
# @api private
|
38
45
|
#
|
39
|
-
# @see Lotus::Lotusrc
|
46
|
+
# @see Lotus::Lotusrc::DEFAULT_OPTIONS
|
40
47
|
DEFAULT_TEST_SUITE = 'minitest'.freeze
|
41
48
|
|
42
49
|
# Test suite key for writing the lotusrc file
|
@@ -44,7 +51,7 @@ module Lotus
|
|
44
51
|
# @since 0.3.0
|
45
52
|
# @api private
|
46
53
|
#
|
47
|
-
# @see Lotus::Lotusrc
|
54
|
+
# @see Lotus::Lotusrc::DEFAULT_OPTIONS
|
48
55
|
TEST_KEY = 'test'.freeze
|
49
56
|
|
50
57
|
# Template default value
|
@@ -52,7 +59,7 @@ module Lotus
|
|
52
59
|
# @since 0.3.0
|
53
60
|
# @api private
|
54
61
|
#
|
55
|
-
# @see Lotus::Lotusrc
|
62
|
+
# @see Lotus::Lotusrc::DEFAULT_OPTIONS
|
56
63
|
DEFAULT_TEMPLATE = 'erb'.freeze
|
57
64
|
|
58
65
|
# Template key for writing the lotusrc file
|
@@ -60,66 +67,44 @@ module Lotus
|
|
60
67
|
# @since 0.3.0
|
61
68
|
# @api private
|
62
69
|
#
|
63
|
-
# @see Lotus::Lotusrc
|
70
|
+
# @see Lotus::Lotusrc::DEFAULT_OPTIONS
|
64
71
|
TEMPLATE_KEY = 'template'.freeze
|
65
72
|
|
66
|
-
#
|
67
|
-
#
|
73
|
+
# Default values for writing the lotusrc file
|
74
|
+
#
|
75
|
+
# @since 0.5.1
|
76
|
+
# @api private
|
77
|
+
#
|
78
|
+
# @see Lotus::Lotusrc#options
|
79
|
+
DEFAULT_OPTIONS = Utils::Hash.new({
|
80
|
+
ARCHITECTURE_KEY => DEFAULT_ARCHITECTURE,
|
81
|
+
TEST_KEY => DEFAULT_TEST_SUITE,
|
82
|
+
TEMPLATE_KEY => DEFAULT_TEMPLATE
|
83
|
+
}).symbolize!.freeze
|
84
|
+
|
85
|
+
# Initialize Lotusrc class with application's root and environment options.
|
68
86
|
#
|
69
87
|
# @param root [Pathname] Application's root
|
70
|
-
# @param options [Hash] Environment's options
|
71
88
|
#
|
72
89
|
# @see Lotus::Environment#initialize
|
73
|
-
def initialize(root
|
74
|
-
@root
|
75
|
-
@options = options
|
76
|
-
|
77
|
-
# NOTE this line is here in order to auto-upgrade applications generated
|
78
|
-
# with lotusrb < 0.3.0. Consider to remove it in the future.
|
79
|
-
create
|
90
|
+
def initialize(root)
|
91
|
+
@root = root
|
80
92
|
end
|
81
93
|
|
82
|
-
# Read lotusrc file and parse it's values.
|
94
|
+
# Read lotusrc file (if exists) and parse it's values or return default.
|
83
95
|
#
|
84
96
|
# @return [Lotus::Utils::Hash] parsed values
|
85
97
|
#
|
86
98
|
# @example Default values if file doesn't exist
|
87
|
-
# Lotus::Lotusrc.new(Pathname.new(Dir.pwd)).
|
99
|
+
# Lotus::Lotusrc.new(Pathname.new(Dir.pwd)).options
|
88
100
|
# # => { architecture: 'container', test: 'minitest', template: 'erb' }
|
89
101
|
#
|
90
102
|
# @example Custom values if file doesn't exist
|
91
103
|
# options = { architect: 'application', test: 'rspec', template: 'slim' }
|
92
|
-
# Lotus::Lotusrc.new(Pathname.new(Dir.pwd), options).
|
104
|
+
# Lotus::Lotusrc.new(Pathname.new(Dir.pwd), options).options
|
93
105
|
# # => { architecture: 'application', test: 'rspec', template: 'slim' }
|
94
|
-
def
|
95
|
-
|
96
|
-
Utils::Hash.new(
|
97
|
-
Dotenv::Parser.call(content)
|
98
|
-
).symbolize!
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
private
|
103
|
-
|
104
|
-
# Create lotusrc file if exists
|
105
|
-
#
|
106
|
-
# @since 0.3.0
|
107
|
-
# @api private
|
108
|
-
#
|
109
|
-
# @see Lotus::Lotusrc::DEFAULT_ARCHITECTURE
|
110
|
-
# @see Lotus::Lotusrc::ARCHITECTURE_KEY
|
111
|
-
# @see Lotus::Lotusrc::DEFAULT_TEST_SUITE
|
112
|
-
# @see Lotus::Lotusrc::TEST_KEY
|
113
|
-
# @see Lotus::Lotusrc::DEFAULT_TEMPLATE
|
114
|
-
# @see Lotus::Lotusrc::TEMPLATE_KEY
|
115
|
-
def create
|
116
|
-
unless exists?
|
117
|
-
rcfile = File.new(path_file, "w")
|
118
|
-
rcfile.puts "#{ ARCHITECTURE_KEY }=#{ @options.fetch(:architecture, DEFAULT_ARCHITECTURE) }"
|
119
|
-
rcfile.puts "#{ TEST_KEY }=#{ @options.fetch(:test, DEFAULT_TEST_SUITE) }"
|
120
|
-
rcfile.puts "#{ TEMPLATE_KEY }=#{ @options.fetch(:template, DEFAULT_TEMPLATE) }"
|
121
|
-
rcfile.close
|
122
|
-
end
|
106
|
+
def options
|
107
|
+
@options ||= symbolize(DEFAULT_OPTIONS.merge(file_options))
|
123
108
|
end
|
124
109
|
|
125
110
|
# Check if lotusrc file exists
|
@@ -132,6 +117,16 @@ module Lotus
|
|
132
117
|
path_file.exist?
|
133
118
|
end
|
134
119
|
|
120
|
+
private
|
121
|
+
|
122
|
+
def symbolize(hash)
|
123
|
+
Utils::Hash.new(hash).symbolize!
|
124
|
+
end
|
125
|
+
|
126
|
+
def file_options
|
127
|
+
symbolize(exists? ? Dotenv::Parser.call(content) : {})
|
128
|
+
end
|
129
|
+
|
135
130
|
# Return the lotusrc file's path
|
136
131
|
#
|
137
132
|
# @since 0.3.0
|
@@ -144,6 +139,12 @@ module Lotus
|
|
144
139
|
@root.join FILE_NAME
|
145
140
|
end
|
146
141
|
|
142
|
+
# Return the content of lotusrc file
|
143
|
+
#
|
144
|
+
# @since 0.3.0
|
145
|
+
# @api private
|
146
|
+
#
|
147
|
+
# @return [String] content of lotusrc file
|
147
148
|
def content
|
148
149
|
path_file.read
|
149
150
|
end
|