Skip to content

Commit 59022ce

Browse files
committed
Refactoring towards RevisionDir, cleanup
1 parent e3d939d commit 59022ce

File tree

3 files changed

+68
-55
lines changed

3 files changed

+68
-55
lines changed

lib/files_in_my_diff/tmp_dir.rb

Lines changed: 3 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,11 @@
11
# frozen_string_literal: true
22

3+
require_relative 'tmp_dir/revision_dir'
4+
require_relative 'tmp_dir/file_strategy'
5+
36
module FilesInMyDiff
47
module TmpDir
58
class DirectoryError < FilesInMyDiff::Error; end
69
class FileError < FilesInMyDiff::Error; end
7-
8-
module FileStrategy
9-
def self.dir_exists?(folder)
10-
Dir.exist?(folder)
11-
end
12-
13-
def self.tmpdir
14-
Dir.tmpdir
15-
rescue StandardError => e
16-
raise DirectoryError, "Failed to locate tmpdir: #{e.message}"
17-
end
18-
19-
def self.mkdir_p(path)
20-
FileUtils.mkdir_p(path)
21-
rescue SystemCallError => e
22-
raise DirectoryError, "Failed to create tmp dir for #{path}: #{e.message}"
23-
end
24-
25-
def self.revision_dir(sha)
26-
RevisionDir.new(sha:)
27-
end
28-
end
29-
30-
class RevisionDir
31-
attr_reader :dir
32-
33-
def initialize(sha:, file_strategy: FileStrategy)
34-
@sha = sha
35-
@file_strategy = file_strategy
36-
end
37-
38-
def create!
39-
tmpdir = @file_strategy.tmpdir
40-
@dir = File.join(tmpdir, 'files_in_my_diff', @sha)
41-
@file_strategy.mkdir_p(@dir)
42-
end
43-
44-
def decorate(changes)
45-
raise DirectoryError, "Directory for #{@sha} not yet created" if @dir.nil?
46-
47-
d_changes = changes.map do |change|
48-
change => { path:, type: }
49-
{ full_path: full_path(path), relative_path: path, type: }
50-
end
51-
{ dir: @dir, sha: @sha, changes: d_changes }
52-
end
53-
54-
private
55-
56-
def full_path(relative_path)
57-
File.join(@dir, relative_path)
58-
rescue StandardError => e
59-
raise FileError, "Failed to create full path for #{relative_path}: #{e.message}"
60-
end
61-
end
6210
end
6311
end
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# frozen_string_literal: true
2+
3+
module FilesInMyDiff
4+
module TmpDir
5+
module FileStrategy
6+
def self.dir_exists?(folder)
7+
Dir.exist?(folder)
8+
end
9+
10+
def self.tmpdir
11+
Dir.tmpdir
12+
rescue StandardError => e
13+
raise DirectoryError, "Failed to locate tmpdir: #{e.message}"
14+
end
15+
16+
def self.mkdir_p(path)
17+
FileUtils.mkdir_p(path)
18+
rescue SystemCallError => e
19+
raise DirectoryError, "Failed to create tmp dir for #{path}: #{e.message}"
20+
end
21+
22+
def self.revision_dir(sha)
23+
RevisionDir.new(sha:)
24+
end
25+
end
26+
end
27+
end
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# frozen_string_literal: true
2+
3+
module FilesInMyDiff
4+
module TmpDir
5+
class RevisionDir
6+
attr_reader :dir
7+
8+
def initialize(sha:, file_strategy: FileStrategy)
9+
@sha = sha
10+
@file_strategy = file_strategy
11+
end
12+
13+
def create!
14+
tmpdir = @file_strategy.tmpdir
15+
@dir = File.join(tmpdir, 'files_in_my_diff', @sha)
16+
@file_strategy.mkdir_p(@dir)
17+
end
18+
19+
def decorate(changes)
20+
raise DirectoryError, "Directory for #{@sha} not yet created" if @dir.nil?
21+
22+
d_changes = changes.map do |change|
23+
change => { path:, type: }
24+
{ full_path: full_path(path), relative_path: path, type: }
25+
end
26+
{ dir: @dir, sha: @sha, changes: d_changes }
27+
end
28+
29+
private
30+
31+
def full_path(relative_path)
32+
File.join(@dir, relative_path)
33+
rescue StandardError => e
34+
raise FileError, "Failed to create full path for #{relative_path}: #{e.message}"
35+
end
36+
end
37+
end
38+
end

0 commit comments

Comments
 (0)