@akash-chowdhury-24/deployhub 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 +176 -0
- package/install.ps1 +55 -0
- package/install.sh +99 -0
- package/package.json +86 -0
- package/src/adapters/dotnet.adapter.js +41 -0
- package/src/adapters/go.adapter.js +40 -0
- package/src/adapters/index.js +48 -0
- package/src/adapters/java.adapter.js +46 -0
- package/src/adapters/node.adapter.js +77 -0
- package/src/adapters/php.adapter.js +43 -0
- package/src/adapters/python.adapter.js +54 -0
- package/src/adapters/rails.adapter.js +66 -0
- package/src/artifact/engine.js +473 -0
- package/src/cli/index.js +45 -0
- package/src/commands/artifact.js +88 -0
- package/src/commands/build.js +44 -0
- package/src/commands/clean.js +50 -0
- package/src/commands/deploy.js +82 -0
- package/src/commands/doctor.js +630 -0
- package/src/commands/init.js +795 -0
- package/src/commands/logs.js +33 -0
- package/src/commands/rollback.js +50 -0
- package/src/commands/storage.js +116 -0
- package/src/commands/update.js +63 -0
- package/src/commands/verify.js +55 -0
- package/src/core/config.js +168 -0
- package/src/core/pipeline.js +77 -0
- package/src/core/stages.js +210 -0
- package/src/deployment/index.js +156 -0
- package/src/deployment/providers/azure-vm.js +7 -0
- package/src/deployment/providers/docker.js +30 -0
- package/src/deployment/providers/ec2.js +7 -0
- package/src/deployment/providers/gcp-vm.js +7 -0
- package/src/deployment/providers/kubernetes.js +30 -0
- package/src/deployment/providers/platforms/_shared.js +167 -0
- package/src/deployment/providers/platforms/aws-amplify.js +164 -0
- package/src/deployment/providers/platforms/azure-static-web-apps.js +68 -0
- package/src/deployment/providers/platforms/cloudflare-pages.js +103 -0
- package/src/deployment/providers/platforms/firebase-app-hosting.js +95 -0
- package/src/deployment/providers/platforms/firebase-hosting.js +99 -0
- package/src/deployment/providers/platforms/index.js +44 -0
- package/src/deployment/providers/platforms/netlify.js +102 -0
- package/src/deployment/providers/platforms/vercel.js +92 -0
- package/src/deployment/providers/ssh.js +365 -0
- package/src/detectors/angular.js +23 -0
- package/src/detectors/backend.detector.js +304 -0
- package/src/detectors/dotnet.js +18 -0
- package/src/detectors/frontend.detector.js +219 -0
- package/src/detectors/go.js +20 -0
- package/src/detectors/index.js +78 -0
- package/src/detectors/java.js +24 -0
- package/src/detectors/nextjs.js +23 -0
- package/src/detectors/node.js +28 -0
- package/src/detectors/php.js +17 -0
- package/src/detectors/python.js +22 -0
- package/src/detectors/react.js +29 -0
- package/src/detectors/vue.js +23 -0
- package/src/logger/index.js +44 -0
- package/src/notifications/email.js +53 -0
- package/src/notifications/index.js +34 -0
- package/src/notifications/slack.js +18 -0
- package/src/notifications/webhook.js +21 -0
- package/src/rollback/engine.js +102 -0
- package/src/storage/index.js +109 -0
- package/src/storage/providers/aws.js +96 -0
- package/src/storage/providers/azure.js +45 -0
- package/src/storage/providers/dropbox.js +49 -0
- package/src/storage/providers/ftp.js +69 -0
- package/src/storage/providers/gcp.js +45 -0
- package/src/storage/providers/gdrive.js +80 -0
- package/src/storage/providers/local.js +61 -0
- package/src/utils/author.js +141 -0
- package/src/utils/checksums.js +53 -0
- package/src/utils/firebase-config-generator.js +35 -0
- package/src/utils/github-actions.js +389 -0
- package/src/utils/init-platform.js +229 -0
- package/src/utils/nginx.js +34 -0
- package/src/utils/platform-env.js +132 -0
- package/src/utils/version.js +31 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/** Platform deployment environment variables and CLI metadata. */
|
|
2
|
+
|
|
3
|
+
export const PLATFORM_ENV_MAP = {
|
|
4
|
+
vercel: ['VERCEL_TOKEN', 'VERCEL_ORG_ID', 'VERCEL_PROJECT_ID'],
|
|
5
|
+
netlify: ['NETLIFY_AUTH_TOKEN', 'NETLIFY_SITE_ID'],
|
|
6
|
+
'cloudflare-pages': [
|
|
7
|
+
'CLOUDFLARE_API_TOKEN',
|
|
8
|
+
'CLOUDFLARE_ACCOUNT_ID',
|
|
9
|
+
'CF_PROJECT_NAME',
|
|
10
|
+
],
|
|
11
|
+
'aws-amplify': [
|
|
12
|
+
'AWS_ACCESS_KEY_ID',
|
|
13
|
+
'AWS_SECRET_ACCESS_KEY',
|
|
14
|
+
'AWS_REGION',
|
|
15
|
+
'AMPLIFY_APP_ID',
|
|
16
|
+
],
|
|
17
|
+
'azure-static-web-apps': ['AZURE_STATIC_WEB_APPS_TOKEN'],
|
|
18
|
+
'firebase-hosting': ['FIREBASE_TOKEN', 'FIREBASE_PROJECT_ID'],
|
|
19
|
+
'firebase-app-hosting': [
|
|
20
|
+
'FIREBASE_TOKEN',
|
|
21
|
+
'FIREBASE_PROJECT_ID',
|
|
22
|
+
'FIREBASE_APP_HOSTING_BACKEND',
|
|
23
|
+
],
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export const PLATFORM_CLI_MAP = {
|
|
27
|
+
vercel: { install: 'vercel', binary: 'vercel', globalInstall: 'npm install -g vercel' },
|
|
28
|
+
netlify: {
|
|
29
|
+
install: 'netlify-cli',
|
|
30
|
+
binary: 'netlify',
|
|
31
|
+
globalInstall: 'npm install -g netlify-cli',
|
|
32
|
+
},
|
|
33
|
+
'cloudflare-pages': {
|
|
34
|
+
install: 'wrangler',
|
|
35
|
+
binary: 'wrangler',
|
|
36
|
+
globalInstall: 'npm install -g wrangler',
|
|
37
|
+
},
|
|
38
|
+
'aws-amplify': {
|
|
39
|
+
install: 'aws-cli',
|
|
40
|
+
binary: 'aws',
|
|
41
|
+
globalInstall: null,
|
|
42
|
+
},
|
|
43
|
+
'azure-static-web-apps': {
|
|
44
|
+
install: '@azure/static-web-apps-cli',
|
|
45
|
+
binary: 'swa',
|
|
46
|
+
globalInstall: 'npm install -g @azure/static-web-apps-cli',
|
|
47
|
+
},
|
|
48
|
+
'firebase-hosting': {
|
|
49
|
+
install: 'firebase-tools',
|
|
50
|
+
binary: 'firebase',
|
|
51
|
+
globalInstall: 'npm install -g firebase-tools',
|
|
52
|
+
},
|
|
53
|
+
'firebase-app-hosting': {
|
|
54
|
+
install: 'firebase-tools',
|
|
55
|
+
binary: 'firebase',
|
|
56
|
+
globalInstall: 'npm install -g firebase-tools',
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export const PLATFORM_CHOICES = [
|
|
61
|
+
{ name: 'Vercel', value: 'vercel' },
|
|
62
|
+
{ name: 'Netlify', value: 'netlify' },
|
|
63
|
+
{ name: 'Cloudflare Pages', value: 'cloudflare-pages' },
|
|
64
|
+
{ name: 'AWS Amplify', value: 'aws-amplify' },
|
|
65
|
+
{ name: 'Azure Static Web Apps', value: 'azure-static-web-apps' },
|
|
66
|
+
{ name: 'Firebase Hosting', value: 'firebase-hosting' },
|
|
67
|
+
{ name: 'Firebase App Hosting', value: 'firebase-app-hosting' },
|
|
68
|
+
];
|
|
69
|
+
|
|
70
|
+
export const PLATFORM_COMPARISON = `
|
|
71
|
+
Platform Best for
|
|
72
|
+
─────────────────────────────────────────────────────────────
|
|
73
|
+
Vercel Next.js (best experience), React
|
|
74
|
+
Netlify React, Vue, Svelte — simplest setup
|
|
75
|
+
Cloudflare Pages Static sites, Astro, React — fastest CDN
|
|
76
|
+
AWS Amplify React, Next.js, Vue, Angular — AWS ecosystem
|
|
77
|
+
Azure Static Web Apps React, Angular, Blazor — Azure ecosystem
|
|
78
|
+
Firebase Hosting Static SPAs — Google ecosystem
|
|
79
|
+
Firebase App Hosting Next.js, Angular with SSR — Google ecosystem
|
|
80
|
+
|
|
81
|
+
All platforms include: free SSL, global CDN, custom domain, auto-deploy
|
|
82
|
+
`;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* @param {string} platform
|
|
86
|
+
* @returns {Record<string, string>}
|
|
87
|
+
*/
|
|
88
|
+
export function getPlatformEnvExample(platform) {
|
|
89
|
+
const examples = {
|
|
90
|
+
vercel: {
|
|
91
|
+
VERCEL_TOKEN: '',
|
|
92
|
+
VERCEL_ORG_ID: '',
|
|
93
|
+
VERCEL_PROJECT_ID: '',
|
|
94
|
+
},
|
|
95
|
+
netlify: {
|
|
96
|
+
NETLIFY_AUTH_TOKEN: '',
|
|
97
|
+
NETLIFY_SITE_ID: '',
|
|
98
|
+
},
|
|
99
|
+
'cloudflare-pages': {
|
|
100
|
+
CLOUDFLARE_API_TOKEN: '',
|
|
101
|
+
CLOUDFLARE_ACCOUNT_ID: '',
|
|
102
|
+
CF_PROJECT_NAME: '',
|
|
103
|
+
},
|
|
104
|
+
'aws-amplify': {
|
|
105
|
+
AWS_ACCESS_KEY_ID: '',
|
|
106
|
+
AWS_SECRET_ACCESS_KEY: '',
|
|
107
|
+
AWS_REGION: 'us-east-1',
|
|
108
|
+
AMPLIFY_APP_ID: '',
|
|
109
|
+
},
|
|
110
|
+
'azure-static-web-apps': {
|
|
111
|
+
AZURE_STATIC_WEB_APPS_TOKEN: '',
|
|
112
|
+
},
|
|
113
|
+
'firebase-hosting': {
|
|
114
|
+
FIREBASE_TOKEN: '',
|
|
115
|
+
FIREBASE_PROJECT_ID: '',
|
|
116
|
+
},
|
|
117
|
+
'firebase-app-hosting': {
|
|
118
|
+
FIREBASE_TOKEN: '',
|
|
119
|
+
FIREBASE_PROJECT_ID: '',
|
|
120
|
+
FIREBASE_APP_HOSTING_BACKEND: '',
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
return examples[platform] || {};
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export default {
|
|
127
|
+
PLATFORM_ENV_MAP,
|
|
128
|
+
PLATFORM_CLI_MAP,
|
|
129
|
+
PLATFORM_CHOICES,
|
|
130
|
+
PLATFORM_COMPARISON,
|
|
131
|
+
getPlatformEnvExample,
|
|
132
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import fs from 'fs-extra';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import semver from 'semver';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @param {string} [cwd]
|
|
7
|
+
* @returns {Promise<string>}
|
|
8
|
+
*/
|
|
9
|
+
export async function getProjectVersion(cwd = process.cwd()) {
|
|
10
|
+
const pkgPath = path.join(cwd, 'package.json');
|
|
11
|
+
if (await fs.pathExists(pkgPath)) {
|
|
12
|
+
const pkg = await fs.readJson(pkgPath);
|
|
13
|
+
if (pkg.version && semver.valid(pkg.version)) {
|
|
14
|
+
return pkg.version;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return getDateVersion();
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @returns {string}
|
|
22
|
+
*/
|
|
23
|
+
export function getDateVersion() {
|
|
24
|
+
const now = new Date();
|
|
25
|
+
const y = now.getFullYear();
|
|
26
|
+
const m = String(now.getMonth() + 1).padStart(2, '0');
|
|
27
|
+
const d = String(now.getDate()).padStart(2, '0');
|
|
28
|
+
const h = String(now.getHours()).padStart(2, '0');
|
|
29
|
+
const min = String(now.getMinutes()).padStart(2, '0');
|
|
30
|
+
return `${y}.${m}.${d}.${h}${min}`;
|
|
31
|
+
}
|