From d4bbb11b0bec9f395e29eb361a703bc5b02e6426 Mon Sep 17 00:00:00 2001 From: mrsang Date: Sat, 1 May 2021 20:17:34 +0200 Subject: [PATCH] add support automatic locale generation to SDK --- libantosdk/README.md | 16 +++----------- libantosdk/build.json | 14 ++++++++++++ libantosdk/build/debug/README.md | 16 +++----------- libantosdk/build/debug/main.js | 2 +- libantosdk/build/debug/package.json | 28 ++++++++++++++++-------- libantosdk/build/release/libantosdk.zip | Bin 1268313 -> 1269670 bytes libantosdk/package.json | 28 ++++++++++++++++-------- libantosdk/ts/main.ts | 4 ++-- packages.json | 2 +- 9 files changed, 62 insertions(+), 48 deletions(-) diff --git a/libantosdk/README.md b/libantosdk/README.md index 3e23198..6806f4b 100644 --- a/libantosdk/README.md +++ b/libantosdk/README.md @@ -1,15 +1,5 @@ # libantosdk -This is an example project, generated by AntOS Development Kit +AntOSDK: development API for AntOS based applications/projects -## Howto -Use the CodePad command palette to access to the SDK functionalities: - -1. Create new project -2. Init the project from the current folder located in side bar -3. Build and run the project -4. Release the project in zip package - -## Set up build target - -Open the `project.json` file from the current project tree and add/remove -build target entries. Save the file \ No newline at end of file +## Change logs +- 0.0.4: support automatic locale generation \ No newline at end of file diff --git a/libantosdk/build.json b/libantosdk/build.json index c188db5..3c1881b 100644 --- a/libantosdk/build.json +++ b/libantosdk/build.json @@ -8,6 +8,20 @@ } ] }, + "locale": { + "require": ["locale"], + "jobs": [ + { + "name":"locale-gen", + "data": { + "src": "", + "exclude": ["build/debug/", "core/", "ts/test\\.ts", "scheme\\.html"], + "locale": "en_GB", + "dest": "package.json" + } + } + ] + }, "build": { "require": ["ts"], "jobs":[ diff --git a/libantosdk/build/debug/README.md b/libantosdk/build/debug/README.md index 3e23198..6806f4b 100644 --- a/libantosdk/build/debug/README.md +++ b/libantosdk/build/debug/README.md @@ -1,15 +1,5 @@ # libantosdk -This is an example project, generated by AntOS Development Kit +AntOSDK: development API for AntOS based applications/projects -## Howto -Use the CodePad command palette to access to the SDK functionalities: - -1. Create new project -2. Init the project from the current folder located in side bar -3. Build and run the project -4. Release the project in zip package - -## Set up build target - -Open the `project.json` file from the current project tree and add/remove -build target entries. Save the file \ No newline at end of file +## Change logs +- 0.0.4: support automatic locale generation \ No newline at end of file diff --git a/libantosdk/build/debug/main.js b/libantosdk/build/debug/main.js index 6dc6b7b..966a176 100644 --- a/libantosdk/build/debug/main.js +++ b/libantosdk/build/debug/main.js @@ -1 +1 @@ -var OS;!function(e){let t;!function(t){class r{constructor(t){this.worker=new Worker(t.asFileHandle().getlink()),this.jobs={},this.worker.onmessage=e=>{let t=e.data,r=this.jobs[t.id];r?"log"===t.type?r.logger&&(t.error?r.logger.error(t.result):r.logger.info(t.result)):(r.callback(t),delete this.jobs[t.id]):console.log("Unable to identify result of job",t.id,t)};const r={};for(const t in e.setting.system.packages){const o=e.setting.system.packages[t];r[t]={path:o.path,name:o.pkgname}}this.submit("sdk-setup",{REST:e.API.REST,pkgs:r})}newJobID(){return"job_"+Math.random().toString(36).replace(".","")}exectue_job(e,t,r,o,s){const n=this.newJobID(),i={id:n,cmd:e,data:t,root:r};this.jobs[n]={callback:o,logger:s},this.worker.postMessage(i)}submit(e,t,r,o){return new Promise((s,n)=>{this.exectue_job(e,t,r,e=>{if(e.error)return n(e.error);s(e.result)},o)})}terminate(){this.worker.terminate()}}class o{constructor(e,t){this.root=t,this.logger=e,o.worker||(o.worker=new r("pkg://libantosdk/core/worker.js"))}require(e){return this.run("sdk-import",e.map(e=>e+".worker.js"))}compile(e,t){return new Promise(async(r,o)=>{try{await this.require([e]),r(await this.run(e+"-compile",t))}catch(e){o(__e(e))}})}run(t,r){return"sdk-run-app"===t?new Promise(async(t,o)=>{try{let o=r;1==o.split("://").length&&(o=`${this.root}/${r}`);const s=await(o+"/package.json").asFileHandle().read("json");return s.text=s.name,s.path=o,s.filename=s.pkgname,s.type="app",s.mime="antos/app",s.icon&&(s.icon=`${s.path}/${s.icon}`),s.iconclass||s.icon||(s.iconclass="fa fa-adn"),this.logger.info(__("Installing...")),e.setting.system.packages[s.pkgname]=s,s.app?(this.logger.info(__("Running {0}...",s.app)),e.GUI.forceLaunch(s.app,[])):this.logger.error(__("{0} is not an application",s.pkgname)),t(void 0)}catch(e){o(e)}}):o.worker.submit(t,r,this.root,this.logger)}batch(e,t){return t.root&&(this.root=t.root),new Promise(async(r,o)=>{try{t.targets||o("No target found");for(const r of e){const e=t.targets[r];if(!e)return o(__("No target: "+r));if(e.depend&&await this.batch(e.depend,t),e.require&&await this.require(e.require),this.logger&&this.logger.info(__(`### RUNNING STAGE: ${r}###`).__()),e.jobs)for(const t of e.jobs)await this.run(t.name,t.data)}r(void 0)}catch(e){o(e)}})}}let s;t.AntOSDKBuilder=o,function(e){class t extends e.RemoteFileHandle{constructor(e){super(e);const t="pkg://libantosdk/"+this.genealogy.join("/");this.setPath(t.asFileHandle().path)}}e.SDKFileHandle=t,e.register("^sdk$",t)}(s=t.VFS||(t.VFS={}))}(t=e.API||(e.API={}))}(OS||(OS={})); \ No newline at end of file +var OS;!function(e){let t;!function(t){class r{constructor(t){this.worker=new Worker(t.asFileHandle().getlink()),this.jobs={},this.worker.onmessage=e=>{let t=e.data,r=this.jobs[t.id];r?"log"===t.type?r.logger&&(t.error?r.logger.error(t.result):r.logger.info(t.result)):(r.callback(t),delete this.jobs[t.id]):console.log("Unable to identify result of job",t.id,t)};const r={};for(const t in e.setting.system.packages){const o=e.setting.system.packages[t];r[t]={path:o.path,name:o.pkgname}}this.submit("sdk-setup",{REST:e.API.REST,pkgs:r})}newJobID(){return"job_"+Math.random().toString(36).replace(".","")}exectue_job(e,t,r,o,s){const n=this.newJobID(),i={id:n,cmd:e,data:t,root:r};this.jobs[n]={callback:o,logger:s},this.worker.postMessage(i)}submit(e,t,r,o){return new Promise((s,n)=>{this.exectue_job(e,t,r,e=>{if(e.error)return n(e.error);s(e.result)},o)})}terminate(){this.worker.terminate()}}class o{constructor(e,t){this.root=t,this.logger=e,o.worker||(o.worker=new r("pkg://libantosdk/core/worker.js"))}require(e){return this.run("sdk-import",e.map(e=>e+".worker.js"))}compile(e,t){return new Promise(async(r,o)=>{try{await this.require([e]),r(await this.run(e+"-compile",t))}catch(e){o(__e(e))}})}run(t,r){return"sdk-run-app"===t?new Promise(async(t,o)=>{try{let o=r;1==o.split("://").length&&(o=`${this.root}/${r}`);const s=await(o+"/package.json").asFileHandle().read("json");return s.text=s.name,s.path=o,s.filename=s.pkgname,s.type="app",s.mime="antos/app",s.icon&&(s.icon=`${s.path}/${s.icon}`),s.iconclass||s.icon||(s.iconclass="fa fa-adn"),this.logger.info(__("Installing...")),e.setting.system.packages[s.pkgname]=s,s.app?(this.logger.info(__("Running {0}...",s.app)),e.GUI.forceLaunch(s.app,[])):this.logger.error(__("{0} is not an application",s.pkgname)),t(void 0)}catch(e){o(e)}}):o.worker.submit(t,r,this.root,this.logger)}batch(e,t){return t.root&&(this.root=t.root),new Promise(async(r,o)=>{try{t.targets||o("No target found");for(const r of e){const e=t.targets[r];if(!e)return o(__("No target: {0}",r));if(e.depend&&await this.batch(e.depend,t),e.require&&await this.require(e.require),this.logger&&this.logger.info(__("### RUNNING STAGE: {0}###",r).__()),e.jobs)for(const t of e.jobs)await this.run(t.name,t.data)}r(void 0)}catch(e){o(e)}})}}let s;t.AntOSDKBuilder=o,function(e){class t extends e.RemoteFileHandle{constructor(e){super(e);const t="pkg://libantosdk/"+this.genealogy.join("/");this.setPath(t.asFileHandle().path)}}e.SDKFileHandle=t,e.register("^sdk$",t)}(s=t.VFS||(t.VFS={}))}(t=e.API||(e.API={}))}(OS||(OS={})); \ No newline at end of file diff --git a/libantosdk/build/debug/package.json b/libantosdk/build/debug/package.json index 2ba93d0..8f9ce9d 100644 --- a/libantosdk/build/debug/package.json +++ b/libantosdk/build/debug/package.json @@ -1,15 +1,25 @@ { "pkgname": "libantosdk", - "name":"AntOSDK", - "description":"AntOS Software Development Kit", - "info":{ + "name": "AntOSDK", + "description": "AntOS Software Development Kit", + "info": { "author": "Xuan Sang LE", "email": "mrsang@iohub.dev" }, - "version":"0.0.3-a", - "category":"Other", - "iconclass":"fa fa-cog", - "mimes":["none"], - "dependencies":[], - "locale": {} + "version": "0.0.4-a", + "category": "Other", + "iconclass": "fa fa-cog", + "mimes": [ + "none" + ], + "dependencies": [], + "locale": { + "en_GB": { + "Installing...": "Installing...", + "Running {0}...": "Running {0}...", + "{0} is not an application": "{0} is not an application", + "No target: {0}": "No target: {0}", + "### RUNNING STAGE: {0}###": "### RUNNING STAGE: {0}###" + } + } } \ No newline at end of file diff --git a/libantosdk/build/release/libantosdk.zip b/libantosdk/build/release/libantosdk.zip index 4ef8eeca44fde21af794bee3264679400c992997..728b7b1ba3af4716a4ab16068b630cd7dbdb3740 100644 GIT binary patch delta 3985 zcmZu!1z42Z(_cCi1eQ)|kzS-rK$-=lS3;1MlBGdd$wld0YNbP@YbCBAol?>u0s<-x zf+*ql!soqu@AE&;{`Snw&dizjoPFNknVC9hQ7aUotBHe43<7}&K{ScEdbefw(!2pJ z5&#hZJ!OSEP-OuZ8>T^F(srS%Doe7($Axc`NwpSknvmhBWwk-I2n*aPo3pY@4~oA@ zeY~YFJi6#Sh>Sd}aZXvB*SEVPFn=_}^6%;%C4&4Uut1<(Y!K)wP~9UdYbPsv zTY-ljZmwPlP^b3WWDz^(&sZ%)eLwZ-^FNE^3~|iW)u2mKH=7@fScoZ9I}h+VFua;( z`hGn=?crtXKv)3C*yC z8Yho?)Y z==+pc7CYm)GeN$xRV~LH*TK7k8G+Th9i?g%Nr4j)LcbvQ-=91!}Cow z-2|A@5U){2*LqZTc{95){g13O*{iVl{?;*)vm&hpvK6>`?&w;qyFdgx%ho(4-d<)K>9_?=6#tJfU2l zx&l*AZM_qg3W$bID*5>b-4a;6B7ZbpPwW^_R@SshFRv4c}zgM(YpevrI3n7X(C zr-~;%P2SKBpKI?w=8k^I6T6e@{_dL+S&*okmt|w+PV5JliPZ;zd;9z53j5#Z^y!e; z+>e+1-{(JXo%{azO7|3L0J@KS2pV*Zzg?(g>k`$EA3(>bTb&)Wre-r$^2`Jw;E}N2 zQY>f?PPOpiIy-q7*vMH4@}i{KDNJChNg%ppw&^-K@BI(a^;o`k%{OVont1fBluK=w zzBRw7m1|Ky>%6to)2m9B8Cf%3>xOoz=k9J1VnmDk`bEo#6

sEOd&KHbkWNJlZT^ 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 Da+gOT diff --git a/libantosdk/package.json b/libantosdk/package.json index 2ba93d0..8f9ce9d 100644 --- a/libantosdk/package.json +++ b/libantosdk/package.json @@ -1,15 +1,25 @@ { "pkgname": "libantosdk", - "name":"AntOSDK", - "description":"AntOS Software Development Kit", - "info":{ + "name": "AntOSDK", + "description": "AntOS Software Development Kit", + "info": { "author": "Xuan Sang LE", "email": "mrsang@iohub.dev" }, - "version":"0.0.3-a", - "category":"Other", - "iconclass":"fa fa-cog", - "mimes":["none"], - "dependencies":[], - "locale": {} + "version": "0.0.4-a", + "category": "Other", + "iconclass": "fa fa-cog", + "mimes": [ + "none" + ], + "dependencies": [], + "locale": { + "en_GB": { + "Installing...": "Installing...", + "Running {0}...": "Running {0}...", + "{0} is not an application": "{0} is not an application", + "No target: {0}": "No target: {0}", + "### RUNNING STAGE: {0}###": "### RUNNING STAGE: {0}###" + } + } } \ No newline at end of file diff --git a/libantosdk/ts/main.ts b/libantosdk/ts/main.ts index 6f46605..99243fc 100644 --- a/libantosdk/ts/main.ts +++ b/libantosdk/ts/main.ts @@ -208,7 +208,7 @@ namespace OS { { const target = options.targets[name]; if(!target) - return reject(__(`No target: ${name}`)); + return reject(__("No target: {0}", name)); if(target.depend) { @@ -219,7 +219,7 @@ namespace OS { await this.require(target.require); } if(this.logger) - this.logger.info(__(`### RUNNING STAGE: ${name}###`).__()); + this.logger.info(__("### RUNNING STAGE: {0}###", name).__()); if(target.jobs) for(const job of target.jobs) { diff --git a/packages.json b/packages.json index 97fc8b3..ee79712 100644 --- a/packages.json +++ b/packages.json @@ -195,7 +195,7 @@ "description": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/libantosdk/README.md", "category": "Other", "author": "Xuan Sang LE", - "version": "0.0.3-a", + "version": "0.0.4-a", "dependencies": [], "download": "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/libantosdk/build/release/libantosdk.zip" },