 fbdc89d307
			
		
	
	fbdc89d307
	
	
	
		
			
			This change uses node modules to build polygerrit-ui release artifact. Tests still use bower_components. Change-Id: I3457931b0ff8edcb41250d1aa3518b8ea18a964e
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| /**
 | |
|  * @license
 | |
|  * Copyright (C) 2020 The Android Open Source Project
 | |
|  *
 | |
|  * Licensed under the Apache License, Version 2.0 (the "License");
 | |
|  * you may not use this file except in compliance with the License.
 | |
|  * You may obtain a copy of the License at
 | |
|  *
 | |
|  * http://www.apache.org/licenses/LICENSE-2.0
 | |
|  *
 | |
|  * Unless required by applicable law or agreed to in writing, software
 | |
|  * distributed under the License is distributed on an "AS IS" BASIS,
 | |
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
|  * See the License for the specific language governing permissions and
 | |
|  * limitations under the License.
 | |
|  */
 | |
| 
 | |
| import * as path from "path";
 | |
| import * as fs from "fs";
 | |
| 
 | |
| export type FilePath = string & {__filePath: undefined};
 | |
| export type TypedFilePath<T> = FilePath & { __type?: T, __typedFilePath: undefined };
 | |
| 
 | |
| export enum FileType{
 | |
|   HtmlSrc,
 | |
|   HtmlTarget,
 | |
|   JsSrc,
 | |
|   JsTarget
 | |
| }
 | |
| 
 | |
| export type HtmlSrcFilePath = TypedFilePath<FileType.HtmlSrc>;
 | |
| export type HtmlTargetFilePath = TypedFilePath<FileType.HtmlTarget>;
 | |
| export type JsSrcFilePath = TypedFilePath<FileType.JsSrc>;
 | |
| export type JsTargetFilePath = TypedFilePath<FileType.JsTarget>;
 | |
| 
 | |
| export class FileUtils {
 | |
|   public static ensureDirExistsForFile(filePath: string) {
 | |
|     const dirName = path.dirname(filePath);
 | |
|     if (!fs.existsSync(dirName)) {
 | |
|       fs.mkdirSync(dirName, {recursive: true, mode: 0o744});
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   public static writeContent(file: string, content: string) {
 | |
|     if(fs.existsSync(file) && fs.lstatSync(file).isSymbolicLink()) {
 | |
|       throw new Error(`Output file '${file}' is a symbolic link. Inplace update for links are not supported.`);
 | |
|     }
 | |
|     FileUtils.ensureDirExistsForFile(file);
 | |
|     fs.writeFileSync(file, content);
 | |
|   }
 | |
| 
 | |
|   public static copyFile(src: string, dst: string) {
 | |
|     FileUtils.ensureDirExistsForFile(dst);
 | |
|     fs.copyFileSync(src, dst);
 | |
|   }
 | |
| }
 |