Skip to content
Snippets Groups Projects
Select Git revision
1 result Searching

distro.ts

Blame
    • Gabriel-Ladzaretti's avatar
      974fa7b2
      refactor(versioning/distro-info): for future use in debian and ubuntu versioning (#14880) · 974fa7b2
      Gabriel-Ladzaretti authored
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      distro-info refactor
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      styling
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      distro-info refactor
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      styling
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      use https://debian.pages.debian.net/distro-info-data/ubuntu.csv
      
       as distro info data
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      cr changes and migrated from mjs to ts
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      added a crude way to prevent writing corrupted data
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      lint fixes
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      cr changes and migrated from mjs to ts
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      cr changes
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      dynamically check if stable/released.
      
      22.04 release for example
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      fixed JSON order
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      removed ts.ignore
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      cr changes
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      cr changes
      
      Co-authored-by: default avatarMichael Kriese <michael.kriese@visualon.de>
      974fa7b2
      History
      refactor(versioning/distro-info): for future use in debian and ubuntu versioning (#14880)
      Gabriel-Ladzaretti authored
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      distro-info refactor
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      styling
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      distro-info refactor
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      styling
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      use https://debian.pages.debian.net/distro-info-data/ubuntu.csv
      
       as distro info data
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      cr changes and migrated from mjs to ts
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      added a crude way to prevent writing corrupted data
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      lint fixes
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      cr changes and migrated from mjs to ts
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      cr changes
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      dynamically check if stable/released.
      
      22.04 release for example
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      fixed JSON order
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      removed ts.ignore
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      cr changes
      
      * refactor(tools/distro-info): for later use in ubuntu and debian versioning
      
      cr changes
      
      Co-authored-by: default avatarMichael Kriese <michael.kriese@visualon.de>
    distro.ts 1.63 KiB
    import dataFiles, { DataFile } from '../../data-files.generated';
    
    interface DistroSchedule {
      codename: string;
      series: string;
      created: string;
      release: string;
      eol: string;
      eol_server?: string;
      eol_esm?: string;
      eol_lts?: string;
      eol_elts?: string;
    }
    
    type DistroDataFile = 'data/ubuntu-distro-info.json';
    
    export type DistroInfoRecord = Record<string, DistroSchedule>;
    
    export type DistroInfoRecordWithVersion = { version: string } & DistroSchedule;
    
    export class DistroInfo {
      private readonly _codenameToVersion = new Map<
        string,
        DistroInfoRecordWithVersion
      >();
      private readonly _distroInfo: DistroInfoRecord;
    
      constructor(distroJsonKey: DistroDataFile) {
        this._distroInfo = JSON.parse(
          // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
          dataFiles.get(distroJsonKey as DataFile)!.replace(/v([\d.]+)\b/gm, '$1')
        );
    
        for (const version of Object.keys(this._distroInfo)) {
          const schedule = this._distroInfo[version];
          this._codenameToVersion.set(schedule.series, { version, ...schedule });
        }
      }
    
      public isCodename(input: string): boolean {
        return this._codenameToVersion.has(input);
      }
    
      public getVersionByCodename(input: string): string {
        const schedule = this._codenameToVersion.get(input);
        if (schedule) {
          return schedule.version;
        }
        return input;
      }
    
      public getCodenameByVersion(input: string): string {
        const di = this._distroInfo[input];
        if (di) {
          return di.series;
        }
        // istanbul ignore next
        return input;
      }
    
      public getSchedule(input: string): DistroSchedule {
        return this._distroInfo[input];
      }
    }