29 lines
803 B
TypeScript
29 lines
803 B
TypeScript
import { Item } from '../fs/Item'
|
|
import type { SimpleStream } from '../utils/SimpleStream'
|
|
import { Program } from './Program'
|
|
|
|
export class Cat extends Program {
|
|
constructor() {
|
|
super()
|
|
}
|
|
|
|
async Exec(_: SimpleStream<string>, stdout: SimpleStream<string>, __: Item, args: string[]): Promise<number> {
|
|
let item: Item = await Item.open(args[1])
|
|
|
|
if (!(await item.Exists())) {
|
|
stdout.emit(`cat: error: item ${item.GetPath()} doesn't exist.\n`)
|
|
return 1
|
|
}
|
|
|
|
if (item.IsDirectory()) {
|
|
stdout.emit(`cat: error: can't read data from a directory; item ${item.GetPath()} is a directory.\n`)
|
|
return 2
|
|
}
|
|
|
|
stdout.emit(`${item.ReadData()}`)
|
|
stdout.emit('[ EOF ]\n')
|
|
|
|
return 0
|
|
}
|
|
}
|