argo-cd

Форк
0
58 строк · 1.6 Кб
1
const pattern = /^(.*):([a-zA-Z0-9._-]*)$/;
2

3
export interface Image {
4
    name: string;
5
    newName?: string;
6
    newTag?: string;
7
    digest?: string;
8
}
9

10
function parseOverwrite(arg: string, overwriteImage: boolean): {name: string; digest?: string; tag?: string} {
11
    // match <image>@<digest>
12
    const parts = arg.split('@');
13
    if (parts.length > 1) {
14
        return {name: parts[0], digest: parts[1]};
15
    }
16

17
    // match <image>:<tag>
18
    const groups = pattern.exec(arg);
19
    if (groups && groups.length === 3) {
20
        return {name: groups[1], tag: groups[2]};
21
    }
22

23
    // match <image>
24
    if (arg.length > 0 && overwriteImage) {
25
        return {name: arg};
26
    }
27
    return {name: arg};
28
}
29

30
export function parse(arg: string): Image {
31
    // matches if there is an image name to overwrite
32
    // <image>=<new-image><:|@><new-tag>
33
    const parts = arg.split('=');
34
    if (parts.length === 2) {
35
        const overwrite = parseOverwrite(parts[1], true);
36
        return {
37
            name: parts[0],
38
            newName: overwrite.name,
39
            newTag: overwrite.tag,
40
            digest: overwrite.digest
41
        };
42
    }
43

44
    // matches only for <tag|digest> overwrites
45
    // <image><:|@><new-tag>
46
    const p = parseOverwrite(arg, false);
47
    return {name: p.name, newTag: p.tag, digest: p.digest};
48
}
49

50
export function format(image: Image) {
51
    const imageName = image.newName ? `${image.name}=${image.newName}` : image.name;
52
    if (image.newTag) {
53
        return `${imageName}:${image.newTag}`;
54
    } else if (image.digest) {
55
        return `${imageName}@${image.digest}`;
56
    }
57
    return imageName;
58
}
59

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

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

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

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