still in werks

This commit is contained in:
Daniel Hübleitner
2019-08-26 22:37:48 +02:00
parent c21f5fea07
commit 7796061939
+24 -13
View File
@@ -23,13 +23,31 @@ Logger.configure({
})
const logger = Logger.getLogger("admin/updatemanager")
/*
cool snibbet
const SharedStatus = <Status>
(privateStatus: Status) =>
(name: string) =>
(installed: boolean) =>
(outdated: boolean) =>
{
return {
name: name,
installed: installed,
outdated: outdated,
...privateStatus
}
}
*/
type SharedStatus = {
name: string
installed: boolean
outdated: boolean
}
abstract class Extension<Status extends SharedStatus>{
abstract class Extension<Status>{
constructor(
protected name: string
){}
@@ -116,15 +134,14 @@ export abstract class FSExtension extends Extension<FSStatus>{
}
}
type NpmExtensionStatus = SharedStatus & {
type NPMStatus = FSStatus & {
version?: string,
wanted?: string,
latest?: string,
name: string,
location: string,
}
export class NPMExtension extends Extension<NpmExtensionStatus>{
export class NPMExtension extends FSExtension<NPMStatus>{
constructor(
@@ -134,13 +151,7 @@ export class NPMExtension extends Extension<NpmExtensionStatus>{
super(name)
}
public async status(): Promise<NpmExtensionStatus> {
try {
await fs.access(this.localPrefix);
}
catch (e) {
return { exists: false, empty: true, name: this.name, location: this.localPrefix };
}
public async status(): Promise<NPMStatus> {
const files = await fs.readdir(this.localPrefix)
const empty: boolean = files.length === 0
@@ -197,7 +208,7 @@ export class NPMExtension extends Extension<NpmExtensionStatus>{
}
}
public async isOutdated(): Promise<boolean> {
public async isOutdated(): Promise<boolean> { //TODO
logger.info("npm outdated", path.resolve(this.localPrefix, this.name))
const { error, stdout, stderr } = await exec('npm list --prefix '+ this.localPrefix + ' --depth=0 | grep ' + this.name)
if (error !== null) {
@@ -210,7 +221,7 @@ export class NPMExtension extends Extension<NpmExtensionStatus>{
}
isInstalled(): Promise<boolean> {
throw new Error("Method not implemented.");
throw new Error("Method not implemented."); //TODO
}
}