/*
* Copyright 2013 the original author or authors.
*
* 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.gradle.api.internal.artifacts.ivyservice;
import org.gradle.util.VersionNumber;
import java.io.File;
public enum CacheLayout {
ROOT(null, "modules", 2),
FILE_STORE(ROOT, "files", 1),
META_DATA(ROOT, "metadata", 23),
TRANSFORMS(null, "transforms", 1),
TRANSFORMS_META_DATA(TRANSFORMS, "metadata", 1),
TRANSFORMS_STORE(TRANSFORMS, "files", 1);
// If you update the META_DATA version, also update DefaultGradleDistribution.getArtifactCacheLayoutVersion() (which is the historical record)
// If you update FILE_STORE, you may also need to update LocallyAvailableResourceFinderFactory
private final String name;
private final CacheLayout parent;
private final int version;
CacheLayout(CacheLayout parent, String name, int version) {
this.parent = parent;
this.name = name;
this.version = version;
}
public VersionNumber getVersion() {
return VersionNumber.parse(getFormattedVersion());
}
public String getKey() {
StringBuilder key = new StringBuilder();
key.append(name);
key.append("-");
key.append(getFormattedVersion());
return key.toString();
}
public String getFormattedVersion() {
if (parent == null) {
return String.valueOf(version);
}
return parent.getFormattedVersion() + '.' + String.valueOf(version);
}
public File getPath(File parentDir) {
return new File(parentDir, getKey());
}
}