mirror of
https://github.com/renovatebot/renovate.git
synced 2025-01-10 05:56:26 +00:00
Compare commits
11 commits
570b32e3a0
...
29d58a68e1
Author | SHA1 | Date | |
---|---|---|---|
|
29d58a68e1 | ||
|
1d2c1a35e3 | ||
|
84017e05cc | ||
|
6cf23f2bf1 | ||
|
6bb68782b8 | ||
|
6e8b70ed07 | ||
|
153edf5a75 | ||
|
e4e54740d1 | ||
|
f5118d5c45 | ||
|
103db10e1d | ||
|
bbd3ef5b4c |
29 changed files with 347 additions and 214 deletions
|
@ -11,9 +11,9 @@
|
|||
<pre>
|
||||
<a href="..">..</a>
|
||||
<a href="1.0.0">1.0.0</a> 21-Jul-2021 20:08 -
|
||||
<a href="1.0.1">1.0.1</a> 23-Aug-2021 20:03 -
|
||||
<a href="1.0.2">1.0.2</a> 21-Jul-2021 20:09 -
|
||||
<a href="1.0.3">1.0.3</a> 06-Feb-2021 09:54 -
|
||||
<a href="1.0.1">1.0.1</a> 23-Aug-2021 20:03 12 MB
|
||||
<a href="1.0.2">1.0.2</a> 21-Jul-2021 20:09 123.45 GB
|
||||
<a href="1.0.3">1.0.3</a> 06-Feb-2021 09:54 9.0 KB
|
||||
</pre>
|
||||
<hr/>
|
||||
<address style="font-size:small;">Artifactory Port 8080</address>
|
||||
|
|
|
@ -114,6 +114,9 @@ export class ArtifactoryDatasource extends Datasource {
|
|||
}
|
||||
|
||||
private static parseReleaseTimestamp(rawText: string): string {
|
||||
return rawText.trim().replace(regEx(/ ?-$/), '') + 'Z';
|
||||
return (
|
||||
rawText.split(regEx(/\s{2,}/)).filter((e) => !isNaN(Date.parse(e)))[0] +
|
||||
'Z'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import is from '@sindresorhus/is';
|
||||
import { GoogleAuth } from 'google-auth-library';
|
||||
import { logger } from '../../logger';
|
||||
import type { HostRule } from '../../types';
|
||||
import type { HttpResponse } from '../../util/http/types';
|
||||
import { addSecretForSanitizing } from '../../util/sanitize';
|
||||
|
||||
|
@ -12,7 +13,7 @@ export function isArtifactoryServer<T = unknown>(
|
|||
return is.string(res?.headers[JFROG_ARTIFACTORY_RES_HEADER]);
|
||||
}
|
||||
|
||||
export async function getGoogleAuthTokenRaw(): Promise<string | null> {
|
||||
export async function getGoogleAuthHostRule(): Promise<HostRule | null> {
|
||||
try {
|
||||
const googleAuth: GoogleAuth = new GoogleAuth({
|
||||
scopes: 'https://www.googleapis.com/auth/cloud-platform',
|
||||
|
@ -21,7 +22,10 @@ export async function getGoogleAuthTokenRaw(): Promise<string | null> {
|
|||
if (accessToken) {
|
||||
// sanitize token
|
||||
addSecretForSanitizing(accessToken);
|
||||
return accessToken;
|
||||
return {
|
||||
username: 'oauth2accesstoken',
|
||||
password: accessToken,
|
||||
};
|
||||
} else {
|
||||
logger.warn(
|
||||
'Could not retrieve access token using google-auth-library getAccessToken',
|
||||
|
@ -38,9 +42,13 @@ export async function getGoogleAuthTokenRaw(): Promise<string | null> {
|
|||
}
|
||||
|
||||
export async function getGoogleAuthToken(): Promise<string | null> {
|
||||
const accessToken = await getGoogleAuthTokenRaw();
|
||||
if (accessToken) {
|
||||
return Buffer.from(`oauth2accesstoken:${accessToken}`).toString('base64');
|
||||
const rule = await getGoogleAuthHostRule();
|
||||
if (rule) {
|
||||
const token = Buffer.from(`${rule.username}:${rule.password}`).toString(
|
||||
'base64',
|
||||
);
|
||||
addSecretForSanitizing(token);
|
||||
return token;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -94,7 +94,10 @@ export async function updateArtifacts(
|
|||
|
||||
const commands: string[] = [];
|
||||
|
||||
if (config.isLockFileMaintenance) {
|
||||
if (
|
||||
updatedDeps.some((dep) => dep.updateType === 'lockFileMaintenance') ||
|
||||
config.isLockFileMaintenance
|
||||
) {
|
||||
commands.push('bundler lock --update');
|
||||
} else {
|
||||
const bundlerUpgraded = updatedDeps
|
||||
|
@ -255,6 +258,7 @@ export async function updateArtifacts(
|
|||
if (
|
||||
recursionLimit > 0 &&
|
||||
resolveMatches.length &&
|
||||
config.updateType !== 'lockFileMaintenance' &&
|
||||
!config.isLockFileMaintenance
|
||||
) {
|
||||
logger.debug(
|
||||
|
|
|
@ -725,8 +725,8 @@ describe('modules/manager/composer/artifacts', () => {
|
|||
updatedDeps: [],
|
||||
newPackageFileContent: '{}',
|
||||
config: {
|
||||
updateType: 'lockFileMaintenance',
|
||||
...config,
|
||||
isLockFileMaintenance: true,
|
||||
},
|
||||
}),
|
||||
).toEqual([
|
||||
|
|
|
@ -113,6 +113,8 @@ export async function updateArtifacts({
|
|||
|
||||
const file = Json.pipe(PackageFile).parse(newPackageFileContent);
|
||||
|
||||
const isLockFileMaintenance =
|
||||
config.updateType === 'lockFileMaintenance' || config.isLockFileMaintenance;
|
||||
const lockFileName = packageFileName.replace(regEx(/\.json$/), '.lock');
|
||||
const lockfile = await z
|
||||
.string()
|
||||
|
@ -174,7 +176,7 @@ export async function updateArtifacts({
|
|||
|
||||
const cmd = 'composer';
|
||||
let args: string;
|
||||
if (config.isLockFileMaintenance) {
|
||||
if (isLockFileMaintenance) {
|
||||
args = 'update';
|
||||
} else {
|
||||
args =
|
||||
|
|
|
@ -1,103 +0,0 @@
|
|||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`modules/manager/gradle/parser calculations parses fixture from "gradle" manager 1`] = `
|
||||
[
|
||||
{
|
||||
"currentValue": "1.5.2.RELEASE",
|
||||
"depName": "org.springframework.boot:spring-boot-gradle-plugin",
|
||||
"groupName": "springBootVersion",
|
||||
"managerData": {
|
||||
"fileReplacePosition": 53,
|
||||
"packageFile": "build.gradle",
|
||||
},
|
||||
},
|
||||
{
|
||||
"currentValue": "1.2.3",
|
||||
"depName": "com.github.jengelman.gradle.plugins:shadow",
|
||||
"managerData": {
|
||||
"fileReplacePosition": 417,
|
||||
"packageFile": "build.gradle",
|
||||
},
|
||||
},
|
||||
{
|
||||
"currentValue": "0.1",
|
||||
"depName": "com.fkorotkov:gradle-libraries-plugin",
|
||||
"managerData": {
|
||||
"fileReplacePosition": 481,
|
||||
"packageFile": "build.gradle",
|
||||
},
|
||||
},
|
||||
{
|
||||
"currentValue": "0.2.3",
|
||||
"depName": "gradle.plugin.se.patrikerdes:gradle-use-latest-versions-plugin",
|
||||
"managerData": {
|
||||
"fileReplacePosition": 568,
|
||||
"packageFile": "build.gradle",
|
||||
},
|
||||
},
|
||||
{
|
||||
"currentValue": "3.1.1",
|
||||
"depName": "org.apache.openjpa:openjpa",
|
||||
"managerData": {
|
||||
"fileReplacePosition": 621,
|
||||
"packageFile": "build.gradle",
|
||||
},
|
||||
},
|
||||
{
|
||||
"currentValue": "0.13.0",
|
||||
"depName": "com.gradle.publish:plugin-publish-plugin",
|
||||
"managerData": {
|
||||
"fileReplacePosition": 688,
|
||||
"packageFile": "build.gradle",
|
||||
},
|
||||
},
|
||||
{
|
||||
"currentValue": "6.0.9.RELEASE",
|
||||
"depName": "org.grails:gorm-hibernate5-spring-boot",
|
||||
"managerData": {
|
||||
"fileReplacePosition": 1882,
|
||||
"packageFile": "build.gradle",
|
||||
},
|
||||
},
|
||||
{
|
||||
"currentValue": "6.0.5",
|
||||
"depName": "mysql:mysql-connector-java",
|
||||
"managerData": {
|
||||
"fileReplacePosition": 1938,
|
||||
"packageFile": "build.gradle",
|
||||
},
|
||||
},
|
||||
{
|
||||
"currentValue": "1.0-groovy-2.4",
|
||||
"depName": "org.spockframework:spock-spring",
|
||||
"managerData": {
|
||||
"fileReplacePosition": 1996,
|
||||
"packageFile": "build.gradle",
|
||||
},
|
||||
},
|
||||
{
|
||||
"currentValue": "1.3",
|
||||
"depName": "org.hamcrest:hamcrest-core",
|
||||
"managerData": {
|
||||
"fileReplacePosition": 2101,
|
||||
"packageFile": "build.gradle",
|
||||
},
|
||||
},
|
||||
{
|
||||
"currentValue": "3.1",
|
||||
"depName": "cglib:cglib-nodep",
|
||||
"managerData": {
|
||||
"fileReplacePosition": 2189,
|
||||
"packageFile": "build.gradle",
|
||||
},
|
||||
},
|
||||
{
|
||||
"currentValue": "3.1.1",
|
||||
"depName": "org.apache.openjpa:openjpa",
|
||||
"managerData": {
|
||||
"fileReplacePosition": 2295,
|
||||
"packageFile": "build.gradle",
|
||||
},
|
||||
},
|
||||
]
|
||||
`;
|
|
@ -161,7 +161,8 @@ export async function updateArtifacts({
|
|||
}
|
||||
|
||||
if (
|
||||
config.isLockFileMaintenance &&
|
||||
(config.updateType === 'lockFileMaintenance' ||
|
||||
config.isLockFileMaintenance) &&
|
||||
(!isGradleBuildFile(packageFileName) ||
|
||||
dirname(packageFileName) !== dirname(gradlewFile))
|
||||
) {
|
||||
|
@ -205,7 +206,8 @@ export async function updateArtifacts({
|
|||
.join(' ')}`;
|
||||
|
||||
if (
|
||||
config.isLockFileMaintenance === true ||
|
||||
config.updateType === 'lockFileMaintenance' ||
|
||||
config.isLockFileMaintenance ||
|
||||
!updatedDeps.length ||
|
||||
isGcvPropsFile(packageFileName)
|
||||
) {
|
||||
|
|
|
@ -770,6 +770,17 @@ describe('modules/manager/gradle/parser', () => {
|
|||
const { deps } = parseGradle(input);
|
||||
expect(deps).toMatchObject([output].filter(is.truthy));
|
||||
});
|
||||
|
||||
it('handles 3 independent dependencies mismatched as groupId, artifactId, version', () => {
|
||||
const { deps } = parseGradle(
|
||||
'someConfig("foo:bar:1.2.3", "foo:baz:4.5.6", "foo:qux:7.8.9")',
|
||||
);
|
||||
expect(deps).toMatchObject([
|
||||
{ depName: 'foo:bar', currentValue: '1.2.3' },
|
||||
{ depName: 'foo:baz', currentValue: '4.5.6' },
|
||||
{ depName: 'foo:qux', currentValue: '7.8.9' },
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
describe('calculations', () => {
|
||||
|
@ -792,7 +803,106 @@ describe('modules/manager/gradle/parser', () => {
|
|||
content.slice(managerData!.fileReplacePosition).indexOf(currentValue!),
|
||||
);
|
||||
expect(replacementIndices.every((idx) => idx === 0)).toBeTrue();
|
||||
expect(deps).toMatchSnapshot();
|
||||
expect(deps).toMatchObject([
|
||||
{
|
||||
currentValue: '1.5.2.RELEASE',
|
||||
depName: 'org.springframework.boot:spring-boot-gradle-plugin',
|
||||
groupName: 'springBootVersion',
|
||||
managerData: {
|
||||
fileReplacePosition: 53,
|
||||
packageFile: 'build.gradle',
|
||||
},
|
||||
},
|
||||
{
|
||||
currentValue: '1.2.3',
|
||||
depName: 'com.github.jengelman.gradle.plugins:shadow',
|
||||
managerData: {
|
||||
fileReplacePosition: 417,
|
||||
packageFile: 'build.gradle',
|
||||
},
|
||||
},
|
||||
{
|
||||
currentValue: '0.1',
|
||||
depName: 'com.fkorotkov:gradle-libraries-plugin',
|
||||
managerData: {
|
||||
fileReplacePosition: 481,
|
||||
packageFile: 'build.gradle',
|
||||
},
|
||||
},
|
||||
{
|
||||
currentValue: '0.2.3',
|
||||
depName:
|
||||
'gradle.plugin.se.patrikerdes:gradle-use-latest-versions-plugin',
|
||||
managerData: {
|
||||
fileReplacePosition: 568,
|
||||
packageFile: 'build.gradle',
|
||||
},
|
||||
},
|
||||
{
|
||||
currentValue: '3.1.1',
|
||||
depName: 'org.apache.openjpa:openjpa',
|
||||
managerData: {
|
||||
fileReplacePosition: 621,
|
||||
packageFile: 'build.gradle',
|
||||
},
|
||||
},
|
||||
{
|
||||
currentValue: '0.13.0',
|
||||
depName: 'com.gradle.publish:plugin-publish-plugin',
|
||||
managerData: {
|
||||
fileReplacePosition: 688,
|
||||
packageFile: 'build.gradle',
|
||||
},
|
||||
},
|
||||
{
|
||||
currentValue: '6.0.9.RELEASE',
|
||||
depName: 'org.grails:gorm-hibernate5-spring-boot',
|
||||
managerData: {
|
||||
fileReplacePosition: 1882,
|
||||
packageFile: 'build.gradle',
|
||||
},
|
||||
},
|
||||
{
|
||||
currentValue: '6.0.5',
|
||||
depName: 'mysql:mysql-connector-java',
|
||||
managerData: {
|
||||
fileReplacePosition: 1938,
|
||||
packageFile: 'build.gradle',
|
||||
},
|
||||
},
|
||||
{
|
||||
currentValue: '1.0-groovy-2.4',
|
||||
depName: 'org.spockframework:spock-spring',
|
||||
managerData: {
|
||||
fileReplacePosition: 1996,
|
||||
packageFile: 'build.gradle',
|
||||
},
|
||||
},
|
||||
{
|
||||
currentValue: '1.3',
|
||||
depName: 'org.hamcrest:hamcrest-core',
|
||||
managerData: {
|
||||
fileReplacePosition: 2101,
|
||||
packageFile: 'build.gradle',
|
||||
},
|
||||
},
|
||||
{
|
||||
currentValue: '3.1',
|
||||
depName: 'cglib:cglib-nodep',
|
||||
managerData: {
|
||||
fileReplacePosition: 2189,
|
||||
packageFile: 'build.gradle',
|
||||
},
|
||||
},
|
||||
{
|
||||
currentValue: '3.1.1',
|
||||
depName: 'org.apache.openjpa:openjpa',
|
||||
managerData: {
|
||||
fileReplacePosition: 2295,
|
||||
packageFile: 'build.gradle',
|
||||
},
|
||||
},
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -321,7 +321,6 @@ export const qDotOrBraceExpr = (
|
|||
matcher: q.QueryBuilder<Ctx, parser.Node>,
|
||||
): q.QueryBuilder<Ctx, parser.Node> =>
|
||||
q.sym<Ctx>(symValue).alt(
|
||||
q.alt<Ctx>(
|
||||
q.op<Ctx>('.').join(matcher),
|
||||
q.tree({
|
||||
type: 'wrapped-tree',
|
||||
|
@ -330,5 +329,16 @@ export const qDotOrBraceExpr = (
|
|||
endsWith: '}',
|
||||
search: matcher,
|
||||
}),
|
||||
),
|
||||
);
|
||||
|
||||
export const qGroupId = qValueMatcher.handler((ctx) =>
|
||||
storeInTokenMap(ctx, 'groupId'),
|
||||
);
|
||||
|
||||
export const qArtifactId = qValueMatcher.handler((ctx) =>
|
||||
storeInTokenMap(ctx, 'artifactId'),
|
||||
);
|
||||
|
||||
export const qVersion = qValueMatcher.handler((ctx) =>
|
||||
storeInTokenMap(ctx, 'version'),
|
||||
);
|
||||
|
|
|
@ -4,9 +4,12 @@ import type { Ctx } from '../types';
|
|||
import {
|
||||
GRADLE_PLUGINS,
|
||||
cleanupTempVars,
|
||||
qArtifactId,
|
||||
qDotOrBraceExpr,
|
||||
qGroupId,
|
||||
qTemplateString,
|
||||
qValueMatcher,
|
||||
qVersion,
|
||||
storeInTokenMap,
|
||||
storeVarToken,
|
||||
} from './common';
|
||||
|
@ -17,18 +20,6 @@ import {
|
|||
handleLongFormDep,
|
||||
} from './handlers';
|
||||
|
||||
const qGroupId = qValueMatcher.handler((ctx) =>
|
||||
storeInTokenMap(ctx, 'groupId'),
|
||||
);
|
||||
|
||||
const qArtifactId = qValueMatcher.handler((ctx) =>
|
||||
storeInTokenMap(ctx, 'artifactId'),
|
||||
);
|
||||
|
||||
const qVersion = qValueMatcher.handler((ctx) =>
|
||||
storeInTokenMap(ctx, 'version'),
|
||||
);
|
||||
|
||||
// "foo:bar:1.2.3"
|
||||
// "foo:bar:$baz"
|
||||
// "foo" + "${bar}" + baz
|
||||
|
|
|
@ -6,7 +6,7 @@ import { regEx } from '../../../../util/regex';
|
|||
import type { PackageDependency } from '../../types';
|
||||
import type { parseGradle as parseGradleCallback } from '../parser';
|
||||
import type { Ctx, GradleManagerData } from '../types';
|
||||
import { parseDependencyString } from '../utils';
|
||||
import { isDependencyString, parseDependencyString } from '../utils';
|
||||
import {
|
||||
GRADLE_PLUGINS,
|
||||
REGISTRY_URLS,
|
||||
|
@ -169,6 +169,22 @@ export function handleLongFormDep(ctx: Ctx): Ctx {
|
|||
return ctx;
|
||||
}
|
||||
|
||||
// Special handling: 3 independent dependencies mismatched as groupId, artifactId, version
|
||||
if (
|
||||
isDependencyString(groupId) &&
|
||||
isDependencyString(artifactId) &&
|
||||
isDependencyString(version)
|
||||
) {
|
||||
ctx.tokenMap.templateStringTokens = groupIdTokens;
|
||||
handleDepString(ctx);
|
||||
ctx.tokenMap.templateStringTokens = artifactIdTokens;
|
||||
handleDepString(ctx);
|
||||
ctx.tokenMap.templateStringTokens = versionTokens;
|
||||
handleDepString(ctx);
|
||||
|
||||
return ctx;
|
||||
}
|
||||
|
||||
const dep = parseDependencyString([groupId, artifactId, version].join(':'));
|
||||
if (!dep) {
|
||||
return ctx;
|
||||
|
|
|
@ -4,16 +4,12 @@ import type { Ctx } from '../types';
|
|||
import {
|
||||
cleanupTempVars,
|
||||
qStringValue,
|
||||
qValueMatcher,
|
||||
qVersion,
|
||||
storeInTokenMap,
|
||||
storeVarToken,
|
||||
} from './common';
|
||||
import { handlePlugin } from './handlers';
|
||||
|
||||
const qVersion = qValueMatcher.handler((ctx) =>
|
||||
storeInTokenMap(ctx, 'version'),
|
||||
);
|
||||
|
||||
export const qPlugins = q
|
||||
.sym(regEx(/^(?:id|kotlin)$/), storeVarToken)
|
||||
.handler((ctx) => storeInTokenMap(ctx, 'methodName'))
|
||||
|
|
|
@ -32,6 +32,7 @@ const qUri = q
|
|||
// mavenCentral { ... }
|
||||
const qPredefinedRegistries = q
|
||||
.sym(regEx(`^(?:${Object.keys(REGISTRY_URLS).join('|')})$`), storeVarToken)
|
||||
.handler((ctx) => storeInTokenMap(ctx, 'registryUrl'))
|
||||
.alt(
|
||||
q.tree({
|
||||
type: 'wrapped-tree',
|
||||
|
@ -45,23 +46,11 @@ const qPredefinedRegistries = q
|
|||
endsWith: '}',
|
||||
}),
|
||||
)
|
||||
.handler((ctx) => storeInTokenMap(ctx, 'registryUrl'))
|
||||
.handler(handlePredefinedRegistryUrl)
|
||||
.handler(cleanupTempVars);
|
||||
|
||||
// maven(url = uri("https://foo.bar/baz"))
|
||||
// maven { name = some; url = "https://foo.bar/${name}" }
|
||||
const qCustomRegistryUrl = q
|
||||
.sym<Ctx>('maven')
|
||||
.alt(
|
||||
q.tree<Ctx>({
|
||||
type: 'wrapped-tree',
|
||||
maxDepth: 1,
|
||||
startsWith: '(',
|
||||
endsWith: ')',
|
||||
search: q.begin<Ctx>().opt(q.sym<Ctx>('url').op('=')).join(qUri).end(),
|
||||
}),
|
||||
q.tree({
|
||||
// { url = "https://some.repo" }
|
||||
const qMavenArtifactRegistry = q.tree({
|
||||
type: 'wrapped-tree',
|
||||
maxDepth: 1,
|
||||
startsWith: '{',
|
||||
|
@ -80,7 +69,21 @@ const qCustomRegistryUrl = q
|
|||
search: q.begin<Ctx>().join(qUri).end(),
|
||||
}),
|
||||
),
|
||||
});
|
||||
|
||||
// maven(url = uri("https://foo.bar/baz"))
|
||||
// maven { name = some; url = "https://foo.bar/${name}" }
|
||||
const qCustomRegistryUrl = q
|
||||
.sym<Ctx>('maven')
|
||||
.alt(
|
||||
q.tree<Ctx>({
|
||||
type: 'wrapped-tree',
|
||||
maxDepth: 1,
|
||||
startsWith: '(',
|
||||
endsWith: ')',
|
||||
search: q.begin<Ctx>().opt(q.sym<Ctx>('url').op('=')).join(qUri).end(),
|
||||
}),
|
||||
qMavenArtifactRegistry,
|
||||
)
|
||||
.handler(handleCustomRegistryUrl)
|
||||
.handler(cleanupTempVars);
|
||||
|
|
|
@ -2,6 +2,8 @@ import { query as q } from 'good-enough-parser';
|
|||
import type { Ctx } from '../types';
|
||||
import {
|
||||
cleanupTempVars,
|
||||
qArtifactId,
|
||||
qGroupId,
|
||||
qStringValue,
|
||||
qStringValueAsSymbol,
|
||||
qValueMatcher,
|
||||
|
@ -10,14 +12,6 @@ import {
|
|||
} from './common';
|
||||
import { handleLibraryDep, handlePlugin } from './handlers';
|
||||
|
||||
const qGroupId = qValueMatcher.handler((ctx) =>
|
||||
storeInTokenMap(ctx, 'groupId'),
|
||||
);
|
||||
|
||||
const qArtifactId = qValueMatcher.handler((ctx) =>
|
||||
storeInTokenMap(ctx, 'artifactId'),
|
||||
);
|
||||
|
||||
const qVersionCatalogVersion = q
|
||||
.op<Ctx>('.')
|
||||
.alt(
|
||||
|
|
|
@ -48,7 +48,10 @@ export async function updateArtifacts(
|
|||
};
|
||||
|
||||
try {
|
||||
if (config.isLockFileMaintenance) {
|
||||
if (
|
||||
config.updateType === 'lockFileMaintenance' ||
|
||||
config.isLockFileMaintenance
|
||||
) {
|
||||
await exec('jb update', execOptions);
|
||||
} else {
|
||||
const dependencyUrls = updatedDeps.map(dependencyUrl);
|
||||
|
|
|
@ -27,13 +27,19 @@ defmodule MyProject.MixProject do
|
|||
{:secret, "~> 1.0", organization: "acme"},
|
||||
{:also_secret, "~> 1.0", only: [:dev, :test], organization: "acme", runtime: false},
|
||||
{:metrics, ">0.2.0 and <=1.0.0"},
|
||||
{:jason, ">= 1.0.0"},
|
||||
{:jason, ">= 1.0.0", only: :prod},
|
||||
{:hackney, "~> 1.0",
|
||||
optional: true},
|
||||
{:hammer_backend_redis, "~> 6.1"},
|
||||
{:hammer_backend_redis, "~> 6.1", only: [:dev, :prod, :test]},
|
||||
{:castore, "== 1.0.10"},
|
||||
{:gun, "~> 2.0.0", hex: "grpc_gun"},
|
||||
{:another_gun, "~> 0.4.0", hex: :raygun},
|
||||
{:credo, "~> 1.7", only:
|
||||
[:test,
|
||||
# prod,
|
||||
:dev],
|
||||
runtime: false},
|
||||
{:floki, "== 0.37.0", only: :test},
|
||||
]
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,13 +1,17 @@
|
|||
%{
|
||||
"another_gun": {:hex, :raygun, "0.4.0", "7744e99dd695f61e78ad5e047cce0affb3edfc6f93a92278598ab553b9c5091f", [:mix], [{:httpoison, "~> 0.8 or ~> 1.0", [hex: :httpoison, repo: "hexpm", optional: false]}, {:jason, "~> 1.2", [hex: :jason, repo: "hexpm", optional: false]}, {:plug, "~> 1.1", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "eee4b891e6e65c6a4b15386dc7b7a72b717f3c123cc0012cfd19e8f2ab21116d"},
|
||||
"bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"},
|
||||
"castore": {:hex, :castore, "1.0.10", "43bbeeac820f16c89f79721af1b3e092399b3a1ecc8df1a472738fd853574911", [:mix], [], "hexpm", "1b0b7ea14d889d9ea21202c43a4fa015eb913021cb535e8ed91946f4b77a8848"},
|
||||
"certifi": {:hex, :certifi, "2.12.0", "2d1cca2ec95f59643862af91f001478c9863c2ac9cb6e2f89780bfd8de987329", [:rebar3], [], "hexpm", "ee68d85df22e554040cdb4be100f33873ac6051387baf6a8f6ce82272340ff1c"},
|
||||
"cowboy": {:git, "https://github.com/ninenines/cowboy.git", "0c2e2224e372f01e6cf51a8e12d4856edb4cb8ac", [tag: "0.6.0"]},
|
||||
"cowlib": {:hex, :cowlib, "2.13.0", "db8f7505d8332d98ef50a3ef34b34c1afddec7506e4ee4dd4a3a266285d282ca", [:make, :rebar3], [], "hexpm", "e1e1284dc3fc030a64b1ad0d8382ae7e99da46c3246b815318a4b848873800a4"},
|
||||
"credo": {:hex, :credo, "1.7.10", "6e64fe59be8da5e30a1b96273b247b5cf1cc9e336b5fd66302a64b25749ad44d", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "71fbc9a6b8be21d993deca85bf151df023a3097b01e09a2809d460348561d8cd"},
|
||||
"decimal": {:hex, :decimal, "1.9.0", "83e8daf59631d632b171faabafb4a9f4242c514b0a06ba3df493951c08f64d07", [:mix], [], "hexpm", "b1f2343568eed6928f3e751cf2dffde95bfaa19dd95d09e8a9ea92ccfd6f7d85"},
|
||||
"ecto": {:git, "https://github.com/elixir-ecto/ecto.git", "795036d997c7503b21fb64d6bf1a89b83c44f2b5", [ref: "795036d997c7503b21fb64d6bf1a89b83c44f2b5"]},
|
||||
"secret": {:hex, :secret, "1.5.0", "344dbbf6610d205760ec37e2848bff2aab5a2de182bb5cdaa72cc2fd19d74535", [:mix], [{:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "19c205c8de0e2e5817f2250100281c58e717cb11ff1bb410bf661ee78c24e79b"},
|
||||
"also_secret": {:hex, :also_secret, "1.3.4", "344dbbf6610d205760ec37e2848bff2aab5a2de182bb5cdaa72cc2fd19d74535", [:mix], [{:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "19c205c8de0e2e5817f2250100281c58e717cb11ff1bb410bf661ee78c24e79b"},
|
||||
"file_system": {:hex, :file_system, "1.0.1", "79e8ceaddb0416f8b8cd02a0127bdbababe7bf4a23d2a395b983c1f8b3f73edd", [:mix], [], "hexpm", "4414d1f38863ddf9120720cd976fce5bdde8e91d8283353f0e31850fa89feb9e"},
|
||||
"floki": {:hex, :floki, "0.37.0", "b83e0280bbc6372f2a403b2848013650b16640cd2470aea6701f0632223d719e", [:mix], [], "hexpm", "516a0c15a69f78c47dc8e0b9b3724b29608aa6619379f91b1ffa47109b5d0dd3"},
|
||||
"gun": {:hex, :grpc_gun, "2.0.1", "221b792df3a93e8fead96f697cbaf920120deacced85c6cd3329d2e67f0871f8", [:rebar3], [{:cowlib, "~> 2.11", [hex: :cowlib, repo: "hexpm", optional: false]}], "hexpm", "795a65eb9d0ba16697e6b0e1886009ce024799e43bb42753f0c59b029f592831"},
|
||||
"hackney": {:hex, :hackney, "1.20.1", "8d97aec62ddddd757d128bfd1df6c5861093419f8f7a4223823537bad5d064e2", [:rebar3], [{:certifi, "~> 2.12.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~> 6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~> 1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~> 1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.4.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~> 1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "fe9094e5f1a2a2c0a7d10918fee36bfec0ec2a979994cff8cfe8058cd9af38e3"},
|
||||
"hammer": {:hex, :hammer, "6.2.1", "5ae9c33e3dceaeb42de0db46bf505bd9c35f259c8defb03390cd7556fea67ee2", [:mix], [{:poolboy, "~> 1.5", [hex: :poolboy, repo: "hexpm", optional: false]}], "hexpm", "b9476d0c13883d2dc0cc72e786bac6ac28911fba7cc2e04b70ce6a6d9c4b2bdc"},
|
||||
|
|
|
@ -20,12 +20,14 @@ describe('modules/manager/mix/extract', () => {
|
|||
currentValue: '~> 0.8.1',
|
||||
datasource: 'hex',
|
||||
depName: 'postgrex',
|
||||
depType: 'prod',
|
||||
packageName: 'postgrex',
|
||||
},
|
||||
{
|
||||
currentValue: '<1.7.0 or ~>1.7.1',
|
||||
datasource: 'hex',
|
||||
depName: 'ranch',
|
||||
depType: 'prod',
|
||||
packageName: 'ranch',
|
||||
},
|
||||
{
|
||||
|
@ -33,6 +35,7 @@ describe('modules/manager/mix/extract', () => {
|
|||
currentValue: '0.6.0',
|
||||
datasource: 'github-tags',
|
||||
depName: 'cowboy',
|
||||
depType: 'prod',
|
||||
packageName: 'ninenines/cowboy',
|
||||
},
|
||||
{
|
||||
|
@ -40,6 +43,7 @@ describe('modules/manager/mix/extract', () => {
|
|||
currentValue: 'main',
|
||||
datasource: 'git-tags',
|
||||
depName: 'phoenix',
|
||||
depType: 'prod',
|
||||
packageName: 'https://github.com/phoenixframework/phoenix.git',
|
||||
},
|
||||
{
|
||||
|
@ -47,42 +51,49 @@ describe('modules/manager/mix/extract', () => {
|
|||
currentValue: undefined,
|
||||
datasource: 'github-tags',
|
||||
depName: 'ecto',
|
||||
depType: 'prod',
|
||||
packageName: 'elixir-ecto/ecto',
|
||||
},
|
||||
{
|
||||
currentValue: '~> 1.0',
|
||||
datasource: 'hex',
|
||||
depName: 'secret',
|
||||
depType: 'prod',
|
||||
packageName: 'secret:acme',
|
||||
},
|
||||
{
|
||||
currentValue: '~> 1.0',
|
||||
datasource: 'hex',
|
||||
depName: 'also_secret',
|
||||
depType: 'dev',
|
||||
packageName: 'also_secret:acme',
|
||||
},
|
||||
{
|
||||
currentValue: '>0.2.0 and <=1.0.0',
|
||||
datasource: 'hex',
|
||||
depName: 'metrics',
|
||||
depType: 'prod',
|
||||
packageName: 'metrics',
|
||||
},
|
||||
{
|
||||
currentValue: '>= 1.0.0',
|
||||
datasource: 'hex',
|
||||
depName: 'jason',
|
||||
depType: 'prod',
|
||||
packageName: 'jason',
|
||||
},
|
||||
{
|
||||
currentValue: '~> 1.0',
|
||||
datasource: 'hex',
|
||||
depName: 'hackney',
|
||||
depType: 'prod',
|
||||
packageName: 'hackney',
|
||||
},
|
||||
{
|
||||
currentValue: '~> 6.1',
|
||||
datasource: 'hex',
|
||||
depName: 'hammer_backend_redis',
|
||||
depType: 'prod',
|
||||
packageName: 'hammer_backend_redis',
|
||||
},
|
||||
{
|
||||
|
@ -90,20 +101,38 @@ describe('modules/manager/mix/extract', () => {
|
|||
currentVersion: '1.0.10',
|
||||
datasource: 'hex',
|
||||
depName: 'castore',
|
||||
depType: 'prod',
|
||||
packageName: 'castore',
|
||||
},
|
||||
{
|
||||
currentValue: '~> 2.0.0',
|
||||
datasource: 'hex',
|
||||
depName: 'gun',
|
||||
depType: 'prod',
|
||||
packageName: 'grpc_gun',
|
||||
},
|
||||
{
|
||||
currentValue: '~> 0.4.0',
|
||||
datasource: 'hex',
|
||||
depName: 'another_gun',
|
||||
depType: 'prod',
|
||||
packageName: 'raygun',
|
||||
},
|
||||
{
|
||||
currentValue: '~> 1.7',
|
||||
datasource: 'hex',
|
||||
depName: 'credo',
|
||||
depType: 'dev',
|
||||
packageName: 'credo',
|
||||
},
|
||||
{
|
||||
currentValue: '== 0.37.0',
|
||||
currentVersion: '0.37.0',
|
||||
datasource: 'hex',
|
||||
depName: 'floki',
|
||||
depType: 'dev',
|
||||
packageName: 'floki',
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
||||
|
@ -116,6 +145,7 @@ describe('modules/manager/mix/extract', () => {
|
|||
currentValue: '~> 0.8.1',
|
||||
datasource: 'hex',
|
||||
depName: 'postgrex',
|
||||
depType: 'prod',
|
||||
packageName: 'postgrex',
|
||||
lockedVersion: '0.8.4',
|
||||
},
|
||||
|
@ -123,6 +153,7 @@ describe('modules/manager/mix/extract', () => {
|
|||
currentValue: '<1.7.0 or ~>1.7.1',
|
||||
datasource: 'hex',
|
||||
depName: 'ranch',
|
||||
depType: 'prod',
|
||||
packageName: 'ranch',
|
||||
lockedVersion: '1.7.1',
|
||||
},
|
||||
|
@ -131,6 +162,7 @@ describe('modules/manager/mix/extract', () => {
|
|||
currentValue: '0.6.0',
|
||||
datasource: 'github-tags',
|
||||
depName: 'cowboy',
|
||||
depType: 'prod',
|
||||
packageName: 'ninenines/cowboy',
|
||||
lockedVersion: '0.6.0',
|
||||
},
|
||||
|
@ -139,6 +171,7 @@ describe('modules/manager/mix/extract', () => {
|
|||
currentValue: 'main',
|
||||
datasource: 'git-tags',
|
||||
depName: 'phoenix',
|
||||
depType: 'prod',
|
||||
packageName: 'https://github.com/phoenixframework/phoenix.git',
|
||||
lockedVersion: undefined,
|
||||
},
|
||||
|
@ -147,6 +180,7 @@ describe('modules/manager/mix/extract', () => {
|
|||
currentValue: undefined,
|
||||
datasource: 'github-tags',
|
||||
depName: 'ecto',
|
||||
depType: 'prod',
|
||||
packageName: 'elixir-ecto/ecto',
|
||||
lockedVersion: undefined,
|
||||
},
|
||||
|
@ -154,6 +188,7 @@ describe('modules/manager/mix/extract', () => {
|
|||
currentValue: '~> 1.0',
|
||||
datasource: 'hex',
|
||||
depName: 'secret',
|
||||
depType: 'prod',
|
||||
packageName: 'secret:acme',
|
||||
lockedVersion: '1.5.0',
|
||||
},
|
||||
|
@ -161,6 +196,7 @@ describe('modules/manager/mix/extract', () => {
|
|||
currentValue: '~> 1.0',
|
||||
datasource: 'hex',
|
||||
depName: 'also_secret',
|
||||
depType: 'dev',
|
||||
packageName: 'also_secret:acme',
|
||||
lockedVersion: '1.3.4',
|
||||
},
|
||||
|
@ -168,6 +204,7 @@ describe('modules/manager/mix/extract', () => {
|
|||
currentValue: '>0.2.0 and <=1.0.0',
|
||||
datasource: 'hex',
|
||||
depName: 'metrics',
|
||||
depType: 'prod',
|
||||
packageName: 'metrics',
|
||||
lockedVersion: '1.0.0',
|
||||
},
|
||||
|
@ -175,6 +212,7 @@ describe('modules/manager/mix/extract', () => {
|
|||
currentValue: '>= 1.0.0',
|
||||
datasource: 'hex',
|
||||
depName: 'jason',
|
||||
depType: 'prod',
|
||||
packageName: 'jason',
|
||||
lockedVersion: '1.4.4',
|
||||
},
|
||||
|
@ -182,6 +220,7 @@ describe('modules/manager/mix/extract', () => {
|
|||
currentValue: '~> 1.0',
|
||||
datasource: 'hex',
|
||||
depName: 'hackney',
|
||||
depType: 'prod',
|
||||
packageName: 'hackney',
|
||||
lockedVersion: '1.20.1',
|
||||
},
|
||||
|
@ -189,6 +228,7 @@ describe('modules/manager/mix/extract', () => {
|
|||
currentValue: '~> 6.1',
|
||||
datasource: 'hex',
|
||||
depName: 'hammer_backend_redis',
|
||||
depType: 'prod',
|
||||
packageName: 'hammer_backend_redis',
|
||||
lockedVersion: '6.2.0',
|
||||
},
|
||||
|
@ -197,6 +237,7 @@ describe('modules/manager/mix/extract', () => {
|
|||
currentVersion: '1.0.10',
|
||||
datasource: 'hex',
|
||||
depName: 'castore',
|
||||
depType: 'prod',
|
||||
packageName: 'castore',
|
||||
lockedVersion: '1.0.10',
|
||||
},
|
||||
|
@ -204,6 +245,7 @@ describe('modules/manager/mix/extract', () => {
|
|||
currentValue: '~> 2.0.0',
|
||||
datasource: 'hex',
|
||||
depName: 'gun',
|
||||
depType: 'prod',
|
||||
packageName: 'grpc_gun',
|
||||
lockedVersion: '2.0.1',
|
||||
},
|
||||
|
@ -211,9 +253,27 @@ describe('modules/manager/mix/extract', () => {
|
|||
currentValue: '~> 0.4.0',
|
||||
datasource: 'hex',
|
||||
depName: 'another_gun',
|
||||
depType: 'prod',
|
||||
packageName: 'raygun',
|
||||
lockedVersion: '0.4.0',
|
||||
},
|
||||
{
|
||||
currentValue: '~> 1.7',
|
||||
datasource: 'hex',
|
||||
depName: 'credo',
|
||||
depType: 'dev',
|
||||
packageName: 'credo',
|
||||
lockedVersion: '1.7.10',
|
||||
},
|
||||
{
|
||||
currentValue: '== 0.37.0',
|
||||
currentVersion: '0.37.0',
|
||||
datasource: 'hex',
|
||||
depName: 'floki',
|
||||
depType: 'dev',
|
||||
lockedVersion: '0.37.0',
|
||||
packageName: 'floki',
|
||||
},
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -20,6 +20,8 @@ const lockedVersionRegExp = regEx(
|
|||
/^\s+"(?<app>\w+)".*?"(?<lockedVersion>\d+\.\d+\.\d+)"/,
|
||||
);
|
||||
const hexRegexp = regEx(/hex:\s*(?:"(?<strValue>[^"]+)"|:(?<atomValue>\w+))/);
|
||||
const onlyValueRegexp = regEx(/only:\s*(?<only>\[[^\]]*\]|:\w+)/);
|
||||
const onlyEnvironmentsRegexp = regEx(/:(\w+)/gm);
|
||||
|
||||
export async function extractPackageFile(
|
||||
content: string,
|
||||
|
@ -48,22 +50,28 @@ export async function extractPackageFile(
|
|||
const hexGroups = hexRegexp.exec(opts)?.groups;
|
||||
const hex = hexGroups?.strValue ?? hexGroups?.atomValue;
|
||||
|
||||
let dep: PackageDependency;
|
||||
const onlyValue = onlyValueRegexp.exec(opts)?.groups?.only;
|
||||
const onlyEnvironments = [];
|
||||
let match;
|
||||
if (onlyValue) {
|
||||
while ((match = onlyEnvironmentsRegexp.exec(onlyValue)) !== null) {
|
||||
onlyEnvironments.push(match[1]);
|
||||
}
|
||||
}
|
||||
|
||||
const dep: PackageDependency = {
|
||||
depName: app,
|
||||
depType: 'prod',
|
||||
};
|
||||
|
||||
if (git ?? github) {
|
||||
dep = {
|
||||
depName: app,
|
||||
currentDigest: ref,
|
||||
currentValue: branchOrTag,
|
||||
datasource: git ? GitTagsDatasource.id : GithubTagsDatasource.id,
|
||||
packageName: git ?? github,
|
||||
};
|
||||
dep.currentDigest = ref;
|
||||
dep.currentValue = branchOrTag;
|
||||
dep.datasource = git ? GitTagsDatasource.id : GithubTagsDatasource.id;
|
||||
dep.packageName = git ?? github;
|
||||
} else {
|
||||
dep = {
|
||||
depName: app,
|
||||
currentValue: requirement,
|
||||
datasource: HexDatasource.id,
|
||||
};
|
||||
dep.currentValue = requirement;
|
||||
dep.datasource = HexDatasource.id;
|
||||
if (organization) {
|
||||
dep.packageName = `${app}:${organization}`;
|
||||
} else if (hex) {
|
||||
|
@ -71,11 +79,16 @@ export async function extractPackageFile(
|
|||
} else {
|
||||
dep.packageName = app;
|
||||
}
|
||||
|
||||
if (requirement?.startsWith('==')) {
|
||||
dep.currentVersion = requirement.replace(regEx(/^==\s*/), '');
|
||||
}
|
||||
}
|
||||
|
||||
if (onlyValue !== undefined && !onlyEnvironments.includes('prod')) {
|
||||
dep.depType = 'dev';
|
||||
}
|
||||
|
||||
deps.set(app, dep);
|
||||
logger.trace({ dep }, `setting ${app}`);
|
||||
depMatchGroups = depMatchRegExp.exec(depBuffer)?.groups;
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
The `mix` manager extracts dependencies for the `hex` datasource and uses Renovate's implementation of Hex SemVer to evaluate updates.
|
||||
The `mix` manager uses Renovate's implementation of [Elixir SemVer](https://hexdocs.pm/elixir/Version.html#module-requirements) to evaluate update ranges.
|
||||
|
||||
The `mix` package manager itself is also used to keep the lock file up-to-date.
|
||||
The `mix` package manager itself is used to keep the lock file up-to-date.
|
||||
|
||||
The following `depTypes` are currently supported by the `mix` manager :
|
||||
|
||||
- `prod`: all dependencies by default
|
||||
- `dev`: dependencies with [`:only` option](https://hexdocs.pm/mix/Mix.Tasks.Deps.html#module-dependency-definition-options) not containing `:prod`
|
||||
|
|
|
@ -34,7 +34,6 @@ const dockerAdminConfig = {
|
|||
process.env.CONTAINERBASE = 'true';
|
||||
|
||||
const config: UpdateArtifactsConfig = {};
|
||||
const lockMaintenanceConfig = { ...config, isLockFileMaintenance: true };
|
||||
const updateInputCmd = `nix \
|
||||
--extra-experimental-features 'nix-command flakes' \
|
||||
flake lock --update-input nixpkgs`;
|
||||
|
@ -294,7 +293,7 @@ describe('modules/manager/nix/artifacts', () => {
|
|||
packageFileName: 'flake.nix',
|
||||
updatedDeps: [{ depName: 'nixpkgs' }],
|
||||
newPackageFileContent: '{}',
|
||||
config: lockMaintenanceConfig,
|
||||
config: { updateType: 'lockFileMaintenance', ...config },
|
||||
});
|
||||
|
||||
expect(res).toEqual([
|
||||
|
|
|
@ -17,6 +17,9 @@ export async function updateArtifacts({
|
|||
}: UpdateArtifact): Promise<UpdateArtifactsResult[] | null> {
|
||||
const lockFileName = packageFileName.replace(regEx(/\.nix$/), '.lock');
|
||||
const existingLockFileContent = await readLocalFile(lockFileName, 'utf8');
|
||||
const isLockFileMaintenance =
|
||||
config.updateType === 'lockFileMaintenance' || config.isLockFileMaintenance;
|
||||
|
||||
if (!existingLockFileContent) {
|
||||
logger.debug('No flake.lock found');
|
||||
return null;
|
||||
|
@ -35,7 +38,7 @@ export async function updateArtifacts({
|
|||
cmd += `--extra-access-tokens github.com=${token} `;
|
||||
}
|
||||
|
||||
if (config.isLockFileMaintenance) {
|
||||
if (isLockFileMaintenance) {
|
||||
cmd += 'flake update';
|
||||
} else {
|
||||
const inputs = updatedDeps
|
||||
|
|
|
@ -189,7 +189,7 @@ describe('modules/manager/nuget/artifacts', () => {
|
|||
newPackageFileContent: '{}',
|
||||
config: {
|
||||
...config,
|
||||
isLockFileMaintenance: true,
|
||||
updateType: 'lockFileMaintenance',
|
||||
},
|
||||
}),
|
||||
).toEqual([
|
||||
|
|
|
@ -138,7 +138,11 @@ export async function updateArtifacts({
|
|||
}
|
||||
|
||||
try {
|
||||
if (updatedDeps.length === 0 && config.isLockFileMaintenance !== true) {
|
||||
if (
|
||||
updatedDeps.length === 0 &&
|
||||
config.updateType !== 'lockFileMaintenance' &&
|
||||
config.isLockFileMaintenance !== true
|
||||
) {
|
||||
logger.debug(
|
||||
`Not updating lock file because no deps changed and no lock file maintenance.`,
|
||||
);
|
||||
|
|
|
@ -11,7 +11,7 @@ import { find } from '../../../../util/host-rules';
|
|||
import { Result } from '../../../../util/result';
|
||||
import { parseUrl } from '../../../../util/url';
|
||||
import { PypiDatasource } from '../../../datasource/pypi';
|
||||
import { getGoogleAuthTokenRaw } from '../../../datasource/util';
|
||||
import { getGoogleAuthHostRule } from '../../../datasource/util';
|
||||
import type {
|
||||
PackageDependency,
|
||||
UpdateArtifact,
|
||||
|
@ -265,12 +265,9 @@ async function getUsernamePassword(
|
|||
}
|
||||
|
||||
if (url.hostname.endsWith('.pkg.dev')) {
|
||||
const accessToken = await getGoogleAuthTokenRaw();
|
||||
if (accessToken) {
|
||||
return {
|
||||
username: 'oauth2accesstoken',
|
||||
password: accessToken,
|
||||
};
|
||||
const hostRule = await getGoogleAuthHostRule();
|
||||
if (hostRule) {
|
||||
return hostRule;
|
||||
} else {
|
||||
logger.once.debug({ url }, 'Could not get Google access token');
|
||||
}
|
||||
|
|
|
@ -110,7 +110,10 @@ export async function updateArtifacts({
|
|||
try {
|
||||
await writeLocalFile(inputFileName, newInputContent);
|
||||
// TODO(not7cd): use --upgrade option instead deleting
|
||||
if (config.isLockFileMaintenance) {
|
||||
if (
|
||||
config.updateType === 'lockFileMaintenance' ||
|
||||
config.isLockFileMaintenance
|
||||
) {
|
||||
await deleteLocalFile(outputFileName);
|
||||
}
|
||||
const compileArgs = extractHeaderCommand(existingOutput, outputFileName);
|
||||
|
|
|
@ -135,7 +135,10 @@ export async function updateArtifacts({
|
|||
}
|
||||
try {
|
||||
await writeLocalFile(pipfileName, newPipfileContent);
|
||||
if (config.isLockFileMaintenance) {
|
||||
if (
|
||||
config.updateType === 'lockFileMaintenance' ||
|
||||
config.isLockFileMaintenance
|
||||
) {
|
||||
await deleteLocalFile(lockFileName);
|
||||
}
|
||||
const cmd = 'pipenv lock';
|
||||
|
|
|
@ -19,7 +19,7 @@ import { Result } from '../../../util/result';
|
|||
import { parse as parseToml } from '../../../util/toml';
|
||||
import { parseUrl } from '../../../util/url';
|
||||
import { PypiDatasource } from '../../datasource/pypi';
|
||||
import { getGoogleAuthTokenRaw } from '../../datasource/util';
|
||||
import { getGoogleAuthHostRule } from '../../datasource/util';
|
||||
import type { UpdateArtifact, UpdateArtifactsResult } from '../types';
|
||||
import { Lockfile, PoetrySchemaToml } from './schema';
|
||||
import type { PoetryFile, PoetrySource } from './types';
|
||||
|
@ -131,12 +131,9 @@ async function getMatchingHostRule(url: string | undefined): Promise<HostRule> {
|
|||
}
|
||||
|
||||
if (parsedUrl.hostname.endsWith('.pkg.dev')) {
|
||||
const accessToken = await getGoogleAuthTokenRaw();
|
||||
if (accessToken) {
|
||||
return {
|
||||
username: 'oauth2accesstoken',
|
||||
password: accessToken,
|
||||
};
|
||||
const hostRule = await getGoogleAuthHostRule();
|
||||
if (hostRule) {
|
||||
return hostRule;
|
||||
}
|
||||
logger.once.debug(`Could not get Google access token (url=${url})`);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue