Class: Strata::CLI::Generators::Tutorial

Inherits:
Group
  • Object
show all
Defined in:
lib/strata/cli/generators/tutorial.rb

Constant Summary collapse

TUTORIAL_REPO =
"https://github.com/stratasite/strata-tutorial-project"
DEFAULT_SERVER =
"http://localhost:8080"
TUTORIAL_PROJECT =
"strata-tutorial-project"

Constants included from Output

Output::THEME

Instance Method Summary collapse

Methods inherited from Group

exit_on_failure?, source_root

Methods included from Output

format, pastel, print_error, #print_error, print_hint, #print_hint, print_info, #print_info, print_status, #print_status, print_success, #print_success, print_warning, #print_warning, shell_for, thor_color

Instance Method Details

#clone_tutorial_repoObject



27
28
29
30
31
32
33
34
35
# File 'lib/strata/cli/generators/tutorial.rb', line 27

def clone_tutorial_repo
  if File.directory?(@uid)
    Output.print_status(:skip, "Directory '#{@uid}' already exists — re-using it", type: :info, context: self)
    return
  end
  Output.print_status(:clone, "Cloning tutorial from #{TUTORIAL_REPO}", type: :success, context: self)
  run "git clone #{TUTORIAL_REPO} #{@uid}", verbose: false, capture: true
  raise Strata::CommandError, "Failed to clone tutorial repo." unless File.directory?(@uid)
end

#completion_messageObject



65
66
67
68
# File 'lib/strata/cli/generators/tutorial.rb', line 65

def completion_message
  Output.print_success("\nāœ” Tutorial project '#{@uid}' is ready!\n", context: self)
  Output.print_info("  Next: cd #{@uid} && strata deploy --skip-audit\n", context: self)
end

#initial_commitObject



58
59
60
61
62
63
# File 'lib/strata/cli/generators/tutorial.rb', line 58

def initial_commit
  inside @uid do
    run "git add -A", verbose: false, capture: true
    run 'git commit -m "Initial tutorial project setup"', verbose: false, capture: true
  end
end

#reinitialize_gitObject



37
38
39
40
41
42
43
# File 'lib/strata/cli/generators/tutorial.rb', line 37

def reinitialize_git
  inside @uid do
    FileUtils.rm_rf(".git")
    run "git init -b main", verbose: false, capture: true
    create_file ".gitignore", ".strata\n.strata_cli/\n", force: true
  end
end

#update_project_ymlObject



51
52
53
54
55
56
# File 'lib/strata/cli/generators/tutorial.rb', line 51

def update_project_yml
  project_yml = File.join(@uid, "project.yml")
  return unless File.exist?(project_yml)

  Helpers::ProjectHelper.persist_project_id_to_yml(@project_id, project_yml_path: project_yml)
end

#validate_optionsObject



21
22
23
24
25
# File 'lib/strata/cli/generators/tutorial.rb', line 21

def validate_options
  raise Strata::CommandError, "--api-key (-a) is required." unless options[:api_key]
  @uid = TUTORIAL_PROJECT
  @project_id = 1
end

#write_strata_configObject



45
46
47
48
49
# File 'lib/strata/cli/generators/tutorial.rb', line 45

def write_strata_config
  strata_path = File.join(@uid, ".strata")
  File.write(strata_path, "api_key: #{options[:api_key]}\nserver: #{DEFAULT_SERVER}\n")
  File.chmod(0o600, strata_path)
end