dashboard-shell-shell 1.0.122 → 1.0.1000000082
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/.DS_Store +0 -0
- package/assets/brand/harvester/favicon.png +0 -0
- package/assets/brand/suse/favicon.png +0 -0
- package/assets/icons/iconfont.css +19 -3
- package/assets/icons/iconfont.js +1 -1
- package/assets/icons/iconfont.json +28 -0
- package/assets/icons/iconfont.ttf +0 -0
- package/assets/icons/iconfont.woff +0 -0
- package/assets/icons/iconfont.woff2 +0 -0
- package/assets/images/pl/half-logo.svg +2 -23
- package/assets/styles/base/_functions.scss +0 -0
- package/assets/styles/base/_mixins.scss +0 -0
- package/assets/styles/base/_variables.scss +1 -1
- package/assets/styles/global/_labeled-input.scss +0 -1
- package/assets/styles/global/_layout.scss +1 -1
- package/assets/styles/global/_select.scss +4 -2
- package/assets/styles/global/_table.scss +5 -0
- package/assets/styles/vendor/vue-select.scss +2 -1
- package/assets/translations/en-us.yaml +1 -1
- package/assets/translations/zh-hans.yaml +25 -15
- package/chart/monitoring/index.vue +3 -1
- package/chart/monitoring/prometheus/index.vue +13 -10
- package/cloud-credential/aws.vue +2 -0
- package/components/ActionDropdown.vue +1 -1
- package/components/ActionDropdownShell.vue +71 -0
- package/components/ActionMenu.vue +2 -2
- package/components/ActionMenuShell.vue +3 -0
- package/components/AppModal.vue +84 -8
- package/components/AssignTo.vue +25 -11
- package/components/AsyncButton.vue +24 -7
- package/components/BannerGraphic.vue +1 -0
- package/components/ButtonDropdown.vue +26 -4
- package/components/ButtonGroup.vue +4 -0
- package/components/ButtonMultiAction.vue +1 -0
- package/components/CodeMirror.vue +19 -6
- package/components/CommunityLinks.vue +3 -3
- package/components/ConsumptionGauge.vue +24 -5
- package/components/CopyToClipboardText.vue +2 -1
- package/components/CruResource.vue +13 -7
- package/components/CruResourceFooter.vue +2 -2
- package/components/DashboardOptions.vue +29 -17
- package/components/DetailText.vue +5 -0
- package/components/DisableAuthProviderModal.vue +1 -0
- package/components/DotState.vue +84 -0
- package/components/ExplorerMembers.vue +1 -1
- package/components/ExplorerProjectsNamespaces.vue +88 -16
- package/components/FixedBanner.vue +19 -12
- package/components/GlobalRoleBindings.vue +5 -1
- package/components/GrafanaDashboard.vue +4 -4
- package/components/GrowlManager.vue +4 -1
- package/components/HardwareResourceGauge.vue +39 -3
- package/components/InfoBox.vue +3 -3
- package/components/InputOrDisplay.vue +28 -2
- package/components/LabelValue.vue +20 -1
- package/components/LandingPagePreference.vue +5 -3
- package/components/LocaleSelector.vue +39 -93
- package/components/ModalManager.vue +55 -0
- package/components/ModalWithCard.vue +13 -3
- package/components/MoveModal.vue +1 -0
- package/components/PodSecurityAdmission.vue +1 -1
- package/components/PromptChangePassword.vue +1 -1
- package/components/PromptModal.vue +16 -3
- package/components/PromptRemove.vue +29 -9
- package/components/PromptRestore.vue +1 -0
- package/components/ResourceCancelModal.vue +1 -0
- package/components/ResourceDetail/Masthead.vue +52 -17
- package/components/ResourceDetail/__tests__/Masthead.test.ts +5 -1
- package/components/ResourceDetail/index.vue +54 -16
- package/components/ResourceList/Masthead.vue +26 -4
- package/components/ResourceList/index.vue +4 -3
- package/components/ResourceTable.vue +1 -0
- package/components/SideNav.vue +20 -15
- package/components/SlideInPanelManager.vue +126 -0
- package/components/SortableTable/THead.vue +10 -4
- package/components/SortableTable/actions.js +1 -1
- package/components/SortableTable/index.vue +542 -553
- package/components/SortableTable/selection.js +2 -13
- package/components/StatusBadge.vue +77 -0
- package/components/Tabbed/Tab.vue +3 -3
- package/components/Tabbed/index.vue +47 -29
- package/components/Wizard.vue +2 -2
- package/components/YamlEditor.vue +1 -1
- package/components/__tests__/AsyncButton.test.ts +2 -2
- package/components/__tests__/FixedBanner.test.ts +3 -3
- package/components/__tests__/ModalManager.spec.ts +176 -0
- package/components/__tests__/SlideInPanelManager.spec.ts +166 -0
- package/components/auth/Principal.vue +10 -3
- package/components/auth/RoleDetailEdit.vue +1 -1
- package/components/auth/__tests__/RoleDetailEdit.test.ts +3 -2
- package/components/form/ArrayList.vue +123 -85
- package/components/form/ArrayListGrouped.vue +10 -2
- package/components/form/ArrayListSelect.vue +1 -1
- package/components/form/Command.vue +6 -15
- package/components/form/EnvVars.vue +16 -8
- package/components/form/Footer.vue +10 -7
- package/components/form/HealthCheck.vue +3 -3
- package/components/form/HookOption.vue +11 -16
- package/components/form/InputWithSelect.vue +6 -5
- package/components/form/KeyValue.vue +39 -10
- package/components/form/LabeledSelect.vue +73 -77
- package/components/form/Labels.vue +6 -3
- package/components/form/LifecycleHooks.vue +3 -3
- package/components/form/MatchExpressions.vue +42 -17
- package/components/form/NameNsDescription.vue +163 -116
- package/components/form/Networking.vue +20 -12
- package/components/form/NodeAffinity.vue +31 -23
- package/components/form/NodeScheduling.vue +13 -3
- package/components/form/Password.vue +11 -5
- package/components/form/PodAffinity.vue +47 -48
- package/components/form/Probe.vue +68 -66
- package/components/form/ResourceQuota/Namespace.vue +4 -4
- package/components/form/ResourceQuota/NamespaceRow.vue +5 -7
- package/components/form/ResourceQuota/Project.vue +9 -5
- package/components/form/ResourceQuota/ProjectRow.vue +4 -6
- package/components/form/ResourceSelector.vue +7 -9
- package/components/form/SSHKnownHosts/KnownHostsEditDialog.vue +6 -3
- package/components/form/SSHKnownHosts/__tests__/KnownHostsEditDialog.test.ts +12 -1
- package/components/form/SSHKnownHosts/index.vue +16 -2
- package/components/form/Security.vue +54 -56
- package/components/form/Select.vue +44 -7
- package/components/form/ShellInput.vue +5 -1
- package/components/form/SimpleSecretSelector.vue +29 -9
- package/components/form/Tolerations.vue +5 -1
- package/components/form/UnitInput.vue +10 -5
- package/components/form/ValueFromResource.vue +134 -121
- package/components/form/WorkloadPorts.vue +18 -18
- package/components/form/__tests__/ArrayList.test.ts +5 -2
- package/components/form/__tests__/MatchExpressions.test.ts +12 -12
- package/components/form/__tests__/NameNsDescription.test.ts +115 -14
- package/components/form/__tests__/Probe.test.ts +12 -8
- package/components/form/__tests__/SSHKnownHosts.test.ts +11 -0
- package/components/form/__tests__/Select.test.ts +37 -0
- package/components/form/__tests__/UnitInput.test.ts +4 -5
- package/components/formatter/BadgeStateFormatter.vue +8 -5
- package/components/formatter/InternalExternalIP.vue +2 -0
- package/components/formatter/LiveDate.vue +3 -3
- package/components/formatter/SecretData.vue +20 -7
- package/components/nav/Favorite.vue +5 -1
- package/components/nav/Group.vue +18 -4
- package/components/nav/Header.vue +39 -13
- package/components/nav/Jump.vue +7 -0
- package/components/nav/NamespaceFilter.vue +21 -11
- package/components/nav/Pinned.vue +1 -1
- package/components/nav/TopLevelMenu.vue +5 -17
- package/components/nav/Type.vue +30 -33
- package/components/nav/__tests__/TopLevelMenu.test.ts +0 -40
- package/components/rancherResourceDetail/Masthead.vue +769 -0
- package/components/rancherResourceDetail/__tests__/Masthead.test.ts +65 -0
- package/components/rancherResourceDetail/index.vue +591 -0
- package/components/rancherResourceList/Masthead-btn.vue +225 -0
- package/components/rancherResourceList/Masthead.vue +375 -0
- package/components/rancherResourceList/ResourceLoadingIndicator.vue +140 -0
- package/components/rancherResourceList/index.vue +307 -0
- package/components/rancherResourceList/resource-list.config.js +7 -0
- package/components/rancherResourceTable.vue +783 -0
- package/components/rancherSortableTable/THead.vue +561 -0
- package/components/rancherSortableTable/actions.js +153 -0
- package/components/rancherSortableTable/advanced-filtering.js +272 -0
- package/components/rancherSortableTable/debug.js +117 -0
- package/components/rancherSortableTable/filtering.js +290 -0
- package/components/rancherSortableTable/grouping.js +48 -0
- package/components/rancherSortableTable/index.vue +2712 -0
- package/components/rancherSortableTable/paging.js +155 -0
- package/components/rancherSortableTable/selection.js +629 -0
- package/components/rancherSortableTable/sortable-config.ts +4 -0
- package/components/rancherSortableTable/sorting.js +129 -0
- package/components/templates/blank.vue +4 -1
- package/components/templates/default.vue +8 -0
- package/components/templates/home.vue +10 -1
- package/components/templates/plain.vue +10 -1
- package/composables/focusTrap.ts +11 -3
- package/composables/useRuntimeFlag.ts +29 -0
- package/config/private-label.js +15 -10
- package/config/router/routes.js +21 -13
- package/config/store.js +4 -0
- package/config/table-headers.js +3 -2
- package/config/uiplugins.js +5 -1
- package/core/plugin-routes.ts +5 -115
- package/core/plugins.js +1 -1
- package/core/types.ts +23 -2
- package/detail/__tests__/autoscaling.horizontalpodautoscaler.test.ts +84 -23
- package/detail/autoscaling.horizontalpodautoscaler/index.vue +13 -3
- package/detail/provisioning.cattle.io.cluster.vue +72 -6
- package/dialog/AddCustomBadgeDialog.vue +1 -0
- package/dialog/DeactivateDriverDialog.vue +5 -4
- package/dialog/ForceMachineRemoveDialog.vue +6 -3
- package/dialog/GitRepoForceUpdateDialog.vue +1 -1
- package/dialog/ScalePoolDownDialog.vue +2 -2
- package/edit/__tests__/monitoring.coreos.com.prometheusrule.test.ts +16 -3
- package/edit/auth/__tests__/oidc.test.ts +162 -88
- package/edit/auth/azuread.vue +2 -1
- package/edit/auth/github.vue +1 -1
- package/edit/auth/googleoauth.vue +5 -1
- package/edit/auth/ldap/__tests__/config.test.ts +0 -14
- package/edit/auth/ldap/config.vue +0 -24
- package/edit/auth/ldap/index.vue +1 -1
- package/edit/auth/oidc.vue +39 -6
- package/edit/auth/saml.vue +1 -1
- package/edit/autoscaling.horizontalpodautoscaler/metric-identifier.vue +5 -2
- package/edit/cloudcredential.vue +24 -9
- package/edit/fleet.cattle.io.clustergroup.vue +5 -3
- package/edit/fleet.cattle.io.gitrepo.vue +2 -0
- package/edit/logging-flow/Match.vue +1 -1
- package/edit/logging.banzaicloud.io.output/__tests__/logging.banzaicloud.io.output.test.ts +40 -9
- package/edit/management.cattle.io.user.vue +28 -3
- package/edit/monitoring.coreos.com.alertmanagerconfig/auth.vue +19 -19
- package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +31 -31
- package/edit/monitoring.coreos.com.alertmanagerconfig/routeConfig.vue +36 -12
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/email.vue +6 -6
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/opsgenie.vue +10 -10
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/pagerduty.vue +4 -4
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/slack.vue +4 -4
- package/edit/monitoring.coreos.com.alertmanagerconfig/types/webhook.vue +1 -1
- package/edit/monitoring.coreos.com.receiver/auth.vue +29 -29
- package/edit/monitoring.coreos.com.receiver/types/email.vue +6 -6
- package/edit/monitoring.coreos.com.receiver/types/opsgenie.vue +10 -10
- package/edit/monitoring.coreos.com.receiver/types/pagerduty.vue +5 -5
- package/edit/monitoring.coreos.com.receiver/types/slack.vue +4 -4
- package/edit/namespace.vue +1 -2
- package/edit/networking.k8s.io.ingress/IngressClass.vue +7 -3
- package/edit/networking.k8s.io.ingress/RulePath.vue +1 -1
- package/edit/networking.k8s.io.ingress/__tests__/IngressClass.test.ts +58 -0
- package/edit/persistentvolume/__tests__/persistentvolume.test.ts +14 -2
- package/edit/provisioning.cattle.io.cluster/CustomCommand.vue +4 -1
- package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +26 -9
- package/edit/provisioning.cattle.io.cluster/__tests__/Advanced.test.ts +8 -10
- package/edit/provisioning.cattle.io.cluster/rke2.vue +31 -40
- package/edit/provisioning.cattle.io.cluster/tabs/Advanced.vue +5 -2
- package/edit/provisioning.cattle.io.cluster/tabs/AgentConfiguration.vue +6 -1
- package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +33 -2
- package/edit/provisioning.cattle.io.cluster/tabs/etcd/index.vue +3 -3
- package/edit/service.vue +0 -3
- package/edit/token.vue +32 -11
- package/edit/workload/Job.vue +6 -6
- package/edit/workload/__tests__/Job.test.ts +0 -1
- package/edit/workload/index.vue +1 -0
- package/edit/workload/mixins/workload.js +3 -3
- package/initialize/install-plugins.js +2 -1
- package/list/harvesterhci.io.management.cluster.vue +4 -1
- package/list/management.cattle.io.feature.vue +1 -0
- package/list/namespace.vue +3 -1
- package/list/provisioning.cattle.io.cluster.vue +20 -12
- package/list/workload.vue +7 -6
- package/machine-config/__tests__/vmwarevsphere.test.ts +48 -3
- package/machine-config/azure.vue +16 -4
- package/machine-config/vmwarevsphere.vue +16 -0
- package/mixins/resource-fetch.js +2 -1
- package/models/__tests__/logging.banzaicloud.io.flow.test.ts +88 -0
- package/models/__tests__/namespace.test.ts +25 -1
- package/models/cloudcredential.js +5 -0
- package/models/kontainerdriver.js +6 -3
- package/models/logging.banzaicloud.io.flow.js +2 -1
- package/models/management.cattle.io.node.js +3 -3
- package/models/management.cattle.io.setting.js +2 -1
- package/models/namespace.js +4 -5
- package/models/nodedriver.js +6 -3
- package/models/storage.k8s.io.storageclass.js +2 -2
- package/models/workload.js +4 -1
- package/package.json +1 -1
- package/pages/about.vue +16 -8
- package/pages/account/index.vue +80 -24
- package/pages/account/pri.vue +229 -0
- package/pages/auth/login.vue +195 -44
- package/pages/auth/logout.vue +4 -1
- package/pages/auth/setup.vue +144 -19
- package/pages/auth/verify.vue +13 -8
- package/pages/auth copy/login.vue +595 -0
- package/pages/auth copy/logout.vue +47 -0
- package/pages/auth copy/setup.vue +523 -0
- package/pages/auth copy/verify.vue +203 -0
- package/pages/c/_cluster/_product/namespaces.vue +5 -5
- package/pages/c/_cluster/apps/charts/chart.vue +1 -1
- package/pages/c/_cluster/apps/charts/install.vue +26 -26
- package/pages/c/_cluster/auth/config/index.vue +10 -12
- package/pages/c/_cluster/explorer/EventsTable.vue +38 -33
- package/pages/c/_cluster/explorer/index.vue +17 -15
- package/pages/c/_cluster/istio/index.vue +2 -2
- package/pages/c/_cluster/longhorn/index.vue +1 -1
- package/pages/c/_cluster/monitoring/index.vue +1 -1
- package/pages/c/_cluster/monitoring/monitor/_namespace/_id.vue +4 -2
- package/pages/c/_cluster/monitoring/monitor/create.vue +4 -2
- package/pages/c/_cluster/monitoring/monitor/index.vue +2 -2
- package/pages/c/_cluster/monitoring/route-receiver/_id.vue +4 -2
- package/pages/c/_cluster/monitoring/route-receiver/create.vue +5 -2
- package/pages/c/_cluster/neuvector/index.vue +1 -1
- package/pages/c/_cluster/settings/brand.vue +3 -3
- package/pages/c/_cluster/uiplugins/CatalogList/index.vue +8 -10
- package/pages/diagnostic.vue +59 -11
- package/pages/fail-whale.vue +14 -8
- package/pages/home.vue +24 -18
- package/pages/prefs.vue +9 -7
- package/pages/support/index.vue +4 -1
- package/pkg/tsconfig.json +9 -9
- package/pkg/vue.config.js +1 -1
- package/plugins/dashboard-store/normalize.js +3 -1
- package/plugins/dashboard-store/resource-class.js +31 -29
- package/plugins/internal-api/index.ts +37 -0
- package/plugins/internal-api/shared/base-api.ts +13 -0
- package/plugins/internal-api/shell/shell.api.ts +108 -0
- package/promptRemove/management.cattle.io.fleetworkspace.vue +1 -1
- package/promptRemove/management.cattle.io.globalrole.vue +1 -1
- package/promptRemove/management.cattle.io.project.vue +2 -2
- package/promptRemove/management.cattle.io.roletemplate.vue +1 -1
- package/promptRemove/pod.vue +1 -1
- package/public/index.html +2 -1
- package/rancher-components/BadgeState/BadgeState.vue +5 -1
- package/rancher-components/Banner/Banner.vue +8 -2
- package/rancher-components/Card/Card.vue +3 -6
- package/rancher-components/Form/Checkbox/Checkbox.vue +4 -0
- package/rancher-components/Form/LabeledInput/LabeledInput.vue +5 -2
- package/rancher-components/Form/Radio/RadioButton.vue +3 -3
- package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +1 -5
- package/rancher-components/LabeledTooltip/LabeledTooltip.vue +9 -4
- package/rancher-components/RcDropdown/RcDropdownItem.vue +1 -2
- package/rancher-components/RcDropdown/RcDropdownMenu.vue +7 -3
- package/rancher-components/RcDropdown/types.ts +1 -0
- package/scripts/clean +0 -0
- package/scripts/extension/bundle +20 -0
- package/scripts/extension/helm/charts/ui-plugin-server/templates/_helpers.tpl +2 -2
- package/scripts/extension/helm/charts/ui-plugin-server/templates/cr.yaml +2 -1
- package/scripts/extension/helm/charts/ui-plugin-server/values.yaml +2 -0
- package/scripts/extension/helm/scripts/package +0 -0
- package/scripts/extension/helm/scripts/patch +0 -0
- package/scripts/extension/helm/scripts/version +0 -0
- package/scripts/extension/helmpatch +44 -31
- package/scripts/extension/parse-tag-name +0 -0
- package/scripts/extension/publish +12 -12
- package/scripts/publish-shell.sh +18 -23
- package/scripts/serve-pkgs +0 -0
- package/scripts/sync-shell-deps +0 -0
- package/scripts/test-plugins-build.sh +4 -6
- package/scripts/typegen.sh +28 -46
- package/server/har-file.js +25 -3
- package/static/favicon.ico +0 -0
- package/static/favicon.png +0 -0
- package/static/loading-indicator.html +2 -2
- package/store/aws.js +9 -2
- package/store/features.js +2 -1
- package/store/i18n.js +3 -3
- package/store/modal.ts +71 -0
- package/store/slideInPanel.ts +47 -0
- package/store/type-map.js +9 -1
- package/types/cloud-shell/index.d.ts +11020 -0
- package/types/global-vue.d.ts +5 -0
- package/types/internal-api/shell/growl.d.ts +25 -0
- package/types/internal-api/shell/modal.d.ts +77 -0
- package/types/internal-api/shell/slideIn.d.ts +15 -0
- package/types/shell/index.d.ts +118 -128
- package/types/vue-shim.d.ts +4 -1
- package/utils/__tests__/object.test.ts +38 -4
- package/utils/__tests__/string.test.ts +2 -2
- package/utils/auth.js +1 -0
- package/utils/banners.js +0 -45
- package/utils/cluster.js +35 -0
- package/utils/color.js +9 -8
- package/utils/error.js +61 -3
- package/utils/errorTranslate.json +450 -30
- package/utils/object.js +46 -6
- package/utils/router.js +22 -1
- package/utils/select.js +26 -3
- package/utils/string.js +9 -8
- package/utils/title.ts +1 -1
- package/utils/validators/machine-pool.ts +20 -0
- package/vue.config.js +7 -2
- package/components/formatter/ExtensionCache.vue +0 -74
- package/components/formatter/Port.vue +0 -24
- package/components/formatter/SecretType.vue +0 -41
- package/types/resources/fleet.d.ts +0 -57
- package/types/resources/pod-security-admission.ts +0 -36
- package/types/resources/settings.d.ts +0 -93
- package/types/resources/userPreferences.d.ts +0 -13
- package/types/vue-shim.d +0 -20
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { GrowlConfig } from '@shell/types/internal-api/shell/growl';
|
|
2
|
+
import { ModalConfig } from '@shell/types/internal-api/shell/modal';
|
|
3
|
+
import { SlideInConfig } from '@shell/types/internal-api/shell/slideIn';
|
|
4
|
+
|
|
5
|
+
import { BaseApi } from '@shell/plugins/internal-api/shared/base-api';
|
|
6
|
+
|
|
7
|
+
export default class ShellApi extends BaseApi {
|
|
8
|
+
static apiName() {
|
|
9
|
+
return 'shell';
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Dispatches a growl notification.
|
|
14
|
+
*
|
|
15
|
+
* @param config - Configuration for the growl notification.
|
|
16
|
+
* - If `message` is a string, it is treated as the main content of the notification.
|
|
17
|
+
* - If `message` is a `DetailedMessage` object, `title` and `description` are extracted.
|
|
18
|
+
*
|
|
19
|
+
* Example:
|
|
20
|
+
* ```ts
|
|
21
|
+
* this.$shell.growl({ message: 'Operation successful!', type: 'success' });
|
|
22
|
+
* this.$shell.growl({ message: { title: 'Warning', description: 'Check your input.' }, type: 'warning' });
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
protected growl(config: GrowlConfig): void {
|
|
26
|
+
const { type = 'error', timeout = 5000 } = config;
|
|
27
|
+
|
|
28
|
+
let title = '';
|
|
29
|
+
let description = '';
|
|
30
|
+
|
|
31
|
+
if (typeof config.message === 'string') {
|
|
32
|
+
description = config.message;
|
|
33
|
+
} else {
|
|
34
|
+
title = config.message.title || '';
|
|
35
|
+
description = config.message.description;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
this.$store.dispatch(
|
|
39
|
+
`growl/${ type }`,
|
|
40
|
+
{
|
|
41
|
+
title,
|
|
42
|
+
message: description,
|
|
43
|
+
timeout,
|
|
44
|
+
},
|
|
45
|
+
{ root: true }
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Opens a modal by committing to the Vuex store.
|
|
51
|
+
*
|
|
52
|
+
* This method updates the store's `modal` module to show a modal with the
|
|
53
|
+
* specified configuration. The modal is rendered using the `ModalManager` component,
|
|
54
|
+
* and its content is dynamically loaded based on the `component` field in the configuration.
|
|
55
|
+
*
|
|
56
|
+
* @param config A `ModalConfig` object defining the modal’s content and behavior.
|
|
57
|
+
*
|
|
58
|
+
* Example:
|
|
59
|
+
* ```ts
|
|
60
|
+
* this.$shell.modal({
|
|
61
|
+
* component: MyCustomModal,
|
|
62
|
+
* componentProps: { title: 'Hello Modal' },
|
|
63
|
+
* resources: [someResource],
|
|
64
|
+
* modalWidth: '800px',
|
|
65
|
+
* closeOnClickOutside: false
|
|
66
|
+
* });
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
protected modal(config: ModalConfig): void {
|
|
70
|
+
this.$store.commit('modal/openModal', {
|
|
71
|
+
component: config.component,
|
|
72
|
+
componentProps: config.componentProps || {},
|
|
73
|
+
resources: config.resources || [],
|
|
74
|
+
modalWidth: config.modalWidth || '600px',
|
|
75
|
+
closeOnClickOutside: config.closeOnClickOutside ?? true,
|
|
76
|
+
// modalSticky: config.modalSticky ?? false // Not implemented yet
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Opens the slide-in panel with the specified component and props.
|
|
82
|
+
*
|
|
83
|
+
* This method commits the `open` mutation to the `slideInPanel` Vuex module,
|
|
84
|
+
* which sets the current component to be rendered and its associated props.
|
|
85
|
+
* The slide-in panel becomes visible after the mutation.
|
|
86
|
+
*
|
|
87
|
+
* @param config - The configuration object for the slide-in panel.
|
|
88
|
+
*
|
|
89
|
+
* Example Usage:
|
|
90
|
+
* ```ts
|
|
91
|
+
* import MyComponent from '@/components/MyComponent.vue';
|
|
92
|
+
*
|
|
93
|
+
* this.$shell.slideInPanel({
|
|
94
|
+
* component: MyComponent,
|
|
95
|
+
* componentProps: { foo: 'bar' }
|
|
96
|
+
* });
|
|
97
|
+
* ```
|
|
98
|
+
*
|
|
99
|
+
* @param config.component - A Vue component (imported SFC, functional component, etc.) to be rendered in the panel.
|
|
100
|
+
* @param config.componentProps - (Optional) Props to pass to the component. These should align with the component's defined props.
|
|
101
|
+
*/
|
|
102
|
+
protected slideInPanel(config: SlideInConfig): void {
|
|
103
|
+
this.$store.commit('slideInPanel/open', {
|
|
104
|
+
component: config.component,
|
|
105
|
+
componentProps: config.componentProps || {}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -21,7 +21,7 @@ export default {
|
|
|
21
21
|
|
|
22
22
|
<template>
|
|
23
23
|
<div>
|
|
24
|
-
{{ t('promptRemove.attemptingToRemove', { type }) }} <span v-clean-html="resourceNames(names, t)" />
|
|
24
|
+
{{ t('promptRemove.attemptingToRemove', { type }) }} <span v-clean-html="resourceNames(names, null, t)" />
|
|
25
25
|
<div
|
|
26
26
|
v-if="info"
|
|
27
27
|
class="text info mb-10 mt-20"
|
|
@@ -94,7 +94,7 @@ export default {
|
|
|
94
94
|
<template v-if="!canSeeProjectlessNamespaces">
|
|
95
95
|
<span class="delete-warning"> {{ t('promptRemove.willDeleteAssociatedNamespaces') }}</span> <br>
|
|
96
96
|
<div
|
|
97
|
-
v-clean-html="resourceNames(names, t)"
|
|
97
|
+
v-clean-html="resourceNames(names, null, t)"
|
|
98
98
|
class="mt-10"
|
|
99
99
|
/>
|
|
100
100
|
</template>
|
|
@@ -108,7 +108,7 @@ export default {
|
|
|
108
108
|
:label="t('promptRemove.deleteAssociatedNamespaces')"
|
|
109
109
|
/>
|
|
110
110
|
<div class="mt-10 ml-20">
|
|
111
|
-
<span v-clean-html="resourceNames(names, t)" />
|
|
111
|
+
<span v-clean-html="resourceNames(names, null, t)" />
|
|
112
112
|
</div>
|
|
113
113
|
</div>
|
|
114
114
|
</div>
|
package/promptRemove/pod.vue
CHANGED
package/public/index.html
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
7
7
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
|
8
8
|
<link rel="shortcut icon" type="image/x-icon" href="/favicon.png">
|
|
9
|
-
<title>
|
|
9
|
+
<title>HCI</title>
|
|
10
10
|
</head>
|
|
11
11
|
|
|
12
12
|
<body>
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
</div>
|
|
17
17
|
</div>
|
|
18
18
|
<div id="modals"><!--Portal content here--></div>
|
|
19
|
+
<div id="slides"></div>
|
|
19
20
|
|
|
20
21
|
<script>
|
|
21
22
|
(() => {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { PropType, defineComponent } from 'vue';
|
|
3
|
+
import { mapGetters } from 'vuex';
|
|
3
4
|
|
|
4
5
|
interface Badge {
|
|
5
6
|
stateBackground: string;
|
|
@@ -47,12 +48,15 @@ export default defineComponent({
|
|
|
47
48
|
},
|
|
48
49
|
|
|
49
50
|
computed: {
|
|
51
|
+
...mapGetters({ t: 'i18n/t' }),
|
|
50
52
|
bg(): string | null {
|
|
51
53
|
return this.value?.stateBackground || this.color;
|
|
52
54
|
},
|
|
53
55
|
|
|
54
56
|
msg(): string | null {
|
|
55
|
-
|
|
57
|
+
let text = this.value?.stateDisplay || this.label;
|
|
58
|
+
let zhText = this.t(`stateLabel.${ text }`)
|
|
59
|
+
return zhText ? zhText : text
|
|
56
60
|
}
|
|
57
61
|
}
|
|
58
62
|
});
|
|
@@ -123,6 +123,10 @@ export default defineComponent({
|
|
|
123
123
|
$left-border-size: 4px;
|
|
124
124
|
$icon-size: 24px;
|
|
125
125
|
|
|
126
|
+
.banner__content {
|
|
127
|
+
line-height: 18px !important;
|
|
128
|
+
}
|
|
129
|
+
|
|
126
130
|
.banner {
|
|
127
131
|
display: flex;
|
|
128
132
|
/* margin: 15px 0; */
|
|
@@ -173,6 +177,8 @@ $icon-size: 24px;
|
|
|
173
177
|
border-left: solid $left-border-size transparent;
|
|
174
178
|
display: flex;
|
|
175
179
|
gap: 3px;
|
|
180
|
+
word-wrap:break-word;
|
|
181
|
+
word-break:break-all;
|
|
176
182
|
|
|
177
183
|
.primary & {
|
|
178
184
|
background: var(--primary);
|
|
@@ -190,8 +196,8 @@ $icon-size: 24px;
|
|
|
190
196
|
}
|
|
191
197
|
|
|
192
198
|
.info & {
|
|
193
|
-
|
|
194
|
-
background: #f2f2f2;
|
|
199
|
+
background: var(--info-banner-bg);
|
|
200
|
+
// background: #f2f2f2;
|
|
195
201
|
border-color: var(--info);
|
|
196
202
|
}
|
|
197
203
|
|
|
@@ -76,7 +76,7 @@ export default defineComponent({
|
|
|
76
76
|
<template>
|
|
77
77
|
<div
|
|
78
78
|
id="focus-trap-card-container-element"
|
|
79
|
-
class="card-
|
|
79
|
+
class="card-containers"
|
|
80
80
|
:class="{'highlight-border': showHighlightBorder, 'card-sticky': sticky}"
|
|
81
81
|
data-testid="card"
|
|
82
82
|
>
|
|
@@ -117,17 +117,15 @@ export default defineComponent({
|
|
|
117
117
|
</template>
|
|
118
118
|
|
|
119
119
|
<style lang='scss'>
|
|
120
|
-
.card-
|
|
120
|
+
.card-containers {
|
|
121
121
|
&.highlight-border {
|
|
122
122
|
border-left: 5px solid var(--primary);
|
|
123
123
|
}
|
|
124
|
-
border-radius: var(--border-radius);
|
|
125
124
|
display: flex;
|
|
126
125
|
flex-basis: 40%;
|
|
127
|
-
/* margin: 10px; */
|
|
128
126
|
min-height: 100px;
|
|
129
127
|
padding: 24px;
|
|
130
|
-
|
|
128
|
+
border: 1px solid var(--border);
|
|
131
129
|
&:not(.top) {
|
|
132
130
|
align-items: top;
|
|
133
131
|
flex-direction: row;
|
|
@@ -143,7 +141,6 @@ export default defineComponent({
|
|
|
143
141
|
justify-content: center;
|
|
144
142
|
}
|
|
145
143
|
& .card-actions {
|
|
146
|
-
/* align-self: end; */
|
|
147
144
|
display: flex;
|
|
148
145
|
justify-content: flex-end;
|
|
149
146
|
padding-top: 20px;
|
|
@@ -301,6 +301,7 @@ export default defineComponent({
|
|
|
301
301
|
<span
|
|
302
302
|
v-else-if="label"
|
|
303
303
|
:id="idForLabel"
|
|
304
|
+
:style="label == '记住用户名' ? { color: '#fff' } : ''"
|
|
304
305
|
>{{ label }}</span>
|
|
305
306
|
<i
|
|
306
307
|
v-if="tooltipKey"
|
|
@@ -479,6 +480,9 @@ $fontColor: var(--input-label);
|
|
|
479
480
|
|
|
480
481
|
// Disabled styles
|
|
481
482
|
&.disabled {
|
|
483
|
+
span {
|
|
484
|
+
color: var(--muted);
|
|
485
|
+
}
|
|
482
486
|
.checkbox-custom {
|
|
483
487
|
background-color: var(--checkbox-disabled-bg);
|
|
484
488
|
border-color: var(--checkbox-disabled-bg);
|
|
@@ -464,6 +464,7 @@ export default defineComponent({
|
|
|
464
464
|
/>
|
|
465
465
|
</div>
|
|
466
466
|
</div>
|
|
467
|
+
<slot name="suffixNew" />
|
|
467
468
|
</div>
|
|
468
469
|
</template>
|
|
469
470
|
<style scoped lang="scss">
|
|
@@ -490,14 +491,16 @@ export default defineComponent({
|
|
|
490
491
|
.label-input-all{
|
|
491
492
|
display: flex;
|
|
492
493
|
label{
|
|
493
|
-
width: 160px;
|
|
494
|
+
width: 160px !important;
|
|
494
495
|
line-height: 32px;
|
|
495
496
|
.required{
|
|
496
497
|
color: red;
|
|
497
498
|
}
|
|
498
499
|
}
|
|
499
500
|
}
|
|
500
|
-
|
|
501
|
+
.span-4 {
|
|
502
|
+
width: none;
|
|
503
|
+
}
|
|
501
504
|
.v-popper--has-tooltip INPUT, .v-popper--has-tooltip INPUT:hover, .v-popper--has-tooltip INPUT:focus{
|
|
502
505
|
padding: 0px 0px 0px 11px;
|
|
503
506
|
}
|
|
@@ -248,7 +248,8 @@ $fontColor: var(--input-label);
|
|
|
248
248
|
&.disabled,
|
|
249
249
|
&.disabled .radio-label,
|
|
250
250
|
&.disabled .radio-button-outer-container-description {
|
|
251
|
-
cursor: not-allowed
|
|
251
|
+
cursor: not-allowed;
|
|
252
|
+
color: var(--muted);
|
|
252
253
|
}
|
|
253
254
|
|
|
254
255
|
.radio-custom {
|
|
@@ -260,7 +261,7 @@ $fontColor: var(--input-label);
|
|
|
260
261
|
border-radius: 50%;
|
|
261
262
|
transition: all 0.3s ease-out;
|
|
262
263
|
border: 1.5px solid var(--border);
|
|
263
|
-
margin-top:
|
|
264
|
+
margin-top: 3px !important;
|
|
264
265
|
|
|
265
266
|
&:focus {
|
|
266
267
|
outline: none;
|
|
@@ -305,7 +306,6 @@ $fontColor: var(--input-label);
|
|
|
305
306
|
}
|
|
306
307
|
}
|
|
307
308
|
}
|
|
308
|
-
|
|
309
309
|
input:disabled ~ .radio-custom:not([aria-checked="true"]) {
|
|
310
310
|
background-color: var(--disabled-bg);
|
|
311
311
|
opacity: .25;
|
|
@@ -108,7 +108,7 @@ export default defineComponent({
|
|
|
108
108
|
* (unless the input is long)
|
|
109
109
|
*/
|
|
110
110
|
style(): string {
|
|
111
|
-
return `height: ${ this.curHeight }px; overflow: ${ this.overflow };`;
|
|
111
|
+
return `height: ${ this.curHeight }px; overflow: ${ this.overflow };min-height:${ this.curHeight }px;`;
|
|
112
112
|
},
|
|
113
113
|
|
|
114
114
|
className(): string | unknown[] | Record<string, boolean> {
|
|
@@ -165,14 +165,10 @@ export default defineComponent({
|
|
|
165
165
|
return;
|
|
166
166
|
}
|
|
167
167
|
|
|
168
|
-
el.style.height = '1px';
|
|
169
|
-
|
|
170
168
|
const border = parseInt(getComputedStyle(el).getPropertyValue('borderTopWidth'), 10) || 0 + parseInt(getComputedStyle(el).getPropertyValue('borderBottomWidth'), 10) || 0;
|
|
171
169
|
const neu = Math.max(this.minHeight, Math.min(el.scrollHeight + border, this.maxHeight));
|
|
172
170
|
|
|
173
171
|
el.style.overflowY = el.scrollHeight > neu ? 'auto' : 'hidden';
|
|
174
|
-
el.style.height = `${ neu }px`;
|
|
175
|
-
|
|
176
172
|
this.curHeight = neu;
|
|
177
173
|
}
|
|
178
174
|
}
|
|
@@ -111,9 +111,6 @@ export default defineComponent({
|
|
|
111
111
|
right: 5px;
|
|
112
112
|
top: 10px;
|
|
113
113
|
z-index: 3;
|
|
114
|
-
/* right: 30px;
|
|
115
|
-
top: $input-padding-lg;
|
|
116
|
-
z-index: z-index(hoverOverContent); */
|
|
117
114
|
}
|
|
118
115
|
|
|
119
116
|
@mixin tooltipColors($color) {
|
|
@@ -122,11 +119,19 @@ export default defineComponent({
|
|
|
122
119
|
}
|
|
123
120
|
}
|
|
124
121
|
|
|
122
|
+
&.null {
|
|
123
|
+
|
|
124
|
+
.status-icon {
|
|
125
|
+
top: 5px;
|
|
126
|
+
right: -20px;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
125
130
|
&.error {
|
|
126
131
|
@include tooltipColors(var(--error));
|
|
127
132
|
|
|
128
133
|
.status-icon {
|
|
129
|
-
top:
|
|
134
|
+
top: 9px !important;
|
|
130
135
|
right: 5px;
|
|
131
136
|
}
|
|
132
137
|
}
|
|
@@ -12,6 +12,7 @@ withDefaults(defineProps<RcDropdownMenuComponentProps>(), {
|
|
|
12
12
|
buttonRole: 'primary',
|
|
13
13
|
buttonSize: undefined,
|
|
14
14
|
isDetail: false,
|
|
15
|
+
showIcon: false
|
|
15
16
|
});
|
|
16
17
|
|
|
17
18
|
const emit = defineEmits(['update:open', 'select']);
|
|
@@ -32,8 +33,10 @@ const hasOptions = (options: DropdownOption[]) => {
|
|
|
32
33
|
:data-testid="dataTestid"
|
|
33
34
|
:aria-label="buttonAriaLabel"
|
|
34
35
|
>
|
|
35
|
-
|
|
36
|
-
<i class="icon icon-actions"
|
|
36
|
+
<div v-if="showIcon">
|
|
37
|
+
<i data-v-5db2c2c7="" class="icon icon-actions" alt="More actions icon"></i>
|
|
38
|
+
</div>
|
|
39
|
+
<a v-else href="javascript:;">操作</a>
|
|
37
40
|
</rc-dropdown-trigger>
|
|
38
41
|
<template #dropdownCollection>
|
|
39
42
|
<template
|
|
@@ -63,7 +66,8 @@ const hasOptions = (options: DropdownOption[]) => {
|
|
|
63
66
|
v-if="!hasOptions(options)"
|
|
64
67
|
disabled
|
|
65
68
|
>
|
|
66
|
-
No actions available
|
|
69
|
+
<!-- No actions available -->
|
|
70
|
+
暂无可执行的操作。
|
|
67
71
|
</rc-dropdown-item>
|
|
68
72
|
</template>
|
|
69
73
|
</rc-dropdown>
|
package/scripts/clean
CHANGED
|
File without changes
|
package/scripts/extension/bundle
CHANGED
|
@@ -29,12 +29,32 @@ cp -R ${CHART_TEMPLATE}/* ${TMP}/container/
|
|
|
29
29
|
# Copy the plugin assets
|
|
30
30
|
mkdir -p ${TMP}/container/plugin
|
|
31
31
|
|
|
32
|
+
# Copy Helm charts and plugin assets
|
|
32
33
|
cp -R ${BASE_DIR}/assets/* ${TMP}/container/plugin
|
|
33
34
|
cp ${BASE_DIR}/package.json ${TMP}/container/plugin
|
|
34
35
|
cp ${BASE_DIR}/index.yaml ${TMP}/container/
|
|
35
36
|
cp ${BASE_DIR}/index.yaml ${TMP}/container/plugin
|
|
36
37
|
rm -f ${TMP}/container/plugin/report.html
|
|
37
38
|
|
|
39
|
+
# Add extension .tgz files with proper naming
|
|
40
|
+
echo -e "${CYAN}Copying extension archives...${RESET}"
|
|
41
|
+
for pkg_dir in ${BASE_DIR}/extensions/*/; do
|
|
42
|
+
pkg=$(basename "${pkg_dir}")
|
|
43
|
+
echo -e "Processing package: ${pkg}"
|
|
44
|
+
|
|
45
|
+
# Find all .tgz files in the package directory
|
|
46
|
+
for tgz_path in "${pkg_dir}"*.tgz; do
|
|
47
|
+
if [ -f "${tgz_path}" ]; then
|
|
48
|
+
# Extract version from filename
|
|
49
|
+
version=$(basename "${tgz_path}" .tgz)
|
|
50
|
+
compressed_package_name="${pkg}-${version}.tgz"
|
|
51
|
+
|
|
52
|
+
echo "Copying ${tgz_path} to ${TMP}/container/plugin/${compressed_package_name}"
|
|
53
|
+
cp "${tgz_path}" "${TMP}/container/plugin/${compressed_package_name}"
|
|
54
|
+
fi
|
|
55
|
+
done
|
|
56
|
+
done
|
|
57
|
+
|
|
38
58
|
# Generate files.txt for each pkg and move pkg files into relative plugin directories
|
|
39
59
|
for d in ${BASE_DIR}/dist-pkg/*; do
|
|
40
60
|
pkg=$(basename $d)
|
|
@@ -38,7 +38,7 @@ Common labels
|
|
|
38
38
|
helm.sh/chart: {{ include "extension-server.chart" . }}
|
|
39
39
|
{{ include "extension-server.selectorLabels" . }}
|
|
40
40
|
{{- if .Chart.AppVersion }}
|
|
41
|
-
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
|
41
|
+
app.kubernetes.io/version: {{ .Chart.AppVersion | replace "+" "_" | quote }}
|
|
42
42
|
{{- end }}
|
|
43
43
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
|
44
44
|
{{- end }}
|
|
@@ -60,4 +60,4 @@ Pkg annotations
|
|
|
60
60
|
{{ $key }}: {{ $value | quote }}
|
|
61
61
|
{{- end }}
|
|
62
62
|
{{- end }}
|
|
63
|
-
{{- end }}
|
|
63
|
+
{{- end }}
|
|
@@ -8,7 +8,8 @@ spec:
|
|
|
8
8
|
plugin:
|
|
9
9
|
name: {{ include "extension-server.fullname" . }}
|
|
10
10
|
version: {{ (semver (default .Chart.AppVersion .Values.plugin.versionOverride)).Original }}
|
|
11
|
-
endpoint:
|
|
11
|
+
endpoint: {{ .Values.plugin.endpoint | quote }}
|
|
12
|
+
compressedEndpoint: {{ .Values.plugin.compressedEndpoint | quote }}
|
|
12
13
|
noCache: {{ .Values.plugin.noCache }}
|
|
13
14
|
noAuth: {{ .Values.plugin.noAuth }}
|
|
14
15
|
metadata: {{ include "extension-server.pluginMetadata" . | indent 6 }}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
// Update Chart.yaml and values.yaml files
|
|
4
|
-
|
|
5
3
|
const fs = require('fs');
|
|
6
4
|
const path = require('path');
|
|
7
5
|
const yaml = require('js-yaml');
|
|
8
6
|
|
|
9
|
-
// TODO: Should already be in the template
|
|
10
|
-
// const UI_PLUGIN_ANNOTATION_NAME = 'catalog.cattle.io/ui-component';
|
|
11
|
-
// const UI_PLUGIN_ANNOTATION_VALUE = 'plugins';
|
|
12
|
-
|
|
13
7
|
console.log('Helm file update');
|
|
14
8
|
|
|
15
9
|
if (process.argv.length !== 4) {
|
|
@@ -17,12 +11,10 @@ if (process.argv.length !== 4) {
|
|
|
17
11
|
process.exit(1);
|
|
18
12
|
}
|
|
19
13
|
|
|
20
|
-
const
|
|
14
|
+
const chartFolder = process.argv[2];
|
|
21
15
|
const pkgFilePath = process.argv[3];
|
|
22
16
|
|
|
23
17
|
const pkgFile = JSON.parse(fs.readFileSync(pkgFilePath, 'utf8'));
|
|
24
|
-
|
|
25
|
-
const chartFolder = destFolder;
|
|
26
18
|
const chartFile = path.join(chartFolder, 'Chart.yaml');
|
|
27
19
|
const valuesFile = path.join(chartFolder, 'values.yaml');
|
|
28
20
|
|
|
@@ -32,36 +24,57 @@ if (!fs.existsSync(chartFolder)) {
|
|
|
32
24
|
}
|
|
33
25
|
|
|
34
26
|
// --------------------------------------------------------------------------------
|
|
35
|
-
// Chart.yaml
|
|
27
|
+
// Chart.yaml updates (annotations)
|
|
36
28
|
// --------------------------------------------------------------------------------
|
|
37
29
|
const chart = yaml.load(fs.readFileSync(chartFile, 'utf8'));
|
|
38
|
-
let
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
});
|
|
49
|
-
}
|
|
30
|
+
let chartUpdated = false;
|
|
31
|
+
|
|
32
|
+
if (pkgFile.rancher?.annotations) {
|
|
33
|
+
chart.annotations = chart.annotations || {};
|
|
34
|
+
Object.entries(pkgFile.rancher.annotations).forEach(([key, value]) => {
|
|
35
|
+
if (chart.annotations[key] !== value) {
|
|
36
|
+
chart.annotations[key] = value;
|
|
37
|
+
chartUpdated = true;
|
|
38
|
+
}
|
|
39
|
+
});
|
|
50
40
|
}
|
|
51
41
|
|
|
52
|
-
if (
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
fs.writeFileSync(chartFile, str, 'utf8');
|
|
42
|
+
if (chartUpdated) {
|
|
43
|
+
fs.writeFileSync(chartFile, yaml.dump(chart), 'utf8');
|
|
44
|
+
console.log('Updated Chart.yaml annotations');
|
|
57
45
|
}
|
|
58
46
|
|
|
59
47
|
// --------------------------------------------------------------------------------
|
|
60
|
-
// values.yaml
|
|
48
|
+
// values.yaml updates (endpoints)
|
|
61
49
|
// --------------------------------------------------------------------------------
|
|
62
|
-
|
|
63
50
|
const values = yaml.load(fs.readFileSync(valuesFile, 'utf8'));
|
|
64
51
|
|
|
65
|
-
|
|
52
|
+
// Get package metadata from package.json
|
|
53
|
+
const pkgName = pkgFile.name;
|
|
54
|
+
const pkgVersion = pkgFile.version;
|
|
55
|
+
const pkgFullName = `${ pkgName }-${ pkgVersion }`;
|
|
56
|
+
|
|
57
|
+
// Determine build type from environment
|
|
58
|
+
const isGitHubBuild = process.env.GITHUB_BUILD === 'true';
|
|
59
|
+
|
|
60
|
+
// Set endpoints based on build type
|
|
61
|
+
if (isGitHubBuild) {
|
|
62
|
+
const githubSource = process.env.GITHUB_SOURCE;
|
|
63
|
+
const githubBranch = process.env.GITHUB_BRANCH;
|
|
64
|
+
|
|
65
|
+
values.plugin.endpoint = `https://raw.githubusercontent.com/${ githubSource }/${ githubBranch }/extensions/${ pkgName }/${ pkgVersion }`;
|
|
66
|
+
} else {
|
|
67
|
+
const imagePrefix = process.env.IMAGE_PREFIX || '';
|
|
68
|
+
const baseExt = process.env.BASE_EXT;
|
|
69
|
+
|
|
70
|
+
values.plugin.endpoint = `http://${ imagePrefix }${ baseExt }-svc.cattle-ui-plugin-system:8080/plugin/${ pkgFullName }`;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Always set compressedEndpoint as endpoint + .tgz
|
|
74
|
+
values.plugin.compressedEndpoint = `${ values.plugin.endpoint }.tgz`;
|
|
66
75
|
|
|
67
|
-
|
|
76
|
+
// Write updated values.yaml
|
|
77
|
+
fs.writeFileSync(valuesFile, yaml.dump(values, { quotingType: '"' }), 'utf8');
|
|
78
|
+
console.log('Updated values.yaml endpoints:');
|
|
79
|
+
console.log(`- endpoint: ${ values.plugin.endpoint }`);
|
|
80
|
+
console.log(`- compressedEndpoint: ${ values.plugin.compressedEndpoint }`);
|
|
File without changes
|