From 6314391edd78b8fc3f746b92280c1d211b569560 Mon Sep 17 00:00:00 2001
From: Marc Nuri <marc@marcnuri.com>
Date: Fri, 23 Dec 2022 08:37:54 +0100
Subject: [PATCH] fix: misc fixes to download function

---
 src/__tests__/download.test.js | 14 +++++++++-----
 src/download.js                |  5 ++---
 2 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/src/__tests__/download.test.js b/src/__tests__/download.test.js
index a1d4b381..52ba3025 100644
--- a/src/__tests__/download.test.js
+++ b/src/__tests__/download.test.js
@@ -174,17 +174,21 @@ describe('download module test suite', () => {
         )
       );
       expect(exec.logExecSync).toHaveBeenCalledWith(
-        'sudo ln -s /usr/local/bin/cri-dockerd /usr/bin/cri-dockerd'
+        'sudo ln -sf /usr/local/bin/cri-dockerd /usr/bin/cri-dockerd'
       );
     });
     test('should install cri-dockerd service', async () => {
+      // Given
+      fs.readFileSync.mockImplementation(
+        () =>
+          'ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd://'
+      );
       // When
       await download.installCriDockerd({githubToken: 'secret-token'});
       // Then
-      expect(exec.logExecSync).toHaveBeenCalledWith(
-        expect.stringMatching(
-          /sed -i 's\/cri-dockerd --\/cri-dockerd --network-plugin=cni --\/g'/
-        )
+      expect(fs.writeFileSync).toHaveBeenCalledWith(
+        '/etc/systemd/system/cri-docker.service',
+        'ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --container-runtime-endpoint fd://'
       );
       expect(exec.logExecSync).toHaveBeenCalledWith(
         expect.stringMatching(
diff --git a/src/download.js b/src/download.js
index f97ccf34..78522df2 100644
--- a/src/download.js
+++ b/src/download.js
@@ -73,16 +73,15 @@ const installCriDockerd = async (inputs = {}) => {
   const binaryDir = await tc.extractTar(binaryTar);
   const binaryContent = firstDir(binaryDir);
   logExecSync(`sudo cp -a ${binaryDir}/${binaryContent}/cri-dockerd /usr/local/bin/`);
-  logExecSync(`sudo ln -s /usr/local/bin/cri-dockerd /usr/bin/cri-dockerd`);
+  logExecSync(`sudo ln -sf /usr/local/bin/cri-dockerd /usr/bin/cri-dockerd`);
   // Service file
   const sourceTar = await tc.downloadTool(`https://github.com/Mirantis/cri-dockerd/archive/refs/tags/${tag}.tar.gz`);
   const sourceDir = await tc.extractTar(sourceTar);
   const sourceContent = firstDir(sourceDir);
-  logExecSync(`sed -i 's/cri-dockerd --/cri-dockerd --network-plugin=cni --/g' ${sourceDir}/${sourceContent}/packaging/systemd/cri-docker.service`);
   logExecSync(`sudo cp -a ${sourceDir}/${sourceContent}/packaging/systemd/* /etc/systemd/system`);
   const serviceFile = '/etc/systemd/system/cri-docker.service';
   fs.writeFileSync(serviceFile, fs.readFileSync(serviceFile).toString()
-    .replace(/\/usr\/bin\/cri-dockerd/g, '/usr/local/bin/cri-dockerd')
+    .replace(/cri-dockerd --/g, 'cri-dockerd --network-plugin=cni --')
   );
   const socketFile = '/etc/systemd/system/cri-docker.socket';
   fs.writeFileSync(socketFile, fs.readFileSync(socketFile).toString()