J2K GeneratorsFileUtil
This commit is contained in:
+35
-61
@@ -1,80 +1,54 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2015 JetBrains s.r.o.
|
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
*
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
* 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.
|
|
||||||
*/
|
*/
|
||||||
|
package org.jetbrains.kotlin.generators.util
|
||||||
|
|
||||||
package org.jetbrains.kotlin.generators.util;
|
import com.intellij.openapi.util.SystemInfo
|
||||||
|
import com.intellij.openapi.util.text.StringUtil
|
||||||
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
|
import java.io.File
|
||||||
|
import java.io.IOException
|
||||||
|
import java.nio.file.Files
|
||||||
|
import java.nio.file.StandardCopyOption
|
||||||
|
|
||||||
import com.intellij.openapi.util.SystemInfo;
|
object GeneratorsFileUtil {
|
||||||
import com.intellij.openapi.util.text.StringUtil;
|
@JvmStatic
|
||||||
import kotlin.io.FilesKt;
|
@JvmOverloads
|
||||||
import kotlin.text.Charsets;
|
@Throws(IOException::class)
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils;
|
fun writeFileIfContentChanged(file: File, newText: String, logNotChanged: Boolean = true) {
|
||||||
|
val parentFile = file.parentFile
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.nio.file.Files;
|
|
||||||
|
|
||||||
import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
|
|
||||||
|
|
||||||
public class GeneratorsFileUtil {
|
|
||||||
@SuppressWarnings("UseOfSystemOutOrSystemErr")
|
|
||||||
public static void writeFileIfContentChanged(File file, String newText) throws IOException {
|
|
||||||
writeFileIfContentChanged(file, newText, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("UseOfSystemOutOrSystemErr")
|
|
||||||
public static void writeFileIfContentChanged(File file, String newText, boolean logNotChanged) throws IOException {
|
|
||||||
File parentFile = file.getParentFile();
|
|
||||||
if (!parentFile.exists()) {
|
if (!parentFile.exists()) {
|
||||||
if (parentFile.mkdirs()) {
|
if (parentFile.mkdirs()) {
|
||||||
System.out.println("Directory created: " + parentFile.getAbsolutePath());
|
println("Directory created: " + parentFile.absolutePath)
|
||||||
}
|
} else {
|
||||||
else {
|
throw IllegalStateException("Cannot create directory: $parentFile")
|
||||||
throw new IllegalStateException("Cannot create directory: " + parentFile);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (checkFileIgnoringLineSeparators(file, newText)) {
|
if (checkFileIgnoringLineSeparators(file, newText)) {
|
||||||
if (logNotChanged) {
|
if (logNotChanged) {
|
||||||
System.out.println("Not changed: " + file.getAbsolutePath());
|
println("Not changed: " + file.absolutePath)
|
||||||
}
|
}
|
||||||
return;
|
return
|
||||||
}
|
}
|
||||||
|
val useTempFile = !SystemInfo.isWindows
|
||||||
boolean useTempFile = !SystemInfo.isWindows;
|
val tempFile =
|
||||||
|
if (useTempFile) File(KotlinTestUtils.tmpDir(file.name), file.name + ".tmp") else file
|
||||||
File tempFile = useTempFile ? new File(KotlinTestUtils.tmpDir(file.getName()), file.getName() + ".tmp") : file;
|
tempFile.writeText(newText, Charsets.UTF_8)
|
||||||
|
println("File written: " + tempFile.absolutePath)
|
||||||
FilesKt.writeText(tempFile, newText, Charsets.UTF_8);
|
|
||||||
System.out.println("File written: " + tempFile.getAbsolutePath());
|
|
||||||
if (useTempFile) {
|
if (useTempFile) {
|
||||||
Files.move(tempFile.toPath(), file.toPath(), REPLACE_EXISTING);
|
Files.move(tempFile.toPath(), file.toPath(), StandardCopyOption.REPLACE_EXISTING)
|
||||||
System.out.println("Renamed " + tempFile + " to " + file);
|
println("Renamed $tempFile to $file")
|
||||||
}
|
}
|
||||||
System.out.println();
|
println()
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean checkFileIgnoringLineSeparators(File file, String content) {
|
private fun checkFileIgnoringLineSeparators(file: File, content: String): Boolean {
|
||||||
String currentContent;
|
val currentContent: String = try {
|
||||||
try {
|
StringUtil.convertLineSeparators(file.readText(Charsets.UTF_8))
|
||||||
currentContent = StringUtil.convertLineSeparators(FilesKt.readText(file, Charsets.UTF_8));
|
} catch (ignored: Throwable) {
|
||||||
|
return false
|
||||||
}
|
}
|
||||||
catch (Throwable ignored) {
|
return StringUtil.convertLineSeparators(content) == currentContent
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return StringUtil.convertLineSeparators(content).equals(currentContent);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user