Class: Epuber::Config
- Inherits:
-
Object
- Object
- Epuber::Config
- Defined in:
- lib/epuber/config.rb
Constant Summary collapse
- WORKING_PATH =
'.epuber'
Class Attribute Summary collapse
-
.test ⇒ Object
Returns the value of attribute test.
Instance Attribute Summary collapse
Class Method Summary collapse
- .clear_instance! ⇒ Object
-
.find_bookspec_files(dir) ⇒ Object
Find all bookspec files in given directory.
-
.find_project_dir(dir) ⇒ String?
Find project directory by searching for .bookspec files in current and parent directories.
-
.instance ⇒ Epuber::Config
Singleton.
- .load_bookspec(path, frozen: true) ⇒ Epuber::Book
- .test? ⇒ Boolean
Instance Method Summary collapse
- #bookspec_lockfile ⇒ Epuber::Lockfile
- #bookspec_lockfile_path ⇒ String
- #bookspec_path ⇒ String
- #build_cache_path(cache_name) ⇒ String
- #build_path(target) ⇒ String
- #file_stat_database_path ⇒ String
-
#pretty_path_from_project(of_file) ⇒ String
Relative path to file from root of project.
-
#project_path ⇒ String
Path to project directory (where .bookspec file is located or current directory if not found).
- #release_build_path(target) ⇒ String
- #remove_build_caches ⇒ Object
- #same_version_as_last_run? ⇒ Boolean
-
#save_lockfile ⇒ Object
Nil.
- #target_file_stat_database_path(target) ⇒ String
- #warn_for_outdated_versions! ⇒ Object
- #working_path ⇒ String
Class Attribute Details
.test ⇒ Object
Returns the value of attribute test.
149 150 151 |
# File 'lib/epuber/config.rb', line 149 def test @test end |
Instance Attribute Details
#bookspec ⇒ Epuber::Book
50 51 52 |
# File 'lib/epuber/config.rb', line 50 def bookspec @bookspec ||= self.class.load_bookspec(bookspec_path) end |
#release_build ⇒ Boolean
62 63 64 |
# File 'lib/epuber/config.rb', line 62 def release_build @release_build end |
Class Method Details
.clear_instance! ⇒ Object
163 164 165 |
# File 'lib/epuber/config.rb', line 163 def clear_instance! @instance = nil end |
.find_bookspec_files(dir) ⇒ Object
Find all bookspec files in given directory
185 186 187 188 189 190 191 |
# File 'lib/epuber/config.rb', line 185 def find_bookspec_files(dir) Dir.chdir(dir) do Dir.glob('*.bookspec').map do |path| File.(path) end end end |
.find_project_dir(dir) ⇒ String?
Find project directory by searching for .bookspec files in current and parent directories
198 199 200 201 202 203 204 205 |
# File 'lib/epuber/config.rb', line 198 def find_project_dir(dir) return dir if find_bookspec_files(dir).any? parent = File.dirname(dir) return nil if parent == dir find_project_dir(parent) end |
.instance ⇒ Epuber::Config
Singleton
159 160 161 |
# File 'lib/epuber/config.rb', line 159 def instance @instance ||= new end |
.load_bookspec(path, frozen: true) ⇒ Epuber::Book
169 170 171 172 173 174 175 176 177 178 179 |
# File 'lib/epuber/config.rb', line 169 def load_bookspec(path, frozen: true) require_relative 'book' book = Epuber::Book.from_file(path) book.finish_toc book.validate book.freeze if frozen book end |
.test? ⇒ Boolean
151 152 153 |
# File 'lib/epuber/config.rb', line 151 def test? test end |
Instance Method Details
#bookspec_lockfile ⇒ Epuber::Lockfile
66 67 68 69 70 71 |
# File 'lib/epuber/config.rb', line 66 def bookspec_lockfile @bookspec_lockfile ||= Lockfile.from_file(bookspec_lockfile_path) do |lockfile| lockfile.epuber_version = Epuber::VERSION lockfile.bade_version = Bade::VERSION end end |
#bookspec_lockfile_path ⇒ String
44 45 46 |
# File 'lib/epuber/config.rb', line 44 def bookspec_lockfile_path "#{bookspec_path}.lock" end |
#bookspec_path ⇒ String
38 39 40 |
# File 'lib/epuber/config.rb', line 38 def bookspec_path @bookspec_path ||= self.class.find_bookspec_files(project_path).first end |
#build_cache_path(cache_name) ⇒ String
102 103 104 |
# File 'lib/epuber/config.rb', line 102 def build_cache_path(cache_name) File.join(working_path, 'build_cache', cache_name) end |
#build_path(target) ⇒ String
86 87 88 |
# File 'lib/epuber/config.rb', line 86 def build_path(target) File.join(working_path, 'build', target.name.to_s) end |
#file_stat_database_path ⇒ String
108 109 110 |
# File 'lib/epuber/config.rb', line 108 def file_stat_database_path File.join(working_path, 'metadata', 'source_file_stats.yml') end |
#pretty_path_from_project(of_file) ⇒ String
Returns relative path to file from root of project.
24 25 26 27 28 |
# File 'lib/epuber/config.rb', line 24 def pretty_path_from_project(of_file) Pathname.new(of_file.unicode_normalize) .relative_path_from(Pathname.new(project_path)) .to_s end |
#project_path ⇒ String
Returns path to project directory (where .bookspec file is located or current directory if not found).
13 14 15 16 17 18 |
# File 'lib/epuber/config.rb', line 13 def project_path @project_path ||= begin path = self.class.find_project_dir(Dir.pwd) || Dir.pwd path.unicode_normalize end end |
#release_build_path(target) ⇒ String
94 95 96 |
# File 'lib/epuber/config.rb', line 94 def release_build_path(target) File.join(working_path, 'release_build', target.name.to_s) end |
#remove_build_caches ⇒ Object
140 141 142 143 144 |
# File 'lib/epuber/config.rb', line 140 def remove_build_caches FileUtils.rm_rf(File.join(working_path, 'build_cache')) FileUtils.rm_rf(File.join(working_path, 'build')) FileUtils.rm_rf(File.join(working_path, 'metadata')) end |
#same_version_as_last_run? ⇒ Boolean
134 135 136 137 138 |
# File 'lib/epuber/config.rb', line 134 def same_version_as_last_run? !(bookspec_lockfile.epuber_version != Epuber::VERSION || bookspec_lockfile.bade_version.nil? || bookspec_lockfile.bade_version != Bade::VERSION) end |
#save_lockfile ⇒ Object
Returns nil.
75 76 77 78 79 80 |
# File 'lib/epuber/config.rb', line 75 def save_lockfile bookspec_lockfile.epuber_version = Epuber::VERSION bookspec_lockfile.bade_version = Bade::VERSION bookspec_lockfile.write_to_file end |
#target_file_stat_database_path(target) ⇒ String
116 117 118 |
# File 'lib/epuber/config.rb', line 116 def target_file_stat_database_path(target) File.join(working_path, 'metadata', 'target_stats', target.name.to_s, 'file_stats.yml') end |
#warn_for_outdated_versions! ⇒ Object
120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/epuber/config.rb', line 120 def warn_for_outdated_versions! if bookspec_lockfile.epuber_version > Epuber::VERSION UI.warning(<<~MSG.rstrip) Warning: the running version of Epuber is older than the version that created the lockfile. We suggest you upgrade to the latest version of Epuber by running `gem install epuber`. MSG end return unless bookspec_lockfile.bade_version && bookspec_lockfile.bade_version > Bade::VERSION UI.warning(<<~MSG.rstrip) Warning: the running version of Bade is older than the version that created the lockfile. We suggest you upgrade to the latest version of Bade by running `gem install bade`. MSG end |
#working_path ⇒ String
32 33 34 |
# File 'lib/epuber/config.rb', line 32 def working_path @working_path ||= File.join(project_path, WORKING_PATH) end |