@@ -28,45 +28,73 @@ func (i *Installer) installPrequisites() error {
2828 p := plugins .GetPlugin (i .plugin .Prequisite )
2929 // install prequisite
3030 i := New (& p )
31- if err := i .Install (); err != nil {
31+ // TODO: multi prequisites and versions.
32+ if err := i .Install ("" ); err != nil {
3233 return err
3334 }
3435 }
3536 return nil
3637}
3738
38- func (i * Installer ) preInstall () error {
39- preInstallHandler := i .plugin .GetPreInstallHandler ()
39+ func (i * Installer ) preInstall (version string ) error {
40+ if i .plugin == nil {
41+ return nil
42+ }
43+ preInstallHandler := i .plugin .GetPreInstallHandler (version )
4044 if preInstallHandler != nil {
4145 return preInstallHandler ()
4246 }
4347 return nil
4448}
4549
46- func (i * Installer ) install () error {
50+ func (i * Installer ) install (version string ) error {
51+ if i .plugin == nil {
52+ return nil
53+ }
54+ customedInstaller := i .plugin .GetCustomedInstallHandler (version )
55+ if customedInstaller != nil {
56+ return customedInstaller ()
57+ }
58+ // TODO: default install handler.
4759 return nil
4860}
4961
50- func (i * Installer ) postInstall () error {
62+ func (i * Installer ) postInstall (version string ) error {
63+ if i .plugin == nil {
64+ return nil
65+ }
66+ postInstallHandler := i .plugin .GetPostInstallHandler (version )
67+ if postInstallHandler != nil {
68+ return postInstallHandler ()
69+ }
5170 return nil
5271}
5372
54- func (i * Installer ) Install () error {
73+ func (i * Installer ) Install (version string ) error {
5574 if err := i .installPrequisites (); err != nil {
5675 return err
5776 }
58- if err := i .preInstall (); err != nil {
77+ if err := i .preInstall (version ); err != nil {
5978 return err
6079 }
61- if err := i .install (); err != nil {
80+ if err := i .install (version ); err != nil {
6281 return err
6382 }
64- if err := i .postInstall (); err != nil {
83+ if err := i .postInstall (version ); err != nil {
6584 return err
6685 }
6786 return nil
6887}
6988
70- func (i * Installer ) Uninstall () error {
89+ func (i * Installer ) Uninstall (version string ) error {
90+ if i .plugin == nil {
91+ return nil
92+ }
93+
94+ uninstall := i .plugin .GetCustomedUninstallHandler (version )
95+ if uninstall != nil {
96+ return uninstall ()
97+ }
98+ //TODO: default uninstall handler
7199 return nil
72100}
0 commit comments