annotate +mpm/MatlabPathManager.m @ 17:c37f67ccabac

Copy implementations into the MPM class
author Jonatan Werpers <jonatan@werpers.com>
date Mon, 17 Sep 2018 14:39:00 +0200
parents 4c5d876068c2
children 1e568093b569
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
16
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
1 classdef MatlabPathManager
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
2 properties
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
3 projectFileName = '.subpaths';
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
4 stateFileName = '';
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5 end
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
6
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
7 methods
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
8 function obj = MatlabPathManager()
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
9
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
10 end
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
11
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
12 function p = stateFilePath(obj)
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
13 p = fullfile(mpm.install_location(), obj.stateFileName);
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
14 end
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
15
17
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
16 % Load a given subpath into the state file and the matlab path and do savepath(), atomically
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
17 function loadSubpath(obj, p)
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
18 state = mpm.load_state();
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
19
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
20 subpath = fullfile(pwd, p);
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
21 addpath(subpath);
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
22 state.added_paths(subpath) = true;
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
23
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
24 mpm.save_state(state);
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
25
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
26 % TODO: Make atomic + add savepath()
16
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
27 end
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
28
17
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
29 % Unload a given subpath from the state file and the matlab path and do savepath(), atomically
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
30 function unloadSubpath(obj, p)
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
31 state = mpm.load_state();
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
32
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
33 subpath = fullfile(pwd, p);
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
34 rmpath(subpath);
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
35 state.added_paths.remove(subpath);
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
36
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
37 mpm.save_state(state);
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
38
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
39 % TODO: Make atomic + add savepath()
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
40 end
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
41
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
42 % Read project file in a folder and return cell array of all subpaths
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
43 function sp = projectSubpaths(obj, projectFolder)
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
44 try
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
45 fstr = fileread(fullfile(projectFolder, obj.projectFileName));
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
46 catch
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
47 error('Subpath definition file ''%s'' not found.', obj.projectFileName);
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
48 end
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
49 sp = splitlines(strtrim(fstr));
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
50 end
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
51
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
52 function s = loadedSubpaths(obj)
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
53 state = mpm.load_state();
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
54 s = state.added_paths.keys();
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
55 % TODO: Make it respect order from the matlab path
16
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
56 end
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
57
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
58 % Return all subpaths loaded into the matlab path, mimicing the order they appear there.
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
59 function s = pathStatus(obj)
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
60 end
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
61
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
62 % Return all subpaths in the project and if they are active on the matlab path or not.
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
63 function s = projectStatus(obj, projectFolder)
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
64 end
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
65
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
66 % Load all subpaths for a project
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
67 function checkin(obj, projectFolder)
17
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
68 sp = obj.projectSubpaths(projectFolder);
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
69
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
70 for i = 1:length(sp)
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
71 obj.loadSubpath(sp{i});
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
72 end
16
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
73 end
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
74
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
75 % Unload all subpaths for a project
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
76 function checkout(obj, projectFolder)
17
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
77 sp = obj.projectSubpaths(projectFolder);
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
78
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
79 for i = 1:length(sp)
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
80 obj.unloadSubpath(sp{i});
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
81 end
16
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
82 end
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
83
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
84 % Unload all loaded subpaths. The matlab path should be returned to it's original state
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
85 function clear(obj)
17
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
86 sp = obj.loadedSubpaths();
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
87
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
88 for i = 1:length(sp)
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
89 obj.unload(sp{i});
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
90 end
16
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
91 end
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
92 end
4c5d876068c2 Add stub for MatlabPathManager class
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
93 end
17
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
94
c37f67ccabac Copy implementations into the MPM class
Jonatan Werpers <jonatan@werpers.com>
parents: 16
diff changeset
95 % TODO: get rid of mpm.load_state and mpm.save_state