mirror of
				https://github.com/actions/checkout.git
				synced 2025-11-01 02:28:40 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			78 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| export class GitVersion {
 | |
|   private readonly major: number = NaN
 | |
|   private readonly minor: number = NaN
 | |
|   private readonly patch: number = NaN
 | |
| 
 | |
|   /**
 | |
|    * Used for comparing the version of git and git-lfs against the minimum required version
 | |
|    * @param version the version string, e.g. 1.2 or 1.2.3
 | |
|    */
 | |
|   constructor(version?: string) {
 | |
|     if (version) {
 | |
|       const match = version.match(/^(\d+)\.(\d+)(\.(\d+))?$/)
 | |
|       if (match) {
 | |
|         this.major = Number(match[1])
 | |
|         this.minor = Number(match[2])
 | |
|         if (match[4]) {
 | |
|           this.patch = Number(match[4])
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Compares the instance against a minimum required version
 | |
|    * @param minimum Minimum version
 | |
|    */
 | |
|   checkMinimum(minimum: GitVersion): boolean {
 | |
|     if (!minimum.isValid()) {
 | |
|       throw new Error('Arg minimum is not a valid version')
 | |
|     }
 | |
| 
 | |
|     // Major is insufficient
 | |
|     if (this.major < minimum.major) {
 | |
|       return false
 | |
|     }
 | |
| 
 | |
|     // Major is equal
 | |
|     if (this.major === minimum.major) {
 | |
|       // Minor is insufficient
 | |
|       if (this.minor < minimum.minor) {
 | |
|         return false
 | |
|       }
 | |
| 
 | |
|       // Minor is equal
 | |
|       if (this.minor === minimum.minor) {
 | |
|         // Patch is insufficient
 | |
|         if (this.patch && this.patch < (minimum.patch || 0)) {
 | |
|           return false
 | |
|         }
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     return true
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Indicates whether the instance was constructed from a valid version string
 | |
|    */
 | |
|   isValid(): boolean {
 | |
|     return !isNaN(this.major)
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Returns the version as a string, e.g. 1.2 or 1.2.3
 | |
|    */
 | |
|   toString(): string {
 | |
|     let result = ''
 | |
|     if (this.isValid()) {
 | |
|       result = `${this.major}.${this.minor}`
 | |
|       if (!isNaN(this.patch)) {
 | |
|         result += `.${this.patch}`
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     return result
 | |
|   }
 | |
| }
 | 
