Files
FanTools/src/my-type/jetbrains-state-tools.ts

46 lines
1.6 KiB
TypeScript

export type JetBrainsProductCode = 'PY' | 'IU' | 'WS' | 'CL' | 'PS'
export interface JetBrainsStateToolDto {
channelId: string
toolId: string
productCode: JetBrainsProductCode
tag: string
displayName: string
displayVersion: string
buildNumber: string
installLocation: string
launchCommand: string
}
export interface JetBrainsStateDto {
version: 1
appVersion: string
tools: JetBrainsStateToolDto[]
}
export enum JetBrainsIDEDisplayNameEnum {
pycharm = 'PyCharm',
idea = 'IntelliJ IDEA',
clion = 'CLion',
phpstorm = 'PhpStorm',
webstorm = 'WebStorm'
}
export function toProductCode(anything: string): JetBrainsProductCode | null {
if ([JetBrainsIDEDisplayNameEnum.pycharm, 'pycharm'].includes(anything)) return 'PY'
if ([JetBrainsIDEDisplayNameEnum.idea, 'idea'].includes(anything)) return 'IU'
if ([JetBrainsIDEDisplayNameEnum.clion, 'clion'].includes(anything)) return 'CL'
if ([JetBrainsIDEDisplayNameEnum.phpstorm, 'phpstorm'].includes(anything)) return 'PS'
if ([JetBrainsIDEDisplayNameEnum.webstorm, 'webstorm'].includes(anything)) return 'WS'
return null
}
export function toProductDisplayName(anything: string): string | null {
if (['PY', 'pycharm'].includes(anything)) return JetBrainsIDEDisplayNameEnum.pycharm
if (['IU', 'idea'].includes(anything)) return JetBrainsIDEDisplayNameEnum.idea
if (['CL', 'clion'].includes(anything)) return JetBrainsIDEDisplayNameEnum.clion
if (['PS', 'phpstorm'].includes(anything)) return JetBrainsIDEDisplayNameEnum.phpstorm
if (['WS', 'webstorm'].includes(anything)) return JetBrainsIDEDisplayNameEnum.webstorm
return null
}