Cfg: Convert 'app.setup_completed'

pull/620/head
gnosygnu 8 years ago
parent ac9e79bfa0
commit 1c00d41b06

@ -171,7 +171,7 @@ public class Xoae_app implements Xoa_app, Gfo_invk {
if (Launch_done()) return; if (Launch_done()) return;
xwiki_mgr__sitelink_mgr.Init_by_app(); xwiki_mgr__sitelink_mgr.Init_by_app();
stage = Xoa_stage_.Tid_launch; stage = Xoa_stage_.Tid_launch;
user.Cfg_mgr().Setup_mgr().Setup_run_check(this); log_bfr.Add("app.upgrade.done"); Xouc_setup_mgr.Setup_run_check(this); log_bfr.Add("app.upgrade.done");
user.Wiki().Init_assert(); // NOTE: must assert wiki and load langs first, else will be asserted during Portal_mgr().Init(), which will cause IndexOutOfBounds; DATE:2014-10-04 user.Wiki().Init_assert(); // NOTE: must assert wiki and load langs first, else will be asserted during Portal_mgr().Init(), which will cause IndexOutOfBounds; DATE:2014-10-04
gplx.xowa.addons.users.wikis.regys.Xou_regy_addon.Init(this); gplx.xowa.addons.users.wikis.regys.Xou_regy_addon.Init(this);
} }

@ -18,18 +18,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.users; import gplx.*; import gplx.xowa.*; package gplx.xowa.users; import gplx.*; import gplx.xowa.*;
public class Xou_cfg implements Gfo_invk { public class Xou_cfg implements Gfo_invk {
public Xou_cfg(Xoue_user user) { public Xou_cfg(Xoue_user user) {
this.user = user; pages_mgr = new Xouc_pages_mgr(this);
pages_mgr = new Xouc_pages_mgr(this); setup_mgr = new Xouc_setup_mgr(user);
} }
public Xoue_user User() {return user;} private Xoue_user user;
public Xouc_pages_mgr Pages_mgr() {return pages_mgr;} private Xouc_pages_mgr pages_mgr; public Xouc_pages_mgr Pages_mgr() {return pages_mgr;} private Xouc_pages_mgr pages_mgr;
public Xouc_setup_mgr Setup_mgr() {return setup_mgr;} private Xouc_setup_mgr setup_mgr;
public Xou_log_mgr Log_mgr() {return log_mgr;} private final Xou_log_mgr log_mgr = new Xou_log_mgr(); public Xou_log_mgr Log_mgr() {return log_mgr;} private final Xou_log_mgr log_mgr = new Xou_log_mgr();
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_pages)) return pages_mgr; if (ctx.Match(k, Invk_pages)) return pages_mgr;
else if (ctx.Match(k, Invk_setup)) return setup_mgr;
else if (ctx.Match(k, Invk_log)) return log_mgr; else if (ctx.Match(k, Invk_log)) return log_mgr;
return this; return this;
} }
public static final String Invk_pages = "pages", Invk_setup = "setup", Invk_log = "log"; public static final String Invk_pages = "pages", Invk_log = "log";
} }

@ -17,41 +17,33 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package gplx.xowa.users; import gplx.*; import gplx.xowa.*; package gplx.xowa.users; import gplx.*; import gplx.xowa.*;
import gplx.core.envs.*; import gplx.core.envs.*;
public class Xouc_setup_mgr implements Gfo_invk { public class Xouc_setup_mgr {
public Xouc_setup_mgr(Xoue_user user) {this.user = user;} public static void Setup_run_check(Xoae_app app) {
public Xoue_user User() {return user;} private Xoue_user user;
private String setup_completed = "";
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_setup_completed)) return setup_completed;
else if (ctx.Match(k, Invk_setup_completed_)) setup_completed = m.ReadStr("v");
return this;
} private static final String Invk_setup_completed = "setup_completed", Invk_setup_completed_ = "setup_completed_";
public void Setup_run_check(Xoae_app app) {
byte op_sys_tid = Op_sys.Cur().Tid(); byte op_sys_tid = Op_sys.Cur().Tid();
switch (op_sys_tid) { switch (op_sys_tid) {
case Op_sys.Tid_drd: case Op_sys.Tid_drd:
case Op_sys.Tid_wnt: return; case Op_sys.Tid_wnt: return;
} }
String op_sys_name = Xoa_app_.Op_sys_str; String op_sys_name = Xoa_app_.Op_sys_str;
String setup_completed = app.Cfg().Get_str_app_or("xowa.app.session.setup_completed", "");
String[] plats_ary = String_.Split(setup_completed, ";"); String[] plats_ary = String_.Split(setup_completed, ";");
int plats_ary_len = plats_ary.length; int plats_ary_len = plats_ary.length;
for (int i = 0; i < plats_ary_len; i++) { for (int i = 0; i < plats_ary_len; i++) {
if (String_.Eq(plats_ary[i], op_sys_name)) return; if (String_.Eq(plats_ary[i], op_sys_name)) return;
} }
Io_url setup_url = app.Fsys_mgr().Root_dir().GenSubFil_nest("bin", op_sys_name, "xowa", "script", "setup_lua.sh"); Io_url setup_url = app.Fsys_mgr().Root_dir().GenSubFil_nest("bin", op_sys_name, "xowa", "script", "setup_lua.sh");
Run("sh", String_.Format("\"{0}\" \"{1}\"", setup_url.Raw(), app.Fsys_mgr().Root_dir()));
setup_completed += op_sys_name + ";"; String exe = "sh";
app.Cfg_mgr().Set_by_all("app.user.cfg.setup.setup_completed", setup_completed); String arg = String_.Format("\"{0}\" \"{1}\"", setup_url.Raw(), app.Fsys_mgr().Root_dir());
app.Cfg_mgr().Db_save_txt();
}
private boolean Run(String exe, String arg) {
boolean pass = false; String fail = ""; boolean pass = false; String fail = "";
try {pass = new Process_adp().Exe_url_(Io_url_.new_fil_(exe)).Args_str_(arg).Run_wait_sync().Exit_code_pass();} try {pass = new Process_adp().Exe_url_(Io_url_.new_fil_(exe)).Args_str_(arg).Run_wait_sync().Exit_code_pass();}
catch (Exception e) { catch (Exception e) {
fail = Err_.Message_gplx_full(e); fail = Err_.Message_gplx_full(e);
} }
if (!pass) if (!pass)
user.Appe().Usr_dlg().Prog_many("", "", "process exec failed: ~{0} ~{1} ~{2}", exe, arg, fail); app.Usr_dlg().Prog_many("", "", "process exec failed: ~{0} ~{1} ~{2}", exe, arg, fail);
return pass;
setup_completed += op_sys_name + ";";
app.Cfg().Set_str_app("xowa.app.session.setup_completed", setup_completed);
} }
} }

Loading…
Cancel
Save