1 |
On Sat, 2011-12-10 at 20:20 -0800, Brian Dolbec wrote: |
2 |
> I have just rebased the emaint re-write that I did some time ago. I |
3 |
> have also updated the modules for changes since I originally did the |
4 |
> rewrite into a plug-in modules system. |
5 |
> |
6 |
> The changes have been condensed down into several key commits. |
7 |
> |
8 |
> The emaint branch is available on github: |
9 |
> |
10 |
> https://github.com/dol-sen/portage |
11 |
> |
12 |
> It is now very easy to add or remove modules, by only adding/removing |
13 |
> the modules directory to/from the emaint/modules directory. |
14 |
|
15 |
> The overall benefit to portage is that emaint should be easier to |
16 |
> maintain, the modules are also now available to portage/emerge or other |
17 |
> tools for internal script use, not just the bin/emaint script. The |
18 |
> plug-in code in modules.py is also universal in nature and can easily be |
19 |
> moved elsewhere in portage's namespace. It can be used for any number |
20 |
> of independant plug-in systems. The plug-in modules can also be more |
21 |
> complex in nature as well as export more than one specific functionality |
22 |
> as well as more than just ["check", "fix"] options. |
23 |
> |
24 |
|
25 |
> Please test it out to ensure everything is working 100%. |
26 |
> |
27 |
|
28 |
A big "Thank you" to those of you that tested it, reported some bugs |
29 |
which I have since fixed. |
30 |
|
31 |
I have also now moved the functional code for the 'clean-config' feature |
32 |
from _emerge.main.clean_config() into an emaint plug-in module. I have |
33 |
also added 2 cli options to it's use in emaint. They are: |
34 |
|
35 |
-p, --pretend which removes the '-delete' from the PORT_LOGDIR_CLEAN |
36 |
cmd defined in make.globals. It therefore just lists all |
37 |
the files it would otherwise delete. |
38 |
|
39 |
'find "${PORT_LOGDIR}" -type f ! -name "summary.log*" -mtime +7 -delete' |
40 |
|
41 |
-t, --time NUM which takes the number of days to change the default |
42 |
'+7' to for the run. It also takes 0 (zero) which |
43 |
deletes '-mtime +7' from the command to delete |
44 |
|
45 |
I have also changed all the modules check, fix functions to take |
46 |
**kwargs so that any module can accept (not necessarily use) more input |
47 |
parameters that are required to function. Doing this allowed the |
48 |
CleanLogs module to get all the cli options, settings passed into it. |
49 |
In this case: |
50 |
|
51 |
# emaint -Cpt 4 logs |
52 |
|
53 |
With that working I also changed the _emerge.main.clean_logs() to run |
54 |
the emaint module's CleanLogs.clean(). This also shows some of the |
55 |
flexibility of the new plugin system. The emaint module code is |
56 |
available to emerge or any other app for embedding. |
57 |
|
58 |
Some other notes to remember for designing new modules are: |
59 |
|
60 |
# emaint -t 4 logs |
61 |
# emaint -p logs |
62 |
|
63 |
Also work, even though they have "store" actions configured rather than |
64 |
the "callback" default, so do not directly initiate running the module. |
65 |
But, the emaint main() code will automatically add the -c, --check |
66 |
option to run the module's check(). In this case check() simply |
67 |
adds/sets the pretend option to true and calls the clean(). |
68 |
|
69 |
# emaint -c logs |
70 |
|
71 |
Of course also works the same as "emaint -Cp logs" |
72 |
|
73 |
Also since CleanLogs does not have a fix() it will not be included and |
74 |
run if a user does: |
75 |
|
76 |
# emaint -f all |
77 |
|
78 |
Which would be desired since it does not actually "fix" anything. |
79 |
|
80 |
|
81 |
|
82 |
> I have some other dummy example modules I had prepared and will add them |
83 |
> to the branch in an example-modules directory. |
84 |
|
85 |
Done. There is an example module which changes the class the plug-in |
86 |
system passes back to the caller according to an environment variable's |
87 |
setting. |
88 |
|
89 |
|
90 |
Please test everything again and let me know of any bugs, improvements I |
91 |
should fix/do. I believe Zac is planning to merge the changes soon. |
92 |
|
93 |
Thank you |
94 |
-- |
95 |
Brian Dolbec <dolsen@g.o> |