diff --git a/packages/nc-gui/layouts/default.vue b/packages/nc-gui/layouts/default.vue index a65a4a7f3e..1b76d27f5a 100644 --- a/packages/nc-gui/layouts/default.vue +++ b/packages/nc-gui/layouts/default.vue @@ -25,7 +25,10 @@ Home - (v{{$store.state.project.projectInfo && $store.state.project.projectInfo.version}}) + (v{{ + $store.state.project.projectInfo && $store.state.project.projectInfo.version + }}) @@ -235,7 +238,7 @@ @@ -645,6 +648,13 @@ + + + + info  Copy Project info + + + @@ -824,6 +834,7 @@ import 'splitpanes/dist/splitpanes.css' import XBtn from "../components/global/xBtn"; import ChangeEnv from "../components/changeEnv"; import Discord from "@/components/discord"; +import {copyTextToClipboard} from "@/helpers/xutils"; export default { components: { @@ -971,7 +982,7 @@ export default { 'xc-auth': this.$store.state.users.token } })).data; - const obj = Object.values(info).find(v => v.apiType === 'rest' ? v.swaggerUrl : v.gqlApiUrl); + const obj = Object.values(info).find(v => v.apiType === 'rest' ? v.swaggerUrl : v.gqlApiUrl); this.swaggerOrGraphiqlUrl = obj.apiType === 'rest' ? obj.swaggerUrl : obj.gqlApiUrl } catch (e) { } @@ -1296,6 +1307,15 @@ export default { }, changeTheme() { this.$store.dispatch('windows/ActToggleDarkMode', !this.$store.state.windows.darkTheme); + }, + async copyProjectInfo() { + try { + const data = await this.$store.dispatch('sqlMgr/ActSqlOp', [null, 'ncProjectInfo']) + copyTextToClipboard(Object.entries(data).map(([k, v]) => `${k}: **${v}**`).join('\n')); + this.$toast.info('Copied project info to clipboard').goAway(3000); + } catch (e) { + this.$toast.error(e.message).goAway(3000); + } } }, @@ -1344,7 +1364,7 @@ a { animation-iteration-count: infinite; } -/deep/ .v-toolbar__items{ +/deep/ .v-toolbar__items { align-items: center; } diff --git a/packages/nocodb/package.json b/packages/nocodb/package.json index 153f6524d8..c14145bb75 100644 --- a/packages/nocodb/package.json +++ b/packages/nocodb/package.json @@ -124,6 +124,7 @@ "handlebars": "^4.7.6", "import-fresh": "^3.2.1", "inflection": "^1.12.0", + "is-docker": "^2.2.1", "js-beautify": "^1.11.0", "json2csv": "^5.0.6", "jsonfile": "^6.1.0", diff --git a/packages/nocodb/src/lib/noco/meta/NcMetaMgr.ts b/packages/nocodb/src/lib/noco/meta/NcMetaMgr.ts index 8398e981b7..1786b18ccb 100644 --- a/packages/nocodb/src/lib/noco/meta/NcMetaMgr.ts +++ b/packages/nocodb/src/lib/noco/meta/NcMetaMgr.ts @@ -38,17 +38,18 @@ import ExpressXcTsRoutesHm from "../../sqlMgr/code/routes/xc-ts/ExpressXcTsRoute import ExpressXcTsRoutesBt from "../../sqlMgr/code/routes/xc-ts/ExpressXcTsRoutesBt"; import ExpressXcTsRoutes from "../../sqlMgr/code/routes/xc-ts/ExpressXcTsRoutes"; import NcPluginMgr from "../plugins/NcPluginMgr"; - +import isDocker from 'is-docker'; // import packageInfo from '../../../../package.json' // require('pkginfo')(module, 'version'); const XC_PLUGIN_DET = 'XC_PLUGIN_DET'; -let packageInfo:any = {}; -try{ - packageInfo = JSON.parse(fs.readFileSync('package.json','utf8')); -}catch (_e) {} +let packageInfo: any = {}; +try { + packageInfo = JSON.parse(fs.readFileSync('package.json', 'utf8')); +} catch (_e) { +} export default class NcMetaMgr { public projectConfigs = {}; @@ -1083,6 +1084,9 @@ export default class NcMetaMgr { case 'xcVirtualTableUpdate': result = await this.xcVirtualTableUpdate(args); break; + case 'ncProjectInfo': + result = await this.ncProjectInfo(args); + break; case 'xcVirtualTableDelete': result = await this.xcVirtualTableDelete(args, req); break; @@ -3106,6 +3110,19 @@ export default class NcMetaMgr { } + protected async ncProjectInfo(args) { + + const config = this.projectConfigs[this.getProjectId(args)]; + return { + node: process.version, + arch: process.arch, + platform: process.platform, + docker: isDocker(), + database: config.envs?.[process.env.NODE_ENV || 'dev']?.db?.[0]?.client, + packageVersion: packageInfo?.version + } + } + protected async xcVirtualTableList(args): Promise { return (await this.xcMeta.metaList(this.getProjectId(args), this.getDbAlias(args), 'nc_models', { xcCondition: { diff --git a/packages/nocodb/src/lib/sqlMgr/SqlMgr.ts b/packages/nocodb/src/lib/sqlMgr/SqlMgr.ts index 2a9f786ce2..92c6393b2e 100644 --- a/packages/nocodb/src/lib/sqlMgr/SqlMgr.ts +++ b/packages/nocodb/src/lib/sqlMgr/SqlMgr.ts @@ -820,7 +820,7 @@ export default class SqlMgr { migrationSteps: 9999, folder: this.currentProjectFolder }; - console.log(`Migration up args for '${op}'`, migrationArgs); + // console.log(`Migration up args for '${op}'`, migrationArgs); await this.migrator().migrationsUp(migrationArgs); }