diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..3f387dd --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,347 @@ +name: TokensWalletCI + +on: + pull_request: + types: [opened, reopened] + branches: + - master + - dev +jobs: + job-macos-build: + name: Build (MacOS) + runs-on: macos-latest + + steps: + - uses: actions/checkout@v1 + - uses: actions/setup-node@v1 + with: + node-version: '12' + check-latest: true + + - name: Build Electron App + env: + BASE_BRANCH: ${{ github.base_ref }} + APP_VERSION: $( node -pe "require('./package.json').version" ) + run: | + ./fetch-kmd-bins.sh + rm -rf bin/linux64 + rm -rf bin/win64 + npm install + npm run dist + tar -czvf kmd-tokens-wallet-osx-${{ env.BASE_BRANCH }}-portable.tar.gz dist/mac + tar -czvf kmd-tokens-wallet-osx-${{ env.BASE_BRANCH }}-dmg.tar.gz dist/kmd-tokens-wallet-${{ env.APP_VERSION }}.dmg + + - name: Upload kmd-tokens-wallet-osx-${{ env.BASE_BRANCH }}-portable.tar.gz as artifact + env: + BASE_BRANCH: ${{ github.base_ref }} + uses: actions/upload-artifact@v1 + with: + name: kmd-tokens-wallet-osx-${{ env.BASE_BRANCH }}-dmg + path: ./kmd-tokens-wallet-osx-${{ env.BASE_BRANCH }}-dmg.tar.gz + + - name: Upload kmd-tokens-wallet-osx-${{ env.BASE_BRANCH }}-dmg.tar.gz as artifact + env: + BASE_BRANCH: ${{ github.base_ref }} + APP_VERSION: $( node -pe "require('./package.json').version" ) + uses: actions/upload-artifact@v1 + with: + name: kmd-tokens-wallet-osx-${{ env.BASE_BRANCH }}-portable + path: ./kmd-tokens-wallet-osx-${{ env.BASE_BRANCH }}-portable.tar.gz + + job-linux-build: + name: Build (Linux) + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + - uses: actions/setup-node@v1 + with: + node-version: '12' + check-latest: true + + - name: Build Electron App + env: + BASE_BRANCH: ${{ github.base_ref }} + APP_VERSION: $( node -pe "require('./package.json').version" ) + run: | + ./fetch-kmd-bins.sh + rm -rf bin/osx + rm -rf bin/win64 + npm install + npm run dist + tar -czvf kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-portable.tar.gz dist/linux-unpacked + tar -czvf kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-appimage.tar.gz dist/kmd-tokens-wallet-${{ env.APP_VERSION }}.AppImage + tar -czvf kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-snap.tar.gz dist/kmd-tokens-wallet_${{ env.APP_VERSION }}_amd64.snap + + - name: Upload kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-portable.tar.gz as artifact + env: + BASE_BRANCH: ${{ github.base_ref }} + APP_VERSION: $( node -pe "require('./package.json').version" ) + uses: actions/upload-artifact@v1 + with: + name: kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-portable + path: ./kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-portable.tar.gz + + - name: Upload kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-appimage.tar.gz as artifact + env: + BASE_BRANCH: ${{ github.base_ref }} + APP_VERSION: $( node -pe "require('./package.json').version" ) + uses: actions/upload-artifact@v1 + with: + name: kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-appimage + path: ./kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-appimage.tar.gz + + - name: Upload kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-snap.tar.gz as artifact + env: + BASE_BRANCH: ${{ github.base_ref }} + APP_VERSION: $( node -pe "require('./package.json').version" ) + uses: actions/upload-artifact@v1 + with: + name: kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-snap + path: ./kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-snap.tar.gz + + job-win-build: + name: Build (Windows) + runs-on: windows-latest + + steps: + - uses: actions/checkout@v1 + - uses: actions/setup-node@v1 + with: + node-version: '12' + check-latest: true + + - name: Build Electron App + env: + BASE_BRANCH: ${{ github.base_ref }} + APP_VERSION: $( node -pe "require('./package.json').version" ) + run: | + mkdir bin + mkdir bin/win64 + cd bin/win64 + curl https://github.com/pbca26/komodod/releases/download/cd_release_8688665_dev/komodo_8688665_dev_win.zip --output komodod.zip + unzip komodod.zip + rm komodod.zip + cd ../../ + npm install + npm run dist + tar -czvf kmd-tokens-wallet-win-${{ env.BASE_BRANCH }}-portable.tar.gz dist/win-unpacked + tar -czvf kmd-tokens-wallet-win-${{ env.BASE_BRANCH }}-setup.tar.gz dist/kmd-tokens-wallet" Setup "${{ env.APP_VERSION }}.exe + + - name: Upload kmd-tokens-wallet-win-${{ env.BASE_BRANCH }}-portable.tar.gz as artifact + env: + BASE_BRANCH: ${{ github.base_ref }} + APP_VERSION: $( node -pe "require('./package.json').version" ) + uses: actions/upload-artifact@v1 + with: + name: kmd-tokens-wallet-win-${{ env.BASE_BRANCH }}-portable + path: ./kmd-tokens-wallet-win-${{ env.BASE_BRANCH }}-portable.tar.gz + + - name: Upload kmd-tokens-wallet-win-${{ env.BASE_BRANCH }}-setup.tar.gz as artifact + env: + BASE_BRANCH: ${{ github.base_ref }} + APP_VERSION: $( node -pe "require('./package.json').version" ) + uses: actions/upload-artifact@v1 + with: + name: kmd-tokens-wallet-win-${{ env.BASE_BRANCH }}-setup + path: ./kmd-tokens-wallet-win-${{ env.BASE_BRANCH }}-setup.tar.gz + + job-release: + name: Release + runs-on: ubuntu-latest + needs: [job-macos-build, job-linux-build, job-win-build] + + steps: + - name: ACTIONS_ALLOW_UNSECURE_COMMANDS + id: ACTIONS_ALLOW_UNSECURE_COMMANDS + run: echo 'ACTIONS_ALLOW_UNSECURE_COMMANDS=true' >> $GITHUB_ENV + - name: Download Artifacts Portable (Linux) + env: + BASE_BRANCH: ${{ github.base_ref }} + uses: actions/download-artifact@v1 + with: + name: kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-portable + - name: Download Artifacts App Image (Linux) + env: + BASE_BRANCH: ${{ github.base_ref }} + uses: actions/download-artifact@v1 + with: + name: kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-appimage + - name: Download Artifacts Snap (Linux) + env: + BASE_BRANCH: ${{ github.base_ref }} + uses: actions/download-artifact@v1 + with: + name: kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-snap + - name: Download Artifacts Portable (Win) + env: + BASE_BRANCH: ${{ github.base_ref }} + uses: actions/download-artifact@v1 + with: + name: kmd-tokens-wallet-win-${{ env.BASE_BRANCH }}-portable + - name: Download Artifacts Setup (Win) + env: + BASE_BRANCH: ${{ github.base_ref }} + uses: actions/download-artifact@v1 + with: + name: kmd-tokens-wallet-win-${{ env.BASE_BRANCH }}-setup + - name: Download Artifacts Portable (MacOS) + env: + BASE_BRANCH: ${{ github.base_ref }} + uses: actions/download-artifact@v1 + with: + name: kmd-tokens-wallet-osx-${{ env.BASE_BRANCH }}-portable + - name: Download Artifacts DMG (MacOS) + env: + BASE_BRANCH: ${{ github.base_ref }} + uses: actions/download-artifact@v1 + with: + name: kmd-tokens-wallet-osx-${{ env.BASE_BRANCH }}-dmg + - name: Prepare Archives + env: + BASE_BRANCH: ${{ github.base_ref }} + run: | + mv kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-portable/kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-portable.tar.gz . + mv kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-appimage/kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-appimage.tar.gz . + mv kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-snap/kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-snap.tar.gz . + mv kmd-tokens-wallet-win-${{ env.BASE_BRANCH }}-portable/kmd-tokens-wallet-win-${{ env.BASE_BRANCH }}-portable.tar.gz . + mv kmd-tokens-wallet-win-${{ env.BASE_BRANCH }}-setup/kmd-tokens-wallet-win-${{ env.BASE_BRANCH }}-setup.tar.gz . + mv kmd-tokens-wallet-osx-${{ env.BASE_BRANCH }}-portable/kmd-tokens-wallet-osx-${{ env.BASE_BRANCH }}-portable.tar.gz . + mv kmd-tokens-wallet-osx-${{ env.BASE_BRANCH }}-dmg/kmd-tokens-wallet-osx-${{ env.BASE_BRANCH }}-dmg.tar.gz . + - name: Prepare Checksum file + env: + BASE_BRANCH: ${{ github.base_ref }} + run: | + md5sum kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-portable.tar.gz >> checksum.txt + md5sum kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-appimage.tar.gz >> checksum.txt + md5sum kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-snap.tar.gz >> checksum.txt + md5sum kmd-tokens-wallet-win-${{ env.BASE_BRANCH }}-portable.tar.gz >> checksum.txt + md5sum kmd-tokens-wallet-win-${{ env.BASE_BRANCH }}-setup.tar.gz >> checksum.txt + md5sum kmd-tokens-wallet-osx-${{ env.BASE_BRANCH }}-portable.tar.gz >> checksum.txt + md5sum kmd-tokens-wallet-osx-${{ env.BASE_BRANCH }}-dmg.tar.gz >> checksum.txt + + # currently VT is limited to 32 mb files only, 4 requests per minute + # - name: VirusTotal Scan + # env: + # BASE_BRANCH: ${{ github.base_ref }} + # uses: pbca26/ghaction-virustotal@v2.2.3 + # with: + # vt_api_key: ${{ secrets.VT_API_KEY }} + # files: | + # ./kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}.tar.gz + # ./kmd-tokens-wallet-osx-${{ env.BASE_BRANCH }}.tar.gz + # ./kmd-tokens-wallet-win-${{ env.BASE_BRANCH }}.tar.gz + + - name: Generate build number # gen ${{ steps.buildnumber.outputs.build_number }} for release name + id: buildnumber + uses: einaregilsson/build-number@v1 + with: + token: ${{secrets.github_token}} + + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BASE_BRANCH: ${{ github.base_ref }} + with: + tag_name: ${{ steps.buildnumber.outputs.build_number }} + release_name: Build - ${{ github.sha }} + draft: false + prerelease: true + + - name: Upload Release Asset Portable (Linux) + id: upload-release-asset-linux-portable + uses: actions/upload-release-asset@v1.0.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BASE_BRANCH: ${{ github.base_ref }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-portable.tar.gz + asset_name: kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-portable.tar.gz + asset_content_type: application/tar+gzip + + - name: Upload Release Asset App Image (Linux) + id: upload-release-asset-linux-appimage + uses: actions/upload-release-asset@v1.0.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BASE_BRANCH: ${{ github.base_ref }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-appimage.tar.gz + asset_name: kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-appimage.tar.gz + asset_content_type: application/tar+gzip + + - name: Upload Release Asset Snap (Linux) + id: upload-release-asset-linux-snap + uses: actions/upload-release-asset@v1.0.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BASE_BRANCH: ${{ github.base_ref }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-snap.tar.gz + asset_name: kmd-tokens-wallet-linux-${{ env.BASE_BRANCH }}-snap.tar.gz + asset_content_type: application/tar+gzip + + - name: Upload Release Asset Portable (Win) + id: upload-release-asset-win-portable + uses: actions/upload-release-asset@v1.0.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BASE_BRANCH: ${{ github.base_ref }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./kmd-tokens-wallet-win-${{ env.BASE_BRANCH }}-portable.tar.gz + asset_name: kmd-tokens-wallet-win-${{ env.BASE_BRANCH }}-portable.tar.gz + asset_content_type: application/tar+gzip + + - name: Upload Release Asset Setup (Win) + id: upload-release-asset-win-setup + uses: actions/upload-release-asset@v1.0.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BASE_BRANCH: ${{ github.base_ref }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./kmd-tokens-wallet-win-${{ env.BASE_BRANCH }}-setup.tar.gz + asset_name: kmd-tokens-wallet-win-${{ env.BASE_BRANCH }}-setup.tar.gz + asset_content_type: application/tar+gzip + + - name: Upload Release Asset Portable (MacOS) + id: upload-release-asset-macos-portable + uses: actions/upload-release-asset@v1.0.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BASE_BRANCH: ${{ github.base_ref }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./kmd-tokens-wallet-osx-${{ env.BASE_BRANCH }}-portable.tar.gz + asset_name: kmd-tokens-wallet-osx-${{ env.BASE_BRANCH }}-portable.tar.gz + asset_content_type: application/tar+gzip + + - name: Upload Release Asset DMG (MacOS) + id: upload-release-asset-macos-dmg + uses: actions/upload-release-asset@v1.0.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BASE_BRANCH: ${{ github.base_ref }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./kmd-tokens-wallet-osx-${{ env.BASE_BRANCH }}-dmg.tar.gz + asset_name: kmd-tokens-wallet-osx-${{ env.BASE_BRANCH }}-dmg.tar.gz + asset_content_type: application/tar+gzip + + - name: Upload Checksum File + id: upload-release-asset-checksum + uses: actions/upload-release-asset@v1.0.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BASE_BRANCH: ${{ github.base_ref }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./checksum.txt + asset_name: checksum.txt + asset_content_type: text/plain \ No newline at end of file diff --git a/README.md b/README.md index 2ae797b..9133cc5 100644 --- a/README.md +++ b/README.md @@ -5,4 +5,4 @@ It's an Electron.js project so you can run it with: ``` npm install npm start -``` +``` \ No newline at end of file diff --git a/api/daemon.js b/api/daemon.js index 9b4150a..99237ef 100644 --- a/api/daemon.js +++ b/api/daemon.js @@ -6,17 +6,27 @@ const keygen = require('./keygen.js') const os = require('os') const platform = os.platform() - -const default_config = { - bin_folder: os.homedir() + '/Documents/komodo/src/', - chain_name: 'NAE', - coin_name: 'NAE', - chain_launch_params: '-ac_supply=100000 -addnode=95.216.196.64 -ac_cc=1337 -printtoconsole' +const path = require('path'); +const fixPath = require('fix-path'); + +let default_config; + +if (process.argv.indexOf('chain=rick') > -1) { + default_config = { + bin_folder: getBinsFolder(), + chain_name: 'RICK', + coin_name: 'RICK', + chain_launch_params: '-ac_supply=90000000000 -ac_reward=100000000 -ac_cc=3 -ac_staked=10 -addnode=138.201.136.145 -addnode=95.217.44.58 -printtoconsole' + } +} else { + default_config = { + bin_folder: getBinsFolder(), + chain_name: 'WSB', + coin_name: 'WSB', + chain_launch_params: '-ac_supply=90000000000 -ac_cc=3 -ac_reward=100000000 -addnode=94.130.38.173 -addnode=178.63.47.105 -printtoconsole' + } } -// Example launch command -// /Users/naezith/Documents/komodo/src/komodod -ac_name=NAE -ac_supply=100000 -addnode=95.216.196.64 -ac_cc=1337 -gen -printtoconsole -pubkey=02d8a4e1091ab538769e302ddfe77ca65acca625d79b658b3872172be9b752b23d - // Data let komodod_path = undefined let cli_path = undefined @@ -52,6 +62,11 @@ function readConfig() { console.log('Config file does not exist or has invalid JSON, generating the default one' + config_path) } + if (!fs.existsSync(getKomodoFolder())) { + console.log('Dir ' + getKomodoFolder() + ' doesn\'t exist, create new'); + fs.mkdirSync(getKomodoFolder()); + } + // Write config fs.writeFileSync(config_path, JSON.stringify(config)) @@ -65,6 +80,24 @@ function readConfig() { cli_args = '-ac_name=' + config.chain_name } +function forceImportKey(keypair) { + return new Promise((resolve, reject) => { + importPrivKey(keypair.privkey).then(() => { + getAddressFromPubkey(keypair.pubkey).then(addr_info => { + keypair.address = addr_info.address + keypair.CCaddress = addr_info.CCaddress + + resolve({ + generated: false, + privkey: keypair.privkey, + pubkey: keypair.pubkey, + address: addr_info.address + }) + }) + }) + }) +} + function prepareDaemon(needs_keygen) { return new Promise((resolve, reject) => { launchDaemon(keypair.pubkey).then(() => { @@ -143,6 +176,19 @@ function launchDaemon(pubkey) { // Wait until komodod is ready if(data.indexOf('init message: Done loading') !== -1) { resolve() + if (!keypair.CCaddress) { + getAddressFromPubkey(keypair.pubkey).then(addr_info => { + keypair.address = addr_info.address + keypair.CCaddress = addr_info.CCaddress + + resolve({ + generated: false, + privkey: keypair.privkey, + pubkey: keypair.pubkey, + address: addr_info.address + }) + }) + } } // If komodod is closed, let stopDaemon function know about it @@ -282,28 +328,50 @@ function getTokenList() { function getTokenOrders() { return new Promise((resolve, reject) => { - child_process.execFile(cli_path, to_cli_args('tokenorders'), (error, stdout, stderr) => { + child_process.execFile(cli_path, to_cli_args('mytokenorders'), (error1, stdout1, stderr1) => { + if(stderr1) { + console.log('getTokenOrders failed (mytokenorders): ', stderr1) + reject(stderr1) + } - if(stderr) { - console.log('getTokenOrders failed: ', stderr) - reject(stderr) - } + if(stdout1) { + let myorders = JSON.parse(stdout1) + //console.warn('myorders', myorders); + + child_process.execFile(cli_path, to_cli_args('tokenorders'), (error, stdout, stderr) => { + + if(stderr) { + console.log('getTokenOrders failed: ', stderr) + reject(stderr) + } + + if(stdout) { + let orders = JSON.parse(stdout) + + // Get token information + Promise.all(orders.map(t => { + return new Promise((resolve, reject) => { + // Get name and balance + Promise.all([ + getTokenName(t.tokenid).then(name => { + t.name = name; + + for (let i = 0; i < myorders.length; i++) { + if (t.txid === myorders[i].txid) { + // console.warn('my order ' + t.txid); + t.isMine = true; + } + } + }) + ]).then(() => { resolve() }) + }) + })).then(() => { resolve(orders) }) + } - if(stdout) { - let orders = JSON.parse(stdout) - - // Get token information - Promise.all(orders.map(t => { - return new Promise((resolve, reject) => { - // Get name and balance - Promise.all([ - getTokenName(t.tokenid).then(name => { t.name = name; }) - ]).then(() => { resolve() }) - }) - })).then(() => { resolve(orders) }) - } + }) + } - }) + }) }) } @@ -342,7 +410,8 @@ function getAddressFromPubkey(pubkey) { if(stdout) { let json = JSON.parse(stdout) - resolve({ address: json.myaddress, CCaddress: json.CCaddress, } ) + // console.log('getAddressFromPubkey success: ', json) + resolve({ address: json.myaddress, CCaddress: json['PubkeyCCaddress(Tokens)'], } ) } }) @@ -379,7 +448,7 @@ function broadcastTX(raw_tx) { if(stderr) { console.log('BroadcastTX Failed: ' + stderr) - reject(stderr) + reject(raw_tx && raw_tx.substr(0, 2) !== '04' ? 'Error: ' + raw_tx : stderr) } if(stdout) { @@ -420,9 +489,9 @@ function sendTokenToAddress(token_id, address, amount) { function createToken(name, supply, description) { return new Promise((resolve, reject) => { - console.log('Creating token ' + name + ', supply: ' + supply + ' description: ' + description) + console.log('Creating token ' + name + ', supply: ' + supply + ' (' + (supply * 0.00000001) + ') ' + ' description: ' + description) - let args = to_cli_args('tokencreate ' + name + ' ' + supply) + let args = to_cli_args('tokencreate ' + name + ' ' + supply * 0.00000001) if(description !== '') args.push('"' + description + '"') child_process.execFile(cli_path, args, (error, stdout, stderr) => { @@ -547,6 +616,22 @@ function getKomodoFolder() { return os.homedir() + '/.komodo/' + config.chain_name + '/' } +function getBinsFolder() { + switch (platform) { + case 'darwin': + fixPath(); + return path.join(__dirname, '../bin/osx/'); + + case 'linux': + return path.join(__dirname, '../bin/linux64/'); + break; + + case 'win32': + return path.join(__dirname, '../bin/win64/'); + break; + } +} + module.exports = { startUp, stopDaemon, @@ -564,5 +649,7 @@ module.exports = { getTokenOrders, fillTokenOrder, cancelTokenOrder, - readConfig -} + readConfig, + forceImportKey, + chainName: default_config.chain_name, +} \ No newline at end of file diff --git a/fetch-kmd-bins.sh b/fetch-kmd-bins.sh new file mode 100755 index 0000000..17cb537 --- /dev/null +++ b/fetch-kmd-bins.sh @@ -0,0 +1,16 @@ +mkdir bin +mkdir bin/win64 +mkdir bin/linux64 +mkdir bin/osx +cd bin/win64 +wget https://github.com/pbca26/komodod/releases/download/cd_release_8688665_dev/komodo_8688665_dev_win.zip +unzip komodo_8688665_dev_win.zip +rm komodo_8688665_dev_win.zip +cd ../linux64 +wget https://github.com/pbca26/komodod/releases/download/cd_release_8688665_dev/komodo_8688665_dev_linux.zip +unzip komodo_8688665_dev_linux.zip +rm komodo_8688665_dev_linux.zip +cd ../osx +wget https://github.com/pbca26/komodod/releases/download/cd_release_8688665_dev/komodo_8688665_dev_osx.zip +unzip komodo_8688665_dev_osx.zip +rm komodo_8688665_dev_osx.zip \ No newline at end of file diff --git a/index.html b/index.html index 65597eb..83ba84a 100644 --- a/index.html +++ b/index.html @@ -5,7 +5,7 @@ -