relizy 0.1.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/bin/relizy.mjs ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import '../dist/cli.mjs'
package/dist/cli.d.mts ADDED
@@ -0,0 +1 @@
1
+
package/dist/cli.d.ts ADDED
@@ -0,0 +1 @@
1
+
package/dist/cli.mjs ADDED
@@ -0,0 +1,160 @@
1
+ #!/usr/bin/env node
2
+ import { readFileSync } from 'node:fs';
3
+ import { dirname, join } from 'node:path';
4
+ import process from 'node:process';
5
+ import { fileURLToPath } from 'node:url';
6
+ import { printBanner } from '@maz-ui/node';
7
+ import { Command } from 'commander';
8
+ import { b as bump, c as changelog, a as publish, p as providerRelease, r as release } from './shared/relizy.Blp-ymeX.mjs';
9
+ import 'node:child_process';
10
+ import 'changelogen';
11
+ import 'fast-glob';
12
+ import '@inquirer/prompts';
13
+ import '@maz-ui/utils';
14
+ import 'semver';
15
+ import 'c12';
16
+ import 'defu';
17
+ import 'convert-gitmoji';
18
+ import 'node-fetch-native';
19
+
20
+ const hasSilentFlag = process.argv.includes("--log-level") && process.argv.includes("silent");
21
+ const __filename = fileURLToPath(import.meta.url);
22
+ const __dirname = dirname(__filename);
23
+ const packageJson = JSON.parse(
24
+ readFileSync(join(__dirname, "../package.json"), "utf-8")
25
+ );
26
+ const version = packageJson.version;
27
+ if (!hasSilentFlag) {
28
+ printBanner({
29
+ name: "Relizy",
30
+ version: `v${version}`,
31
+ options: {
32
+ horizontalLayout: "full",
33
+ verticalLayout: "full",
34
+ font: "ANSI Shadow",
35
+ breakAfter: false,
36
+ breakBefore: false,
37
+ clear: false
38
+ }
39
+ });
40
+ }
41
+ const program = new Command();
42
+ function hasCliFlag(flag) {
43
+ return process.argv.includes(flag);
44
+ }
45
+ function getReleaseType(options) {
46
+ let type = "release";
47
+ if (options.major)
48
+ type = "major";
49
+ else if (options.minor)
50
+ type = "minor";
51
+ else if (options.patch)
52
+ type = "patch";
53
+ else if (options.premajor)
54
+ type = "premajor";
55
+ else if (options.prerelease)
56
+ type = "prerelease";
57
+ else if (options.preminor)
58
+ type = "preminor";
59
+ else if (options.prepatch)
60
+ type = "prepatch";
61
+ return type;
62
+ }
63
+ program.name("relizy").description("Release management tool for monorepos and standalone packages").version(version).option("--config <name>", "Config file name (without .config.ts - e.g. changelog-test)", "relizy").option("--log-level <level>", "Set log level (silent, error, warning, normal, default, debug, trace, verbose)", "default").option("--dry-run", "Preview changes without writing files, creating tags, commits or publishing");
64
+ program.command("bump").description("Bump package versions").option("--major", "Bump major version").option("--minor", "Bump minor version").option("--patch", "Bump patch version").option("--prerelease", "Bump prerelease version").option("--premajor", "Bump premajor version").option("--preminor", "Bump preminor version").option("--prepatch", "Bump prepatch version").option("--preid <id>", "Prerelease identifier (alpha, beta, rc, etc.)").option("--suffix <suffix>", "Custom suffix for prerelease versions - replace the last .X with .suffix (e.g. 1.0.0-beta.0 -> 1.0.0-beta.suffix)").option("--no-clean", "Skip check if the working directory is clean").option("--force", "Bump even if there are no commits").option("--yes", "Skip confirmation prompt about bumping packages").action(async (options) => {
65
+ try {
66
+ await bump({
67
+ type: getReleaseType(options),
68
+ preid: options.preid,
69
+ clean: hasCliFlag("--no-clean") ? false : void 0,
70
+ dryRun: program.opts().dryRun,
71
+ logLevel: program.opts().logLevel,
72
+ force: options.force,
73
+ yes: options.yes,
74
+ suffix: options.suffix,
75
+ configName: program.opts().config
76
+ });
77
+ } catch {
78
+ process.exit(1);
79
+ }
80
+ });
81
+ program.command("changelog").description("Generate changelogs for all packages").option("--from <ref>", "Start commit reference").option("--to <ref>", "End commit reference").option("--format-cmd <cmd>", 'Command to format CHANGELOG files after generation (e.g. "pnpm lint")').option("--no-root-changelog", "Skip generation of root changelog file").action(async (options) => {
82
+ try {
83
+ await changelog({
84
+ from: options.from,
85
+ to: options.to,
86
+ formatCmd: options.formatCmd,
87
+ rootChangelog: hasCliFlag("--no-root-changelog") ? false : void 0,
88
+ dryRun: program.opts().dryRun,
89
+ logLevel: program.opts().logLevel,
90
+ configName: program.opts().config
91
+ });
92
+ } catch {
93
+ process.exit(1);
94
+ }
95
+ });
96
+ program.command("publish").description("Publish packages to registry").option("--registry <url>", "Custom registry URL").option("--tag <tag>", "Publish with specific tag (default: latest for stable, next for prerelease)").option("--access <type>", "Package access level (public or restricted)").option("--otp <code>", "One-time password for 2FA").option("--build-cmd <cmd>", 'Command to build packages before publish (e.g. "pnpm build")').action(async (options) => {
97
+ try {
98
+ await publish({
99
+ registry: options.registry,
100
+ tag: options.tag,
101
+ access: options.access,
102
+ otp: options.otp,
103
+ buildCmd: options.buildCmd,
104
+ dryRun: program.opts().dryRun,
105
+ logLevel: program.opts().logLevel,
106
+ configName: program.opts().config
107
+ });
108
+ } catch {
109
+ process.exit(1);
110
+ }
111
+ });
112
+ program.command("provider-release").description("Publish release to git provider (github or gitlab)").option("--from <ref>", "Start commit reference").option("--to <ref>", "End commit reference").option("--token <token>", "Provider token").option("--provider <provider>", "Git provider (github or gitlab)").action(async (options) => {
113
+ try {
114
+ await providerRelease({
115
+ token: options.token,
116
+ from: options.from,
117
+ to: options.to,
118
+ provider: options.provider,
119
+ dryRun: program.opts().dryRun,
120
+ logLevel: program.opts().logLevel,
121
+ configName: program.opts().config
122
+ });
123
+ } catch {
124
+ process.exit(1);
125
+ }
126
+ });
127
+ program.command("release").description("Complete release workflow (bump + changelog + commit + tag + push to remote + publish release)").option("--major", "Bump major version").option("--minor", "Bump minor version").option("--patch", "Bump patch version").option("--prerelease", "Bump prerelease version").option("--premajor", "Bump premajor version").option("--preminor", "Bump preminor version").option("--prepatch", "Bump prepatch version").option("--preid <id>", "Prerelease identifier (alpha, beta, rc, etc.)").option("--suffix <suffix>", "Custom suffix for prerelease versions - replace the last .X with .suffix (e.g. 1.0.0-beta.0 -> 1.0.0-beta.suffix)").option("--from <ref>", "Start commit reference").option("--to <ref>", "End commit reference").option("--no-push", "Skip push changes and tags to remote").option("--no-release", "Skip release creation (GitHub/GitLab)").option("--no-publish", "Skip npm publish").option("--registry <url>", "Custom npm registry URL").option("--tag <tag>", "Publish with specific tag (default: latest for stable, next for prerelease)").option("--access <type>", "Package access level (public or restricted)").option("--otp <code>", "One-time password for 2FA").option("--no-verify", "Skip git hooks during commit").option("--format-cmd <cmd>", 'Command to format CHANGELOG files after generation (e.g. "pnpm lint")').option("--build-cmd <cmd>", 'Command to build packages before publish (e.g. "pnpm build")').option("--no-root-changelog", "Skip generation of root changelog file").option("--token <token>", "Git token (github or gitlab)").option("--force", "Bump even if there are no commits").option("--no-clean", "Skip check if the working directory is clean").option("--no-commit", "Skip commit and tag").option("--no-changelog", "Skip changelog generation files").option("--yes", "Skip confirmation prompt about bumping packages").action(async (options) => {
128
+ try {
129
+ await release({
130
+ type: getReleaseType(options),
131
+ preid: options.preid,
132
+ suffix: options.suffix,
133
+ from: options.from,
134
+ to: options.to,
135
+ changelog: hasCliFlag("--no-changelog") ? false : void 0,
136
+ commit: hasCliFlag("--no-commit") ? false : void 0,
137
+ push: hasCliFlag("--no-push") || hasCliFlag("--no-commit") ? false : void 0,
138
+ publish: hasCliFlag("--no-publish") ? false : void 0,
139
+ release: hasCliFlag("--no-release") ? false : void 0,
140
+ noVerify: hasCliFlag("--no-verify") ? true : void 0,
141
+ clean: hasCliFlag("--no-clean") ? false : void 0,
142
+ registry: options.registry,
143
+ tag: options.tag,
144
+ access: options.access,
145
+ otp: options.otp,
146
+ dryRun: program.opts().dryRun,
147
+ formatCmd: options.formatCmd,
148
+ buildCmd: options.buildCmd,
149
+ rootChangelog: hasCliFlag("--no-root-changelog") ? false : void 0,
150
+ token: options.token,
151
+ logLevel: program.opts().logLevel,
152
+ force: options.force,
153
+ yes: options.yes,
154
+ configName: program.opts().config
155
+ });
156
+ } catch {
157
+ process.exit(1);
158
+ }
159
+ });
160
+ program.parse();