Class: Aidp::Analyze::Progress

Inherits:
Object
  • Object
show all
Defined in:
lib/aidp/analyze/progress.rb

Overview

Manages progress tracking for analyze mode, isolated from execute mode

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(project_dir, skip_persistence: false) ⇒ Progress



12
13
14
15
16
17
# File 'lib/aidp/analyze/progress.rb', line 12

def initialize(project_dir, skip_persistence: false)
  @project_dir = project_dir
  @progress_file = File.join(project_dir, ".aidp", "progress", "analyze.yml")
  @skip_persistence = skip_persistence
  load_progress
end

Instance Attribute Details

#progress_fileObject (readonly)

Returns the value of attribute progress_file.



10
11
12
# File 'lib/aidp/analyze/progress.rb', line 10

def progress_file
  @progress_file
end

#project_dirObject (readonly)

Returns the value of attribute project_dir.



10
11
12
# File 'lib/aidp/analyze/progress.rb', line 10

def project_dir
  @project_dir
end

Instance Method Details

#completed_stepsObject



19
20
21
# File 'lib/aidp/analyze/progress.rb', line 19

def completed_steps
  @progress["completed_steps"] || []
end

#current_stepObject



23
24
25
# File 'lib/aidp/analyze/progress.rb', line 23

def current_step
  @progress["current_step"]
end

#mark_step_completed(step_name) ⇒ Object



35
36
37
38
39
40
# File 'lib/aidp/analyze/progress.rb', line 35

def mark_step_completed(step_name)
  @progress["completed_steps"] ||= []
  @progress["completed_steps"] << step_name unless step_completed?(step_name)
  @progress["current_step"] = nil
  save_progress
end

#mark_step_in_progress(step_name) ⇒ Object



42
43
44
45
46
# File 'lib/aidp/analyze/progress.rb', line 42

def mark_step_in_progress(step_name)
  @progress["current_step"] = step_name
  @progress["started_at"] ||= Time.now.iso8601
  save_progress
end

#next_stepObject



57
58
59
# File 'lib/aidp/analyze/progress.rb', line 57

def next_step
  Aidp::Analyze::Steps::SPEC.keys.find { |step| !step_completed?(step) }
end

#resetObject



48
49
50
51
52
53
54
55
# File 'lib/aidp/analyze/progress.rb', line 48

def reset
  @progress = {
    "completed_steps" => [],
    "current_step" => nil,
    "started_at" => nil
  }
  save_progress
end

#started_atObject



27
28
29
# File 'lib/aidp/analyze/progress.rb', line 27

def started_at
  @progress["started_at"] ? Time.parse(@progress["started_at"]) : nil
end

#step_completed?(step_name) ⇒ Boolean



31
32
33
# File 'lib/aidp/analyze/progress.rb', line 31

def step_completed?(step_name)
  completed_steps.include?(step_name)
end