@glpkg/publisher 1.0.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/LICENSE +21 -0
- package/README.md +215 -0
- package/dist/__tests__/cli.test.d.ts +2 -0
- package/dist/__tests__/cli.test.d.ts.map +1 -0
- package/dist/__tests__/cli.test.js +93 -0
- package/dist/__tests__/cli.test.js.map +1 -0
- package/dist/__tests__/generic/manifest-reader.test.d.ts +2 -0
- package/dist/__tests__/generic/manifest-reader.test.d.ts.map +1 -0
- package/dist/__tests__/generic/manifest-reader.test.js +170 -0
- package/dist/__tests__/generic/manifest-reader.test.js.map +1 -0
- package/dist/__tests__/generic/tarball-creator.test.d.ts +2 -0
- package/dist/__tests__/generic/tarball-creator.test.d.ts.map +1 -0
- package/dist/__tests__/generic/tarball-creator.test.js +188 -0
- package/dist/__tests__/generic/tarball-creator.test.js.map +1 -0
- package/dist/__tests__/helpers/git-helper.d.ts +24 -0
- package/dist/__tests__/helpers/git-helper.d.ts.map +1 -0
- package/dist/__tests__/helpers/git-helper.js +104 -0
- package/dist/__tests__/helpers/git-helper.js.map +1 -0
- package/dist/__tests__/package-deletion.test.d.ts +2 -0
- package/dist/__tests__/package-deletion.test.d.ts.map +1 -0
- package/dist/__tests__/package-deletion.test.js +148 -0
- package/dist/__tests__/package-deletion.test.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +61 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/generic-publisher.d.ts +7 -0
- package/dist/core/generic-publisher.d.ts.map +1 -0
- package/dist/core/generic-publisher.js +116 -0
- package/dist/core/generic-publisher.js.map +1 -0
- package/dist/core/npmrc-manager.d.ts +24 -0
- package/dist/core/npmrc-manager.d.ts.map +1 -0
- package/dist/core/npmrc-manager.js +148 -0
- package/dist/core/npmrc-manager.js.map +1 -0
- package/dist/core/project-detector.d.ts +27 -0
- package/dist/core/project-detector.d.ts.map +1 -0
- package/dist/core/project-detector.js +113 -0
- package/dist/core/project-detector.js.map +1 -0
- package/dist/core/publisher.d.ts +57 -0
- package/dist/core/publisher.d.ts.map +1 -0
- package/dist/core/publisher.js +350 -0
- package/dist/core/publisher.js.map +1 -0
- package/dist/core/version-manager.d.ts +49 -0
- package/dist/core/version-manager.d.ts.map +1 -0
- package/dist/core/version-manager.js +184 -0
- package/dist/core/version-manager.js.map +1 -0
- package/dist/generic/gitlab-api.d.ts +16 -0
- package/dist/generic/gitlab-api.d.ts.map +1 -0
- package/dist/generic/gitlab-api.js +79 -0
- package/dist/generic/gitlab-api.js.map +1 -0
- package/dist/generic/manifest-reader.d.ts +4 -0
- package/dist/generic/manifest-reader.d.ts.map +1 -0
- package/dist/generic/manifest-reader.js +60 -0
- package/dist/generic/manifest-reader.js.map +1 -0
- package/dist/generic/tarball-creator.d.ts +9 -0
- package/dist/generic/tarball-creator.d.ts.map +1 -0
- package/dist/generic/tarball-creator.js +92 -0
- package/dist/generic/tarball-creator.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/types/index.d.ts +46 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/git.d.ts +25 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +115 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/package.d.ts +14 -0
- package/dist/utils/package.d.ts.map +1 -0
- package/dist/utils/package.js +86 -0
- package/dist/utils/package.js.map +1 -0
- package/dist/utils/token.d.ts +6 -0
- package/dist/utils/token.d.ts.map +1 -0
- package/dist/utils/token.js +43 -0
- package/dist/utils/token.js.map +1 -0
- package/dist/utils/version.d.ts +14 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +143 -0
- package/dist/utils/version.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.GenericPublisher = void 0;
|
|
40
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
41
|
+
const ora_1 = __importDefault(require("ora"));
|
|
42
|
+
const manifest_reader_1 = require("../generic/manifest-reader");
|
|
43
|
+
const tarball_creator_1 = require("../generic/tarball-creator");
|
|
44
|
+
const gitlab_api_1 = require("../generic/gitlab-api");
|
|
45
|
+
const project_detector_1 = require("./project-detector");
|
|
46
|
+
const token_1 = require("../utils/token");
|
|
47
|
+
class GenericPublisher {
|
|
48
|
+
constructor(options = {}) {
|
|
49
|
+
this.options = options;
|
|
50
|
+
}
|
|
51
|
+
async publish(manifestPath) {
|
|
52
|
+
const spinner = (0, ora_1.default)();
|
|
53
|
+
let tarballPath = null;
|
|
54
|
+
try {
|
|
55
|
+
// 1. manifest 읽기
|
|
56
|
+
spinner.start('Reading manifest...');
|
|
57
|
+
const manifest = (0, manifest_reader_1.readManifest)(manifestPath);
|
|
58
|
+
const baseDir = (0, manifest_reader_1.getManifestDir)(manifestPath);
|
|
59
|
+
spinner.succeed(`Manifest loaded: ${manifest.name}@${manifest.version}`);
|
|
60
|
+
// 2. prepublish 스크립트 실행 (있으면)
|
|
61
|
+
if (manifest.scripts?.prepublish && !this.options.noBuild) {
|
|
62
|
+
spinner.start('Running prepublish script...');
|
|
63
|
+
const { shellSync } = await Promise.resolve().then(() => __importStar(require('tsshell')));
|
|
64
|
+
shellSync(manifest.scripts.prepublish, { cwd: baseDir });
|
|
65
|
+
spinner.succeed('Prepublish script completed');
|
|
66
|
+
}
|
|
67
|
+
// 3. tarball 생성
|
|
68
|
+
spinner.start('Creating tarball...');
|
|
69
|
+
const tarballResult = await (0, tarball_creator_1.createTarball)(manifest, baseDir);
|
|
70
|
+
tarballPath = tarballResult.tarballPath;
|
|
71
|
+
spinner.succeed(`Tarball created: ${tarballResult.filename} (${formatSize(tarballResult.size)})`);
|
|
72
|
+
// 4. GitLab project 정보
|
|
73
|
+
spinner.start('Detecting GitLab project...');
|
|
74
|
+
const token = (0, token_1.getGitLabToken)(this.options.token);
|
|
75
|
+
const detector = new project_detector_1.ProjectDetector(manifest.name, token);
|
|
76
|
+
const projectInfo = await detector.detect();
|
|
77
|
+
spinner.succeed(`Project: ${projectInfo.pathWithNamespace}`);
|
|
78
|
+
// 5. 업로드
|
|
79
|
+
if (this.options.dryRun) {
|
|
80
|
+
spinner.info('[DRY-RUN] Would upload to GitLab Generic Package Registry');
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
spinner.start('Uploading to GitLab...');
|
|
84
|
+
const result = await (0, gitlab_api_1.uploadGenericPackage)({
|
|
85
|
+
projectId: projectInfo.projectId,
|
|
86
|
+
gitlabHost: projectInfo.gitlabHost,
|
|
87
|
+
token: projectInfo.token,
|
|
88
|
+
packageName: manifest.name,
|
|
89
|
+
packageVersion: manifest.version,
|
|
90
|
+
filename: tarballResult.filename,
|
|
91
|
+
filePath: tarballPath,
|
|
92
|
+
});
|
|
93
|
+
if (!result.success) {
|
|
94
|
+
throw new Error(result.error);
|
|
95
|
+
}
|
|
96
|
+
spinner.succeed('Package uploaded successfully!');
|
|
97
|
+
console.log(chalk_1.default.cyan(`Package URL: ${result.url}`));
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
finally {
|
|
101
|
+
// cleanup
|
|
102
|
+
if (tarballPath) {
|
|
103
|
+
(0, tarball_creator_1.cleanupTarball)(tarballPath);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
exports.GenericPublisher = GenericPublisher;
|
|
109
|
+
function formatSize(bytes) {
|
|
110
|
+
if (bytes < 1024)
|
|
111
|
+
return `${bytes} B`;
|
|
112
|
+
if (bytes < 1024 * 1024)
|
|
113
|
+
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
114
|
+
return `${(bytes / 1024 / 1024).toFixed(1)} MB`;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=generic-publisher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic-publisher.js","sourceRoot":"","sources":["../../src/core/generic-publisher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ProjectInfo } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* NPM RC Manager - Manages .npmrc file for GitLab registry
|
|
4
|
+
*
|
|
5
|
+
* Uses ${GITLAB_TOKEN} environment variable for auth (no token in .npmrc)
|
|
6
|
+
*/
|
|
7
|
+
export declare class NpmrcManager {
|
|
8
|
+
private projectPath;
|
|
9
|
+
private npmrcPath;
|
|
10
|
+
private backupPath;
|
|
11
|
+
private hasBackup;
|
|
12
|
+
constructor(projectPath?: string);
|
|
13
|
+
/**
|
|
14
|
+
* Add registry to existing .npmrc (non-destructive)
|
|
15
|
+
* For scoped packages: adds @scope:registry=...
|
|
16
|
+
* For unscoped packages: adds registry=... (default registry)
|
|
17
|
+
*/
|
|
18
|
+
create(projectInfo: ProjectInfo, verbose?: boolean, packageName?: string): void;
|
|
19
|
+
/**
|
|
20
|
+
* Cleanup: restore original .npmrc if backed up, delete if not
|
|
21
|
+
*/
|
|
22
|
+
cleanup(): void;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=npmrc-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npmrc-manager.d.ts","sourceRoot":"","sources":["../../src/core/npmrc-manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C;;;;GAIG;AACH,qBAAa,YAAY;IAKX,OAAO,CAAC,WAAW;IAJ/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;gBAEN,WAAW,GAAE,MAAsB;IAKvD;;;;OAIG;IACH,MAAM,CACJ,WAAW,EAAE,WAAW,EACxB,OAAO,UAAQ,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,IAAI;IAyEP;;OAEG;IACH,OAAO,IAAI,IAAI;CAehB"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.NpmrcManager = void 0;
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
43
|
+
const ora_1 = __importDefault(require("ora"));
|
|
44
|
+
/**
|
|
45
|
+
* NPM RC Manager - Manages .npmrc file for GitLab registry
|
|
46
|
+
*
|
|
47
|
+
* Uses ${GITLAB_TOKEN} environment variable for auth (no token in .npmrc)
|
|
48
|
+
*/
|
|
49
|
+
class NpmrcManager {
|
|
50
|
+
constructor(projectPath = process.cwd()) {
|
|
51
|
+
this.projectPath = projectPath;
|
|
52
|
+
this.hasBackup = false;
|
|
53
|
+
this.npmrcPath = path.join(this.projectPath, '.npmrc');
|
|
54
|
+
this.backupPath = path.join(this.projectPath, '.npmrc.gitlab-backup');
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Add registry to existing .npmrc (non-destructive)
|
|
58
|
+
* For scoped packages: adds @scope:registry=...
|
|
59
|
+
* For unscoped packages: adds registry=... (default registry)
|
|
60
|
+
*/
|
|
61
|
+
create(projectInfo, verbose = false, packageName) {
|
|
62
|
+
const spinner = (0, ora_1.default)('Configuring .npmrc...').start();
|
|
63
|
+
try {
|
|
64
|
+
if (!projectInfo.namespace || !projectInfo.groupId) {
|
|
65
|
+
throw new Error('GitLab group/namespace and group ID are required');
|
|
66
|
+
}
|
|
67
|
+
// Use project registry for publishing (GitLab requires this)
|
|
68
|
+
// Group registry is only for installing
|
|
69
|
+
if (!projectInfo.projectId) {
|
|
70
|
+
throw new Error('Project ID is required for publishing');
|
|
71
|
+
}
|
|
72
|
+
const registryUrl = `https://${projectInfo.gitlabHost}/api/v4/projects/${projectInfo.projectId}/packages/npm/`;
|
|
73
|
+
const authUrl = `${projectInfo.gitlabHost}/api/v4/projects/${projectInfo.projectId}/packages/npm/`;
|
|
74
|
+
// Determine if scoped or unscoped
|
|
75
|
+
const isScoped = packageName && packageName.startsWith('@');
|
|
76
|
+
let scope = null;
|
|
77
|
+
if (isScoped) {
|
|
78
|
+
const [pkgScope] = packageName.split('/');
|
|
79
|
+
scope = pkgScope;
|
|
80
|
+
}
|
|
81
|
+
// Read existing .npmrc
|
|
82
|
+
let existingContent = '';
|
|
83
|
+
if (fs.existsSync(this.npmrcPath)) {
|
|
84
|
+
existingContent = fs.readFileSync(this.npmrcPath, 'utf-8');
|
|
85
|
+
// Backup existing .npmrc
|
|
86
|
+
fs.copyFileSync(this.npmrcPath, this.backupPath);
|
|
87
|
+
this.hasBackup = true;
|
|
88
|
+
spinner.text = 'Backed up existing .npmrc...';
|
|
89
|
+
}
|
|
90
|
+
// Parse and update .npmrc
|
|
91
|
+
const lines = existingContent.split('\n').filter(line => line.trim());
|
|
92
|
+
// Remove existing entries for auth
|
|
93
|
+
const authPrefix = `//${authUrl}:_authToken=`;
|
|
94
|
+
let filteredLines = lines.filter(line => !line.startsWith(authPrefix));
|
|
95
|
+
if (isScoped && scope) {
|
|
96
|
+
// Scoped package: add @scope:registry=...
|
|
97
|
+
const scopePrefix = `${scope}:registry=`;
|
|
98
|
+
filteredLines = filteredLines.filter(line => !line.startsWith(scopePrefix));
|
|
99
|
+
filteredLines.push(`${scope}:registry=${registryUrl}`);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
// Unscoped package: add registry=... (default registry)
|
|
103
|
+
filteredLines = filteredLines.filter(line => !line.startsWith('registry='));
|
|
104
|
+
filteredLines.push(`registry=${registryUrl}`);
|
|
105
|
+
}
|
|
106
|
+
// Add auth token (using environment variable)
|
|
107
|
+
filteredLines.push(`//${authUrl}:_authToken=\${GITLAB_TOKEN}`);
|
|
108
|
+
fs.writeFileSync(this.npmrcPath, filteredLines.join('\n') + '\n');
|
|
109
|
+
spinner.succeed('.npmrc configured');
|
|
110
|
+
if (verbose) {
|
|
111
|
+
console.log(chalk_1.default.gray('Registry URL:'), registryUrl);
|
|
112
|
+
if (isScoped) {
|
|
113
|
+
console.log(chalk_1.default.gray('Scope:'), chalk_1.default.cyan(scope));
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
console.log(chalk_1.default.gray('Package:'), chalk_1.default.cyan(packageName), chalk_1.default.gray('(unscoped)'));
|
|
117
|
+
}
|
|
118
|
+
console.log(chalk_1.default.gray('Token:'), 'Using ${GITLAB_TOKEN} environment variable');
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
spinner.fail('Failed to configure .npmrc');
|
|
123
|
+
throw error;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Cleanup: restore original .npmrc if backed up, delete if not
|
|
128
|
+
*/
|
|
129
|
+
cleanup() {
|
|
130
|
+
try {
|
|
131
|
+
if (this.hasBackup && fs.existsSync(this.backupPath)) {
|
|
132
|
+
fs.copyFileSync(this.backupPath, this.npmrcPath);
|
|
133
|
+
fs.unlinkSync(this.backupPath);
|
|
134
|
+
console.log(chalk_1.default.gray('✓'), 'Restored original .npmrc');
|
|
135
|
+
}
|
|
136
|
+
else if (fs.existsSync(this.npmrcPath)) {
|
|
137
|
+
// No backup existed, delete the .npmrc we created
|
|
138
|
+
fs.unlinkSync(this.npmrcPath);
|
|
139
|
+
console.log(chalk_1.default.gray('✓'), 'Cleaned up temporary .npmrc');
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
console.error(chalk_1.default.yellow('⚠'), 'Failed to cleanup .npmrc');
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
exports.NpmrcManager = NpmrcManager;
|
|
148
|
+
//# sourceMappingURL=npmrc-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npmrc-manager.js","sourceRoot":"","sources":["../../src/core/npmrc-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ProjectInfo } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Project Detector - Detects GitLab project information
|
|
4
|
+
*/
|
|
5
|
+
export declare class ProjectDetector {
|
|
6
|
+
private packageName;
|
|
7
|
+
private token;
|
|
8
|
+
private namespace?;
|
|
9
|
+
private pathWithNamespace?;
|
|
10
|
+
private projectId?;
|
|
11
|
+
private groupId?;
|
|
12
|
+
private gitlabHost;
|
|
13
|
+
constructor(packageName: string, token: string);
|
|
14
|
+
/**
|
|
15
|
+
* Detect all project information
|
|
16
|
+
*/
|
|
17
|
+
detect(): Promise<ProjectInfo>;
|
|
18
|
+
/**
|
|
19
|
+
* Detect project ID and namespace from git remote using glab CLI
|
|
20
|
+
*/
|
|
21
|
+
private detectProjectInfoFromGit;
|
|
22
|
+
/**
|
|
23
|
+
* Detect group ID from GitLab API
|
|
24
|
+
*/
|
|
25
|
+
private detectGroupId;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=project-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-detector.d.ts","sourceRoot":"","sources":["../../src/core/project-detector.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C;;GAEG;AACH,qBAAa,eAAe;IAQxB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,KAAK;IARf,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,iBAAiB,CAAC,CAAS;IACnC,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,UAAU,CAAgB;gBAGxB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM;IAGvB;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC;IAqCpC;;OAEG;YACW,wBAAwB;IAsCtC;;OAEG;YACW,aAAa;CAmB5B"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ProjectDetector = void 0;
|
|
7
|
+
const tsshell_1 = require("tsshell");
|
|
8
|
+
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
9
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
+
const ora_1 = __importDefault(require("ora"));
|
|
11
|
+
/**
|
|
12
|
+
* Project Detector - Detects GitLab project information
|
|
13
|
+
*/
|
|
14
|
+
class ProjectDetector {
|
|
15
|
+
constructor(packageName, token) {
|
|
16
|
+
this.packageName = packageName;
|
|
17
|
+
this.token = token;
|
|
18
|
+
this.gitlabHost = 'gitlab.com';
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Detect all project information
|
|
22
|
+
*/
|
|
23
|
+
async detect() {
|
|
24
|
+
const spinner = (0, ora_1.default)('Detecting project information...').start();
|
|
25
|
+
try {
|
|
26
|
+
// Get project ID and namespace from git remote
|
|
27
|
+
await this.detectProjectInfoFromGit();
|
|
28
|
+
if (this.namespace) {
|
|
29
|
+
spinner.text = `Found GitLab group: ${chalk_1.default.cyan(this.namespace)}`;
|
|
30
|
+
}
|
|
31
|
+
// Always detect group ID for group registry
|
|
32
|
+
if (this.namespace) {
|
|
33
|
+
await this.detectGroupId();
|
|
34
|
+
if (this.groupId) {
|
|
35
|
+
spinner.text = `Found group ID: ${chalk_1.default.cyan(this.groupId)}`;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
throw new Error(`Failed to get group ID for namespace: ${this.namespace}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
spinner.succeed('Project information detected');
|
|
42
|
+
return {
|
|
43
|
+
namespace: this.namespace,
|
|
44
|
+
pathWithNamespace: this.pathWithNamespace,
|
|
45
|
+
projectId: this.projectId,
|
|
46
|
+
groupId: this.groupId,
|
|
47
|
+
gitlabHost: this.gitlabHost,
|
|
48
|
+
token: this.token,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
spinner.fail('Failed to detect project information');
|
|
53
|
+
throw error;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Detect project ID and namespace from git remote using glab CLI
|
|
58
|
+
*/
|
|
59
|
+
async detectProjectInfoFromGit() {
|
|
60
|
+
try {
|
|
61
|
+
const projectInfo = (0, tsshell_1.shellSync)('glab api projects/:id -X GET').trim();
|
|
62
|
+
const project = JSON.parse(projectInfo);
|
|
63
|
+
this.projectId = project.id;
|
|
64
|
+
// Store full path_with_namespace for URL generation
|
|
65
|
+
if (project.path_with_namespace) {
|
|
66
|
+
this.pathWithNamespace = project.path_with_namespace;
|
|
67
|
+
// Extract namespace (everything except the last part which is the project name)
|
|
68
|
+
const parts = project.path_with_namespace.split('/');
|
|
69
|
+
this.namespace = parts[0];
|
|
70
|
+
}
|
|
71
|
+
// Fallback: try to get from namespace object
|
|
72
|
+
if (!this.namespace && project.namespace?.path) {
|
|
73
|
+
this.namespace = project.namespace.path;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
// Show detailed error and stop execution
|
|
78
|
+
console.log(); // Add spacing after spinner
|
|
79
|
+
if (error instanceof tsshell_1.ShellError) {
|
|
80
|
+
console.error(chalk_1.default.red('Error from glab:'), error.stderr || error.message);
|
|
81
|
+
}
|
|
82
|
+
else if (error instanceof Error) {
|
|
83
|
+
console.error(chalk_1.default.red('Error:'), error.message);
|
|
84
|
+
}
|
|
85
|
+
console.log(chalk_1.default.yellow('\nPossible solutions:'));
|
|
86
|
+
console.log(' 1. Run "glab auth login" to authenticate with GitLab');
|
|
87
|
+
console.log(' 2. Make sure you are in a Git repository with GitLab remote');
|
|
88
|
+
console.log(' 3. Check if you are in the correct GitLab project directory');
|
|
89
|
+
throw new Error('Failed to detect project ID. GitLab authentication or project detection failed.');
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Detect group ID from GitLab API
|
|
94
|
+
*/
|
|
95
|
+
async detectGroupId() {
|
|
96
|
+
if (!this.namespace)
|
|
97
|
+
return;
|
|
98
|
+
try {
|
|
99
|
+
const response = await (0, node_fetch_1.default)(`https://${this.gitlabHost}/api/v4/groups/${this.namespace}`, {
|
|
100
|
+
headers: { 'PRIVATE-TOKEN': this.token },
|
|
101
|
+
});
|
|
102
|
+
if (response.ok) {
|
|
103
|
+
const group = await response.json();
|
|
104
|
+
this.groupId = group.id.toString();
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
// Group registry not available, continue without it
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
exports.ProjectDetector = ProjectDetector;
|
|
113
|
+
//# sourceMappingURL=project-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-detector.js","sourceRoot":"","sources":["../../src/core/project-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { PublishOptions, PublishType } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* GitLab Publisher - Main class for publishing packages to GitLab
|
|
4
|
+
*/
|
|
5
|
+
export declare class GitLabPublisher {
|
|
6
|
+
private options;
|
|
7
|
+
private projectPath;
|
|
8
|
+
private packageJson;
|
|
9
|
+
private token;
|
|
10
|
+
private versionManager;
|
|
11
|
+
private npmrcManager;
|
|
12
|
+
private projectInfo?;
|
|
13
|
+
constructor(options?: PublishOptions);
|
|
14
|
+
private loadPackageJson;
|
|
15
|
+
/**
|
|
16
|
+
* Validate environment before publishing
|
|
17
|
+
*/
|
|
18
|
+
private validateEnvironment;
|
|
19
|
+
/**
|
|
20
|
+
* Execute npm command with proper error handling
|
|
21
|
+
* Automatically sets GITLAB_TOKEN environment variable
|
|
22
|
+
*/
|
|
23
|
+
private executeNpmCommand;
|
|
24
|
+
/**
|
|
25
|
+
* Publish package to GitLab registry
|
|
26
|
+
*/
|
|
27
|
+
publish(type: PublishType, options?: PublishOptions): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Publish based on type (dev, beta, latest)
|
|
30
|
+
*/
|
|
31
|
+
private publishByType;
|
|
32
|
+
/**
|
|
33
|
+
* Publish dev version
|
|
34
|
+
*/
|
|
35
|
+
private publishDev;
|
|
36
|
+
/**
|
|
37
|
+
* Publish beta version
|
|
38
|
+
*/
|
|
39
|
+
private publishBeta;
|
|
40
|
+
/**
|
|
41
|
+
* Publish latest version
|
|
42
|
+
*/
|
|
43
|
+
private publishLatest;
|
|
44
|
+
/**
|
|
45
|
+
* Push changes to remote
|
|
46
|
+
*/
|
|
47
|
+
private pushChanges;
|
|
48
|
+
/**
|
|
49
|
+
* Show success message with package URL
|
|
50
|
+
*/
|
|
51
|
+
private showSuccessMessage;
|
|
52
|
+
/**
|
|
53
|
+
* Save package metadata to gitlab-config
|
|
54
|
+
*/
|
|
55
|
+
private savePackageMetadata;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=publisher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../src/core/publisher.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAe,MAAM,UAAU,CAAC;AASzE;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAC,CAAM;gBAEd,OAAO,GAAE,cAAmB;IAaxC,OAAO,CAAC,eAAe;IAQvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkC3B;;;OAGG;YACW,iBAAiB;IA2C/B;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoD7E;;OAEG;YACW,aAAa;IAiB3B;;OAEG;YACW,UAAU;IAsCxB;;OAEG;YACW,WAAW;IAwCzB;;OAEG;YACW,aAAa;IAwC3B;;OAEG;YACW,WAAW;IAYzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkB1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAiC5B"}
|