Some major changes:

- Enhance the error report system
- The SDK now allows to create sub-directory when building and releasing
This commit is contained in:
Xuan Sang LE 2020-05-22 18:31:06 +02:00
parent 0abb49dadc
commit 9f184fc19b
17 changed files with 253 additions and 180 deletions

View File

@ -128,16 +128,15 @@ package:
pkgar: pkgar:
read -r -p "Enter package name: " PKG;\ read -r -p "Enter package name: " PKG;\
echo $$PKG | make package &&\ echo $$PKG | make package &&\
test -f $(BUILDDIR)/packages/$$PKG/main.js && uglifyjs $(BUILDDIR)/packages/$$PKG/main.js --compress --mangle --output $(BUILDDIR)/packages/$$PKG/main.js;\ test -f $(BUILDDIR)/packages/$$PKG/main.js && terser $(BUILDDIR)/packages/$$PKG/main.js --compress --mangle --output $(BUILDDIR)/packages/$$PKG/main.js;\
test -f $(BUILDDIR)/packages/$$PKG/main.css && uglifycss --output $(BUILDDIR)/packages/$$PKG/main.css $(BUILDDIR)/packages/$$PKG/main.css;\ test -f $(BUILDDIR)/packages/$$PKG/main.css && uglifycss --output $(BUILDDIR)/packages/$$PKG/main.css $(BUILDDIR)/packages/$$PKG/main.css;\
cd $(BUILDDIR)/packages/$$PKG && zip -r "$$PKG.zip" ./ ; \ cd $(BUILDDIR)/packages/$$PKG && zip -r "$$PKG.zip" ./ ; \
cd ../../ && (test -d repo/$$PKG || mkdir repo/$$PKG) && mv packages/$$PKG/"$$PKG.zip" repo/$$PKG && touch repo/$$PKG/$$PKG.md && rm -r packages/$$PKG cd ../../ && (test -d repo/$$PKG || mkdir repo/$$PKG) && mv packages/$$PKG/"$$PKG.zip" repo/$$PKG && touch repo/$$PKG/$$PKG.md && rm -r packages/$$PKG
uglify: uglify:
# uglify antos.js # sudo npm install terser -g
# npm install uglify-es -g #
# npm install uglify-js -g terser $(BUILDDIR)/scripts/antos.js --compress --mangle --output $(BUILDDIR)/scripts/antos.js
uglifyjs $(BUILDDIR)/scripts/antos.js --compress --mangle --output $(BUILDDIR)/scripts/antos.js
# uglify tags # uglify tags
# npm install uglifycss -g # npm install uglifycss -g
# uglify the css # uglify the css
@ -148,7 +147,7 @@ uglify:
for d in $(packages); do\ for d in $(packages); do\
echo "Uglifying $$d";\ echo "Uglifying $$d";\
test -f $(BUILDDIR)/packages/$$d/main.js && uglifyjs $(BUILDDIR)/packages/$$d/main.js --compress --mangle --output $(BUILDDIR)/packages/$$d/main.js;\ test -f $(BUILDDIR)/packages/$$d/main.js && terser $(BUILDDIR)/packages/$$d/main.js --compress --mangle --output $(BUILDDIR)/packages/$$d/main.js;\
test -f $(BUILDDIR)/packages/$$d/main.css && uglifycss --output $(BUILDDIR)/packages/$$d/main.css $(BUILDDIR)/packages/$$d/main.css;\ test -f $(BUILDDIR)/packages/$$d/main.css && uglifycss --output $(BUILDDIR)/packages/$$d/main.css $(BUILDDIR)/packages/$$d/main.css;\
done done

View File

@ -63,7 +63,7 @@ class BaseApplication extends this.OS.GUI.BaseModel
resolve() resolve()
.catch (e) => .catch (e) =>
@_api.loaded q, @name, "FAIL" @_api.loaded q, @name, "FAIL"
reject e reject __e e
bindKey: (k, f) -> bindKey: (k, f) ->
arr = k.split "-" arr = k.split "-"

View File

@ -415,7 +415,7 @@ class FileDialog extends BasicDialog
.then (d) -> .then (d) ->
return reject d if d.error return reject d if d.error
resolve d.result resolve d.result
.catch (e) -> reject e .catch (e) -> reject __e e
setroot = (path) => setroot = (path) =>
path.asFileHandle().read().then (d) => path.asFileHandle().read().then (d) =>
if(d.error) if(d.error)

View File

@ -163,6 +163,13 @@ Date.prototype.toString = () ->
Date.prototype.timestamp = () -> Date.prototype.timestamp = () ->
return @getTime() / 1000 | 0 return @getTime() / 1000 | 0
# chaning error
Ant.__e = (e) ->
reason = new Error(e.toString())
reason.stack += "\nCaused By:\n" + e.stack
return reason
Ant.OS.API = Ant.OS.API =
# the handle object could be a any remote or local handle to # the handle object could be a any remote or local handle to
# fetch user data, used by the API to make requests # fetch user data, used by the API to make requests
@ -196,7 +203,7 @@ Ant.OS.API =
.fail (j, s, e) -> .fail (j, s, e) ->
Ant.OS.API.loaded q, p, "FAIL" Ant.OS.API.loaded q, p, "FAIL"
if e if e
reject e reject __e e
else else
reject(Ant.OS.API.throwe s) reject(Ant.OS.API.throwe s)
@ -242,7 +249,7 @@ Ant.OS.API =
.fail (j, s, e) -> .fail (j, s, e) ->
Ant.OS.API.loaded q, p, "FAIL" Ant.OS.API.loaded q, p, "FAIL"
if e if e
reject e reject __e e
else else
reject(Ant.OS.API.throwe s) reject(Ant.OS.API.throwe s)
o.remove() o.remove()
@ -281,7 +288,7 @@ Ant.OS.API =
.fail (j, s, e) -> .fail (j, s, e) ->
Ant.OS.API.loaded q, p, "FAIL" Ant.OS.API.loaded q, p, "FAIL"
if e if e
reject e reject __e e
else else
reject(Ant.OS.API.throwe s) reject(Ant.OS.API.throwe s)
@ -313,7 +320,7 @@ Ant.OS.API =
console.log "Loaded :", l console.log "Loaded :", l
Ant.OS.announcer.trigger "sharedlibraryloaded", l Ant.OS.announcer.trigger "sharedlibraryloaded", l
resolve undefined resolve undefined
.catch (e) -> reject e .catch (e) -> reject __e e
when "js" when "js"
Ant.OS.API.script libfp.getlink() Ant.OS.API.script libfp.getlink()
.then (data) -> .then (data) ->
@ -322,7 +329,7 @@ Ant.OS.API =
Ant.OS.announcer.trigger "sharedlibraryloaded", l Ant.OS.announcer.trigger "sharedlibraryloaded", l
resolve(data) resolve(data)
.catch (e) -> .catch (e) ->
reject e reject __e e
else else
reject Ant.OS.API.throwe __("Invalid library: {0}", l) reject Ant.OS.API.throwe __("Invalid library: {0}", l)
else else
@ -336,10 +343,10 @@ Ant.OS.API =
Ant.OS.announcer.observable.one "sharedlibraryloaded", (l) -> Ant.OS.announcer.observable.one "sharedlibraryloaded", (l) ->
libs.splice 0, 1 libs.splice 0, 1
Ant.OS.API.require libs Ant.OS.API.require libs
.catch (e) -> reject e .catch (e) -> reject __e e
.then (r) -> resolve(r) .then (r) -> resolve(r)
Ant.OS.API.requires libs[0] Ant.OS.API.requires libs[0]
.catch (e) -> reject e .catch (e) -> reject __e e
packages: packages:
fetch: () -> fetch: () ->
@ -381,7 +388,7 @@ Ant.OS.API =
Ant.OS.announcer.trigger "systemlocalechange", name Ant.OS.announcer.trigger "systemlocalechange", name
resolve d resolve d
.catch (e) -> .catch (e) ->
reject e reject __e e
throwe: (n) -> throwe: (n) ->
err = undefined err = undefined
@ -405,7 +412,7 @@ Ant.OS.API =
return resolve $el.val() unless navigator.clipboard return resolve $el.val() unless navigator.clipboard
navigator.clipboard.readText().then (d) -> navigator.clipboard.readText().then (d) ->
resolve d resolve d
.catch (e) -> reject e .catch (e) -> reject __e e
# utilities functioncs # utilities functioncs

View File

@ -64,7 +64,7 @@ Ant.OS or=
.then () -> .then () ->
resolve f() resolve f()
.catch (e) -> .catch (e) ->
reject e reject __e e
else else
resolve f() resolve f()
appByPid: (pid) -> appByPid: (pid) ->

View File

@ -60,12 +60,12 @@ Ant.OS.GUI =
.then (d) -> .then (d) ->
Ant.OS.GUI.pushServices srvs Ant.OS.GUI.pushServices srvs
.then () -> resolve() .then () -> resolve()
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> .catch (e) ->
Ant.OS.announcer.osfail __("Unable to load: {0}", srv), e Ant.OS.announcer.osfail __("Unable to load: {0}", srv), e
Ant.OS.GUI.pushServices srvs Ant.OS.GUI.pushServices srvs
.then () -> resolve() .then () -> resolve()
.catch (e) -> reject e .catch (e) -> reject __e e
openDialog: (d, data) -> openDialog: (d, data) ->
new Promise (resolve, reject) -> new Promise (resolve, reject) ->
@ -91,7 +91,7 @@ Ant.OS.GUI =
if Ant.OS.APP[srv] if Ant.OS.APP[srv]
Ant.OS.PM.createProcess srv, Ant.OS.APP[srv] Ant.OS.PM.createProcess srv, Ant.OS.APP[srv]
.then (d) -> resolve d .then (d) -> resolve d
.catch (e) -> reject e .catch (e) -> reject __e e
else else
Ant.OS.GUI.loadApp app Ant.OS.GUI.loadApp app
.then (a) -> .then (a) ->
@ -99,8 +99,8 @@ Ant.OS.GUI =
return reject Ant.OS.API.throwe __("Service not found: {0}", ph) return reject Ant.OS.API.throwe __("Service not found: {0}", ph)
Ant.OS.PM.createProcess srv, Ant.OS.APP[srv] Ant.OS.PM.createProcess srv, Ant.OS.APP[srv]
.then (d) -> resolve d .then (d) -> resolve d
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
appsByMime: (mime) -> appsByMime: (mime) ->
metas = ( v for k, v of Ant.OS.setting.system.packages when v and v.app ) metas = ( v for k, v of Ant.OS.setting.system.packages when v and v.app )
@ -173,9 +173,9 @@ Ant.OS.GUI =
Ant.OS.APP[app].style = el[0] if Ant.OS.APP[app] Ant.OS.APP[app].style = el[0] if Ant.OS.APP[app]
resolve app resolve app
.catch (e) -> resolve app .catch (e) -> resolve app
.catch (e) -> reject e .catch (e) -> reject __e e
#ok app #ok app
.catch (e) -> reject e .catch (e) -> reject __e e
launch: (app, args) -> launch: (app, args) ->
if not Ant.OS.APP[app] if not Ant.OS.APP[app]
# first load it # first load it
@ -358,7 +358,8 @@ Ant.OS.GUI =
name = file.basename name = file.basename
file.parent().asFileHandle().mk(name).then (r) -> file.parent().asFileHandle().mk(name).then (r) ->
ex = Ant.OS.API.throwe "OS.VFS" ex = Ant.OS.API.throwe "OS.VFS"
if r.error then Ant.OS.announcer.osfail d.error, ex, d.error else fn() .catch (e) ->
Ant.OS.announcer.osfail e.toString(), e
desktop[0].ready = (e) -> desktop[0].ready = (e) ->
e.observable = Ant.OS.announcer e.observable = Ant.OS.announcer

View File

@ -79,7 +79,7 @@ Ant.OS.API.handle =
socket = new WebSocket proto + path socket = new WebSocket proto + path
resolve(socket) resolve(socket)
catch e catch e
reject e reject __e e
else else
path = "#{Ant.OS.API.REST}/system/apigateway?ws=0" path = "#{Ant.OS.API.REST}/system/apigateway?ws=0"
Ant.OS.API.post path, d Ant.OS.API.post path, d

View File

@ -185,7 +185,7 @@ class FileViewTag extends Ant.OS.GUI.BaseTag
return resolve undefined unless v.get("data").path return resolve undefined unless v.get("data").path
@get("fetch")(v.get("data").path) @get("fetch")(v.get("data").path)
.then (d) => resolve @getTreeData(d.sort @sortByType) .then (d) => resolve @getTreeData(d.sort @sortByType)
.catch (e) -> reject e .catch (e) -> reject __e e
@refs.gridview.set "header", @header @refs.gridview.set "header", @header
@refs.treeview.set "dragndrop", true @refs.treeview.set "dragndrop", true
@refs.listview.set "dragndrop", true @refs.listview.set "dragndrop", true

View File

@ -108,11 +108,11 @@ class BaseFileHandle
return resolve(@info) if @ready return resolve(@info) if @ready
@meta() @meta()
.then (d) => .then (d) =>
return reject Ant.OS.API.throwe d.error if d.errors return reject Ant.OS.API.throwe __("{0}: {1}", d.error, @path) if d.errors
@info = d.result @info = d.result
@ready = true @ready = true
resolve(d.result) resolve(d.result)
.catch (e) -> reject e .catch (e) -> reject __e e
read: (t) -> read: (t) ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
@ -122,8 +122,8 @@ class BaseFileHandle
.then (d) -> .then (d) ->
# Ant.OS.announcer.ostrigger "VFS", { m: "read", file: me } # Ant.OS.announcer.ostrigger "VFS", { m: "read", file: me }
resolve d resolve d
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
write: (t) -> write: (t) ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
@ -131,7 +131,7 @@ class BaseFileHandle
.then (r) => .then (r) =>
Ant.OS.announcer.ostrigger "VFS", { m: "write", file: @ } Ant.OS.announcer.ostrigger "VFS", { m: "write", file: @ }
resolve r resolve r
.catch (e) -> reject e .catch (e) -> reject __e e
mk: (d) -> mk: (d) ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
@ -141,8 +141,8 @@ class BaseFileHandle
.then (d) => .then (d) =>
Ant.OS.announcer.ostrigger "VFS", { m: "mk", file: @ } Ant.OS.announcer.ostrigger "VFS", { m: "mk", file: @ }
resolve d resolve d
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
remove: () -> remove: () ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
@ -152,8 +152,8 @@ class BaseFileHandle
.then (d) => .then (d) =>
Ant.OS.announcer.ostrigger "VFS", { m: "remove", file: @ } Ant.OS.announcer.ostrigger "VFS", { m: "remove", file: @ }
resolve d resolve d
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
upload: () -> upload: () ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
@ -163,8 +163,8 @@ class BaseFileHandle
.then (d) => .then (d) =>
Ant.OS.announcer.ostrigger "VFS", { m: "upload", file: @ } Ant.OS.announcer.ostrigger "VFS", { m: "upload", file: @ }
resolve d resolve d
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
publish: () -> publish: () ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
@ -174,8 +174,8 @@ class BaseFileHandle
.then (d) => .then (d) =>
Ant.OS.announcer.ostrigger "VFS", { m: "publish", file: @ } Ant.OS.announcer.ostrigger "VFS", { m: "publish", file: @ }
resolve d resolve d
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
download: () -> download: () ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
@ -185,8 +185,8 @@ class BaseFileHandle
.then (d) => .then (d) =>
Ant.OS.announcer.ostrigger "VFS", { m: "download", file: @ } Ant.OS.announcer.ostrigger "VFS", { m: "download", file: @ }
resolve d resolve d
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
move: (d) -> move: (d) ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
@ -196,8 +196,8 @@ class BaseFileHandle
.then (data) => .then (data) =>
Ant.OS.announcer.ostrigger "VFS", { m: "move", file: d.asFileHandle() } Ant.OS.announcer.ostrigger "VFS", { m: "move", file: d.asFileHandle() }
resolve data resolve data
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
execute: () -> execute: () ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
@ -207,8 +207,8 @@ class BaseFileHandle
.then (d) => .then (d) =>
Ant.OS.announcer.ostrigger "VFS", { m: "execute", file: @ } Ant.OS.announcer.ostrigger "VFS", { m: "execute", file: @ }
resolve d resolve d
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
getlink: () -> @path getlink: () -> @path
@ -238,10 +238,10 @@ class RemoteFileHandle extends Ant.OS.API.VFS.BaseFileHandle
meta: () -> meta: () ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
Ant.OS.API.handle.fileinfo @path Ant.OS.API.handle.fileinfo @path
.then (d) -> .then (d) =>
return reject Ant.OS.API.throwe d.error if d.error return reject Ant.OS.API.throwe __("{0}: {1}", d.error, @path) if d.error
resolve d resolve d
.catch (e) -> reject e .catch (e) -> reject __e e
getlink: () -> getlink: () ->
@ -262,19 +262,21 @@ class RemoteFileHandle extends Ant.OS.API.VFS.BaseFileHandle
# t is base64 or undefined # t is base64 or undefined
new Promise (resolve, reject) => new Promise (resolve, reject) =>
if t is "base64" if t is "base64"
Ant.OS.API.handle.write(@path, @cache).then (d) -> Ant.OS.API.handle.write(@path, @cache).then (d) =>
return reject Ant.OS.API.throwe d.error if d.error return reject Ant.OS.API.throwe __("{0}: {1}", d.error, @path) if d.error
resolve d resolve d
.catch (e) -> reject e .catch (e) -> reject __e e
else else
@b64(t) @b64(t)
.then (r) => .then (r) =>
Ant.OS.API.handle.write @path, r Ant.OS.API.handle.write @path, r
.then (result) -> .then (result) =>
return reject Ant.OS.API.throwe result.error if result.error if result.error
return reject Ant.OS.API.throwe __(
"{0}: {1}", result.error, @path)
resolve result resolve result
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
_mk: (d) -> _mk: (d) ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
@ -284,27 +286,27 @@ class RemoteFileHandle extends Ant.OS.API.VFS.BaseFileHandle
if @info.type is "file" if @info.type is "file"
return reject Ant.OS.API.throwe __("{0} is not a directory", @path) return reject Ant.OS.API.throwe __("{0} is not a directory", @path)
Ant.OS.API.handle.mkdir "#{@path}/#{d}" Ant.OS.API.handle.mkdir "#{@path}/#{d}"
.then (d) -> .then (d) =>
return reject Ant.OS.API.throwe d.error if d.error return reject Ant.OS.API.throwe __("{0}: {1}", d.error, @path) if d.error
resolve d resolve d
.catch (e) -> reject e .catch (e) -> reject __e e
_rm: () -> _rm: () ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
Ant.OS.API.handle.delete @path Ant.OS.API.handle.delete @path
.then (d) -> .then (d) =>
return reject Ant.OS.API.throwe d.error if d.error return reject Ant.OS.API.throwe __("{0}: {1}", d.error, @path) if d.error
resolve d resolve d
.catch (e) -> reject e .catch (e) -> reject __e e
_mv: (d) -> _mv: (d) ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
Ant.OS.API.handle.move @path, d Ant.OS.API.handle.move @path, d
.then (d) -> .then (d) =>
return reject Ant.OS.API.throwe d.error if d.error return reject Ant.OS.API.throwe __("{0}: {1}", d.error, @path) if d.error
resolve d resolve d
.catch (e) -> reject e .catch (e) -> reject __e e
_up: () -> _up: () ->
@ -312,10 +314,10 @@ class RemoteFileHandle extends Ant.OS.API.VFS.BaseFileHandle
if @info.type isnt "dir" if @info.type isnt "dir"
return reject Ant.OS.API.throwe __("{0} is not a file", @path) return reject Ant.OS.API.throwe __("{0} is not a file", @path)
Ant.OS.API.handle.upload @path Ant.OS.API.handle.upload @path
.then (d) -> .then (d) =>
return reject Ant.OS.API.throwe d.error if d.error return reject Ant.OS.API.throwe __("{0}: {1}", d.error, @path) if d.error
resolve d resolve d
.catch (e) -> reject e .catch (e) -> reject __e e
_down: () -> _down: () ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
@ -327,15 +329,15 @@ class RemoteFileHandle extends Ant.OS.API.VFS.BaseFileHandle
Ant.OS.API.saveblob @basename, blob Ant.OS.API.saveblob @basename, blob
resolve() resolve()
.catch (e) -> .catch (e) ->
reject e reject __e e
_pub: () -> _pub: () ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
Ant.OS.API.handle.sharefile @path, true Ant.OS.API.handle.sharefile @path, true
.then (d) -> .then (d) =>
return reject Ant.OS.API.throwe d.error if d.error return reject Ant.OS.API.throwe __("{0}: {1}", d.error, @path) if d.error
resolve d resolve d
.catch (e) -> reject e .catch (e) -> reject __e e
Ant.OS.API.VFS.register "^(home|desktop|os|Untitled)$", RemoteFileHandle Ant.OS.API.VFS.register "^(home|desktop|os|Untitled)$", RemoteFileHandle
@ -415,18 +417,18 @@ class SharedFileHandle extends Ant.OS.API.VFS.BaseFileHandle
_wr: (d, t) -> _wr: (d, t) ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
Ant.OS.API.handle.write @path, d Ant.OS.API.handle.write @path, d
.then (d) -> .then (d) =>
return reject Ant.OS.API.throwe d.error if d.error return reject Ant.OS.API.throwe __("{0}: {1}", d.error, @path) if d.error
resolve d resolve d
.catch (e) -> reject e .catch (e) -> reject __e e
_rm: () -> _rm: () ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
Ant.OS.API.handle.sharefile @basename, false Ant.OS.API.handle.sharefile @basename, false
.then (d) -> .then (d) =>
return reject Ant.OS.API.throwe d.error if d.error return reject Ant.OS.API.throwe __("{0}: {1}", d.error, @path) if d.error
resolve d resolve d
.catch (e) -> reject e .catch (e) -> reject __e e
_down: () -> _down: () ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
@ -437,7 +439,7 @@ class SharedFileHandle extends Ant.OS.API.VFS.BaseFileHandle
blob = new Blob [data], { type: "octet/stream" } blob = new Blob [data], { type: "octet/stream" }
Ant.OS.API.saveblob @basename, blob Ant.OS.API.saveblob @basename, blob
resolve() resolve()
.catch (e) -> reject e .catch (e) -> reject __e e
_pub: () -> _pub: () ->
return new Promise (resolve, reject) => resolve { result: @basename } return new Promise (resolve, reject) => resolve { result: @basename }

View File

@ -5,8 +5,8 @@ class CodePad.BaseExtension
preload: () -> preload: () ->
Ant.OS.API.require @dependencies() Ant.OS.API.require @dependencies()
import: (lib) -> import: (libs) ->
Ant.OS.API.requires lib Ant.OS.API.require libs
basedir: () -> basedir: () ->
"#{@app.meta().path}/extensions" "#{@app.meta().path}/extensions"
@ -30,56 +30,96 @@ class CodePad.BaseExtension
data = data + "\n" + text data = data + "\n" + text
@cat list, data @cat list, data
.then (d) -> resolve d .then (d) -> resolve d
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
copy: (files, to) -> copy: (files, to) ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
return resolve() if files.length is 0 return resolve() if files.length is 0
file = (files.splice 0, 1)[0].asFileHandle() file = (files.splice 0, 1)[0].asFileHandle()
tof = "#{to}/#{file.basename}".asFileHandle() tof = "#{to}/#{file.basename}".asFileHandle()
file.read("binary") file.onready().then (meta) =>
.then (data) => if meta.type is "dir"
tof.setCache(new Blob [data], { type: file.info.mime }) # copy directory
.write(file.info.mime) desdir = to.asFileHandle()
.then (d) => desdir.mk(file.basename).then () =>
@copy files, to # read the dir content
.then () -> resolve() file.read().then (data) =>
.catch (e) -> reject e list = (v.path for v in data.result)
.catch (e) -> reject e @copy list, "#{desdir.path}/#{file.basename}"
.then () =>
@copy files, to
.then () -> resolve()
.catch (e) -> reject __e e
.catch (e) ->
reject __e e
.catch (e) -> reject __e e
.catch (e) ->
reject __e e
else
# copy file
file.read("binary")
.then (data) =>
tof.setCache(new Blob [data], { type: file.info.mime })
.write(file.info.mime)
.then (d) =>
@copy files, to
.then () -> resolve()
.catch (e) -> reject __e e
.catch (e) -> reject __e e
.catch (e) ->
reject __e e
aradd: (list, zip, base) ->
new Promise (resolve, reject) =>
return resolve(zip) if list.length is 0
path = (list.splice 0, 1)[0]
file = path.asFileHandle()
file.onready().then (meta) =>
if meta.type is "dir"
file.read().then (d) =>
l = (v.path for v in d.result)
@aradd l, zip, "#{base}#{file.basename}/"
.then () =>
@aradd list, zip, base
.then () -> resolve(zip)
.catch (e) -> reject __e e
.catch (e) -> reject __e e
.catch (e) -> reject __e e
else
file.read("binary").then (d) =>
zpath = "#{base}#{file.basename}".replace(/^\/+|\/+$/g, '')
zip.file zpath, d, { binary: true }
@aradd list, zip, base
.then () -> resolve(zip)
.catch (e) -> reject __e e
.catch (e) -> reject __e e
.catch (e) -> reject __e e
mkar: (src, dest) -> mkar: (src, dest) ->
@notify __("Preparing for release") @notify __("Preparing for release")
new Promise (resolve, reject) => new Promise (resolve, reject) =>
new Promise (r, e) => new Promise (r, e) =>
@import("os://scripts/jszip.min.js").then () -> @import(["os://scripts/jszip.min.js"]).then () ->
src.asFileHandle() src.asFileHandle()
.read().then (d) -> .read().then (d) ->
return e d.error if d.error
r d.result r d.result
.catch (ex) -> e ex .catch (ex) -> e __e ex
.catch (ex) -> e ex .catch (ex) -> e __e ex
.then (files) => .then (files) =>
new Promise (r, e) => new Promise (r, e) =>
zip = new JSZip() zip = new JSZip()
fn = (list) => @aradd (v.path for v in files), zip, "/"
return r zip if list.length is 0 .then (z) -> r(z)
f = (list.splice 0, 1)[0].path.asFileHandle() .catch (ex) -> e __e ex
return fn list if f.type is "dir"
f.read("binary").then (d) =>
zip.file f.basename, d, { binary: true }
@notify __("add {0} to zip", f.basename)
fn list
.catch (ex) -> e ex
fn files
.then (zip) => .then (zip) =>
zip.generateAsync({ type: "base64" }).then (data) => zip.generateAsync({ type: "base64" }).then (data) =>
dest.asFileHandle() dest.asFileHandle()
.setCache('data:application/zip;base64,' + data) .setCache('data:application/zip;base64,' + data)
.write("base64").then (r) => .write("base64").then (r) =>
@notify __("Package is generated in release folder") @notify __("Archive is generated at: {0}", dest)
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
mkdirAll: (list) -> mkdirAll: (list) ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
@ -90,8 +130,8 @@ class CodePad.BaseExtension
@app.trigger "filechange", { file: path.parent(), type: "dir" } @app.trigger "filechange", { file: path.parent(), type: "dir" }
@mkdirAll list @mkdirAll list
.then () -> resolve() .then () -> resolve()
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
mkfileAll: (list, path, name) -> mkfileAll: (list, path, name) ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
@ -109,9 +149,9 @@ class CodePad.BaseExtension
@app.trigger "filechange", { file: file, type: "file" } @app.trigger "filechange", { file: file, type: "file" }
@mkfileAll list, path, name @mkfileAll list, path, name
.then () -> resolve() .then () -> resolve()
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
metadata: (file) -> metadata: (file) ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>

View File

@ -26,7 +26,7 @@ class App.extensions.AntOSDK extends App.BaseExtension
buildnrun: () -> buildnrun: () ->
@metadata("project.json").then (meta) => @metadata("project.json").then (meta) =>
@build(meta).then () => @build(meta, true).then () =>
@run(meta).catch (e) => @error __("Unable to run project"), e @run(meta).catch (e) => @error __("Unable to run project"), e
.catch (e) => .catch (e) =>
@error __("Unable to build project"), e @error __("Unable to build project"), e
@ -34,7 +34,7 @@ class App.extensions.AntOSDK extends App.BaseExtension
release: () -> release: () ->
@metadata("project.json").then (meta) => @metadata("project.json").then (meta) =>
@build(meta).then () => @build(meta, false).then () =>
@mkar("#{meta.root}/build/debug", "#{meta.root}/build/release/#{meta.name}.zip") @mkar("#{meta.root}/build/debug", "#{meta.root}/build/release/#{meta.name}.zip")
.then () -> .then () ->
.catch (e) => @error __("Unable to create package archive"), e .catch (e) => @error __("Unable to create package archive"), e
@ -80,25 +80,28 @@ class App.extensions.AntOSDK extends App.BaseExtension
CoffeeScript.nodes data CoffeeScript.nodes data
@verify list @verify list
.then () -> resolve() .then () -> resolve()
.catch (e) -> reject e .catch (e) -> reject __e e
catch ex catch ex
reject ex reject __e ex
.catch (e) -> reject e .catch (e) -> reject __e e
compile: (meta) -> compile: (meta) ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
@import("#{@basedir()}/coffeescript.js").then () => @import([
"#{@basedir()}/coffeescript.js",
"#{@basedir()}/terser.min.js"
]).then () =>
list = ("#{meta.root}/#{v}" for v in meta.coffees) list = ("#{meta.root}/#{v}" for v in meta.coffees)
@verify((f for f in list)).then () => @verify((f for f in list)).then () =>
@cat(list).then (code) => @cat(list).then (code) =>
jsrc = CoffeeScript.compile code jsrc = CoffeeScript.compile code
@notify __("Compiled successful") @notify __("Compiled successful")
resolve jsrc resolve jsrc
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
build: (meta) -> build: (meta, debug) ->
dirs = [ dirs = [
"#{meta.root}/build", "#{meta.root}/build",
"#{meta.root}/build/debug", "#{meta.root}/build/debug",
@ -110,13 +113,32 @@ class App.extensions.AntOSDK extends App.BaseExtension
@cat ("#{meta.root}/#{v}" for v in meta.javascripts), src @cat ("#{meta.root}/#{v}" for v in meta.javascripts), src
.then (jsrc) -> .then (jsrc) ->
new Promise (r, e) -> new Promise (r, e) ->
code = jsrc
if not debug
options = {
toplevel: true,
compress: {
passes: 3,
#pure_getters: true,
#unsafe: true,
},
mangle: true,
output: {
#beautify: true,
},
}
result = Terser.minify(jsrc, options)
if result.error
@notify __("Unable to minify code: {0}", result.error)
else
code = result.code
"#{meta.root}/build/debug/main.js" "#{meta.root}/build/debug/main.js"
.asFileHandle() .asFileHandle()
.setCache jsrc .setCache code
.write("text/plain") .write("text/plain")
.then (d) -> .then (d) ->
r() r()
.catch (ex) -> e ex .catch (ex) -> e __e ex
.then () => .then () =>
new Promise (r, e) => new Promise (r, e) =>
@cat ("#{meta.root}/#{v}" for v in meta.css), "" @cat ("#{meta.root}/#{v}" for v in meta.css), ""
@ -128,13 +150,13 @@ class App.extensions.AntOSDK extends App.BaseExtension
.write("text/plain") .write("text/plain")
.then (d) -> .then (d) ->
r() r()
.catch (ex) -> e ex .catch (ex) -> e __e ex
.then () => .then () =>
@copy ("#{meta.root}/#{v}" for v in meta.copies), "#{meta.root}/build/debug" @copy ("#{meta.root}/#{v}" for v in meta.copies), "#{meta.root}/build/debug"
.then () -> resolve() .then () -> resolve()
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
run: (meta) -> run: (meta) ->
"#{meta.root}/build/debug/package.json" "#{meta.root}/build/debug/package.json"

View File

@ -78,23 +78,23 @@ class App.extensions.ExtensionMaker extends App.BaseExtension
CoffeeScript.nodes data CoffeeScript.nodes data
@verify list @verify list
.then () -> resolve() .then () -> resolve()
.catch (e) -> reject e .catch (e) -> reject __e e
catch ex catch ex
reject ex reject __e ex
.catch (e) -> reject e .catch (e) -> reject __e e
compile: (meta) -> compile: (meta) ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
@import("#{@basedir()}/coffeescript.js").then () => @import(["#{@basedir()}/coffeescript.js"]).then () =>
list = ("#{meta.root}/#{v}" for v in meta.coffees) list = ("#{meta.root}/#{v}" for v in meta.coffees)
@verify((f for f in list)).then () => @verify((f for f in list)).then () =>
@cat(list).then (code) => @cat(list).then (code) =>
jsrc = CoffeeScript.compile code jsrc = CoffeeScript.compile code
@notify __("Compiled successful") @notify __("Compiled successful")
resolve jsrc resolve jsrc
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
build: (meta) -> build: (meta) ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
@ -108,7 +108,7 @@ class App.extensions.ExtensionMaker extends App.BaseExtension
.write("text/plain") .write("text/plain")
.then (d) -> .then (d) ->
r() r()
.catch (ex) -> e ex .catch (ex) -> e __e ex
.then () -> .then () ->
new Promise (r, e) -> new Promise (r, e) ->
"#{meta.root}/build/debug/extension.json" "#{meta.root}/build/debug/extension.json"
@ -117,12 +117,12 @@ class App.extensions.ExtensionMaker extends App.BaseExtension
.write("object") .write("object")
.then (data) -> .then (data) ->
r data r data
.catch (ex) -> e ex .catch (ex) -> e __e ex
.then () => .then () =>
@copy ("#{meta.root}/#{v}" for v in meta.copies), "#{meta.root}/build/debug" @copy ("#{meta.root}/#{v}" for v in meta.copies), "#{meta.root}/build/debug"
.then () -> resolve() .then () -> resolve()
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
run: (meta) -> run: (meta) ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
@ -142,7 +142,7 @@ class App.extensions.ExtensionMaker extends App.BaseExtension
@app.loadAndRunExtensionAction e.data.item.get "data" @app.loadAndRunExtensionAction e.data.item.get "data"
@app.spotlight.run @app @app.spotlight.run @app
resolve() resolve()
.catch (e) -> reject e .catch (e) -> reject __e e
installExtension: (files, zip) -> installExtension: (files, zip) ->
@ -155,8 +155,8 @@ class App.extensions.ExtensionMaker extends App.BaseExtension
meta = JSON.parse(new TextDecoder("utf-8").decode(d)) meta = JSON.parse(new TextDecoder("utf-8").decode(d))
@installFiles files, zip, meta @installFiles files, zip, meta
.then () -> resolve() .then () -> resolve()
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
installFiles: (files, zip, meta) -> installFiles: (files, zip, meta) ->
return @installMeta(meta) if files.length is 0 return @installMeta(meta) if files.length is 0
@ -170,9 +170,9 @@ class App.extensions.ExtensionMaker extends App.BaseExtension
return reject r.error if r.error return reject r.error if r.error
@installFiles files, zip, meta @installFiles files, zip, meta
.then () -> resolve() .then () -> resolve()
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
installMeta: (meta) -> installMeta: (meta) ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
@ -185,12 +185,12 @@ class App.extensions.ExtensionMaker extends App.BaseExtension
file.setCache data file.setCache data
.write("object") .write("object")
.then () -> resolve() .then () -> resolve()
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
installZip: (path) -> installZip: (path) ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
@import("os://scripts/jszip.min.js").then () => @import(["os://scripts/jszip.min.js"]).then () =>
path.asFileHandle().read("binary").then (data) => path.asFileHandle().read("binary").then (data) =>
JSZip.loadAsync(data).then (zip) => JSZip.loadAsync(data).then (zip) =>
pth = @basedir() pth = @basedir()
@ -206,12 +206,12 @@ class App.extensions.ExtensionMaker extends App.BaseExtension
.then () => .then () =>
@installExtension files, zip @installExtension files, zip
.then () -> resolve() .then () -> resolve()
.catch(e) -> reject(e) .catch(e) -> reject(__e e)
.catch (e) -> reject e .catch (e) -> reject __e e
else else
@installExtension files, zip @installExtension files, zip
.then () -> resolve() .then () -> resolve()
.catch (e) -> reject(e) .catch (e) -> reject(__e e)
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e

File diff suppressed because one or more lines are too long

View File

@ -27,7 +27,7 @@ class CodePad extends this.OS.GUI.BaseApplication
dir.read().then (d) -> dir.read().then (d) ->
return reject d.error if d.error return reject d.error if d.error
resolve d.result resolve d.result
.catch (e) -> reject e .catch (e) -> reject __e e
@setup() @setup()
setup: () -> setup: () ->

View File

@ -93,7 +93,7 @@ class Files extends this.OS.GUI.BaseApplication
@currdir = dir @currdir = dir
($ @navinput).val dir.path ($ @navinput).val dir.path
resolve d.result resolve d.result
.catch (e) -> reject e .catch (e) -> reject __e e
@vfs_event_flag = true @vfs_event_flag = true
@view.set "ondragndrop", (e) => @view.set "ondragndrop", (e) =>

View File

@ -211,8 +211,8 @@ class MarketPlace extends this.OS.GUI.BaseApplication
.then (data) => .then (data) =>
@install data, app @install data, app
.then (n) -> resolve(n) .then (n) -> resolve(n)
.catch (e) -> reject(e) .catch (e) -> reject(__e e)
.catch (e) -> reject e .catch (e) -> reject __e e
localInstall: () -> localInstall: () ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
@ -230,9 +230,9 @@ class MarketPlace extends this.OS.GUI.BaseApplication
if idx >= 0 if idx >= 0
@applist.set "selected", idx @applist.set "selected", idx
resolve(n) resolve(n)
.catch (e) -> reject(e) .catch (e) -> reject(__e e)
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
install: (data, meta) -> install: (data, meta) ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
@ -271,10 +271,10 @@ class MarketPlace extends this.OS.GUI.BaseApplication
@systemsetting.system.packages[v.app] = v @systemsetting.system.packages[v.app] = v
@appDetail app_meta @appDetail app_meta
resolve(v.name) resolve(v.name)
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (err) -> reject err .catch (err) -> reject __e err
.catch (e) -> reject e .catch (e) -> reject __e e
uninstall: () -> uninstall: () ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
@ -307,16 +307,16 @@ class MarketPlace extends this.OS.GUI.BaseApplication
@applist.remove el @applist.remove el
($ @container).css "visibility", "hidden" ($ @container).css "visibility", "hidden"
resolve() resolve()
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
updatePackage: () -> updatePackage: () ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
@uninstall().then () => @uninstall().then () =>
@remoteInstall() @remoteInstall()
.then () -> resolve() .then () -> resolve()
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
mkdirs: (list) -> mkdirs: (list) ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
@ -329,8 +329,8 @@ class MarketPlace extends this.OS.GUI.BaseApplication
return reject(@_api.throwe __("Cannot create {0}", "#{path}/#{dir}")) if r.error return reject(@_api.throwe __("Cannot create {0}", "#{path}/#{dir}")) if r.error
@mkdirs list @mkdirs list
.then () -> resolve() .then () -> resolve()
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
installFile: (n, zip, files) -> installFile: (n, zip, files) ->
new Promise (resolve, reject) => new Promise (resolve, reject) =>
@ -345,9 +345,9 @@ class MarketPlace extends this.OS.GUI.BaseApplication
return reject @_api.throwe(__("Cannot install {0}", path)) if r.error return reject @_api.throwe(__("Cannot install {0}", path)) if r.error
@installFile n, zip, files @installFile n, zip, files
.then () -> resolve() .then () -> resolve()
.catch (e) -> reject() .catch (e) -> reject( __e e)
.catch (e) -> reject e .catch (e) -> reject __e e
.catch (e) -> reject e .catch (e) -> reject __e e
MarketPlace.dependencies = [ MarketPlace.dependencies = [
"os://scripts/jszip.min.js", "os://scripts/jszip.min.js",

View File

@ -1,8 +1,8 @@
afx-resizer.vertical { afx-resizer.vertical {
background-color: transparent; background-color: transparent;
border-top: 1px solid #868686; border-top: 1px solid #cbcbcb;
} }
afx-resizer.horizontal { afx-resizer.horizontal {
background-color: transparent; background-color: transparent;
border-left: 1px solid #868686; border-left: 1px solid #cbcbcb;
} }