nix store log
This commit is contained in:
parent
5d0e5f7f1c
commit
0d140e58ca
13 changed files with 81 additions and 46 deletions
|
@ -13,6 +13,8 @@ declare global {
|
||||||
isEmpty(): boolean;
|
isEmpty(): boolean;
|
||||||
isNotEmpty(): boolean;
|
isNotEmpty(): boolean;
|
||||||
lastElement(): string;
|
lastElement(): string;
|
||||||
|
hasPattern(pattern: string): boolean;
|
||||||
|
hasNoPattern(pattern: string): boolean;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
export const extensions = () => {
|
export const extensions = () => {
|
||||||
|
|
|
@ -16,4 +16,14 @@ export const StringExtensions = () => {
|
||||||
return this[this.length - 1];
|
return this[this.length - 1];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
if ("".hasPattern === undefined) {
|
||||||
|
String.prototype.hasPattern = function (pattern) {
|
||||||
|
return new RegExp(pattern).test(this);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
if ("".hasNoPattern === undefined) {
|
||||||
|
String.prototype.hasNoPattern = function (pattern) {
|
||||||
|
return !this.hasPattern(pattern);
|
||||||
|
};
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -5,7 +5,7 @@ export interface Routes {
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IRouteModel {
|
export interface IRouteModel {
|
||||||
validationModel: any;
|
validationModel?: any;
|
||||||
url: string;
|
url: string;
|
||||||
databaseModel: any;
|
databaseModel?: any;
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ export class ExecutorProgramService
|
||||||
|
|
||||||
private async workerExecuted(command: string, workerType: WorkerType, args: Array<string> | undefined = undefined) {
|
private async workerExecuted(command: string, workerType: WorkerType, args: Array<string> | undefined = undefined) {
|
||||||
cluster.setupPrimary({
|
cluster.setupPrimary({
|
||||||
exec: "./src/core/helper/worker_computed",
|
exec: "/Users/idontsudo/Desktop/testdeck-mocha-seed/server/build/src/core/helpers/worker_computed.js",
|
||||||
});
|
});
|
||||||
|
|
||||||
const worker = cluster.fork();
|
const worker = cluster.fork();
|
||||||
|
|
|
@ -55,13 +55,13 @@ export class StackService extends TypedEvent<Iteration[]> implements IStackServi
|
||||||
}
|
}
|
||||||
async execStack(stackNumber: number, stackLayer: Iteration): Promise<void | boolean> {
|
async execStack(stackNumber: number, stackLayer: Iteration): Promise<void | boolean> {
|
||||||
const executorService = new ExecutorProgramService(this.path);
|
const executorService = new ExecutorProgramService(this.path);
|
||||||
|
|
||||||
executorService.call(stackLayer.process.process.type, stackLayer.process.process.command);
|
executorService.call(stackLayer.process.process.type, stackLayer.process.process.command);
|
||||||
|
|
||||||
const filesChangeNotifierService = new FilesChangeNotifierService(this.path);
|
const filesChangeNotifierService = new FilesChangeNotifierService(this.path);
|
||||||
|
|
||||||
filesChangeNotifierService.call();
|
filesChangeNotifierService.call();
|
||||||
const result = await this.waitEvent<Result<ExecError | SpawnError, ExecutorResult>>(executorService);
|
const result = await this.waitEvent<Result<ExecError | SpawnError, ExecutorResult>>(executorService);
|
||||||
|
console.log(200);
|
||||||
await delay(100);
|
await delay(100);
|
||||||
if (result.isSuccess()) {
|
if (result.isSuccess()) {
|
||||||
this.callStack[stackNumber].result = result.value;
|
this.callStack[stackNumber].result = result.value;
|
||||||
|
|
58
server/src/features/nix_store_manager/nix_store_manager.ts
Normal file
58
server/src/features/nix_store_manager/nix_store_manager.ts
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
import { CallbackStrategyWithEmpty, CoreHttpController } from "../../core/controllers/http_controller";
|
||||||
|
import { Result } from "../../core/helpers/result";
|
||||||
|
import { EXEC_TYPE } from "../../core/models/exec_error_model";
|
||||||
|
import { ExecutorResult } from "../../core/models/executor_result";
|
||||||
|
import { IPipeline, IssueType, StackGenerateType } from "../../core/models/process_model";
|
||||||
|
import { StackService } from "../../core/services/stack_service";
|
||||||
|
import { TriggerType } from "../triggers/models/trigger_database_model";
|
||||||
|
|
||||||
|
class NixStoreModel {}
|
||||||
|
|
||||||
|
const getNixStoreFolderCommand: IPipeline[] = [
|
||||||
|
{
|
||||||
|
process: {
|
||||||
|
type: EXEC_TYPE.EXEC,
|
||||||
|
command: `ls /nix/store`,
|
||||||
|
isGenerating: true,
|
||||||
|
isLocaleCode: false,
|
||||||
|
issueType: IssueType.WARNING,
|
||||||
|
},
|
||||||
|
trigger: {
|
||||||
|
type: TriggerType.FILE,
|
||||||
|
value: ["context"],
|
||||||
|
},
|
||||||
|
env: null,
|
||||||
|
stackGenerateType: StackGenerateType.SINGLETON,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
class GetNixStorePackagesUseCase extends CallbackStrategyWithEmpty {
|
||||||
|
call = async () => {
|
||||||
|
const stackService = new StackService(
|
||||||
|
getNixStoreFolderCommand,
|
||||||
|
"/Users/idontsudo/Desktop/testdeck-mocha-seed/server/build/test/"
|
||||||
|
);
|
||||||
|
stackService.call();
|
||||||
|
|
||||||
|
const promise = new Promise((resolve, _reject) => {
|
||||||
|
stackService.on((e) => {
|
||||||
|
const iteration = e[0];
|
||||||
|
if (iteration.result instanceof ExecutorResult) {
|
||||||
|
const nixPackage = iteration.result.data;
|
||||||
|
resolve(nixPackage.split("\n").filter((e) => e.hasNoPattern(".drv")));
|
||||||
|
} else {
|
||||||
|
return "GetNixStorePackagesUseCase unknown Error";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
return Result.ok(await promise);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export class NixStoreManagerPresentation extends CoreHttpController<NixStoreModel> {
|
||||||
|
constructor() {
|
||||||
|
super({
|
||||||
|
url: "nix_store_api",
|
||||||
|
});
|
||||||
|
super.get(new GetNixStorePackagesUseCase().call);
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,6 +9,7 @@ import { ProcessPresentation } from "./features/process/process_presentation";
|
||||||
import { RealTimePresentation, pipelineRealTimeService } from "./features/realtime/realtime_presentation";
|
import { RealTimePresentation, pipelineRealTimeService } from "./features/realtime/realtime_presentation";
|
||||||
import { extensions } from "./core/extensions/extensions";
|
import { extensions } from "./core/extensions/extensions";
|
||||||
import { ProjectInstancePresentation } from "./features/project_instance/project_instance_presentation";
|
import { ProjectInstancePresentation } from "./features/project_instance/project_instance_presentation";
|
||||||
|
import { NixStoreManagerPresentation as NixStoreManagerPresentation } from "./features/nix_store_manager/nix_store_manager";
|
||||||
|
|
||||||
extensions();
|
extensions();
|
||||||
|
|
||||||
|
@ -19,6 +20,7 @@ const httpRoutes: Routes[] = [
|
||||||
new PipelinePresentation(),
|
new PipelinePresentation(),
|
||||||
new RealTimePresentation(),
|
new RealTimePresentation(),
|
||||||
new ProjectInstancePresentation(),
|
new ProjectInstancePresentation(),
|
||||||
|
new NixStoreManagerPresentation(),
|
||||||
].map((el) => el.call());
|
].map((el) => el.call());
|
||||||
|
|
||||||
const socketSubscribers = [new SocketSubscriber(pipelineRealTimeService, "realtime")];
|
const socketSubscribers = [new SocketSubscriber(pipelineRealTimeService, "realtime")];
|
||||||
|
|
|
@ -41,25 +41,3 @@ export const mockSimplePipeline: IPipeline[] = [
|
||||||
stackGenerateType: StackGenerateType.SINGLETON,
|
stackGenerateType: StackGenerateType.SINGLETON,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
// const p: IPipeline[] = [
|
|
||||||
// {
|
|
||||||
// process: {
|
|
||||||
// type: EXEC_TYPE.EXEC,
|
|
||||||
// command: `nix run gitlab:robossembler/nix-robossembler-overlay#test-script '{
|
|
||||||
// "filesMeta":[
|
|
||||||
// {"type":"folder","name":"example", "path": null,"rewrite":true}
|
|
||||||
// ],
|
|
||||||
// "path":"$PATH"
|
|
||||||
// }'`,
|
|
||||||
// isGenerating: true,
|
|
||||||
// isLocaleCode: false,
|
|
||||||
// issueType: IssueType.WARNING,
|
|
||||||
// },
|
|
||||||
// trigger: {
|
|
||||||
// type: TriggerType.FILE,
|
|
||||||
// value: ["context"],
|
|
||||||
// },
|
|
||||||
// env: null,
|
|
||||||
// stackGenerateType: StackGenerateType.SINGLETON,
|
|
||||||
// },
|
|
||||||
// ]
|
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
"socket.io-client": "^4.7.2",
|
"socket.io-client": "^4.7.2",
|
||||||
"three": "^0.159.0",
|
"three": "^0.159.0",
|
||||||
"typescript": "^4.9.5",
|
"typescript": "^4.9.5",
|
||||||
|
"urdf-loader": "^0.12.1",
|
||||||
"uuid": "^9.0.0",
|
"uuid": "^9.0.0",
|
||||||
"web-vitals": "^2.1.4"
|
"web-vitals": "^2.1.4"
|
||||||
},
|
},
|
||||||
|
|
|
@ -76,6 +76,7 @@ export class CoreThereRepository {
|
||||||
getObjectsAtName(name: string): Object3D<Object3DEventMap> {
|
getObjectsAtName(name: string): Object3D<Object3DEventMap> {
|
||||||
return this.scene.children.filter((el) => el.name === name)[0];
|
return this.scene.children.filter((el) => el.name === name)[0];
|
||||||
}
|
}
|
||||||
|
loader(urls: string[], callBack: Function) {}
|
||||||
fitCameraToCenteredObject(objects: string[], offset = 4) {
|
fitCameraToCenteredObject(objects: string[], offset = 4) {
|
||||||
// https://wejn.org/2020/12/cracking-the-threejs-object-fitting-nut/
|
// https://wejn.org/2020/12/cracking-the-threejs-object-fitting-nut/
|
||||||
const boundingBox = new Box3().setFromPoints(
|
const boundingBox = new Box3().setFromPoints(
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
import { createBrowserRouter } from "react-router-dom";
|
import { createBrowserRouter } from "react-router-dom";
|
||||||
import {
|
import { AllProjectScreen, AllProjectScreenPath } from "../../features/all_projects/presentation/all_projects_screen";
|
||||||
AllProjectScreen,
|
|
||||||
AllProjectScreenPath,
|
|
||||||
} from "../../features/all_projects/presentation/all_projects_screen";
|
|
||||||
import {
|
import {
|
||||||
PipelineInstanceScreen,
|
PipelineInstanceScreen,
|
||||||
PipelineInstanceScreenPath,
|
PipelineInstanceScreenPath,
|
||||||
|
@ -15,10 +12,7 @@ import {
|
||||||
CreatePipelineScreen,
|
CreatePipelineScreen,
|
||||||
CreatePipelineScreenPath,
|
CreatePipelineScreenPath,
|
||||||
} from "../../features/create_pipeline/presentation/create_pipeline_screen";
|
} from "../../features/create_pipeline/presentation/create_pipeline_screen";
|
||||||
import {
|
import { CreateProjectScreen, CreateProjectScreenPath } from "../../features/create_project/create_project_screen";
|
||||||
CreateProjectScreen,
|
|
||||||
CreateProjectScreenPath,
|
|
||||||
} from "../../features/create_project/create_project_screen";
|
|
||||||
import {
|
import {
|
||||||
CreateTriggerScreenPath,
|
CreateTriggerScreenPath,
|
||||||
TriggerScreen,
|
TriggerScreen,
|
||||||
|
@ -33,7 +27,6 @@ import {
|
||||||
CreateProjectInstanceScreen,
|
CreateProjectInstanceScreen,
|
||||||
} from "../../features/create_project_instance/create_project_instance";
|
} from "../../features/create_project_instance/create_project_instance";
|
||||||
|
|
||||||
|
|
||||||
const idURL = ":id";
|
const idURL = ":id";
|
||||||
|
|
||||||
export const router = createBrowserRouter([
|
export const router = createBrowserRouter([
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
import React from "react";
|
|
||||||
import { render, screen } from "@testing-library/react";
|
|
||||||
import { SceneManger } from "./features/scene_manager/scene_manager";
|
|
||||||
|
|
||||||
test("Content contains var image", () => {
|
|
||||||
render(<SceneManger />);
|
|
||||||
const car = screen;
|
|
||||||
expect(car).toBeInTheDocument();
|
|
||||||
});
|
|
|
@ -15,8 +15,7 @@ const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement)
|
||||||
root.render(
|
root.render(
|
||||||
<>
|
<>
|
||||||
<SocketLister>
|
<SocketLister>
|
||||||
{/* <RouterProvider router={router} /> */}
|
<RouterProvider router={router} />
|
||||||
<SceneManger />
|
|
||||||
</SocketLister>
|
</SocketLister>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue