J2K GeneratorsFileUtil

This commit is contained in:
Ilya Gorbunov
2020-01-18 07:16:10 +03:00
parent d64ec71205
commit 2251c27167
@@ -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);
} }
} }