Class: Jkr::Env

Inherits:
Object
  • Object
show all
Defined in:
lib/jkr/env.rb

Constant Summary collapse

PLAN_DIR =
"plan"
RESULT_DIR =
"result"
SCRIPT_DIR =
"script"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(env_dir = Dir.pwd) ⇒ Env

Returns a new instance of Env.



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/jkr/env.rb', line 17

def initialize(env_dir = Dir.pwd)
  @env_dir = env_dir
  @jkr_dir = File.join(@env_dir, "jkr")
  @jkr_plan_dir = File.join(@jkr_dir, PLAN_DIR)
  @jkr_result_dir = File.join(@jkr_dir, RESULT_DIR)
  @jkr_script_dir = File.join(@jkr_dir, SCRIPT_DIR)

  unless Dir.exists?(@env_dir)
    raise Errno::ENOENT.new(@jkr_dir)
  end

  [@jkr_dir,
   @jkr_result_dir,
   @jkr_plan_dir,
   @jkr_script_dir].each do |dir_path|
    unless Dir.exists?(dir_path)
      raise ArgumentError.new("Directory #{dir_path} not found")
    end
  end
end

Instance Attribute Details

#env_dirObject (readonly)

Returns the value of attribute env_dir.



7
8
9
# File 'lib/jkr/env.rb', line 7

def env_dir
  @env_dir
end

#jkr_dirObject (readonly)

Returns the value of attribute jkr_dir.



8
9
10
# File 'lib/jkr/env.rb', line 8

def jkr_dir
  @jkr_dir
end

#jkr_plan_dirObject (readonly)

Returns the value of attribute jkr_plan_dir.



10
11
12
# File 'lib/jkr/env.rb', line 10

def jkr_plan_dir
  @jkr_plan_dir
end

#jkr_result_dirObject (readonly)

Returns the value of attribute jkr_result_dir.



9
10
11
# File 'lib/jkr/env.rb', line 9

def jkr_result_dir
  @jkr_result_dir
end

#jkr_script_dirObject (readonly)

Returns the value of attribute jkr_script_dir.



11
12
13
# File 'lib/jkr/env.rb', line 11

def jkr_script_dir
  @jkr_script_dir
end

Class Method Details

.find(dir) ⇒ Object

Find Jkr env dir if ‘dir’ is under an valid Jkr environemnt directory.



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/jkr/env.rb', line 54

def self.find(dir)
  dir = File.expand_path("./", dir)
  while true
    if valid_env_dir?(dir)
      return dir
    end

    parent_dir = File.expand_path("../", dir)
    if parent_dir == dir
      break
    else
      dir = parent_dir
    end
  end

  nil
end

.find_result(dir) ⇒ Object

Find an executed Jkr result if ‘dir’ is under the result dir, and return result id. return nil otherwise.



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/jkr/env.rb', line 74

def self.find_result(dir)
  dir = File.expand_path("./", dir)
  while true
    parent_dir = File.expand_path("../", dir)
    gp_dir = File.expand_path("../../", dir) # grand parent
    ggp_dir = File.expand_path("../../../", dir) # grand grand parent

    if ggp_dir == gp_dir
      return nil
    end

    if valid_env_dir?(ggp_dir)
      if File.basename(gp_dir) == "jkr" &&
          File.basename(parent_dir) == "result" &&
          File.basename(dir) =~ /^[0-9]+/
        return File.basename(dir).to_i
      end
    end

    dir = File.expand_path("../", dir)
  end
end

.valid_env_dir?(dir) ⇒ Boolean

Returns:

  • (Boolean)


38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/jkr/env.rb', line 38

def self.valid_env_dir?(dir)
  jkr_dir = File.expand_path("jkr", dir)
  plan_dir = File.expand_path("plan", jkr_dir)
  script_dir = File.expand_path("script", jkr_dir)
  result_dir = File.expand_path("result", jkr_dir)

  [jkr_dir, result_dir, plan_dir, script_dir].each do |dir_|
    unless Dir.exists?(dir_)
      return false
    end
  end

  true
end