@rancher/shell 0.4.0 → 0.5.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/assets/images/providers/ovhcloudmks.svg +122 -0
- package/assets/images/providers/ovhcloudpubliccloud.svg +122 -0
- package/assets/styles/global/_layout.scss +99 -0
- package/assets/translations/en-us.yaml +30 -5
- package/assets/translations/zh-hans.yaml +1 -1
- package/babel.config.js +7 -1
- package/chart/monitoring/alerting/index.vue +7 -21
- package/chart/monitoring/grafana/index.vue +55 -0
- package/chart/monitoring/index.vue +51 -17
- package/chart/monitoring/prometheus/index.vue +37 -43
- package/chart/rancher-backup/index.vue +2 -1
- package/cloud-credential/azure.vue +4 -17
- package/components/AsyncButton.vue +17 -5
- package/components/Certificates.vue +164 -0
- package/components/CodeMirror.vue +19 -21
- package/components/CruResource.vue +1 -0
- package/components/DraggableZone.vue +2 -2
- package/components/EtcdInfoBanner.vue +1 -1
- package/components/ExplorerProjectsNamespaces.vue +25 -1
- package/components/IconOrSvg.vue +1 -1
- package/components/LandingPagePreference.vue +1 -4
- package/components/PodSecurityAdmission.vue +2 -2
- package/components/Questions/index.vue +1 -1
- package/components/ResourceDetail/Masthead.vue +16 -3
- package/components/ResourceTable.vue +14 -2
- package/components/ResourceYaml.vue +5 -0
- package/components/SideNav.vue +1 -1
- package/components/SingleClusterInfo.vue +1 -4
- package/components/Tabbed/index.vue +12 -0
- package/components/fleet/FleetRepos.vue +62 -27
- package/components/fleet/FleetResources.vue +6 -1
- package/components/form/ArrayListSelect.vue +10 -0
- package/components/form/Error.vue +3 -3
- package/components/form/Footer.vue +2 -2
- package/components/form/GitPicker.vue +83 -38
- package/components/form/KeyValue.vue +4 -0
- package/components/form/LabeledSelect.vue +4 -0
- package/components/formatter/Checked.vue +11 -3
- package/components/formatter/FleetClusterSummaryGraph.vue +27 -0
- package/components/formatter/FleetSummaryGraph.vue +23 -11
- package/components/formatter/LiveDuration.vue +1 -1
- package/components/formatter/PercentageBar.vue +1 -1
- package/components/formatter/__tests__/Checked.test.ts +19 -0
- package/components/nav/Group.vue +2 -2
- package/components/nav/Header.vue +0 -1
- package/components/nav/TopLevelMenu.vue +36 -6
- package/components/nav/Type.vue +1 -3
- package/components/nav/WindowManager/ContainerLogs.vue +101 -3
- package/components/nav/WindowManager/ContainerShell.vue +6 -1
- package/components/nav/WindowManager/__tests__/ContainerLogs.test.ts +186 -0
- package/components/nav/WindowManager/index.vue +11 -10
- package/components/nav/__tests__/TopLevelMenu.test.ts +33 -0
- package/components/nav/__tests__/Type.test.ts +1 -1
- package/components/nuxt/nuxt-child.js +14 -78
- package/components/nuxt/nuxt.js +1 -1
- package/{layouts → components/templates}/blank.vue +1 -1
- package/{layouts → components/templates}/default.vue +8 -98
- package/{layouts → components/templates}/error.vue +10 -19
- package/{layouts → components/templates}/home.vue +4 -1
- package/{layouts → components/templates}/plain.vue +4 -1
- package/{layouts → components/templates}/standalone.vue +1 -1
- package/{layouts → components/templates}/unauthenticated.vue +1 -1
- package/composables/useCompactInput.test.ts +36 -0
- package/composables/useCompactInput.ts +20 -0
- package/composables/useLabeledFormElement.test.ts +135 -0
- package/composables/useLabeledFormElement.ts +138 -0
- package/config/harvester-manager-types.js +2 -0
- package/config/private-label.js +22 -0
- package/config/product/explorer.js +3 -0
- package/config/product/fleet.js +6 -1
- package/config/product/manager.js +8 -2
- package/config/query-params.js +1 -0
- package/config/router.js +385 -364
- package/config/settings.ts +1 -0
- package/config/store.js +1 -1
- package/config/system-namespaces.js +3 -0
- package/config/table-headers.js +47 -0
- package/core/plugin-routes.ts +56 -114
- package/core/plugin.ts +16 -10
- package/core/plugins-loader.js +7 -9
- package/core/plugins.js +0 -3
- package/creators/app/files/.gitlab-ci.yml +1 -1
- package/detail/fleet.cattle.io.cluster.vue +11 -1
- package/detail/provisioning.cattle.io.cluster.vue +4 -3
- package/dialog/ScaleMachineDownDialog.vue +34 -17
- package/edit/__tests__/service.test.ts +89 -0
- package/edit/auth/googleoauth.vue +1 -5
- package/edit/cloudcredential.vue +2 -0
- package/edit/configmap.vue +2 -1
- package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +2 -2
- package/edit/networking.k8s.io.networkpolicy/__tests__/PolicyRuleTarget.spec.ts +1 -1
- package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +15 -7
- package/edit/provisioning.cattle.io.cluster/__tests__/Advanced.test.ts +112 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/Basics.test.ts +473 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/{CustomCommand.tests.ts → CustomCommand.test.ts} +4 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/DrainOptions.test.ts +1 -1
- package/edit/provisioning.cattle.io.cluster/__tests__/index.test.ts +73 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +7 -1
- package/edit/provisioning.cattle.io.cluster/__tests__/utils/cluster.ts +386 -0
- package/edit/provisioning.cattle.io.cluster/import.vue +2 -2
- package/edit/provisioning.cattle.io.cluster/index.vue +92 -36
- package/edit/provisioning.cattle.io.cluster/rke2.vue +171 -583
- package/edit/provisioning.cattle.io.cluster/tabs/AddOnConfig.vue +137 -0
- package/edit/provisioning.cattle.io.cluster/tabs/Advanced.vue +157 -0
- package/edit/provisioning.cattle.io.cluster/{Basics.vue → tabs/Basics.vue} +94 -19
- package/edit/provisioning.cattle.io.cluster/{MachinePool.vue → tabs/MachinePool.vue} +1 -0
- package/edit/provisioning.cattle.io.cluster/tabs/etcd/index.vue +135 -0
- package/edit/provisioning.cattle.io.cluster/tabs/networking/index.vue +189 -0
- package/edit/provisioning.cattle.io.cluster/tabs/registries/index.vue +144 -0
- package/edit/provisioning.cattle.io.cluster/tabs/upgrade/index.vue +76 -0
- package/edit/service.vue +12 -0
- package/edit/workload/mixins/workload.js +1 -1
- package/initialize/App.js +25 -71
- package/initialize/client.js +21 -162
- package/initialize/index.js +27 -123
- package/list/management.cattle.io.feature.vue +1 -7
- package/list/node.vue +1 -0
- package/machine-config/__tests__/vmwarevsphere.test.ts +100 -21
- package/machine-config/vmwarevsphere.vue +73 -51
- package/middleware/authenticated.js +10 -17
- package/mixins/auth-config.js +2 -7
- package/mixins/brand.js +29 -41
- package/mixins/create-edit-view/index.js +2 -2
- package/mixins/labeled-form-element.ts +6 -1
- package/models/__tests__/management.cattle.io.node.ts +85 -0
- package/models/__tests__/management.cattle.io.nodepool.ts +83 -0
- package/models/__tests__/namespace.test.ts +49 -9
- package/models/__tests__/workload.test.ts +91 -0
- package/models/cluster/node.js +4 -4
- package/models/cluster.x-k8s.io.machinedeployment.js +14 -0
- package/models/fleet.cattle.io.cluster.js +4 -0
- package/models/fleet.cattle.io.gitrepo.js +56 -13
- package/models/management.cattle.io.kontainerdriver.js +1 -1
- package/models/management.cattle.io.node.js +18 -14
- package/models/management.cattle.io.nodepool.js +17 -0
- package/models/namespace.js +1 -1
- package/models/pod.js +20 -0
- package/models/provisioning.cattle.io.cluster.js +20 -3
- package/models/secret.js +117 -18
- package/models/workload.js +16 -0
- package/models/workload.service.js +18 -0
- package/package.json +10 -9
- package/pages/about.vue +0 -1
- package/pages/account/create-key.vue +0 -1
- package/pages/account/index.vue +0 -1
- package/pages/auth/login.vue +0 -1
- package/pages/auth/logout.vue +0 -2
- package/pages/auth/setup.vue +0 -4
- package/pages/auth/verify.vue +14 -8
- package/pages/c/_cluster/apps/charts/install.vue +4 -4
- package/pages/c/_cluster/apps/index.vue +0 -2
- package/pages/c/_cluster/auth/index.vue +0 -2
- package/pages/c/_cluster/ecm/index.vue +0 -2
- package/pages/c/_cluster/explorer/index.vue +28 -2
- package/pages/c/_cluster/fleet/index.vue +1 -1
- package/pages/c/_cluster/index.vue +0 -2
- package/pages/c/_cluster/settings/banners.vue +0 -2
- package/pages/c/_cluster/settings/brand.vue +0 -2
- package/pages/c/_cluster/settings/index.vue +0 -2
- package/pages/c/_cluster/settings/links.vue +0 -1
- package/pages/c/_cluster/settings/performance.vue +0 -1
- package/pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue +2 -1
- package/pages/c/_cluster/uiplugins/CatalogList/index.vue +10 -46
- package/pages/c/_cluster/uiplugins/index.vue +0 -2
- package/pages/diagnostic.vue +1 -2
- package/pages/fail-whale.vue +0 -1
- package/pages/prefs.vue +0 -1
- package/pages/support/index.vue +2 -8
- package/pkg/auto-import.js +1 -1
- package/plugins/axios.js +0 -36
- package/plugins/back-button.js +3 -5
- package/plugins/codemirror-loader.js +1 -1
- package/plugins/codemirror.js +41 -0
- package/plugins/dashboard-store/__tests__/{mutations.spec.ts → mutations.test.ts} +1 -1
- package/plugins/dashboard-store/__tests__/resource-class.test.ts +49 -0
- package/plugins/dashboard-store/__tests__/utils/store-mocks.ts +7 -0
- package/plugins/dashboard-store/actions.js +30 -4
- package/plugins/dashboard-store/classify.js +1 -18
- package/plugins/dashboard-store/getters.js +10 -5
- package/plugins/dashboard-store/index.js +0 -12
- package/plugins/dashboard-store/mutations.js +0 -4
- package/plugins/dashboard-store/resource-class.js +59 -18
- package/plugins/steve/__tests__/steve-class.spec.ts +59 -0
- package/plugins/steve/__tests__/utils/steve-mocks.ts +31 -0
- package/plugins/steve/getters.js +4 -1
- package/plugins/steve/norman-class.js +19 -0
- package/plugins/steve/steve-class.js +22 -0
- package/plugins/steve/subscribe.js +4 -10
- package/rancher-components/Accordion/Accordion.test.ts +45 -0
- package/rancher-components/Accordion/Accordion.vue +86 -0
- package/rancher-components/Accordion/index.ts +1 -0
- package/rancher-components/BadgeState/BadgeState.vue +3 -3
- package/rancher-components/Banner/Banner.vue +2 -2
- package/rancher-components/Card/Card.vue +3 -3
- package/rancher-components/Form/Checkbox/Checkbox.vue +3 -3
- package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +18 -1
- package/rancher-components/Form/LabeledInput/LabeledInput.vue +65 -24
- package/rancher-components/Form/Radio/RadioButton.test.ts +7 -3
- package/rancher-components/Form/Radio/RadioButton.vue +13 -7
- package/rancher-components/Form/Radio/RadioGroup.test.ts +30 -0
- package/rancher-components/Form/Radio/RadioGroup.vue +8 -3
- package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +6 -4
- package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +7 -4
- package/rancher-components/LabeledTooltip/LabeledTooltip.vue +9 -4
- package/rancher-components/StringList/StringList.test.ts +270 -0
- package/rancher-components/StringList/StringList.vue +65 -26
- package/rancher-components/components/Accordion/Accordion.test.ts +45 -0
- package/rancher-components/components/Accordion/Accordion.vue +86 -0
- package/rancher-components/components/Accordion/index.ts +1 -0
- package/rancher-components/components/BadgeState/BadgeState.vue +3 -3
- package/rancher-components/components/Banner/Banner.vue +2 -2
- package/rancher-components/components/Card/Card.vue +3 -3
- package/rancher-components/components/Form/Checkbox/Checkbox.vue +3 -3
- package/rancher-components/components/Form/LabeledInput/LabeledInput.test.ts +18 -1
- package/rancher-components/components/Form/LabeledInput/LabeledInput.vue +57 -24
- package/rancher-components/components/Form/Radio/RadioButton.vue +13 -7
- package/rancher-components/components/Form/Radio/RadioGroup.vue +4 -3
- package/rancher-components/components/Form/TextArea/TextAreaAutoGrow.vue +6 -4
- package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.vue +7 -4
- package/rancher-components/components/LabeledTooltip/LabeledTooltip.vue +9 -4
- package/rancher-components/components/StringList/StringList.vue +8 -8
- package/scripts/.gitlab/workflows/build-extension-catalog.gitlab-ci.yml +50 -0
- package/scripts/extension/parse-tag-name +2 -2
- package/scripts/publish-shell.sh +10 -0
- package/scripts/test-plugins-build.sh +85 -9
- package/server/har-file.js +183 -0
- package/store/catalog.js +1 -1
- package/store/features.js +1 -0
- package/store/i18n.js +11 -0
- package/store/index.js +10 -11
- package/store/prefs.js +33 -35
- package/store/type-map.js +8 -7
- package/tsconfig.json +35 -9
- package/tsconfig.paths.json +21 -0
- package/types/shell/index.d.ts +427 -234
- package/types/vue-shim.d.ts +42 -0
- package/utils/__tests__/create-yaml.test.ts +60 -0
- package/utils/axios.js +0 -19
- package/utils/azure.js +24 -0
- package/utils/create-yaml.js +17 -10
- package/utils/git.ts +1 -1
- package/utils/monitoring.js +1 -1
- package/utils/nuxt.js +18 -39
- package/utils/object.js +14 -0
- package/utils/router.scrollBehavior.js +12 -14
- package/utils/time.js +1 -1
- package/utils/url.ts +1 -1
- package/vue.config.js +23 -2
- package/.DS_Store +0 -0
- package/assets/images/providers/aks-black.svg +0 -28
- package/assets/images/providers/aks.svg +0 -31
- package/edit/provisioning.cattle.io.cluster/__tests__/Basics.tests.ts +0 -234
- package/initialize/layouts.ts +0 -26
- package/mixins/fetch.server.js +0 -73
- package/pages/c/index.vue +0 -9
- package/pages/rio/mesh.vue +0 -508
- package/plugins/transitions.js +0 -4
- package/scripts/.DS_Store +0 -0
- package/scripts/verdaccio.log +0 -205
- package/tsconfig.default.json +0 -46
- package/yarn-error.log +0 -200
- /package/components/form/__tests__/{NameNsDescription.ts → NameNsDescription.test.ts} +0 -0
- /package/edit/networking.k8s.io.networkpolicy/__tests__/utils/{selectors.ts → selectors.test.ts} +0 -0
- /package/edit/provisioning.cattle.io.cluster/{AgentConfiguration.vue → tabs/AgentConfiguration.vue} +0 -0
- /package/edit/provisioning.cattle.io.cluster/{MemberRoles.vue → tabs/MemberRoles.vue} +0 -0
- /package/edit/provisioning.cattle.io.cluster/{S3Config.vue → tabs/etcd/S3Config.vue} +0 -0
- /package/edit/provisioning.cattle.io.cluster/{ACE.vue → tabs/networking/ACE.vue} +0 -0
- /package/edit/provisioning.cattle.io.cluster/{RegistryConfigs.vue → tabs/registries/RegistryConfigs.vue} +0 -0
- /package/edit/provisioning.cattle.io.cluster/{RegistryMirrors.vue → tabs/registries/RegistryMirrors.vue} +0 -0
- /package/edit/provisioning.cattle.io.cluster/{DrainOptions.vue → tabs/upgrade/DrainOptions.vue} +0 -0
- /package/plugins/dashboard-store/__tests__/{actions.spec.ts → actions.test.ts} +0 -0
- /package/plugins/dashboard-store/__tests__/{getters.spec.ts → getters.test.ts} +0 -0
- /package/rancher-components/BadgeState/{BadgeState.spec.ts → BadgeState.test.ts} +0 -0
- /package/rancher-components/components/BadgeState/{BadgeState.spec.ts → BadgeState.test.ts} +0 -0
|
@@ -1,21 +1,27 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import
|
|
3
|
-
import CompactInput from '@shell/mixins/compact-input';
|
|
4
|
-
import LabeledFormElement from '@shell/mixins/labeled-form-element';
|
|
2
|
+
import { defineComponent } from 'vue';
|
|
5
3
|
import TextAreaAutoGrow from '@components/Form/TextArea/TextAreaAutoGrow.vue';
|
|
6
4
|
import LabeledTooltip from '@components/LabeledTooltip/LabeledTooltip.vue';
|
|
7
5
|
import { escapeHtml } from '@shell/utils/string';
|
|
8
6
|
import cronstrue from 'cronstrue';
|
|
9
7
|
import { isValidCron } from 'cron-validator';
|
|
10
8
|
import { debounce } from 'lodash';
|
|
9
|
+
import { useLabeledFormElement, labeledFormElementProps } from '@shell/composables/useLabeledFormElement';
|
|
10
|
+
import { useCompactInput } from '@shell/composables/useCompactInput';
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
)
|
|
12
|
+
declare module 'vue/types/vue' {
|
|
13
|
+
interface Vue {
|
|
14
|
+
onInput: (event: Event) => void | ((event: Event) => void);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export default defineComponent({
|
|
15
19
|
components: { LabeledTooltip, TextAreaAutoGrow },
|
|
16
|
-
|
|
20
|
+
|
|
21
|
+
inheritAttrs: false,
|
|
17
22
|
|
|
18
23
|
props: {
|
|
24
|
+
...labeledFormElementProps,
|
|
19
25
|
/**
|
|
20
26
|
* The type of the Labeled Input.
|
|
21
27
|
* @values text, cron, multiline, multiline-password
|
|
@@ -90,24 +96,39 @@ export default (
|
|
|
90
96
|
delay: {
|
|
91
97
|
type: Number,
|
|
92
98
|
default: 0
|
|
93
|
-
}
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
|
|
102
|
+
setup(props, { emit }) {
|
|
103
|
+
const {
|
|
104
|
+
focused,
|
|
105
|
+
onFocusLabeled,
|
|
106
|
+
onBlurLabeled,
|
|
107
|
+
isDisabled,
|
|
108
|
+
validationMessage,
|
|
109
|
+
requiredField
|
|
110
|
+
} = useLabeledFormElement(props, emit);
|
|
111
|
+
const { isCompact } = useCompactInput(props);
|
|
112
|
+
|
|
113
|
+
return {
|
|
114
|
+
focused,
|
|
115
|
+
onFocusLabeled,
|
|
116
|
+
onBlurLabeled,
|
|
117
|
+
isDisabled,
|
|
118
|
+
validationMessage,
|
|
119
|
+
requiredField,
|
|
120
|
+
isCompact,
|
|
121
|
+
};
|
|
94
122
|
},
|
|
95
123
|
|
|
96
124
|
data() {
|
|
97
125
|
return {
|
|
98
126
|
updated: false,
|
|
99
|
-
validationErrors: ''
|
|
127
|
+
validationErrors: '',
|
|
100
128
|
};
|
|
101
129
|
},
|
|
102
130
|
|
|
103
131
|
computed: {
|
|
104
|
-
/**
|
|
105
|
-
* Determines if the Labeled Input @input event should be debounced.
|
|
106
|
-
*/
|
|
107
|
-
onInput(): ((value: string) => void) | void {
|
|
108
|
-
return this.delay ? debounce(this.delayInput, this.delay) : this.delayInput;
|
|
109
|
-
},
|
|
110
|
-
|
|
111
132
|
/**
|
|
112
133
|
* Determines if the Labeled Input should display a label.
|
|
113
134
|
*/
|
|
@@ -122,7 +143,7 @@ export default (
|
|
|
122
143
|
return !!this.tooltip || !!this.tooltipKey;
|
|
123
144
|
},
|
|
124
145
|
|
|
125
|
-
tooltipValue(): string | undefined {
|
|
146
|
+
tooltipValue(): string | Record<string, unknown> | undefined {
|
|
126
147
|
if (this.hasTooltip) {
|
|
127
148
|
return this.tooltipKey ? this.t(this.tooltipKey) : this.tooltip;
|
|
128
149
|
}
|
|
@@ -144,7 +165,7 @@ export default (
|
|
|
144
165
|
if (this.type !== 'cron' || !this.value) {
|
|
145
166
|
return;
|
|
146
167
|
}
|
|
147
|
-
if (!isValidCron(this.value)) {
|
|
168
|
+
if (typeof this.value === 'string' && !isValidCron(this.value)) {
|
|
148
169
|
return this.t('generic.invalidCron');
|
|
149
170
|
}
|
|
150
171
|
try {
|
|
@@ -173,15 +194,22 @@ export default (
|
|
|
173
194
|
/**
|
|
174
195
|
* The max length for the Labeled Input.
|
|
175
196
|
*/
|
|
176
|
-
_maxlength(): number |
|
|
197
|
+
_maxlength(): number | undefined {
|
|
177
198
|
if (this.type === 'text' && this.maxlength) {
|
|
178
199
|
return this.maxlength;
|
|
179
200
|
}
|
|
180
201
|
|
|
181
|
-
return
|
|
202
|
+
return undefined;
|
|
182
203
|
},
|
|
183
204
|
},
|
|
184
205
|
|
|
206
|
+
created() {
|
|
207
|
+
/**
|
|
208
|
+
* Determines if the Labeled Input @input event should be debounced.
|
|
209
|
+
*/
|
|
210
|
+
this.onInput = this.delay ? debounce(this.delayInput, this.delay) : this.delayInput;
|
|
211
|
+
},
|
|
212
|
+
|
|
185
213
|
methods: {
|
|
186
214
|
/**
|
|
187
215
|
* Attempts to give the Labeled Input focus.
|
|
@@ -216,8 +244,13 @@ export default (
|
|
|
216
244
|
/**
|
|
217
245
|
* Emit on input with delay. Note: Arrow function is avoided due context
|
|
218
246
|
* binding.
|
|
247
|
+
*
|
|
248
|
+
* NOTE: In multiline, TextAreaAutoGrow emits a string with the value
|
|
249
|
+
* https://github.com/rancher/dashboard/issues/10249
|
|
219
250
|
*/
|
|
220
|
-
delayInput(
|
|
251
|
+
delayInput(val: string | Event): void {
|
|
252
|
+
const value = typeof val === 'string' ? val : (val?.target as HTMLInputElement)?.value;
|
|
253
|
+
|
|
221
254
|
this.$emit('input', value);
|
|
222
255
|
},
|
|
223
256
|
|
|
@@ -234,7 +267,7 @@ export default (
|
|
|
234
267
|
* event.
|
|
235
268
|
* @see labeled-form-element.ts mixin for onBlurLabeled()
|
|
236
269
|
*/
|
|
237
|
-
onBlur(event: string): void {
|
|
270
|
+
onBlur(event: string | FocusEvent): void {
|
|
238
271
|
this.$emit('blur', event);
|
|
239
272
|
this.onBlurLabeled();
|
|
240
273
|
},
|
|
@@ -286,7 +319,7 @@ export default (
|
|
|
286
319
|
:placeholder="_placeholder"
|
|
287
320
|
autocapitalize="off"
|
|
288
321
|
:class="{ conceal: type === 'multiline-password' }"
|
|
289
|
-
@input="onInput
|
|
322
|
+
@input="onInput"
|
|
290
323
|
@focus="onFocus"
|
|
291
324
|
@blur="onBlur"
|
|
292
325
|
/>
|
|
@@ -303,7 +336,7 @@ export default (
|
|
|
303
336
|
autocomplete="off"
|
|
304
337
|
autocapitalize="off"
|
|
305
338
|
:data-lpignore="ignorePasswordManagers"
|
|
306
|
-
@input="onInput
|
|
339
|
+
@input="onInput"
|
|
307
340
|
@focus="onFocus"
|
|
308
341
|
@blur="onBlur"
|
|
309
342
|
@change="onChange"
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import
|
|
2
|
+
import { defineComponent } from 'vue';
|
|
3
3
|
import { _VIEW } from '@shell/config/query-params';
|
|
4
|
+
import { randomStr } from '@shell/utils/string';
|
|
4
5
|
|
|
5
|
-
export default
|
|
6
|
+
export default defineComponent({
|
|
6
7
|
props: {
|
|
7
8
|
/**
|
|
8
9
|
* The name of the input, for grouping.
|
|
@@ -71,7 +72,10 @@ export default Vue.extend({
|
|
|
71
72
|
},
|
|
72
73
|
|
|
73
74
|
data() {
|
|
74
|
-
return {
|
|
75
|
+
return {
|
|
76
|
+
isChecked: this.value === this.val,
|
|
77
|
+
randomString: `${ randomStr() }-radio`,
|
|
78
|
+
};
|
|
75
79
|
},
|
|
76
80
|
|
|
77
81
|
computed: {
|
|
@@ -115,13 +119,15 @@ export default Vue.extend({
|
|
|
115
119
|
/**
|
|
116
120
|
* Emits the input event.
|
|
117
121
|
*/
|
|
118
|
-
clicked(
|
|
119
|
-
|
|
122
|
+
clicked(event: MouseEvent | KeyboardEvent) {
|
|
123
|
+
const target = event.target;
|
|
124
|
+
|
|
125
|
+
if (this.isDisabled || (target instanceof HTMLElement && target.tagName === 'A')) {
|
|
120
126
|
return;
|
|
121
127
|
}
|
|
122
128
|
|
|
123
129
|
this.$emit('input', this.val);
|
|
124
|
-
}
|
|
130
|
+
},
|
|
125
131
|
}
|
|
126
132
|
});
|
|
127
133
|
</script>
|
|
@@ -134,7 +140,7 @@ export default Vue.extend({
|
|
|
134
140
|
@click.stop="clicked($event)"
|
|
135
141
|
>
|
|
136
142
|
<input
|
|
137
|
-
:id="
|
|
143
|
+
:id="randomString"
|
|
138
144
|
:disabled="isDisabled"
|
|
139
145
|
:name="name"
|
|
140
146
|
:value="''+val"
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import
|
|
2
|
+
import { PropType, defineComponent } from 'vue';
|
|
3
3
|
import { _VIEW } from '@shell/config/query-params';
|
|
4
4
|
import RadioButton from '@components/Form/Radio/RadioButton.vue';
|
|
5
5
|
|
|
6
6
|
interface Option {
|
|
7
7
|
value: unknown,
|
|
8
|
-
label: string
|
|
8
|
+
label: string,
|
|
9
|
+
description?: string,
|
|
9
10
|
}
|
|
10
11
|
|
|
11
|
-
export default
|
|
12
|
+
export default defineComponent({
|
|
12
13
|
components: { RadioButton },
|
|
13
14
|
props: {
|
|
14
15
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import
|
|
2
|
+
import { defineComponent } from 'vue';
|
|
3
3
|
import debounce from 'lodash/debounce';
|
|
4
4
|
import { _EDIT, _VIEW } from '@shell/config/query-params';
|
|
5
5
|
|
|
@@ -10,7 +10,7 @@ declare module 'vue/types/vue' {
|
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
export default
|
|
13
|
+
export default defineComponent({
|
|
14
14
|
inheritAttrs: false,
|
|
15
15
|
|
|
16
16
|
props: {
|
|
@@ -115,7 +115,9 @@ export default Vue.extend({
|
|
|
115
115
|
/**
|
|
116
116
|
* Emits the input event and resizes the Text Area.
|
|
117
117
|
*/
|
|
118
|
-
onInput(
|
|
118
|
+
onInput(event: Event): void {
|
|
119
|
+
const val = (event?.target as HTMLInputElement)?.value;
|
|
120
|
+
|
|
119
121
|
this.$emit('input', val);
|
|
120
122
|
this.queueResize();
|
|
121
123
|
},
|
|
@@ -163,7 +165,7 @@ export default Vue.extend({
|
|
|
163
165
|
v-bind="$attrs"
|
|
164
166
|
:spellcheck="spellcheck"
|
|
165
167
|
@paste="$emit('paste', $event)"
|
|
166
|
-
@input="onInput($event
|
|
168
|
+
@input="onInput($event)"
|
|
167
169
|
@focus="$emit('focus', $event)"
|
|
168
170
|
@blur="$emit('blur', $event)"
|
|
169
171
|
/>
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import
|
|
3
|
-
|
|
2
|
+
import { defineComponent } from 'vue';
|
|
3
|
+
|
|
4
|
+
type StateType = boolean | 'true' | 'false' | undefined;
|
|
5
|
+
|
|
6
|
+
export default defineComponent({
|
|
4
7
|
props: {
|
|
5
8
|
value: {
|
|
6
9
|
type: [Boolean, String, Number],
|
|
@@ -28,7 +31,7 @@ export default Vue.extend({
|
|
|
28
31
|
},
|
|
29
32
|
},
|
|
30
33
|
data() {
|
|
31
|
-
return { state: false as
|
|
34
|
+
return { state: false as StateType };
|
|
32
35
|
},
|
|
33
36
|
|
|
34
37
|
watch: {
|
|
@@ -41,7 +44,7 @@ export default Vue.extend({
|
|
|
41
44
|
},
|
|
42
45
|
|
|
43
46
|
methods: {
|
|
44
|
-
toggle(neu:
|
|
47
|
+
toggle(neu: StateType | null) {
|
|
45
48
|
this.state = neu === null ? !this.state : neu;
|
|
46
49
|
this.$emit('input', this.state ? this.onValue : this.offValue);
|
|
47
50
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import
|
|
2
|
+
import { defineComponent } from 'vue';
|
|
3
3
|
|
|
4
|
-
export default
|
|
4
|
+
export default defineComponent({
|
|
5
5
|
props: {
|
|
6
6
|
/**
|
|
7
7
|
* The Labeled Tooltip value.
|
|
@@ -29,9 +29,14 @@ export default Vue.extend({
|
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
31
|
computed: {
|
|
32
|
-
iconClass() {
|
|
32
|
+
iconClass(): string {
|
|
33
33
|
return this.status === 'error' ? 'icon-warning' : 'icon-info';
|
|
34
34
|
}
|
|
35
|
+
},
|
|
36
|
+
methods: {
|
|
37
|
+
isObject(value: string | Record<string, unknown>): value is Record<string, unknown> {
|
|
38
|
+
return typeof value === 'object' && value !== null && !!value.content;
|
|
39
|
+
}
|
|
35
40
|
}
|
|
36
41
|
});
|
|
37
42
|
</script>
|
|
@@ -44,7 +49,7 @@ export default Vue.extend({
|
|
|
44
49
|
>
|
|
45
50
|
<template v-if="hover">
|
|
46
51
|
<i
|
|
47
|
-
v-clean-tooltip="value
|
|
52
|
+
v-clean-tooltip="isObject(value) ? { ...{content: value.content, classes: [`tooltip-${status}`]}, ...value } : value"
|
|
48
53
|
:class="{'hover':!value, [iconClass]: true}"
|
|
49
54
|
class="icon status-icon"
|
|
50
55
|
/>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import Vue, { PropType } from 'vue';
|
|
2
|
+
import Vue, { PropType, defineComponent } from 'vue';
|
|
3
3
|
|
|
4
4
|
import LabeledInput from '@components/Form/LabeledInput/LabeledInput.vue';
|
|
5
5
|
import { findStringIndex, hasDuplicatedStrings } from '@shell/utils/array';
|
|
@@ -29,7 +29,7 @@ const CLASS = {
|
|
|
29
29
|
/**
|
|
30
30
|
* Manage a list of strings
|
|
31
31
|
*/
|
|
32
|
-
export default
|
|
32
|
+
export default defineComponent({
|
|
33
33
|
|
|
34
34
|
name: 'StringList',
|
|
35
35
|
components: { LabeledInput },
|
|
@@ -92,9 +92,9 @@ export default Vue.extend({
|
|
|
92
92
|
},
|
|
93
93
|
data() {
|
|
94
94
|
return {
|
|
95
|
-
value:
|
|
95
|
+
value: undefined as string | undefined,
|
|
96
96
|
selected: null as string | null,
|
|
97
|
-
editedItem:
|
|
97
|
+
editedItem: undefined as string | undefined,
|
|
98
98
|
isCreateItem: false,
|
|
99
99
|
errors: { duplicate: false } as Record<Error, boolean>
|
|
100
100
|
};
|
|
@@ -281,7 +281,7 @@ export default Vue.extend({
|
|
|
281
281
|
this.isCreateItem = true;
|
|
282
282
|
this.setFocus(INPUT.create);
|
|
283
283
|
} else {
|
|
284
|
-
this.value =
|
|
284
|
+
this.value = undefined;
|
|
285
285
|
this.toggleError('duplicate', false);
|
|
286
286
|
this.onSelectLeave();
|
|
287
287
|
|
|
@@ -303,11 +303,11 @@ export default Vue.extend({
|
|
|
303
303
|
this.editedItem = item || '';
|
|
304
304
|
this.setFocus(INPUT.edit);
|
|
305
305
|
} else {
|
|
306
|
-
this.value =
|
|
306
|
+
this.value = undefined;
|
|
307
307
|
this.toggleError('duplicate', false);
|
|
308
308
|
this.onSelectLeave();
|
|
309
309
|
|
|
310
|
-
this.editedItem =
|
|
310
|
+
this.editedItem = undefined;
|
|
311
311
|
}
|
|
312
312
|
},
|
|
313
313
|
|
|
@@ -502,7 +502,7 @@ export default Vue.extend({
|
|
|
502
502
|
<button
|
|
503
503
|
data-testid="button-add"
|
|
504
504
|
class="btn btn-sm role-tertiary add-button"
|
|
505
|
-
:disabled="isCreateItem || editedItem"
|
|
505
|
+
:disabled="!!isCreateItem || !!editedItem"
|
|
506
506
|
@click.prevent="onClickPlusButton"
|
|
507
507
|
>
|
|
508
508
|
<span class="icon icon-plus icon-sm" />
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
.podman-setup: &podman-setup
|
|
2
|
+
- zypper --non-interactive install jq podman
|
|
3
|
+
- usermod --add-subuids 100000-165535 --add-subgids 100000-165535 $(id -nu)
|
|
4
|
+
- podman login -u $REGISTRY_USER -p $REGISTRY_PASSWORD $REGISTRY
|
|
5
|
+
|
|
6
|
+
check_version_collisions:
|
|
7
|
+
stage: check_version
|
|
8
|
+
rules:
|
|
9
|
+
- changes:
|
|
10
|
+
- package.json
|
|
11
|
+
script:
|
|
12
|
+
- *podman-setup
|
|
13
|
+
- |
|
|
14
|
+
PACKAGE_VERSION=`jq -r .version package.json`
|
|
15
|
+
PACKAGE_NAME=`jq -r .name package.json`
|
|
16
|
+
|
|
17
|
+
readarray -t VERSIONS < <(podman search $REGISTRY/$IMAGE_NAMESPACE/ui-extension-$PACKAGE_NAME --list-tags --format {{.Tag}})
|
|
18
|
+
|
|
19
|
+
echo -e "Checking for version collisions with Extension version: ${PACKAGE_VERSION}"
|
|
20
|
+
for version in ${VERSIONS[@]}; do
|
|
21
|
+
if [[ ${version} == ${PACKAGE_VERSION} ]]; then
|
|
22
|
+
echo "Cannot overwrite production image version ${version} since it already exists."
|
|
23
|
+
podman logout $REGISTRY
|
|
24
|
+
exit 1
|
|
25
|
+
fi
|
|
26
|
+
done
|
|
27
|
+
|
|
28
|
+
echo -e "Published image not found for version ${PACKAGE_VERSION}, continuing build..."
|
|
29
|
+
tags:
|
|
30
|
+
- linux
|
|
31
|
+
|
|
32
|
+
build_and_release:
|
|
33
|
+
stage: build_catalog
|
|
34
|
+
rules:
|
|
35
|
+
- changes:
|
|
36
|
+
- package.json
|
|
37
|
+
script:
|
|
38
|
+
- *podman-setup
|
|
39
|
+
- zypper addrepo https://download.opensuse.org/repositories/devel:languages:nodejs/SLE_12_SP5/devel:languages:nodejs.repo
|
|
40
|
+
- zypper --non-interactive --no-gpg-checks refresh
|
|
41
|
+
- zypper --non-interactive install go git nodejs14 npm helm
|
|
42
|
+
- YQ_URL="https://github.com/mikefarah/yq/releases/download/v4.35.2/yq_linux_amd64"
|
|
43
|
+
- curl -sLf ${YQ_URL} -o /usr/bin/yq && chmod +x /usr/bin/yq
|
|
44
|
+
- npm install -g --unsafe-perm yarn
|
|
45
|
+
- yarn
|
|
46
|
+
- yarn publish-pkgs -cl -r $REGISTRY -o $IMAGE_NAMESPACE
|
|
47
|
+
- podman push `podman images -f reference!=registry.suse.com/bci/bci-base --format "{{index .Names 0}}"`
|
|
48
|
+
- podman logout $REGISTRY
|
|
49
|
+
tags:
|
|
50
|
+
- linux
|
|
@@ -5,7 +5,7 @@ GITHUB_RUN_ID=$2
|
|
|
5
5
|
GITHUB_WORKFLOW_TYPE=$3
|
|
6
6
|
|
|
7
7
|
# Check packages for released tag name
|
|
8
|
-
if [[ "${GITHUB_WORKFLOW_TYPE}" == "
|
|
8
|
+
if [[ "${GITHUB_WORKFLOW_TYPE}" == "charts" ]]; then
|
|
9
9
|
for d in pkg/*/ ; do
|
|
10
10
|
pkg=$(basename $d)
|
|
11
11
|
|
|
@@ -27,4 +27,4 @@ else
|
|
|
27
27
|
echo -e "tag: ${GITHUB_RELEASE_TAG}"
|
|
28
28
|
gh run cancel ${GITHUB_RUN_ID}
|
|
29
29
|
fi
|
|
30
|
-
fi
|
|
30
|
+
fi
|
package/scripts/publish-shell.sh
CHANGED
|
@@ -8,6 +8,8 @@ BASE_DIR="$(
|
|
|
8
8
|
SHELL_DIR=$BASE_DIR/shell/
|
|
9
9
|
TMP_DIR=$BASE_DIR/tmp
|
|
10
10
|
PUBLISH_ARGS="--no-git-tag-version --access public $PUBLISH_ARGS"
|
|
11
|
+
FORCE_PUBLISH_TO_NPM="false"
|
|
12
|
+
DEFAULT_YARN_REGISTRY="https://registry.npmjs.org"
|
|
11
13
|
|
|
12
14
|
if [ ! -d "${BASE_DIR}/node_modules" ]; then
|
|
13
15
|
echo "You need to run 'yarn install' first"
|
|
@@ -16,6 +18,14 @@ fi
|
|
|
16
18
|
|
|
17
19
|
echo "Publishing Shell Packages"
|
|
18
20
|
|
|
21
|
+
if [ "$1" == "--npm" ]; then
|
|
22
|
+
FORCE_PUBLISH_TO_NPM="true"
|
|
23
|
+
fi
|
|
24
|
+
|
|
25
|
+
if [ "$FORCE_PUBLISH_TO_NPM" == "true" ]; then
|
|
26
|
+
export YARN_REGISTRY=$DEFAULT_YARN_REGISTRY
|
|
27
|
+
fi
|
|
28
|
+
|
|
19
29
|
# We use the version from the shell package for the creator packages
|
|
20
30
|
# Need to copy them to a temporary location, so we can patch the version number
|
|
21
31
|
# before publishing
|
|
@@ -7,6 +7,9 @@ echo "Checking plugin build"
|
|
|
7
7
|
SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
|
|
8
8
|
BASE_DIR="$( cd $SCRIPT_DIR && cd ../.. & pwd)"
|
|
9
9
|
SHELL_DIR=$BASE_DIR/shell/
|
|
10
|
+
SHELL_VERSION="99.99.99"
|
|
11
|
+
DEFAULT_YARN_REGISTRY="https://registry.npmjs.org"
|
|
12
|
+
VERDACCIO_YARN_REGISTRY="http://localhost:4873"
|
|
10
13
|
|
|
11
14
|
echo ${SCRIPT_DIR}
|
|
12
15
|
|
|
@@ -66,21 +69,24 @@ else
|
|
|
66
69
|
rm -rf ~/.config/verdaccio/storage/@rancher/*
|
|
67
70
|
fi
|
|
68
71
|
|
|
69
|
-
export YARN_REGISTRY
|
|
72
|
+
export YARN_REGISTRY=$VERDACCIO_YARN_REGISTRY
|
|
70
73
|
export NUXT_TELEMETRY_DISABLED=1
|
|
71
74
|
|
|
72
75
|
# Remove test package from previous run, if present
|
|
73
|
-
|
|
76
|
+
if [ $TEST_PERSIST_BUILD != "true" ]; then
|
|
77
|
+
echo "Removing folder ${BASE_DIR}/pkg/test-pkg"
|
|
78
|
+
rm -rf ${BASE_DIR}/pkg/test-pkg
|
|
79
|
+
fi
|
|
74
80
|
|
|
75
81
|
# We need to patch the version number of the shell, otherwise if we are running
|
|
76
82
|
# with the currently published version, things will fail as those versions
|
|
77
83
|
# are already published and Verdaccio will check, since it is a read-through cache
|
|
78
|
-
sed -i.bak -e "s/\"version\": \"[0-9]*.[0-9]*.[0-9]*\",/\"version\": \"
|
|
84
|
+
sed -i.bak -e "s/\"version\": \"[0-9]*.[0-9]*.[0-9]*\(-alpha\.[0-9]*\|-release[0-9]*.[0-9]*.[0-9]*\|-rc\.[0-9]*\)\{0,1\}\",/\"version\": \"${SHELL_VERSION}\",/g" ${SHELL_DIR}/package.json
|
|
79
85
|
rm ${SHELL_DIR}/package.json.bak
|
|
80
86
|
|
|
81
87
|
# Same as above for Rancher Components
|
|
82
88
|
# We might have bumped the version number but its not published yet, so this will fail
|
|
83
|
-
sed -i.bak -e "s/\"version\": \"[0-9]*.[0-9]*.[0-9]*\",/\"version\": \"
|
|
89
|
+
sed -i.bak -e "s/\"version\": \"[0-9]*.[0-9]*.[0-9]*\(-alpha\.[0-9]*\|-release[0-9]*.[0-9]*.[0-9]*\|-rc\.[0-9]*\)\{0,1\}\",/\"version\": \"${SHELL_VERSION}\",/g" ${BASE_DIR}/pkg/rancher-components/package.json
|
|
84
90
|
|
|
85
91
|
# Publish shell
|
|
86
92
|
echo "Publishing shell packages to local registry"
|
|
@@ -108,6 +114,7 @@ if [ "${SKIP_STANDALONE}" == "false" ]; then
|
|
|
108
114
|
yarn install
|
|
109
115
|
|
|
110
116
|
echo "Building skeleton app"
|
|
117
|
+
|
|
111
118
|
FORCE_COLOR=true yarn build | cat
|
|
112
119
|
|
|
113
120
|
# Package creator
|
|
@@ -127,22 +134,91 @@ if [ "${SKIP_STANDALONE}" == "false" ]; then
|
|
|
127
134
|
echo "Cleaning temporary dir"
|
|
128
135
|
popd > /dev/null
|
|
129
136
|
|
|
130
|
-
|
|
137
|
+
if [ $TEST_PERSIST_BUILD != "true" ]; then
|
|
138
|
+
echo "Removing folder ${DIR}"
|
|
139
|
+
rm -rf ${DIR}
|
|
140
|
+
fi
|
|
131
141
|
fi
|
|
132
142
|
|
|
133
143
|
pushd $BASE_DIR
|
|
134
|
-
pwd
|
|
135
|
-
ls
|
|
136
144
|
|
|
137
145
|
# Now try a plugin within the dashboard codebase
|
|
138
146
|
echo "Validating in-tree package"
|
|
139
147
|
|
|
140
148
|
yarn install
|
|
141
149
|
|
|
142
|
-
|
|
150
|
+
if [ $TEST_PERSIST_BUILD != "true" ]; then
|
|
151
|
+
echo "Removing folder ./pkg/test-pkg"
|
|
152
|
+
rm -rf ./pkg/test-pkg
|
|
153
|
+
fi
|
|
154
|
+
|
|
143
155
|
yarn create @rancher/pkg test-pkg -t
|
|
144
156
|
cp ${SHELL_DIR}/list/catalog.cattle.io.clusterrepo.vue ./pkg/test-pkg/list
|
|
145
157
|
FORCE_COLOR=true yarn build-pkg test-pkg | cat
|
|
146
|
-
|
|
158
|
+
if [ $TEST_PERSIST_BUILD != "true" ]; then
|
|
159
|
+
echo "Removing folder ./pkg/test-pkg"
|
|
160
|
+
rm -rf ./pkg/test-pkg
|
|
161
|
+
fi
|
|
162
|
+
|
|
163
|
+
# function to clone repos and install dependencies (including the newly published shell version)
|
|
164
|
+
function clone_repo_test_extension_build() {
|
|
165
|
+
REPO_NAME=$1
|
|
166
|
+
PKG_NAME=$2
|
|
167
|
+
|
|
168
|
+
echo -e "\nSetting up $REPO_NAME repository locally\n"
|
|
169
|
+
|
|
170
|
+
# set registry to default (to install all of the other dependencies)
|
|
171
|
+
yarn config set registry ${DEFAULT_YARN_REGISTRY}
|
|
172
|
+
|
|
173
|
+
if [ $TEST_PERSIST_BUILD != "true" ]; then
|
|
174
|
+
echo "Removing folder ${BASE_DIR}/$REPO_NAME"
|
|
175
|
+
rm -rf ${BASE_DIR}/$REPO_NAME
|
|
176
|
+
fi
|
|
177
|
+
|
|
178
|
+
# cloning repo
|
|
179
|
+
git clone https://github.com/rancher/$REPO_NAME.git
|
|
180
|
+
pushd ${BASE_DIR}/$REPO_NAME
|
|
181
|
+
|
|
182
|
+
echo -e "\nInstalling dependencies for $REPO_NAME\n"
|
|
183
|
+
yarn install
|
|
184
|
+
|
|
185
|
+
# set registry to local verdaccio (to install new shell)
|
|
186
|
+
yarn config set registry ${VERDACCIO_YARN_REGISTRY}
|
|
187
|
+
|
|
188
|
+
# update package.json to use a specific version of shell
|
|
189
|
+
sed -i.bak -e "s/\"\@rancher\/shell\": \"[0-9]*.[0-9]*.[0-9]*\",/\"\@rancher\/shell\": \"${SHELL_VERSION}\",/g" package.json
|
|
190
|
+
rm package.json.bak
|
|
191
|
+
|
|
192
|
+
# we need to remove yarn.lock, otherwise it would install a version that we don't want
|
|
193
|
+
rm yarn.lock
|
|
194
|
+
|
|
195
|
+
echo -e "\nInstalling newly built shell version\n"
|
|
196
|
+
|
|
197
|
+
# installing new version of shell
|
|
198
|
+
yarn add @rancher/shell@${SHELL_VERSION}
|
|
199
|
+
|
|
200
|
+
# test build-pkg
|
|
201
|
+
FORCE_COLOR=true yarn build-pkg $PKG_NAME | cat
|
|
202
|
+
|
|
203
|
+
# kubewarden has some unit tests and they should be quick to run... Let's check them as well
|
|
204
|
+
if [ "${REPO_NAME}" == "kubewarden-ui" ]; then
|
|
205
|
+
yarn test:ci
|
|
206
|
+
fi
|
|
207
|
+
|
|
208
|
+
# return back to the base path
|
|
209
|
+
popd
|
|
210
|
+
|
|
211
|
+
# delete folder
|
|
212
|
+
if [ $TEST_PERSIST_BUILD != "true" ]; then
|
|
213
|
+
echo "Removing folder ${BASE_DIR}/$REPO_NAME"
|
|
214
|
+
rm -rf ${BASE_DIR}/$REPO_NAME
|
|
215
|
+
fi
|
|
216
|
+
yarn config set registry ${DEFAULT_YARN_REGISTRY}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
# Here we just add the extension that we want to include as a check (all our official extensions should be included here)
|
|
220
|
+
# Don't forget to add the unit tests exception to clone_repo_test_extension_build function if a new extension has those
|
|
221
|
+
clone_repo_test_extension_build "kubewarden-ui" "kubewarden"
|
|
222
|
+
clone_repo_test_extension_build "elemental-ui" "elemental"
|
|
147
223
|
|
|
148
224
|
echo "All done"
|