Class: EmberCli::PathSet

Inherits:
Object
  • Object
show all
Defined in:
lib/ember_cli/path_set.rb

Instance Method Summary collapse

Constructor Details

#initialize(app:, rails_root:, ember_cli_root:, environment:) ⇒ PathSet

Returns a new instance of PathSet.



5
6
7
8
9
10
# File 'lib/ember_cli/path_set.rb', line 5

def initialize(app:, rails_root:, ember_cli_root:, environment:)
  @app = app
  @rails_root = rails_root
  @environment = environment
  @ember_cli_root = ember_cli_root
end

Instance Method Details

#bowerObject



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/ember_cli/path_set.rb', line 68

def bower
  @bower ||= begin
    path_for_executable("bower").tap do |bower_path|
      if bower_json.exist? && (bower_path.blank? || !bower_path.executable?)
        fail DependencyError.new <<-MSG.strip_heredoc
            Bower is required by EmberCLI

            Install it with:

                $ npm install -g bower

        MSG
      end
    end
  end
end

#bower_componentsObject



85
86
87
# File 'lib/ember_cli/path_set.rb', line 85

def bower_components
  @bower_components ||= root.join("bower_components")
end

#bower_jsonObject



38
39
40
# File 'lib/ember_cli/path_set.rb', line 38

def bower_json
  root.join("bower.json")
end

#build_error_fileObject



64
65
66
# File 'lib/ember_cli/path_set.rb', line 64

def build_error_file
  @build_error_file ||= tmp.join("error.txt")
end

#bundlerObject



116
117
118
# File 'lib/ember_cli/path_set.rb', line 116

def bundler
  @bundler ||= path_for_executable("bundler")
end

#cached_directoriesObject



120
121
122
123
124
125
# File 'lib/ember_cli/path_set.rb', line 120

def cached_directories
  [
    node_modules,
    (bower_components if bower_json.exist?),
  ].compact
end

#distObject



30
31
32
# File 'lib/ember_cli/path_set.rb', line 30

def dist
  @dist ||= ember_cli_root.join("apps", app_name).tap(&:mkpath)
end

#emberObject



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/ember_cli/path_set.rb', line 42

def ember
  @ember ||= begin
    root.join("node_modules", "ember-cli", "bin", "ember").tap do |path|
      unless path.executable?
        fail DependencyError.new <<-MSG.strip_heredoc
          No `ember-cli` executable found for `#{app_name}`.

          Install it:

              $ cd #{root}
              $ #{package_manager} install

        MSG
      end
    end
  end
end

#gemfileObject



34
35
36
# File 'lib/ember_cli/path_set.rb', line 34

def gemfile
  @gemfile ||= root.join("Gemfile")
end

#lockfileObject



60
61
62
# File 'lib/ember_cli/path_set.rb', line 60

def lockfile
  @lockfile ||= tmp.join("build.lock")
end

#logObject



26
27
28
# File 'lib/ember_cli/path_set.rb', line 26

def log
  @log ||= logs.join("ember-#{app_name}.#{environment}.log")
end

#node_modulesObject



108
109
110
# File 'lib/ember_cli/path_set.rb', line 108

def node_modules
  @node_modules ||= root.join("node_modules")
end

#npmObject



89
90
91
# File 'lib/ember_cli/path_set.rb', line 89

def npm
  @npm ||= path_for_executable("npm")
end

#rootObject



12
13
14
15
16
17
18
19
20
# File 'lib/ember_cli/path_set.rb', line 12

def root
  path = app_options.fetch(:path){ default_root }
  pathname = Pathname.new(path)
  if pathname.absolute?
    pathname
  else
    rails_root.join(path)
  end
end

#teeObject



112
113
114
# File 'lib/ember_cli/path_set.rb', line 112

def tee
  @tee ||= path_for_executable("tee")
end

#tmpObject



22
23
24
# File 'lib/ember_cli/path_set.rb', line 22

def tmp
  @tmp ||= root.join("tmp").tap(&:mkpath)
end

#yarnObject



93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/ember_cli/path_set.rb', line 93

def yarn
  if yarn?
    @yarn ||= path_for_executable("yarn").tap do |yarn|
      unless File.executable?(yarn.to_s)
        fail DependencyError.new(<<-MSG.strip_heredoc)
            EmberCLI has been configured to install NodeJS dependencies with Yarn, but the Yarn executable is unavailable.

            Install it by following the instructions at https://yarnpkg.com/lang/en/docs/install/

        MSG
      end
    end
  end
end