relizy 0.2.8 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.mjs +1 -1
- package/dist/index.d.mts +38 -8
- package/dist/index.d.ts +38 -8
- package/dist/index.mjs +1 -1
- package/dist/shared/{relizy.DwP99Z7x.mjs → relizy.B4guss__.mjs} +118 -39
- package/package.json +2 -2
package/dist/cli.mjs
CHANGED
|
@@ -5,7 +5,7 @@ import process from 'node:process';
|
|
|
5
5
|
import { fileURLToPath } from 'node:url';
|
|
6
6
|
import { printBanner, logger } from '@maz-ui/node';
|
|
7
7
|
import { Command } from 'commander';
|
|
8
|
-
import {
|
|
8
|
+
import { Y as isInCI, Z as getCIName, b as bump, c as changelog, e as publish, a as providerRelease, r as release } from './shared/relizy.B4guss__.mjs';
|
|
9
9
|
import 'changelogen';
|
|
10
10
|
import 'fast-glob';
|
|
11
11
|
import '@inquirer/prompts';
|
package/dist/index.d.mts
CHANGED
|
@@ -37,22 +37,25 @@ declare function getDefaultConfig(): {
|
|
|
37
37
|
emptyChangelogContent: string;
|
|
38
38
|
};
|
|
39
39
|
excludeAuthors: never[];
|
|
40
|
-
noAuthors:
|
|
40
|
+
noAuthors: false;
|
|
41
41
|
bump: Required<Omit<BumpConfig, "preid">>;
|
|
42
42
|
changelog: Required<ChangelogConfig>;
|
|
43
43
|
publish: {
|
|
44
|
-
private:
|
|
44
|
+
private: false;
|
|
45
45
|
args: never[];
|
|
46
|
-
|
|
46
|
+
token: string | undefined;
|
|
47
|
+
registry: string;
|
|
48
|
+
safetyCheck: false;
|
|
47
49
|
};
|
|
48
50
|
tokens: {
|
|
51
|
+
registry: string | undefined;
|
|
49
52
|
gitlab: string | undefined;
|
|
50
53
|
github: string | undefined;
|
|
51
54
|
};
|
|
52
55
|
scopeMap: {};
|
|
53
56
|
release: Required<ReleaseConfig>;
|
|
54
57
|
logLevel: LogLevel;
|
|
55
|
-
safetyCheck:
|
|
58
|
+
safetyCheck: true;
|
|
56
59
|
};
|
|
57
60
|
declare function loadRelizyConfig(options?: {
|
|
58
61
|
baseConfig?: ResolvedRelizyConfig;
|
|
@@ -100,7 +103,7 @@ declare function expandPackagesToBumpWithDependents({ allPackages, packagesWithC
|
|
|
100
103
|
*/
|
|
101
104
|
declare function topologicalSort(packages: PackageBase[]): PackageBase[];
|
|
102
105
|
|
|
103
|
-
declare function getGitStatus(cwd?: string): string;
|
|
106
|
+
declare function getGitStatus(cwd?: string, trim?: boolean): string;
|
|
104
107
|
declare function checkGitStatusIfDirty(): void;
|
|
105
108
|
declare function fetchGitTags(cwd?: string): Promise<void>;
|
|
106
109
|
declare function detectGitProvider(cwd?: string): GitProvider | null;
|
|
@@ -108,6 +111,13 @@ declare function parseGitRemoteUrl(remoteUrl: string): {
|
|
|
108
111
|
owner: string;
|
|
109
112
|
repo: string;
|
|
110
113
|
} | null;
|
|
114
|
+
/**
|
|
115
|
+
* Get files modified in git status that are relevant for release
|
|
116
|
+
* Returns only package.json, CHANGELOG.md, and lerna.json files
|
|
117
|
+
*/
|
|
118
|
+
declare function getModifiedReleaseFilePatterns({ config }: {
|
|
119
|
+
config: ResolvedRelizyConfig;
|
|
120
|
+
}): string[];
|
|
111
121
|
declare function createCommitAndTags({ config, noVerify, bumpedPackages, newVersion, dryRun, logLevel, }: {
|
|
112
122
|
config: ResolvedRelizyConfig;
|
|
113
123
|
noVerify: boolean;
|
|
@@ -122,6 +132,13 @@ declare function pushCommitAndTags({ config, dryRun, logLevel, cwd }: {
|
|
|
122
132
|
logLevel?: LogLevel;
|
|
123
133
|
cwd: string;
|
|
124
134
|
}): Promise<void>;
|
|
135
|
+
/**
|
|
136
|
+
* Rollback modified files to their last committed state
|
|
137
|
+
* Used when publish fails before commit/tag/push operations
|
|
138
|
+
*/
|
|
139
|
+
declare function rollbackModifiedFiles({ config, }: {
|
|
140
|
+
config: ResolvedRelizyConfig;
|
|
141
|
+
}): Promise<void>;
|
|
125
142
|
declare function getFirstCommit(cwd: string): string;
|
|
126
143
|
declare function getCurrentGitBranch(cwd: string): string;
|
|
127
144
|
declare function getCurrentGitRef(cwd: string): string;
|
|
@@ -879,6 +896,15 @@ interface RepoConfig {
|
|
|
879
896
|
}
|
|
880
897
|
type HookType = 'before' | 'success' | 'error';
|
|
881
898
|
type HookStep = 'bump' | 'changelog' | 'commit-and-tag' | 'provider-release' | 'publish' | 'push' | 'release';
|
|
899
|
+
/**
|
|
900
|
+
* Tokens configuration
|
|
901
|
+
* @default {}
|
|
902
|
+
*/
|
|
903
|
+
interface TokensConfig {
|
|
904
|
+
registry?: string;
|
|
905
|
+
gitlab?: string;
|
|
906
|
+
github?: string;
|
|
907
|
+
}
|
|
882
908
|
/**
|
|
883
909
|
* Hooks configuration
|
|
884
910
|
* Useful to run custom scripts before, after a step or on error
|
|
@@ -895,7 +921,7 @@ type HookConfig = {
|
|
|
895
921
|
* Relizy configuration
|
|
896
922
|
* @see https://louismazel.github.io/relizy/config/overview
|
|
897
923
|
*/
|
|
898
|
-
interface RelizyConfig extends Partial<Omit<ChangelogConfig$1, 'output' | 'templates' | 'publish' | 'types'>> {
|
|
924
|
+
interface RelizyConfig extends Partial<Omit<ChangelogConfig$1, 'output' | 'templates' | 'publish' | 'types' | 'tokens'>> {
|
|
899
925
|
types?: Record<string, {
|
|
900
926
|
title: string;
|
|
901
927
|
semver?: SemverBumpType;
|
|
@@ -941,6 +967,10 @@ interface RelizyConfig extends Partial<Omit<ChangelogConfig$1, 'output' | 'templ
|
|
|
941
967
|
* Release config
|
|
942
968
|
*/
|
|
943
969
|
release?: ReleaseConfig;
|
|
970
|
+
/**
|
|
971
|
+
* Tokens config
|
|
972
|
+
*/
|
|
973
|
+
tokens?: TokensConfig;
|
|
944
974
|
/**
|
|
945
975
|
* Hooks config
|
|
946
976
|
*/
|
|
@@ -979,5 +1009,5 @@ declare function publish(options?: Partial<PublishOptions>): Promise<{
|
|
|
979
1009
|
|
|
980
1010
|
declare function release(options?: Partial<ReleaseOptions>): Promise<void>;
|
|
981
1011
|
|
|
982
|
-
export { bump, changelog, checkGitStatusIfDirty, confirmBump, createCommitAndTags, createGitlabRelease, defineConfig, detectGitProvider, detectPackageManager, determinePublishTag, determineReleaseType, determineSemverChange, executeBuildCmd, executeFormatCmd, executeHook, expandPackagesToBumpWithDependents, extractVersionFromPackageTag, extractVersionFromTag, fetchGitTags, generateChangelog, getAuthCommand, getBumpedIndependentPackages, getBumpedPackageIndependently, getCIName, getCurrentGitBranch, getCurrentGitRef, getDefaultConfig, getDependentsOf, getFirstCommit, getGitStatus, getIndependentTag, getLastPackageTag, getLastRepoTag, getLastStableTag, getLastTag, getPackageCommits, getPackageDependencies, getPackageNewVersion, getPackages, getPackagesOrBumpedPackages, getPackagesToPublishInIndependentMode, getPackagesToPublishInSelectiveMode, getPreid, getRootPackage, github, gitlab, hasLernaJson, isBumpedPackage, isChangedPreid, isGraduating, isGraduatingToStableBetweenVersion, isInCI, isPrerelease, isPrereleaseReleaseType, isStableReleaseType, isTagVersionCompatibleWithCurrent, loadRelizyConfig, parseGitRemoteUrl, providerRelease, providerReleaseSafetyCheck, publish, publishPackage, publishSafetyCheck, pushCommitAndTags, readPackageJson, readPackages, release, resolveTags, shouldFilterPrereleaseTags, topologicalSort, updateLernaVersion, writeChangelogToFile, writeVersion };
|
|
983
|
-
export type { BumpConfig, BumpOptions, BumpResult, BumpResultFalsy, BumpResultTruthy, ChangelogConfig, ChangelogOptions, ConfigType, GitProvider, GitlabRelease, GitlabReleaseResponse, HookConfig, HookStep, HookType, MonorepoConfig, PackageBase, PackageManager, PostedRelease, ProviderReleaseOptions, PublishConfig, PublishOptions, PublishResponse, ReadPackage, ReleaseConfig, ReleaseOptions, RelizyConfig, RepoConfig, ResolvedConfig, ResolvedRelizyConfig, ResolvedTags, RootPackage, Step, TemplatesConfig, VersionMode };
|
|
1012
|
+
export { bump, changelog, checkGitStatusIfDirty, confirmBump, createCommitAndTags, createGitlabRelease, defineConfig, detectGitProvider, detectPackageManager, determinePublishTag, determineReleaseType, determineSemverChange, executeBuildCmd, executeFormatCmd, executeHook, expandPackagesToBumpWithDependents, extractVersionFromPackageTag, extractVersionFromTag, fetchGitTags, generateChangelog, getAuthCommand, getBumpedIndependentPackages, getBumpedPackageIndependently, getCIName, getCurrentGitBranch, getCurrentGitRef, getDefaultConfig, getDependentsOf, getFirstCommit, getGitStatus, getIndependentTag, getLastPackageTag, getLastRepoTag, getLastStableTag, getLastTag, getModifiedReleaseFilePatterns, getPackageCommits, getPackageDependencies, getPackageNewVersion, getPackages, getPackagesOrBumpedPackages, getPackagesToPublishInIndependentMode, getPackagesToPublishInSelectiveMode, getPreid, getRootPackage, github, gitlab, hasLernaJson, isBumpedPackage, isChangedPreid, isGraduating, isGraduatingToStableBetweenVersion, isInCI, isPrerelease, isPrereleaseReleaseType, isStableReleaseType, isTagVersionCompatibleWithCurrent, loadRelizyConfig, parseGitRemoteUrl, providerRelease, providerReleaseSafetyCheck, publish, publishPackage, publishSafetyCheck, pushCommitAndTags, readPackageJson, readPackages, release, resolveTags, rollbackModifiedFiles, shouldFilterPrereleaseTags, topologicalSort, updateLernaVersion, writeChangelogToFile, writeVersion };
|
|
1013
|
+
export type { BumpConfig, BumpOptions, BumpResult, BumpResultFalsy, BumpResultTruthy, ChangelogConfig, ChangelogOptions, ConfigType, GitProvider, GitlabRelease, GitlabReleaseResponse, HookConfig, HookStep, HookType, MonorepoConfig, PackageBase, PackageManager, PostedRelease, ProviderReleaseOptions, PublishConfig, PublishOptions, PublishResponse, ReadPackage, ReleaseConfig, ReleaseOptions, RelizyConfig, RepoConfig, ResolvedConfig, ResolvedRelizyConfig, ResolvedTags, RootPackage, Step, TemplatesConfig, TokensConfig, VersionMode };
|
package/dist/index.d.ts
CHANGED
|
@@ -37,22 +37,25 @@ declare function getDefaultConfig(): {
|
|
|
37
37
|
emptyChangelogContent: string;
|
|
38
38
|
};
|
|
39
39
|
excludeAuthors: never[];
|
|
40
|
-
noAuthors:
|
|
40
|
+
noAuthors: false;
|
|
41
41
|
bump: Required<Omit<BumpConfig, "preid">>;
|
|
42
42
|
changelog: Required<ChangelogConfig>;
|
|
43
43
|
publish: {
|
|
44
|
-
private:
|
|
44
|
+
private: false;
|
|
45
45
|
args: never[];
|
|
46
|
-
|
|
46
|
+
token: string | undefined;
|
|
47
|
+
registry: string;
|
|
48
|
+
safetyCheck: false;
|
|
47
49
|
};
|
|
48
50
|
tokens: {
|
|
51
|
+
registry: string | undefined;
|
|
49
52
|
gitlab: string | undefined;
|
|
50
53
|
github: string | undefined;
|
|
51
54
|
};
|
|
52
55
|
scopeMap: {};
|
|
53
56
|
release: Required<ReleaseConfig>;
|
|
54
57
|
logLevel: LogLevel;
|
|
55
|
-
safetyCheck:
|
|
58
|
+
safetyCheck: true;
|
|
56
59
|
};
|
|
57
60
|
declare function loadRelizyConfig(options?: {
|
|
58
61
|
baseConfig?: ResolvedRelizyConfig;
|
|
@@ -100,7 +103,7 @@ declare function expandPackagesToBumpWithDependents({ allPackages, packagesWithC
|
|
|
100
103
|
*/
|
|
101
104
|
declare function topologicalSort(packages: PackageBase[]): PackageBase[];
|
|
102
105
|
|
|
103
|
-
declare function getGitStatus(cwd?: string): string;
|
|
106
|
+
declare function getGitStatus(cwd?: string, trim?: boolean): string;
|
|
104
107
|
declare function checkGitStatusIfDirty(): void;
|
|
105
108
|
declare function fetchGitTags(cwd?: string): Promise<void>;
|
|
106
109
|
declare function detectGitProvider(cwd?: string): GitProvider | null;
|
|
@@ -108,6 +111,13 @@ declare function parseGitRemoteUrl(remoteUrl: string): {
|
|
|
108
111
|
owner: string;
|
|
109
112
|
repo: string;
|
|
110
113
|
} | null;
|
|
114
|
+
/**
|
|
115
|
+
* Get files modified in git status that are relevant for release
|
|
116
|
+
* Returns only package.json, CHANGELOG.md, and lerna.json files
|
|
117
|
+
*/
|
|
118
|
+
declare function getModifiedReleaseFilePatterns({ config }: {
|
|
119
|
+
config: ResolvedRelizyConfig;
|
|
120
|
+
}): string[];
|
|
111
121
|
declare function createCommitAndTags({ config, noVerify, bumpedPackages, newVersion, dryRun, logLevel, }: {
|
|
112
122
|
config: ResolvedRelizyConfig;
|
|
113
123
|
noVerify: boolean;
|
|
@@ -122,6 +132,13 @@ declare function pushCommitAndTags({ config, dryRun, logLevel, cwd }: {
|
|
|
122
132
|
logLevel?: LogLevel;
|
|
123
133
|
cwd: string;
|
|
124
134
|
}): Promise<void>;
|
|
135
|
+
/**
|
|
136
|
+
* Rollback modified files to their last committed state
|
|
137
|
+
* Used when publish fails before commit/tag/push operations
|
|
138
|
+
*/
|
|
139
|
+
declare function rollbackModifiedFiles({ config, }: {
|
|
140
|
+
config: ResolvedRelizyConfig;
|
|
141
|
+
}): Promise<void>;
|
|
125
142
|
declare function getFirstCommit(cwd: string): string;
|
|
126
143
|
declare function getCurrentGitBranch(cwd: string): string;
|
|
127
144
|
declare function getCurrentGitRef(cwd: string): string;
|
|
@@ -879,6 +896,15 @@ interface RepoConfig {
|
|
|
879
896
|
}
|
|
880
897
|
type HookType = 'before' | 'success' | 'error';
|
|
881
898
|
type HookStep = 'bump' | 'changelog' | 'commit-and-tag' | 'provider-release' | 'publish' | 'push' | 'release';
|
|
899
|
+
/**
|
|
900
|
+
* Tokens configuration
|
|
901
|
+
* @default {}
|
|
902
|
+
*/
|
|
903
|
+
interface TokensConfig {
|
|
904
|
+
registry?: string;
|
|
905
|
+
gitlab?: string;
|
|
906
|
+
github?: string;
|
|
907
|
+
}
|
|
882
908
|
/**
|
|
883
909
|
* Hooks configuration
|
|
884
910
|
* Useful to run custom scripts before, after a step or on error
|
|
@@ -895,7 +921,7 @@ type HookConfig = {
|
|
|
895
921
|
* Relizy configuration
|
|
896
922
|
* @see https://louismazel.github.io/relizy/config/overview
|
|
897
923
|
*/
|
|
898
|
-
interface RelizyConfig extends Partial<Omit<ChangelogConfig$1, 'output' | 'templates' | 'publish' | 'types'>> {
|
|
924
|
+
interface RelizyConfig extends Partial<Omit<ChangelogConfig$1, 'output' | 'templates' | 'publish' | 'types' | 'tokens'>> {
|
|
899
925
|
types?: Record<string, {
|
|
900
926
|
title: string;
|
|
901
927
|
semver?: SemverBumpType;
|
|
@@ -941,6 +967,10 @@ interface RelizyConfig extends Partial<Omit<ChangelogConfig$1, 'output' | 'templ
|
|
|
941
967
|
* Release config
|
|
942
968
|
*/
|
|
943
969
|
release?: ReleaseConfig;
|
|
970
|
+
/**
|
|
971
|
+
* Tokens config
|
|
972
|
+
*/
|
|
973
|
+
tokens?: TokensConfig;
|
|
944
974
|
/**
|
|
945
975
|
* Hooks config
|
|
946
976
|
*/
|
|
@@ -979,5 +1009,5 @@ declare function publish(options?: Partial<PublishOptions>): Promise<{
|
|
|
979
1009
|
|
|
980
1010
|
declare function release(options?: Partial<ReleaseOptions>): Promise<void>;
|
|
981
1011
|
|
|
982
|
-
export { bump, changelog, checkGitStatusIfDirty, confirmBump, createCommitAndTags, createGitlabRelease, defineConfig, detectGitProvider, detectPackageManager, determinePublishTag, determineReleaseType, determineSemverChange, executeBuildCmd, executeFormatCmd, executeHook, expandPackagesToBumpWithDependents, extractVersionFromPackageTag, extractVersionFromTag, fetchGitTags, generateChangelog, getAuthCommand, getBumpedIndependentPackages, getBumpedPackageIndependently, getCIName, getCurrentGitBranch, getCurrentGitRef, getDefaultConfig, getDependentsOf, getFirstCommit, getGitStatus, getIndependentTag, getLastPackageTag, getLastRepoTag, getLastStableTag, getLastTag, getPackageCommits, getPackageDependencies, getPackageNewVersion, getPackages, getPackagesOrBumpedPackages, getPackagesToPublishInIndependentMode, getPackagesToPublishInSelectiveMode, getPreid, getRootPackage, github, gitlab, hasLernaJson, isBumpedPackage, isChangedPreid, isGraduating, isGraduatingToStableBetweenVersion, isInCI, isPrerelease, isPrereleaseReleaseType, isStableReleaseType, isTagVersionCompatibleWithCurrent, loadRelizyConfig, parseGitRemoteUrl, providerRelease, providerReleaseSafetyCheck, publish, publishPackage, publishSafetyCheck, pushCommitAndTags, readPackageJson, readPackages, release, resolveTags, shouldFilterPrereleaseTags, topologicalSort, updateLernaVersion, writeChangelogToFile, writeVersion };
|
|
983
|
-
export type { BumpConfig, BumpOptions, BumpResult, BumpResultFalsy, BumpResultTruthy, ChangelogConfig, ChangelogOptions, ConfigType, GitProvider, GitlabRelease, GitlabReleaseResponse, HookConfig, HookStep, HookType, MonorepoConfig, PackageBase, PackageManager, PostedRelease, ProviderReleaseOptions, PublishConfig, PublishOptions, PublishResponse, ReadPackage, ReleaseConfig, ReleaseOptions, RelizyConfig, RepoConfig, ResolvedConfig, ResolvedRelizyConfig, ResolvedTags, RootPackage, Step, TemplatesConfig, VersionMode };
|
|
1012
|
+
export { bump, changelog, checkGitStatusIfDirty, confirmBump, createCommitAndTags, createGitlabRelease, defineConfig, detectGitProvider, detectPackageManager, determinePublishTag, determineReleaseType, determineSemverChange, executeBuildCmd, executeFormatCmd, executeHook, expandPackagesToBumpWithDependents, extractVersionFromPackageTag, extractVersionFromTag, fetchGitTags, generateChangelog, getAuthCommand, getBumpedIndependentPackages, getBumpedPackageIndependently, getCIName, getCurrentGitBranch, getCurrentGitRef, getDefaultConfig, getDependentsOf, getFirstCommit, getGitStatus, getIndependentTag, getLastPackageTag, getLastRepoTag, getLastStableTag, getLastTag, getModifiedReleaseFilePatterns, getPackageCommits, getPackageDependencies, getPackageNewVersion, getPackages, getPackagesOrBumpedPackages, getPackagesToPublishInIndependentMode, getPackagesToPublishInSelectiveMode, getPreid, getRootPackage, github, gitlab, hasLernaJson, isBumpedPackage, isChangedPreid, isGraduating, isGraduatingToStableBetweenVersion, isInCI, isPrerelease, isPrereleaseReleaseType, isStableReleaseType, isTagVersionCompatibleWithCurrent, loadRelizyConfig, parseGitRemoteUrl, providerRelease, providerReleaseSafetyCheck, publish, publishPackage, publishSafetyCheck, pushCommitAndTags, readPackageJson, readPackages, release, resolveTags, rollbackModifiedFiles, shouldFilterPrereleaseTags, topologicalSort, updateLernaVersion, writeChangelogToFile, writeVersion };
|
|
1013
|
+
export type { BumpConfig, BumpOptions, BumpResult, BumpResultFalsy, BumpResultTruthy, ChangelogConfig, ChangelogOptions, ConfigType, GitProvider, GitlabRelease, GitlabReleaseResponse, HookConfig, HookStep, HookType, MonorepoConfig, PackageBase, PackageManager, PostedRelease, ProviderReleaseOptions, PublishConfig, PublishOptions, PublishResponse, ReadPackage, ReleaseConfig, ReleaseOptions, RelizyConfig, RepoConfig, ResolvedConfig, ResolvedRelizyConfig, ResolvedTags, RootPackage, Step, TemplatesConfig, TokensConfig, VersionMode };
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { b as bump, c as changelog, n as checkGitStatusIfDirty,
|
|
1
|
+
export { b as bump, c as changelog, n as checkGitStatusIfDirty, ag as confirmBump, v as createCommitAndTags, D as createGitlabRelease, h as defineConfig, q as detectGitProvider, F as detectPackageManager, G as determinePublishTag, a4 as determineReleaseType, a3 as determineSemverChange, $ as executeBuildCmd, _ as executeFormatCmd, X as executeHook, k as expandPackagesToBumpWithDependents, a8 as extractVersionFromPackageTag, aj as extractVersionFromTag, o as fetchGitTags, g as generateChangelog, J as getAuthCommand, ah as getBumpedIndependentPackages, af as getBumpedPackageIndependently, Z as getCIName, A as getCurrentGitBranch, B as getCurrentGitRef, f as getDefaultConfig, j as getDependentsOf, z as getFirstCommit, m as getGitStatus, R as getIndependentTag, V as getLastPackageTag, U as getLastRepoTag, S as getLastStableTag, T as getLastTag, u as getModifiedReleaseFilePatterns, P as getPackageCommits, i as getPackageDependencies, a6 as getPackageNewVersion, O as getPackages, a1 as getPackagesOrBumpedPackages, I as getPackagesToPublishInIndependentMode, H as getPackagesToPublishInSelectiveMode, ad as getPreid, M as getRootPackage, C as github, E as gitlab, Q as hasLernaJson, a0 as isBumpedPackage, ae as isChangedPreid, ac as isGraduating, a2 as isGraduatingToStableBetweenVersion, Y as isInCI, a9 as isPrerelease, ab as isPrereleaseReleaseType, aa as isStableReleaseType, ak as isTagVersionCompatibleWithCurrent, l as loadRelizyConfig, s as parseGitRemoteUrl, a as providerRelease, p as providerReleaseSafetyCheck, e as publish, K as publishPackage, d as publishSafetyCheck, x as pushCommitAndTags, L as readPackageJson, N as readPackages, r as release, W as resolveTags, y as rollbackModifiedFiles, ai as shouldFilterPrereleaseTags, t as topologicalSort, a7 as updateLernaVersion, w as writeChangelogToFile, a5 as writeVersion } from './shared/relizy.B4guss__.mjs';
|
|
2
2
|
import '@maz-ui/node';
|
|
3
3
|
import 'node:fs';
|
|
4
4
|
import 'node:path';
|
|
@@ -445,14 +445,13 @@ async function getPackageCommits({
|
|
|
445
445
|
if (!isAllowedCommit({ commit, type, changelog })) {
|
|
446
446
|
return false;
|
|
447
447
|
}
|
|
448
|
-
const
|
|
449
|
-
if ((pkg.path === changelogConfig.cwd || pkg.name === rootPackage.name) &&
|
|
448
|
+
const isTrackedPackage = isCommitOfTrackedPackages({ commit, config });
|
|
449
|
+
if ((pkg.path === changelogConfig.cwd || pkg.name === rootPackage.name) && isTrackedPackage) {
|
|
450
450
|
return true;
|
|
451
451
|
}
|
|
452
452
|
const packageRelativePath = relative(changelogConfig.cwd, pkg.path);
|
|
453
|
-
const scopeMatches = commit.scope === pkg.name;
|
|
454
453
|
const bodyContainsPath = commit.body.includes(packageRelativePath);
|
|
455
|
-
return
|
|
454
|
+
return bodyContainsPath && isTrackedPackage;
|
|
456
455
|
});
|
|
457
456
|
logger.debug(`Found ${commits.length} commit(s) for ${pkg.name} from ${from} to ${to}`);
|
|
458
457
|
if (commits.length > 0) {
|
|
@@ -617,11 +616,14 @@ async function getPackagesOrBumpedPackages({
|
|
|
617
616
|
});
|
|
618
617
|
}
|
|
619
618
|
|
|
620
|
-
function getGitStatus(cwd) {
|
|
621
|
-
|
|
619
|
+
function getGitStatus(cwd, trim = true) {
|
|
620
|
+
const status = execSync("git status --porcelain", {
|
|
622
621
|
cwd,
|
|
623
622
|
encoding: "utf8"
|
|
624
|
-
})
|
|
623
|
+
});
|
|
624
|
+
if (trim)
|
|
625
|
+
return status.trim();
|
|
626
|
+
return status;
|
|
625
627
|
}
|
|
626
628
|
function checkGitStatusIfDirty() {
|
|
627
629
|
logger.debug("Checking git status");
|
|
@@ -685,6 +687,27 @@ function parseGitRemoteUrl(remoteUrl) {
|
|
|
685
687
|
}
|
|
686
688
|
return null;
|
|
687
689
|
}
|
|
690
|
+
function getModifiedReleaseFilePatterns({ config }) {
|
|
691
|
+
const gitStatusRaw = getGitStatus(config.cwd, false);
|
|
692
|
+
if (!gitStatusRaw) {
|
|
693
|
+
logger.debug("No modified files in git status");
|
|
694
|
+
return [];
|
|
695
|
+
}
|
|
696
|
+
const modifiedFiles = gitStatusRaw.split("\n").filter((line) => line.length > 0).map((line) => {
|
|
697
|
+
if (line.length < 4)
|
|
698
|
+
return null;
|
|
699
|
+
const filename = line.substring(3).trim();
|
|
700
|
+
return filename || null;
|
|
701
|
+
}).filter((file) => file !== null);
|
|
702
|
+
const releaseFiles = modifiedFiles.filter((file) => {
|
|
703
|
+
const isPackageJson = file === "package.json" || file.endsWith("/package.json");
|
|
704
|
+
const isChangelog = file === "CHANGELOG.md" || file.endsWith("/CHANGELOG.md");
|
|
705
|
+
const isLerna = file === "lerna.json";
|
|
706
|
+
return isPackageJson || isChangelog || isLerna;
|
|
707
|
+
});
|
|
708
|
+
logger.debug(`Found ${releaseFiles.length} modified release files:`, releaseFiles.join(", "));
|
|
709
|
+
return releaseFiles;
|
|
710
|
+
}
|
|
688
711
|
async function createCommitAndTags({
|
|
689
712
|
config,
|
|
690
713
|
noVerify,
|
|
@@ -696,13 +719,7 @@ async function createCommitAndTags({
|
|
|
696
719
|
const internalConfig = config || await loadRelizyConfig();
|
|
697
720
|
try {
|
|
698
721
|
await executeHook("before:commit-and-tag", internalConfig, dryRun ?? false);
|
|
699
|
-
const filePatternsToAdd =
|
|
700
|
-
"package.json",
|
|
701
|
-
"lerna.json",
|
|
702
|
-
"CHANGELOG.md",
|
|
703
|
-
"**/CHANGELOG.md",
|
|
704
|
-
"**/package.json"
|
|
705
|
-
];
|
|
722
|
+
const filePatternsToAdd = getModifiedReleaseFilePatterns({ config: internalConfig });
|
|
706
723
|
logger.start("Start commit and tag");
|
|
707
724
|
logger.debug("Adding files to git staging area...");
|
|
708
725
|
for (const pattern of filePatternsToAdd) {
|
|
@@ -821,6 +838,47 @@ async function pushCommitAndTags({ config, dryRun, logLevel, cwd }) {
|
|
|
821
838
|
}
|
|
822
839
|
logger.success("Pushing changes and tags completed!");
|
|
823
840
|
}
|
|
841
|
+
async function rollbackModifiedFiles({
|
|
842
|
+
config
|
|
843
|
+
}) {
|
|
844
|
+
const modifiedFiles = getModifiedReleaseFilePatterns({ config });
|
|
845
|
+
if (modifiedFiles.length === 0) {
|
|
846
|
+
logger.debug("No modified files to rollback");
|
|
847
|
+
return;
|
|
848
|
+
}
|
|
849
|
+
logger.debug(`Rolling back ${modifiedFiles.length} modified file(s)...`);
|
|
850
|
+
logger.debug(`Files to rollback: ${modifiedFiles.join(", ")}`);
|
|
851
|
+
try {
|
|
852
|
+
const fileList = modifiedFiles.join(" ");
|
|
853
|
+
logger.debug(`Restoring specific files from HEAD: ${fileList}`);
|
|
854
|
+
await execPromise(`git checkout HEAD -- ${fileList}`, {
|
|
855
|
+
cwd: config.cwd,
|
|
856
|
+
logLevel: config.logLevel,
|
|
857
|
+
noStderr: true
|
|
858
|
+
});
|
|
859
|
+
logger.debug("Checking for untracked release files to remove...");
|
|
860
|
+
for (const file of modifiedFiles) {
|
|
861
|
+
const filePath = join(config.cwd, file);
|
|
862
|
+
if (existsSync(filePath)) {
|
|
863
|
+
try {
|
|
864
|
+
execSync(`git ls-files --error-unmatch "${file}"`, {
|
|
865
|
+
cwd: config.cwd,
|
|
866
|
+
encoding: "utf8",
|
|
867
|
+
stdio: "pipe"
|
|
868
|
+
});
|
|
869
|
+
} catch {
|
|
870
|
+
logger.debug(`Removing untracked file: ${file}`);
|
|
871
|
+
execSync(`rm "${filePath}"`, { cwd: config.cwd });
|
|
872
|
+
}
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
logger.success(`Successfully rolled back ${modifiedFiles.length} release file(s)`);
|
|
876
|
+
} catch (error) {
|
|
877
|
+
logger.error("Failed to rollback modified files automatically");
|
|
878
|
+
logger.warn(`Please manually restore these files: ${modifiedFiles.join(", ")}`);
|
|
879
|
+
throw error;
|
|
880
|
+
}
|
|
881
|
+
}
|
|
824
882
|
function getFirstCommit(cwd) {
|
|
825
883
|
const result = execSync(
|
|
826
884
|
"git rev-list --max-parents=0 HEAD",
|
|
@@ -1131,9 +1189,12 @@ function getDefaultConfig() {
|
|
|
1131
1189
|
publish: {
|
|
1132
1190
|
private: false,
|
|
1133
1191
|
args: [],
|
|
1192
|
+
token: process$1.env.RELIZY_NPM_TOKEN || process$1.env.NPM_TOKEN || process$1.env.NODE_AUTH_TOKEN,
|
|
1193
|
+
registry: "https://registry.npmjs.org/",
|
|
1134
1194
|
safetyCheck: false
|
|
1135
1195
|
},
|
|
1136
1196
|
tokens: {
|
|
1197
|
+
registry: process$1.env.RELIZY_NPM_TOKEN || process$1.env.NPM_TOKEN || process$1.env.NODE_AUTH_TOKEN,
|
|
1137
1198
|
gitlab: process$1.env.RELIZY_GITLAB_TOKEN || process$1.env.GITLAB_TOKEN || process$1.env.GITLAB_API_TOKEN || process$1.env.CI_JOB_TOKEN,
|
|
1138
1199
|
github: process$1.env.RELIZY_GITHUB_TOKEN || process$1.env.GITHUB_TOKEN || process$1.env.GH_TOKEN
|
|
1139
1200
|
},
|
|
@@ -2570,7 +2631,7 @@ function getCommandArgs({
|
|
|
2570
2631
|
args.push("--registry", registry);
|
|
2571
2632
|
}
|
|
2572
2633
|
const isPnpmOrNpm = packageManager === "pnpm" || packageManager === "npm";
|
|
2573
|
-
const publishToken = config.publish.token;
|
|
2634
|
+
const publishToken = config.publish.token || config.tokens.registry;
|
|
2574
2635
|
if (publishToken) {
|
|
2575
2636
|
if (!registry) {
|
|
2576
2637
|
logger.warn("Publish token provided but no registry specified");
|
|
@@ -2611,7 +2672,18 @@ function isOtpError(error) {
|
|
|
2611
2672
|
if (typeof error !== "object" || error === null)
|
|
2612
2673
|
return false;
|
|
2613
2674
|
const errorMessage = "message" in error && typeof error.message === "string" ? error.message.toLowerCase() : "";
|
|
2614
|
-
|
|
2675
|
+
const fullErrorString = String(error).toLowerCase();
|
|
2676
|
+
const searchText = `${errorMessage} ${fullErrorString}`;
|
|
2677
|
+
const otpPatterns = [
|
|
2678
|
+
"otp",
|
|
2679
|
+
"one-time password",
|
|
2680
|
+
"eotp",
|
|
2681
|
+
"two-factor authentication",
|
|
2682
|
+
"2fa",
|
|
2683
|
+
"two factor"
|
|
2684
|
+
];
|
|
2685
|
+
const isOtp = otpPatterns.some((pattern) => searchText.includes(pattern));
|
|
2686
|
+
return isOtp;
|
|
2615
2687
|
}
|
|
2616
2688
|
function promptOtpWithTimeout(timeout = 9e4) {
|
|
2617
2689
|
return new Promise((resolve, reject) => {
|
|
@@ -2640,7 +2712,7 @@ async function handleOtpError() {
|
|
|
2640
2712
|
logger.debug("OTP received, retrying publish...");
|
|
2641
2713
|
return otp;
|
|
2642
2714
|
} catch (promptError) {
|
|
2643
|
-
logger.error("Failed to get OTP
|
|
2715
|
+
logger.error("Failed to get OTP");
|
|
2644
2716
|
throw promptError;
|
|
2645
2717
|
}
|
|
2646
2718
|
}
|
|
@@ -2663,6 +2735,7 @@ async function executePublishCommand({
|
|
|
2663
2735
|
noStderr: true,
|
|
2664
2736
|
noStdout: true,
|
|
2665
2737
|
noSuccess: true,
|
|
2738
|
+
noError: true,
|
|
2666
2739
|
logLevel: config.logLevel,
|
|
2667
2740
|
cwd: pkg.path
|
|
2668
2741
|
});
|
|
@@ -3418,7 +3491,7 @@ async function publish(options = {}) {
|
|
|
3418
3491
|
config,
|
|
3419
3492
|
dryRun
|
|
3420
3493
|
});
|
|
3421
|
-
for (const pkg of sortedPackages) {
|
|
3494
|
+
for await (const pkg of sortedPackages) {
|
|
3422
3495
|
if (publishedPackages.some((p) => p.name === pkg.name)) {
|
|
3423
3496
|
logger.debug(`Publishing ${getIndependentTag({ name: pkg.name, version: pkg.newVersion || pkg.version })}...`);
|
|
3424
3497
|
await publishPackage({
|
|
@@ -3543,7 +3616,31 @@ async function release(options = {}) {
|
|
|
3543
3616
|
} else {
|
|
3544
3617
|
logger.info("Skipping changelog generation (--no-changelog)");
|
|
3545
3618
|
}
|
|
3546
|
-
logger.box("Step 3/6:
|
|
3619
|
+
logger.box("Step 3/6: Publish packages to registry");
|
|
3620
|
+
let publishResponse;
|
|
3621
|
+
if (config.release.publish) {
|
|
3622
|
+
try {
|
|
3623
|
+
publishResponse = await publish({
|
|
3624
|
+
registry: config.publish.registry,
|
|
3625
|
+
tag: config.publish.tag,
|
|
3626
|
+
access: config.publish.access,
|
|
3627
|
+
otp: config.publish.otp,
|
|
3628
|
+
bumpResult,
|
|
3629
|
+
dryRun,
|
|
3630
|
+
config,
|
|
3631
|
+
configName: options.configName,
|
|
3632
|
+
suffix: options.suffix,
|
|
3633
|
+
force
|
|
3634
|
+
});
|
|
3635
|
+
} catch (error) {
|
|
3636
|
+
logger.error("Publish failed, rolling back modified files...");
|
|
3637
|
+
await rollbackModifiedFiles({ config });
|
|
3638
|
+
throw error;
|
|
3639
|
+
}
|
|
3640
|
+
} else {
|
|
3641
|
+
logger.info("Skipping publish (--no-publish)");
|
|
3642
|
+
}
|
|
3643
|
+
logger.box("Step 4/6: Commit changes and create tag");
|
|
3547
3644
|
let createdTags = [];
|
|
3548
3645
|
if (config.release.commit) {
|
|
3549
3646
|
createdTags = await createCommitAndTags({
|
|
@@ -3557,7 +3654,7 @@ async function release(options = {}) {
|
|
|
3557
3654
|
} else {
|
|
3558
3655
|
logger.info("Skipping commit and tag (--no-commit)");
|
|
3559
3656
|
}
|
|
3560
|
-
logger.box("Step
|
|
3657
|
+
logger.box("Step 5/6: Push changes and tags");
|
|
3561
3658
|
if (config.release.push && config.release.commit) {
|
|
3562
3659
|
await executeHook("before:push", config, dryRun);
|
|
3563
3660
|
try {
|
|
@@ -3575,24 +3672,6 @@ async function release(options = {}) {
|
|
|
3575
3672
|
} else {
|
|
3576
3673
|
logger.info("Skipping push (--no-push or --no-commit)");
|
|
3577
3674
|
}
|
|
3578
|
-
logger.box("Step 5/6: Publish packages to registry");
|
|
3579
|
-
let publishResponse;
|
|
3580
|
-
if (config.release.publish) {
|
|
3581
|
-
publishResponse = await publish({
|
|
3582
|
-
registry: config.publish.registry,
|
|
3583
|
-
tag: config.publish.tag,
|
|
3584
|
-
access: config.publish.access,
|
|
3585
|
-
otp: config.publish.otp,
|
|
3586
|
-
bumpResult,
|
|
3587
|
-
dryRun,
|
|
3588
|
-
config,
|
|
3589
|
-
configName: options.configName,
|
|
3590
|
-
suffix: options.suffix,
|
|
3591
|
-
force
|
|
3592
|
-
});
|
|
3593
|
-
} else {
|
|
3594
|
-
logger.info("Skipping publish (--no-publish)");
|
|
3595
|
-
}
|
|
3596
3675
|
let provider = config.repo?.provider;
|
|
3597
3676
|
let postedReleases = [];
|
|
3598
3677
|
logger.box("Step 6/6: Publish Git release");
|
|
@@ -3638,4 +3717,4 @@ Git provider: ${provider}`);
|
|
|
3638
3717
|
}
|
|
3639
3718
|
}
|
|
3640
3719
|
|
|
3641
|
-
export {
|
|
3720
|
+
export { executeBuildCmd as $, getCurrentGitBranch as A, getCurrentGitRef as B, github as C, createGitlabRelease as D, gitlab as E, detectPackageManager as F, determinePublishTag as G, getPackagesToPublishInSelectiveMode as H, getPackagesToPublishInIndependentMode as I, getAuthCommand as J, publishPackage as K, readPackageJson as L, getRootPackage as M, readPackages as N, getPackages as O, getPackageCommits as P, hasLernaJson as Q, getIndependentTag as R, getLastStableTag as S, getLastTag as T, getLastRepoTag as U, getLastPackageTag as V, resolveTags as W, executeHook as X, isInCI as Y, getCIName as Z, executeFormatCmd as _, providerRelease as a, isBumpedPackage as a0, getPackagesOrBumpedPackages as a1, isGraduatingToStableBetweenVersion as a2, determineSemverChange as a3, determineReleaseType as a4, writeVersion as a5, getPackageNewVersion as a6, updateLernaVersion as a7, extractVersionFromPackageTag as a8, isPrerelease as a9, isStableReleaseType as aa, isPrereleaseReleaseType as ab, isGraduating as ac, getPreid as ad, isChangedPreid as ae, getBumpedPackageIndependently as af, confirmBump as ag, getBumpedIndependentPackages as ah, shouldFilterPrereleaseTags as ai, extractVersionFromTag as aj, isTagVersionCompatibleWithCurrent as ak, bump as b, changelog as c, publishSafetyCheck as d, publish as e, getDefaultConfig as f, generateChangelog as g, defineConfig as h, getPackageDependencies as i, getDependentsOf as j, expandPackagesToBumpWithDependents as k, loadRelizyConfig as l, getGitStatus as m, checkGitStatusIfDirty as n, fetchGitTags as o, providerReleaseSafetyCheck as p, detectGitProvider as q, release as r, parseGitRemoteUrl as s, topologicalSort as t, getModifiedReleaseFilePatterns as u, createCommitAndTags as v, writeChangelogToFile as w, pushCommitAndTags as x, rollbackModifiedFiles as y, getFirstCommit as z };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "relizy",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.3.0",
|
|
5
5
|
"description": "Changelogen adapter for monorepo management with unified and independent versioning",
|
|
6
6
|
"author": "Louis Mazel <me@loicmazuel.com>",
|
|
7
7
|
"license": "MIT",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
58
|
"@inquirer/prompts": "^8.1.0",
|
|
59
|
-
"@maz-ui/node": "4.3.
|
|
59
|
+
"@maz-ui/node": "4.3.4-beta.0",
|
|
60
60
|
"@maz-ui/utils": "^4.3.0",
|
|
61
61
|
"c12": "^3.3.3",
|
|
62
62
|
"changelogen": "^0.6.2",
|