pinokiod 3.19.4 → 3.19.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/kernel/bin/cli.js CHANGED
@@ -2,7 +2,7 @@ const path = require('path')
2
2
  class CLI {
3
3
  async install(req, ondata) {
4
4
  await this.kernel.exec({
5
- message: "npm install -g pinokio-cli@latest",
5
+ message: "npm install -g pterm@latest --force",
6
6
  }, ondata)
7
7
  }
8
8
  async installed(req, ondata) {
@@ -11,7 +11,7 @@ class CLI {
11
11
  let res = await this.kernel.exec({
12
12
  message: "pinokio version"
13
13
  }, ondata)
14
- if (/.*v0\.0\.4.*/.test(res.stdout)) {
14
+ if (/.*v0\.0\.5.*/.test(res.stdout)) {
15
15
  console.log("Installed")
16
16
  return true
17
17
  } else {
@@ -24,7 +24,7 @@ class CLI {
24
24
  }
25
25
  async uninstall(req, ondata) {
26
26
  await this.kernel.exec({
27
- message: "npm uninstall -g pinokio-cli",
27
+ message: "npm uninstall -g pterm",
28
28
  }, ondata)
29
29
  }
30
30
  }
@@ -630,35 +630,38 @@ class Bin {
630
630
  return res
631
631
  }
632
632
  }
633
- async init_launcher(req, ondata) {
634
- console.log("init_launcher", req)
635
- try {
636
- let projectType = req.params.projectType
637
- let startType = req.params.cliType || req.params.startType
638
- console.log({ projectType, startType })
639
-
640
- let cwd = req.cwd
641
- let name = req.name
642
- let payload = {}
643
- payload.cwd = path.resolve(cwd, name)
644
- payload.input = req.params
645
-
646
- let mod_path = path.resolve(__dirname, "../proto", projectType, startType)
647
- let mod = await this.kernel.require(mod_path)
648
-
649
- await mod(payload, ondata, this.kernel)
650
-
651
- // copy readme
652
- let readme_path = path.resolve(__dirname, "../proto/PINOKIO.md")
653
- console.log("copy to", readme_path, path.resolve(cwd, name, "PINOKIO.md"))
654
- await fs.promises.cp(readme_path, path.resolve(cwd, name, "PINOKIO.md"))
655
-
656
- return { success: "/p/" + name }
657
- } catch (e) {
658
- console.log("ERROR", e)
659
- return { error: e.stack }
660
- }
661
- }
633
+ // async init_launcher(req, ondata) {
634
+ // console.log("init_launcher", req)
635
+ // try {
636
+ // let projectType = req.params.projectType
637
+ // let startType = req.params.cliType || req.params.startType
638
+ // console.log({ projectType, startType })
639
+ //
640
+ // let cwd = req.cwd
641
+ // let name = req.name
642
+ // let payload = {}
643
+ // payload.cwd = path.resolve(cwd, name)
644
+ // payload.input = req.params
645
+ //
646
+ // let mod_path = path.resolve(__dirname, "../proto", projectType, startType)
647
+ // let mod = await this.kernel.require(mod_path)
648
+ //
649
+ // await mod(payload, ondata, this.kernel)
650
+ //
651
+ // // copy readme
652
+ // let readme_path = path.resolve(__dirname, "../proto/PINOKIO.md")
653
+ // console.log("copy to", readme_path, path.resolve(cwd, name, "PINOKIO.md"))
654
+ // await fs.promises.cp(readme_path, path.resolve(cwd, name, "PINOKIO.md"))
655
+ //
656
+ // // copy CLI.md
657
+ // let cli_readme_path =
658
+ //
659
+ // return { success: "/p/" + name }
660
+ // } catch (e) {
661
+ // console.log("ERROR", e)
662
+ // return { error: e.stack }
663
+ // }
664
+ // }
662
665
  async filepicker(req, ondata) {
663
666
  let res = await Util.filepicker(req, ondata, this.kernel)
664
667
  return res
@@ -761,6 +764,7 @@ class Bin {
761
764
  async check_installed(r, dependencies) {
762
765
  if (Array.isArray(r.name)) {
763
766
  for(let name of r.name) {
767
+ let d = Date.now()
764
768
  let installed = await this._installed(name, r.type, dependencies)
765
769
  if (!installed) return false
766
770
  }
@@ -773,13 +777,10 @@ class Bin {
773
777
  async _installed(name, type, dependencies) {
774
778
  if (type === "conda") {
775
779
  let conda_installed = this.installed.conda.has(name)
776
- console.log({ dependencies })
777
780
  let dependencies_installed = true
778
781
  for(let d of dependencies) {
779
- console.log("checking dependency", d)
780
782
  if(!this.installed.conda.has(d)) {
781
783
  dependencies_installed = false
782
- console.log("not installed", d)
783
784
  break
784
785
  }
785
786
  }
@@ -793,10 +794,20 @@ class Bin {
793
794
  let filepath = path.resolve(__dirname, "..", "kernel", "bin", name + ".js")
794
795
  let mod = this.mod[name]
795
796
  let installed = false
796
- if (mod.installed) {
797
- installed = await mod.installed()
797
+ if (!this.cached_mod_installed) {
798
+ this.cached_mod_installed = {}
799
+ }
800
+ if (this.cached_mod_installed[name] === true) {
801
+ return true
802
+ } else {
803
+ if (mod.installed) {
804
+ installed = await mod.installed()
805
+ if (installed) {
806
+ this.cached_mod_installed[name] = true
807
+ }
808
+ }
809
+ return installed
798
810
  }
799
- return installed
800
811
  }
801
812
  }
802
813
  preset(mode) {
@@ -979,13 +990,11 @@ class Bin {
979
990
  let install_required = true
980
991
  if (!requirements_pending) {
981
992
  install_required = false
982
- console.log("requirements", requirements)
983
993
  for(let i=0; i<requirements.length; i++) {
984
994
  let r = requirements[i]
985
995
  let fingerprint = JSON.stringify(r)
986
996
  let installed
987
997
  if (this.requirements_cache[fingerprint]) {
988
- console.log("USE CACHED", fingerprint)
989
998
  installed = true
990
999
  requirements[i].installed = true
991
1000
  } else {
package/kernel/index.js CHANGED
@@ -277,7 +277,8 @@ class Kernel {
277
277
  return installed
278
278
  }
279
279
  async network_running() {
280
- let installed = await this.network_installed()
280
+ let installed = true
281
+ // let installed = await this.network_installed()
281
282
  if (installed) {
282
283
  try {
283
284
  await axios.get(`http://127.0.0.1:2019/config/`, { timeout: 1000 });
@@ -782,7 +783,9 @@ class Kernel {
782
783
  this.bin.init().then(() => {
783
784
  if (this.homedir) {
784
785
  this.shell.init().then(async () => {
785
- // this.bin.check()
786
+ this.bin.check({
787
+ bin: this.bin.preset("ai"),
788
+ })
786
789
  if (this.envs) {
787
790
  this.template.update({
788
791
  env: this.envs,
@@ -24,6 +24,9 @@ class Proto {
24
24
  }, (e) => {
25
25
  process.stdout.write(e.raw)
26
26
  })
27
+ }
28
+ let exists2 = await this.kernel.exists("prototype/PINOKIO.md")
29
+ if (!exists2) {
27
30
  await this.kernel.download({
28
31
  uri: "https://raw.githubusercontent.com/pinokiocomputer/home/refs/heads/main/docs/README.md",
29
32
  path: this.kernel.path("prototype"),
@@ -32,6 +35,16 @@ class Proto {
32
35
  process.stdout.write(e.raw)
33
36
  })
34
37
  }
38
+ let exists3 = await this.kernel.exists("prototype/CLI.md")
39
+ if (!exists3) {
40
+ await this.kernel.download({
41
+ uri: "https://raw.githubusercontent.com/pinokiocomputer/pterm/refs/heads/main/README.md",
42
+ path: this.kernel.path("prototype"),
43
+ filename: "CLI.md"
44
+ }, (e) => {
45
+ process.stdout.write(e.raw)
46
+ })
47
+ }
35
48
  }
36
49
  }
37
50
  async reset() {
@@ -59,6 +72,11 @@ class Proto {
59
72
  let readme_path = this.kernel.path("prototype/PINOKIO.md")
60
73
  await fs.promises.cp(readme_path, path.resolve(cwd, name, "PINOKIO.md"))
61
74
 
75
+ // copy cli.md
76
+ let cli_readme_path = this.kernel.path("prototype/CLI.md")
77
+ await fs.promises.cp(cli_readme_path, path.resolve(cwd, name, "CLI.md"))
78
+
79
+
62
80
  return { success: "/p/" + name }
63
81
  } catch (e) {
64
82
  console.log("ERROR", e)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pinokiod",
3
- "version": "3.19.4",
3
+ "version": "3.19.5",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/server/index.js CHANGED
@@ -366,10 +366,6 @@ class Server {
366
366
  }
367
367
 
368
368
  async chrome(req, res, type) {
369
- let d = "Request " + Date.now()
370
- console.time(d)
371
-
372
- console.time("bin check " + d)
373
369
  let { requirements, install_required, requirements_pending, error } = await this.kernel.bin.check({
374
370
  bin: this.kernel.bin.preset("dev"),
375
371
  })
@@ -377,7 +373,6 @@ class Server {
377
373
  res.redirect(`/setup/dev?callback=${req.originalUrl}`)
378
374
  return
379
375
  }
380
- console.timeEnd("bin check " + d)
381
376
 
382
377
  let name = req.params.name
383
378
  let config = await this.kernel.api.meta(name)
@@ -530,7 +525,6 @@ class Server {
530
525
 
531
526
  let c = this.kernel.path("api", name)
532
527
 
533
- let repos = await this.kernel.git.repos(c)
534
528
  await this.kernel.plugin.init()
535
529
  let plugin = await this.getPlugin(name)
536
530
  let plugin_menu = null
@@ -543,7 +537,7 @@ class Server {
543
537
  let current_urls = await this.current_urls(req.originalUrl.slice(1))
544
538
 
545
539
  const result = {
546
- repos,
540
+ // repos,
547
541
  current_urls,
548
542
  path: this.kernel.path("api", name),
549
543
  plugin_menu,
@@ -559,6 +553,7 @@ class Server {
559
553
  running:this.kernel.api.running,
560
554
  memory: this.kernel.memory,
561
555
  sidebar: "/pinokio/sidebar/" + name,
556
+ repos: "/pinokio/repos/" + name,
562
557
  dynamic: "/pinokio/dynamic/" + name,
563
558
  // dynamic: "/pinokio/dynamic/" + name,
564
559
  dynamic_content: null,
@@ -579,7 +574,6 @@ class Server {
579
574
  if (!this.kernel.proto.config) {
580
575
  await this.kernel.proto.init()
581
576
  }
582
- console.timeEnd(d)
583
577
  res.render("app", result)
584
578
  }
585
579
  getVariationUrls(req) {
@@ -2468,7 +2462,6 @@ class Server {
2468
2462
  }
2469
2463
  }
2470
2464
  async getPlugin(name) {
2471
- console.log("getPlugin", name)
2472
2465
  if (this.kernel.plugin.config) {
2473
2466
  try {
2474
2467
  let info = new Info(this.kernel)
@@ -2494,7 +2487,6 @@ class Server {
2494
2487
  }
2495
2488
  }
2496
2489
  async check_router_up() {
2497
- console.log("/check_router_up")
2498
2490
  // check if caddy is runnign properly
2499
2491
  // try https://pinokio.localhost
2500
2492
  // if it works, proceed
@@ -2509,9 +2501,9 @@ class Server {
2509
2501
  https_running = true
2510
2502
  }
2511
2503
  } catch (e) {
2512
- console.log(e)
2504
+ // console.log(e)
2513
2505
  }
2514
- console.log({ https_running })
2506
+ // console.log({ https_running })
2515
2507
  if (!https_running) {
2516
2508
  return { error: "pinokio.host not yet available" }
2517
2509
  }
@@ -4608,6 +4600,17 @@ class Server {
4608
4600
  }
4609
4601
  res.send(html)
4610
4602
  }))
4603
+ this.app.get("/pinokio/repos/:name", ex(async (req, res) => {
4604
+ // await this.kernel.plugin.init()
4605
+ let c = this.kernel.path("api", req.params.name)
4606
+ let repos = await this.kernel.git.repos(c)
4607
+ let html = await new Promise((resolve, reject) => {
4608
+ ejs.renderFile(path.resolve(__dirname, "views/partials/repos.ejs"), { repos }, (err, html) => {
4609
+ resolve(html)
4610
+ })
4611
+ })
4612
+ res.send(html)
4613
+ }))
4611
4614
  this.app.get("/pinokio/sidebar/:name", ex(async (req, res) => {
4612
4615
  let name = req.params.name
4613
4616
  let app_path = this.kernel.path("api", name, "pinokio.js")
@@ -5221,7 +5224,6 @@ class Server {
5221
5224
  if (this.kernel.peer.active) {
5222
5225
  // if network is active, return success only if the router is up for all of its peers (including itself)
5223
5226
  console.log({ peer_info: this.kernel.peer.info })
5224
- console.time("check_peer")
5225
5227
  let ready = true
5226
5228
  if (this.kernel.peer.info && Object.keys(this.kernel.peer.info).length > 0) {
5227
5229
  for(let host in this.kernel.peer.info) {
@@ -5237,7 +5239,6 @@ class Server {
5237
5239
  ready = false;
5238
5240
  }
5239
5241
  console.log({ info: this.kernel.peer.info, ready })
5240
- console.timeEnd("check_peer")
5241
5242
  if (ready) {
5242
5243
  res.json({ success: true })
5243
5244
  } else {
@@ -873,12 +873,7 @@ body.dark .appcanvas {
873
873
  <div class='tab'><i class="fa-solid fa-cloud"></i> Git</div>
874
874
  <div class='loader'><i class="fa-solid fa-angle-down"></i><i class="fa-solid fa-angle-up hidden"></i></div>
875
875
  </div>
876
- <div class='submenu'>
877
- <% repos.forEach((git, index) => { %>
878
- <a target="/git/<%=git.gitParentRelPath%>" href="/git/<%=git.gitParentRelPath%>" class='btn header-item frame-link' data-index="<%=index%>" data-mode="refresh">
879
- <div class='tab'><i class="fa-regular fa-folder-open"></i> <%=git.gitRelPath%></div>
880
- </a>
881
- <% }) %>
876
+ <div class='submenu' id='git-repos'>
882
877
  </div>
883
878
  </div>
884
879
  <% } %>
@@ -1933,6 +1928,14 @@ body.dark .appcanvas {
1933
1928
  document.querySelector(".dynamic").innerHTML = dynamic
1934
1929
  }
1935
1930
 
1931
+
1932
+ const repos = await fetch("<%=repos%>").then((res) => {
1933
+ return res.text()
1934
+ })
1935
+ if (document.querySelector("#git-repos")) {
1936
+ document.querySelector("#git-repos").innerHTML = repos
1937
+ }
1938
+
1936
1939
  location.hash = ""
1937
1940
 
1938
1941
  // render the selected frame only if not silent
@@ -2042,6 +2045,14 @@ body.dark .appcanvas {
2042
2045
  });
2043
2046
  refresh_du()
2044
2047
  <% if (type !== 'run') { %>
2048
+ debugger
2049
+ fetch("<%=repos%>").then((res) => {
2050
+ return res.text()
2051
+ }).then((repos) => {
2052
+ if (document.querySelector("#git-repos")) {
2053
+ document.querySelector("#git-repos").innerHTML = repos
2054
+ }
2055
+ })
2045
2056
  if (document.querySelector(".dynamic .reveal")) {
2046
2057
  document.querySelector(".dynamic .reveal").click()
2047
2058
  }
@@ -115,11 +115,12 @@ main h3 {
115
115
  <nav>
116
116
  <% if (remote) { %>
117
117
  <a href="/run/scripts/git/push.json?cwd=<%=encodeURIComponent(dir)%>" class='btn'><i class="fa-brands fa-github"></i> Publish to GitHub</a>
118
+ <a href="/run/scripts/git/commit.json?cwd=<%=encodeURIComponent(dir)%>" class='btn'><i class="fa-solid fa-floppy-disk"></i> Commit (Save the current version)</a>
118
119
  <a href="<%=remote%>" target="_blank"><%=remote%></a>
119
120
  <% } else { %>
120
121
  <a href="/run/scripts/git/create.json?cwd=<%=encodeURIComponent(dir)%>" class='btn'><i class="fa-brands fa-github"></i> Create on GitHub</a>
122
+ <a href="/run/scripts/git/commit.json?cwd=<%=encodeURIComponent(dir)%>" class='btn'><i class="fa-solid fa-floppy-disk"></i> Commit (Save the current version)</a>
121
123
  <% } %>
122
- <a href="/run/scripts/git/commit.json?cwd=<%=encodeURIComponent(dir)%>" class='btn'><i class="fa-solid fa-floppy-disk"></i> Commit (Save the current version)</a>
123
124
  </nav>
124
125
  <main>
125
126
  <h2>Changed Files</h2>
@@ -0,0 +1,5 @@
1
+ <% repos.forEach((git, index) => { %>
2
+ <a target="/git/<%=git.gitParentRelPath%>" href="/git/<%=git.gitParentRelPath%>" class='btn header-item frame-link' data-index="<%=index%>" data-mode="refresh">
3
+ <div class='tab'><i class="fa-regular fa-folder-open"></i> <%=git.gitRelPath%></div>
4
+ </a>
5
+ <% }) %>