Mercurial > repos > public > matlab_path_manager
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 |
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 |