Class: Strata::CLI::Generators::Project
Constant Summary
collapse
- BASE_SERVER_URL =
"http://localhost:3000"
Instance Method Summary
collapse
#with_connection_error_handling
Methods inherited from Group
exit_on_failure?, source_root
Instance Method Details
#completion_message ⇒ Object
118
119
120
121
122
123
124
125
|
# File 'lib/strata/cli/generators/project.rb', line 118
def completion_message
say "\n✔ Strata project '#{uid}' is ready!", :green
say "\nNext steps:", :yellow
say " 1. cd #{uid}", :cyan
say " 2. strata datasource add # To add more datasources", :cyan
say " 3. strata create table # Start adding tables", :cyan
say "\n"
end
|
#create_datasources_file ⇒ Object
81
82
83
84
85
86
87
88
89
90
91
92
93
|
# File 'lib/strata/cli/generators/project.rb', line 81
def create_datasources_file
return if cloned_from_git?
template "datasources.yml", "#{uid}/datasources.yml"
return unless options.key?(:datasource)
options[:datasource].each do |ds|
raise DWH::ConfigError, "Unsupported datasource #{ds}" unless DWH.adapter?(ds.to_sym)
Datasource.new([ds.downcase.strip], options.merge({"path" => uid})).invoke_all
end
end
|
#create_project_file ⇒ Object
65
66
67
68
69
|
# File 'lib/strata/cli/generators/project.rb', line 65
def create_project_file
return if cloned_from_git?
template "project.yml", "#{uid}/project.yml"
end
|
#create_project_structure ⇒ Object
53
54
55
56
57
58
59
|
# File 'lib/strata/cli/generators/project.rb', line 53
def create_project_structure
return if cloned_from_git?
empty_directory uid
empty_directory File.join(uid, "models")
empty_directory File.join(uid, "tests")
end
|
#create_strata_config_file ⇒ Object
61
62
63
|
# File 'lib/strata/cli/generators/project.rb', line 61
def create_strata_config_file
template "strata.yml", "#{uid}/.strata"
end
|
#fetch_and_clone_if_available ⇒ Object
40
41
42
43
44
45
46
47
48
49
50
51
|
# File 'lib/strata/cli/generators/project.rb', line 40
def fetch_and_clone_if_available
return unless options.key?(:source)
project_info = fetch_project_info
@project_id = project_info["id"]
@project_info = project_info
return unless project_info["git_url"] && !project_info["git_url"].empty?
@cloned_from_git = true
clone_project(project_info["git_url"])
end
|
#initialize_git ⇒ Object
95
96
97
98
99
100
101
102
|
# File 'lib/strata/cli/generators/project.rb', line 95
def initialize_git
return if cloned_from_git?
inside uid do
run "git init", verbose: false, capture: true
create_file ".gitignore", ".strata\n"
end
end
|
#persist_project_id_if_needed ⇒ Object
71
72
73
74
75
76
77
78
79
|
# File 'lib/strata/cli/generators/project.rb', line 71
def persist_project_id_if_needed
return unless @project_id
project_yml_path = File.join(uid, "project.yml")
return unless File.exist?(project_yml_path)
persist_project_id_to_project_yml
end
|
#setup_datasource ⇒ Object
104
105
106
107
108
109
110
111
112
113
114
115
116
|
# File 'lib/strata/cli/generators/project.rb', line 104
def setup_datasource
return if cloned_from_git?
return if options.key?(:datasource)
say "\n", :white
say_status :setup, "Let's configure your first datasource", :cyan
inside(uid) do
require_relative "../sub_commands/datasource"
SubCommands::Datasource.new.add
end
end
|
#validate_options ⇒ Object
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/strata/cli/generators/project.rb', line 26
def validate_options
if options.key?(:source)
unless options.key?(:api_key)
raise Strata::CommandError,
"API key is required when using --source option. Use --api-key option."
end
else
unless @name && !@name.to_s.strip.empty?
raise Strata::CommandError,
"PROJECT_NAME is required when not using --source option."
end
end
end
|