forked from Beckersweet/SeisDataContainer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ConDir.m
68 lines (64 loc) · 2.2 KB
/
ConDir.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
classdef (Sealed=true) ConDir < handle
% ConDir(varargin) handle object holding unique temporary directory
%
% obj = ConDir()
% obj.Path holds new directory created inside of the directory defined by
% SDCglobalTmpDir (see SeisDataContainer_init.m)
% obj = ConDir(PARENT)
% obj.Path holds new directory created inside of PARENT directory.
%
% Note! obj.Path is deleted when obj is dereferenced or deleted.
%
properties (Access = private)
Path = nan;
Home = nan;
Keep = false;
%verbose = false;
end
methods ( Access = public )
function td = ConDir(varargin)
error(nargchk(0, 3, nargin, 'struct'));
if nargin > 1
error(nargchk(3, 3, nargin, 'struct'));
assert(strcmp(varargin{2},'keep'));
assert(islogical(varargin{3}));
assert(ischar(varargin{1}));
td.Keep = varargin{3};
td.Path = varargin{1};
% could be exist(td)
assert(isdir(td.Path));
td.Home = fileparts(varargin{1});
else
[td.Path td.Home] = SDCpckg.io.makeDir(varargin{:});
end
%if td.verbose; disp(['ConDir in constructor for ' td.Path]); end;
end
function e = exist(td)
e = isdir(td.Path);
end
function p = path(td)
p = td.Path;
end
function h = home(td)
h = td.Home;
end
function disp(td)
fprintf('Temporary home directory is %s\n', td.Home);
fprintf('Temporary directory is %s\n', td.Path);
end
function dir(td)
fprintf('Content of directory %s:\n', td.Path);
ls('-lR',td.Path);
end
end
methods ( Access = private )
function delete(td)
if ~td.Keep
assert(isdir(td.Home),'Fatal error: home directory %s is missing',td.Home);
assert(isdir(td.Path),'Fatal error: directory %s is missing',td.Path);
rmdir(td.Path,'s');
%if td.verbose; disp(['ConDir: in destructor for ' td.Path]); end;
end
end
end
end