blob: a70a7adba41c754a07a56f66f7de01179f60cc27 [file] [log] [blame]
/*
* Copyright (C) 2023 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.
*/
package android.tools.device.traces.io
import android.tools.common.io.RunStatus
import android.tools.device.traces.executeShellCommand
import java.io.File
object IoUtils {
private fun renameFile(src: File, dst: File) {
executeShellCommand("mv $src $dst")
}
private fun copyFile(src: File, dst: File) {
executeShellCommand("cp $src $dst")
executeShellCommand("chmod a+r $dst")
}
fun moveFile(src: File, dst: File) {
// Move the file to the output directory
// Note: Due to b/141386109, certain devices do not allow moving the files between
// directories with different encryption policies, so manually copy and then
// remove the original file
// Moreover, the copied trace file may end up with different permissions, resulting
// in b/162072200, to prevent this, ensure the files are readable after copying
copyFile(src, dst)
executeShellCommand("rm $src")
}
fun addStatusToFileName(traceFile: File, status: RunStatus) {
val newFileName = "${status.prefix}_${traceFile.name}"
val dst = traceFile.resolveSibling(newFileName)
renameFile(traceFile, dst)
}
}