Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 7x 6x 6x 6x 3x 3x 6x 1x 1x 1x 1x 6x 1x 6x 6x | /*
* Copyright 2021 Harness Inc. All rights reserved.
* Use of this source code is governed by the PolyForm Shield 1.0.0 license
* that can be found in the licenses directory at the root of this repository, also available at
* https://polyformproject.org/wp-content/uploads/2020/06/PolyForm-Shield-1.0.0.txt.
*/
import React from 'react'
import { useParams } from 'react-router-dom'
import { isEmpty as _isEmpty } from 'lodash-es'
import { Button, Layout, Select, SelectOption, Text } from '@wings-software/uicore'
import { useStrings } from 'framework/strings'
import css from './DownloadCLI.module.scss'
enum OS {
Mac = 'Mac',
Windows = 'Windows',
Linux = 'Linux',
Darwin = 'darwin'
}
enum Arch {
AMD64 = 'amd64',
ARM64 = 'arm64',
A386 = 386
}
const dropdownOptions: SelectOption[] = [
{
label: `${OS.Mac} (${Arch.AMD64})`,
value: `${OS.Darwin}-${Arch.AMD64}`
},
{
label: `${OS.Mac} (${Arch.ARM64})`,
value: `${OS.Darwin}-${Arch.ARM64}`
},
{
label: `${OS.Linux} (${Arch.AMD64})`,
value: `${OS.Linux.toLowerCase()}-${Arch.AMD64}`
},
{
label: `${OS.Linux} (${Arch.ARM64})`,
value: `${OS.Linux.toLowerCase()}-${Arch.ARM64}`
},
{
label: `${OS.Linux} (${Arch.A386})`,
value: `${OS.Linux.toLowerCase()}-${Arch.A386}`
},
{
label: `${OS.Windows} (${Arch.A386})`,
value: `${OS.Windows.toLowerCase()}-${Arch.A386}`
},
{
label: `${OS.Windows} (${Arch.AMD64})`,
value: `${OS.Windows.toLowerCase()}-${Arch.AMD64}`
}
]
const DownloadCLI: React.FC = () => {
const { getString } = useStrings()
const { accountId } = useParams<{ accountId: string }>()
const [assetLink, setAssetLink] = React.useState<SelectOption | null>(null)
React.useEffect(() => {
const defaultOs = navigator.appVersion.includes(OS.Mac.valueOf())
? OS.Mac
: navigator.appVersion.includes(OS.Windows.valueOf())
? OS.Windows
: navigator.appVersion.includes(OS.Linux.valueOf())
? OS.Linux
: null
Iif (defaultOs) {
setAssetLink(dropdownOptions.find(item => item.label.includes(defaultOs)) as SelectOption)
}
}, [])
const downloadAsset = async () => {
const [platform, arch] = ((assetLink?.value || '') as string).split('-')
const linkEl: HTMLAnchorElement = document.createElement('a')
linkEl.href = `${window.location.origin}/gateway/lw/api/internal/downloads/harness_cli?platform=${platform}&arch=${arch}&accountIdentifier=${accountId}`
linkEl.click()
}
const handleOsSelectChange = (option: SelectOption) => {
setAssetLink(option)
}
return (
<div>
<Text className={css.text}>
{getString('ce.co.sshSetup')}
<span>
<a
href=" https://ngdocs.harness.io/article/7025n9ml7z-create-autostopping-rules-aws#setup_access_using_ssh_rdp"
target="_blank"
>
Read More
</a>
</span>
</Text>
<Layout.Horizontal className={css.downloadCliContainer}>
<div className={css.selectContainer}>
<Select items={dropdownOptions} onChange={handleOsSelectChange} value={assetLink} name={'sshOs'} />
</div>
<Button className={css.downloadBtn} onClick={downloadAsset} disabled={_isEmpty(assetLink)}>
{'Download CLI'}
</Button>
</Layout.Horizontal>
</div>
)
}
export default DownloadCLI
|