DEV: Upgrade routes
This commit is contained in:
parent
00e19a30df
commit
61ff8e52b1
|
|
@ -1,34 +1,34 @@
|
|||
import Repo from "discourse/plugins/docker_manager/discourse/models/repo";
|
||||
import Route from "@ember/routing/route";
|
||||
|
||||
export default Route.extend({
|
||||
export default class UpgradeIndex extends Route {
|
||||
model() {
|
||||
return Repo.findAll();
|
||||
},
|
||||
}
|
||||
|
||||
loadRepos(list) {
|
||||
async loadRepos(list) {
|
||||
if (list.length === 0) {
|
||||
return;
|
||||
}
|
||||
this.loadRepo(list.shift()).then(() => this.loadRepos(list));
|
||||
},
|
||||
|
||||
loadRepo(repo) {
|
||||
return repo.findLatest();
|
||||
},
|
||||
await list.shift().findLatest();
|
||||
|
||||
this.loadRepos(list);
|
||||
}
|
||||
|
||||
setupController(controller, model) {
|
||||
const upgradeController = this.controllerFor("upgrade");
|
||||
controller.setProperties({ model, upgrading: null });
|
||||
controller.model = model;
|
||||
controller.upgrading = null;
|
||||
|
||||
model.forEach((repo) => {
|
||||
if (repo.upgrading) {
|
||||
controller.set("upgrading", repo);
|
||||
controller.upgrading = repo;
|
||||
}
|
||||
|
||||
// Special case: Upgrade docker manager first
|
||||
if (repo.id === "docker_manager") {
|
||||
controller.set("managerRepo", repo);
|
||||
controller.managerRepo = repo;
|
||||
}
|
||||
|
||||
// Special case: If the branch is "main" warn user
|
||||
|
|
@ -43,5 +43,5 @@ export default Route.extend({
|
|||
});
|
||||
|
||||
this.loadRepos(model.slice(0));
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
import ProcessList from "discourse/plugins/docker_manager/discourse/models/process-list";
|
||||
import Route from "@ember/routing/route";
|
||||
|
||||
export default Route.extend({
|
||||
export default class UpgradeProcesses extends Route {
|
||||
async model() {
|
||||
const processes = new ProcessList();
|
||||
await processes.refresh();
|
||||
|
||||
return processes;
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,61 +1,59 @@
|
|||
import Repo from "discourse/plugins/docker_manager/discourse/models/repo";
|
||||
import Route from "@ember/routing/route";
|
||||
import { Promise } from "rsvp";
|
||||
import { tracked } from "@glimmer/tracking";
|
||||
|
||||
export default class UpgradeShow extends Route {
|
||||
@tracked progress;
|
||||
|
||||
export default Route.extend({
|
||||
model(params) {
|
||||
if (params.id === "all") {
|
||||
return Repo.findAll();
|
||||
}
|
||||
|
||||
return Repo.find(params.id);
|
||||
},
|
||||
}
|
||||
|
||||
afterModel(model) {
|
||||
async afterModel(model) {
|
||||
if (Array.isArray(model)) {
|
||||
return Repo.findLatestAll().then((response) => {
|
||||
JSON.parse(response).repos.forEach((repoData) => {
|
||||
const repo = model.find((_repo) => _repo.path === repoData.path);
|
||||
if (!repo) {
|
||||
return;
|
||||
}
|
||||
delete repoData.path;
|
||||
const response = await Repo.findLatestAll();
|
||||
|
||||
for (const [key, value] of Object.entries(repoData)) {
|
||||
repo.latest[key] = value;
|
||||
}
|
||||
});
|
||||
for (const repoData of JSON.parse(response).repos) {
|
||||
const repo = model.find((_repo) => _repo.path === repoData.path);
|
||||
if (!repo) {
|
||||
return;
|
||||
}
|
||||
|
||||
return Repo.findAllProgress(
|
||||
model.filter((repo) => !repo.upToDate)
|
||||
).then((progress) => {
|
||||
this.set("progress", JSON.parse(progress).progress);
|
||||
});
|
||||
});
|
||||
delete repoData.path;
|
||||
|
||||
for (const [key, value] of Object.entries(repoData)) {
|
||||
repo.latest[key] = value;
|
||||
}
|
||||
}
|
||||
|
||||
const progress = await Repo.findAllProgress(
|
||||
model.filter((repo) => !repo.upToDate)
|
||||
);
|
||||
|
||||
this.progress = JSON.parse(progress).progress;
|
||||
return;
|
||||
}
|
||||
|
||||
return Repo.findUpgrading().then((u) => {
|
||||
if (u && u !== model) {
|
||||
return Promise.reject("wat");
|
||||
}
|
||||
return model.findLatest().then(() => {
|
||||
return model.findProgress().then((progress) => {
|
||||
this.set("progress", progress);
|
||||
});
|
||||
});
|
||||
});
|
||||
},
|
||||
await Repo.findUpgrading();
|
||||
await model.findLatest();
|
||||
|
||||
const progress = await model.findProgress();
|
||||
this.progress = progress;
|
||||
}
|
||||
|
||||
setupController(controller, model) {
|
||||
controller.reset();
|
||||
controller.setProperties({
|
||||
model: Array.isArray(model) ? model : [model],
|
||||
output: this.get("progress.logs"),
|
||||
percent: this.get("progress.percentage"),
|
||||
});
|
||||
controller.model = Array.isArray(model) ? model : [model];
|
||||
controller.output = this.progress.logs;
|
||||
controller.percent = this.progress.percentage;
|
||||
controller.startBus();
|
||||
},
|
||||
}
|
||||
|
||||
deactivate() {
|
||||
this.controllerFor("upgrade.show").stopBus();
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue