Class: InitializeCommand

Inherits:
MoreUtils show all
Defined in:
lib/commands/initialize.rb

Class Method Summary collapse

Methods inherited from MoreUtils

flag_lookup, gem_version, get_args, get_file_str, get_flags, root, this_dir, write_file

Class Method Details

.last_end_index(arr) ⇒ Object



58
59
60
61
62
63
# File 'lib/commands/initialize.rb', line 58

def last_end_index arr
    arr.each_with_index.inject(0) do |acc, (e, i)|
        acc = i if /(end)/.match(e)
        acc
    end
end

.run(*args) ⇒ Object



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
# File 'lib/commands/initialize.rb', line 7

def run *args
    lookup = flag_lookup(args)

    # Add Initializers
    cors_template = get_file_str("#{this_dir}/../templates/rack_cors_initializer.txt")
    write_file("#{root}/config/initializers/cors.rb", cors_template)

    adi_template = get_file_str("#{this_dir}/../templates/api_documentation_initializer.txt")
    write_file("#{root}/config/initializers/api_documentation_js.rb", adi_template)

    # Add Controllers
    dc_template = get_file_str("#{this_dir}/../templates/documentation_controller.txt")
    write_file("#{root}/app/controllers/documentation_controller.rb", dc_template)

    gc_template = get_file_str("#{this_dir}/../templates/global_controller.txt")
    write_file("#{root}/app/controllers/global_controller.rb", gc_template)

    # Add Concerns
    ehc_template = get_file_str("#{this_dir}/../templates/exception_handler.txt")
    write_file("#{root}/app/controllers/concerns/exception_handler.rb", ehc_template)

    resp_template = get_file_str("#{this_dir}/../templates/response.txt")
    write_file("#{root}/app/controllers/concerns/response.rb", resp_template)

    # Add Service
    system("mkdir -p #{root}/app/services")
    aps_template = get_file_str("#{this_dir}/../templates/api_documentation_service.txt")
    write_file("#{root}/app/services/api_documentation_service.rb", aps_template)

    # Add Views
    system("mkdir -p #{root}/app/views/documentation")
    dihtml_template = get_file_str("#{this_dir}/../templates/documentation.index.erb.txt")
    write_file("#{root}/app/views/documentation/index.html.erb", dihtml_template)

    dlhtml_template = get_file_str("#{this_dir}/../templates/documentation.layout.erb.txt")
    write_file("#{root}/app/views/layouts/documentation.html.erb", dlhtml_template)

    # Update Routes
    unless lookup[:"skip-routes"]
        routes_template = get_file_str("#{this_dir}/../templates/routes_documentation.txt")
        routes_file = get_file_str("#{root}/config/routes.rb")
        routes_arr = routes_file.split("\n")
        last_end_line = last_end_index(routes_arr)

        new_routes = routes_arr.slice(0, last_end_line).join("\n") + "\n#{routes_template}\nend\n"
        write_file("#{root}/config/routes.rb", new_routes)
    end

    puts "Your project has been initialized."
end