Class: Aidp::Init::DevcontainerGenerator

Inherits:
Object
  • Object
show all
Includes:
MessageDisplay
Defined in:
lib/aidp/init/devcontainer_generator.rb

Overview

Generates .devcontainer configuration for projects Provides sandboxed development environment with network security

Design Philosophy:

  • Use project analysis data (already collected by ProjectAnalyzer)

  • Avoid hardcoded framework/tool assumptions

  • Prefer templates over code generation

  • Let the data drive decisions, not hardcoded logic

Constant Summary

Constants included from MessageDisplay

MessageDisplay::COLOR_MAP

Instance Method Summary collapse

Methods included from MessageDisplay

#display_message, #in_test_environment?, included, #message_display_prompt, #suppress_display_message?

Constructor Details

#initialize(project_dir = Dir.pwd) ⇒ DevcontainerGenerator

Returns a new instance of DevcontainerGenerator.



20
21
22
23
# File 'lib/aidp/init/devcontainer_generator.rb', line 20

def initialize(project_dir = Dir.pwd)
  @project_dir = project_dir
  @devcontainer_dir = File.join(@project_dir, ".devcontainer")
end

Instance Method Details

#exists?Boolean

Check if devcontainer already exists

Returns:

  • (Boolean)

    true if .devcontainer directory exists



45
46
47
# File 'lib/aidp/init/devcontainer_generator.rb', line 45

def exists?
  Dir.exist?(@devcontainer_dir)
end

#generate(analysis:, preferences: {}) ⇒ Array<String>

Generate devcontainer configuration based on project analysis

Parameters:

  • analysis (Hash)

    Project analysis from ProjectAnalyzer

  • preferences (Hash) (defaults to: {})

    User preferences for devcontainer setup

Returns:

  • (Array<String>)

    List of generated files



30
31
32
33
34
35
36
37
38
39
40
# File 'lib/aidp/init/devcontainer_generator.rb', line 30

def generate(analysis:, preferences: {})
  ensure_directory_exists

  files = []
  files << generate_dockerfile(analysis, preferences)
  files << generate_devcontainer_json(analysis, preferences)
  files << generate_firewall_script(analysis, preferences)
  files << generate_readme(analysis, preferences)

  files.compact
end