renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
118 lines • 4.23 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.CargoLock = exports.CargoConfig = exports.CargoManifest = void 0;
const zod_1 = require("zod");
const schema_utils_1 = require("../../../util/schema-utils");
const crate_1 = require("../../datasource/crate");
const CargoDep = zod_1.z.union([
zod_1.z
.object({
/** Path on disk to the crate sources */
path: zod_1.z.string().optional(),
/** Git URL for the dependency */
git: zod_1.z.string().optional(),
/** Semver version */
version: zod_1.z.string().optional(),
/** Name of a registry whose URL is configured in `.cargo/config.toml` or `.cargo/config` */
registry: zod_1.z.string().optional(),
/** Name of a package to look up */
package: zod_1.z.string().optional(),
/** Whether the dependency is inherited from the workspace */
workspace: zod_1.z.boolean().optional(),
})
.transform(({ path, git, version, registry, package: pkg, workspace, }) => {
let skipReason;
let currentValue;
let nestedVersion = false;
if (version) {
currentValue = version;
nestedVersion = true;
}
else {
currentValue = '';
skipReason = 'invalid-dependency-specification';
}
if (path) {
skipReason = 'path-dependency';
}
else if (git) {
skipReason = 'git-dependency';
}
else if (workspace) {
skipReason = 'inherited-dependency';
}
const dep = {
currentValue,
managerData: { nestedVersion },
datasource: crate_1.CrateDatasource.id,
};
if (skipReason) {
dep.skipReason = skipReason;
}
if (pkg) {
dep.packageName = pkg;
}
if (registry) {
dep.managerData.registryName = registry;
}
return dep;
}),
zod_1.z.string().transform((version) => ({
currentValue: version,
managerData: { nestedVersion: false },
datasource: crate_1.CrateDatasource.id,
})),
]);
const CargoDeps = zod_1.z.record(zod_1.z.string(), CargoDep).transform((record) => {
const deps = [];
for (const [depName, dep] of Object.entries(record)) {
dep.depName = depName;
deps.push(dep);
}
return deps;
});
const CargoSection = zod_1.z.object({
dependencies: (0, schema_utils_1.withDepType)(CargoDeps, 'dependencies').optional(),
'dev-dependencies': (0, schema_utils_1.withDepType)(CargoDeps, 'dev-dependencies').optional(),
'build-dependencies': (0, schema_utils_1.withDepType)(CargoDeps, 'build-dependencies').optional(),
});
const CargoWorkspace = zod_1.z.object({
dependencies: (0, schema_utils_1.withDepType)(CargoDeps, 'workspace.dependencies').optional(),
package: zod_1.z
.object({
version: zod_1.z.string().optional(),
})
.optional(),
});
const CargoTarget = zod_1.z.record(zod_1.z.string(), CargoSection);
exports.CargoManifest = schema_utils_1.Toml.pipe(CargoSection.extend({
package: zod_1.z
.object({
version: zod_1.z
.union([zod_1.z.string(), zod_1.z.object({ workspace: zod_1.z.literal(true) })])
.optional(),
})
.optional(),
workspace: CargoWorkspace.optional(),
target: CargoTarget.optional(),
}));
const CargoConfigRegistry = zod_1.z.object({
index: zod_1.z.string().optional(),
});
const CargoConfigSource = zod_1.z.object({
'replace-with': zod_1.z.string().optional(),
registry: zod_1.z.string().optional(),
});
exports.CargoConfig = schema_utils_1.Toml.pipe(zod_1.z.object({
registries: zod_1.z.record(zod_1.z.string(), CargoConfigRegistry).optional(),
source: zod_1.z.record(zod_1.z.string(), CargoConfigSource).optional(),
}));
const CargoLockPackage = zod_1.z.object({
name: zod_1.z.string(),
version: zod_1.z.string(),
source: zod_1.z.string().optional(),
});
exports.CargoLock = schema_utils_1.Toml.pipe(zod_1.z.object({
package: zod_1.z.array(CargoLockPackage).optional(),
}));
//# sourceMappingURL=schema.js.map