anote

Форк
0
/
Echo.ts 
42 строки · 1.5 Кб
1
import { Keywords } from "../flows/Keywords";
2
import { appendFile, getBuffer, readFile } from "../utils/Util";
3
import { Command } from "./Command";
4

5
export class Echo extends Command {
6
    async execute(): Promise<string | null> {
7
        if(!this.isValid(Keywords.ECHO)) return `Wrong sintax of ${Keywords.ECHO}`;
8
        if(this.isAddable()){
9
            const fileData: string = await this.storage.downloadFromBuffer(this.getFileName());
10
            await this.storage.uploadBuffer(this.getFileName(), fileData + "\n" + this.getValue(), "");
11
            return `${this.getFileName()} is updated`;
12
        }
13
        return this.getValue();
14
    }
15

16
    isValid(keyword: Keywords): boolean {
17
        if(!this.getCurrentText().startsWith(keyword) ||
18
            this.getCurrentText().length < 6 ||
19
            this.getCurrentText().split(" ").length < 1 ||
20
            this.getValue() === null
21
          ) return false;
22
        return true;
23
    }
24

25
    getValue(): string | null {
26
        const matched: string[] | null = this.getTail().match(/(["'])(?:(?=(\\?))\2.)*?\1/);
27
        return matched ? matched[0].slice(1, -1) : null;
28
    }
29

30
    isAddable(): boolean {
31
        return this.getCurrentText().includes(">>");
32
    }
33

34
    getFileName(): string {
35
        return this.getCurrentText().split(">>")[1].trim();
36
    }
37

38
    getFileNameNoPath(): string {
39
        const lastIndex: number = this.getFileName().lastIndexOf("/");
40
        return lastIndex === -1 ? this.getFileName() : this.getFileName().substring(lastIndex, this.getTail().length - 1);
41
    }
42
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.