From 3a26ba49f5a5935de7bf8efb787c2820935adb73 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Thu, 13 Apr 2023 14:41:14 +0000 Subject: [PATCH 01/22] fix: VSCode desktop connection --- agent/agent.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/agent/agent.go b/agent/agent.go index f538ef93b4af8..72933a03653be 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -1407,5 +1407,13 @@ func expandDirectory(dir string) (string, error) { } dir = filepath.Join(home, dir[1:]) } + // if the directory is not absolute, we make it absolute + if !filepath.IsAbs(dir) { + home, err := userHomeDir() + if err != nil { + return "", err + } + dir = filepath.Join(home, dir) + } return os.ExpandEnv(dir), nil } From abee3a34320c9ad5b739a0ba97f35c7420670182 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Fri, 14 Apr 2023 03:53:41 +0000 Subject: [PATCH 02/22] add test --- agent/agent_test.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/agent/agent_test.go b/agent/agent_test.go index aa58f22ace474..acaad690098f5 100644 --- a/agent/agent_test.go +++ b/agent/agent_test.go @@ -1406,6 +1406,22 @@ func TestAgent_Startup(t *testing.T) { require.NoError(t, err) require.Equal(t, homeDir, client.getStartup().ExpandedDirectory) }) + + t.Run("NotAbsoluteDirectory", func(t *testing.T) { + t.Parallel() + + _, client, _, _, _ := setupAgent(t, agentsdk.Manifest{ + StartupScript: "true", + StartupScriptTimeout: 30 * time.Second, + Directory: "coder/coder", + }, 0) + assert.Eventually(t, func() bool { + return client.getStartup().Version != "" + }, testutil.WaitShort, testutil.IntervalFast) + homeDir, err := os.UserHomeDir() + require.NoError(t, err) + require.Equal(t, filepath.Join(homeDir, "coder/coder"), client.getStartup().ExpandedDirectory) + } } func TestAgent_ReconnectingPTY(t *testing.T) { From 8d1e62d69c7cac3ac18011915c48d8ea6ede0155 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Fri, 14 Apr 2023 04:00:50 +0000 Subject: [PATCH 03/22] fix typo --- agent/agent_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/agent_test.go b/agent/agent_test.go index acaad690098f5..10da7c3699e96 100644 --- a/agent/agent_test.go +++ b/agent/agent_test.go @@ -1421,7 +1421,7 @@ func TestAgent_Startup(t *testing.T) { homeDir, err := os.UserHomeDir() require.NoError(t, err) require.Equal(t, filepath.Join(homeDir, "coder/coder"), client.getStartup().ExpandedDirectory) - } + }) } func TestAgent_ReconnectingPTY(t *testing.T) { From a27e0b3597f4022477a68b415771ae72745b56a8 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Fri, 14 Apr 2023 04:10:28 +0000 Subject: [PATCH 04/22] update docs --- docs/templates/open-in-coder.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/templates/open-in-coder.md b/docs/templates/open-in-coder.md index de25e655f0ec4..637f9ff51662a 100644 --- a/docs/templates/open-in-coder.md +++ b/docs/templates/open-in-coder.md @@ -37,6 +37,10 @@ To support any infrastructure and software stack, Coder provides a generic appro EOF } ``` + > Note: The `dir` attribute can be set to any of the following: + > - `~/coder` + > - `/home/coder/coder` + > - `coder` (relative to the home directory) - If you want the template to support any repository via [parameters](./parameters.md) From 637b4cd1ab235dc70ee5235147dfce75eccc99d7 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Fri, 14 Apr 2023 04:18:33 +0000 Subject: [PATCH 05/22] make fmt --- docs/templates/open-in-coder.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/templates/open-in-coder.md b/docs/templates/open-in-coder.md index 637f9ff51662a..e84fd40a27386 100644 --- a/docs/templates/open-in-coder.md +++ b/docs/templates/open-in-coder.md @@ -37,10 +37,12 @@ To support any infrastructure and software stack, Coder provides a generic appro EOF } ``` + > Note: The `dir` attribute can be set to any of the following: - > - `~/coder` - > - `/home/coder/coder` - > - `coder` (relative to the home directory) + > + > - `~/coder` + > - `/home/coder/coder` + > - `coder` (relative to the home directory) - If you want the template to support any repository via [parameters](./parameters.md) From 2f6cb959c718bfb28576d84bbc4d033598fd0466 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Fri, 14 Apr 2023 04:24:51 +0000 Subject: [PATCH 06/22] chnage order of tests --- agent/agent_test.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/agent/agent_test.go b/agent/agent_test.go index 10da7c3699e96..effaa091b982d 100644 --- a/agent/agent_test.go +++ b/agent/agent_test.go @@ -1391,36 +1391,36 @@ func TestAgent_Startup(t *testing.T) { require.Equal(t, homeDir, client.getStartup().ExpandedDirectory) }) - t.Run("HomeEnvironmentVariable", func(t *testing.T) { + t.Run("NotAbsoluteDirectory", func(t *testing.T) { t.Parallel() _, client, _, _, _ := setupAgent(t, agentsdk.Manifest{ StartupScript: "true", StartupScriptTimeout: 30 * time.Second, - Directory: "$HOME", + Directory: "coder/coder", }, 0) assert.Eventually(t, func() bool { return client.getStartup().Version != "" }, testutil.WaitShort, testutil.IntervalFast) homeDir, err := os.UserHomeDir() require.NoError(t, err) - require.Equal(t, homeDir, client.getStartup().ExpandedDirectory) + require.Equal(t, filepath.Join(homeDir, "coder/coder"), client.getStartup().ExpandedDirectory) }) - t.Run("NotAbsoluteDirectory", func(t *testing.T) { + t.Run("HomeEnvironmentVariable", func(t *testing.T) { t.Parallel() _, client, _, _, _ := setupAgent(t, agentsdk.Manifest{ StartupScript: "true", StartupScriptTimeout: 30 * time.Second, - Directory: "coder/coder", + Directory: "$HOME", }, 0) assert.Eventually(t, func() bool { return client.getStartup().Version != "" }, testutil.WaitShort, testutil.IntervalFast) homeDir, err := os.UserHomeDir() require.NoError(t, err) - require.Equal(t, filepath.Join(homeDir, "coder/coder"), client.getStartup().ExpandedDirectory) + require.Equal(t, homeDir, client.getStartup().ExpandedDirectory) }) } From d13c1c38f8142e23d4b39d9608d73546cf868926 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Fri, 14 Apr 2023 04:33:46 +0000 Subject: [PATCH 07/22] WIP --- agent/agent.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index 72933a03653be..8101dc837f9b6 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -1408,12 +1408,12 @@ func expandDirectory(dir string) (string, error) { dir = filepath.Join(home, dir[1:]) } // if the directory is not absolute, we make it absolute - if !filepath.IsAbs(dir) { - home, err := userHomeDir() - if err != nil { - return "", err - } - dir = filepath.Join(home, dir) - } + // if !filepath.IsAbs(dir) { + // home, err := userHomeDir() + // if err != nil { + // return "", err + // } + // dir = filepath.Join(home, dir) + // } return os.ExpandEnv(dir), nil } From b10f240f47847459d5c5a7da7f40984b3ff11c5c Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Fri, 14 Apr 2023 04:41:45 +0000 Subject: [PATCH 08/22] WIP --- agent/agent.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index 8101dc837f9b6..7fb19b9853fad 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -1407,13 +1407,13 @@ func expandDirectory(dir string) (string, error) { } dir = filepath.Join(home, dir[1:]) } - // if the directory is not absolute, we make it absolute - // if !filepath.IsAbs(dir) { - // home, err := userHomeDir() - // if err != nil { - // return "", err - // } - // dir = filepath.Join(home, dir) - // } + //if the directory is not absolute, we make it absolute + if !filepath.IsAbs(dir) { + home, err := userHomeDir() + if err != nil { + return "", err + } + dir = filepath.Join(home, dir) + } return os.ExpandEnv(dir), nil } From 9021af26ce981302e92b46d0097becc19721848c Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Fri, 14 Apr 2023 04:48:50 +0000 Subject: [PATCH 09/22] WIP --- agent/agent.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/agent.go b/agent/agent.go index 7fb19b9853fad..791e3d9e537d7 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -1408,7 +1408,7 @@ func expandDirectory(dir string) (string, error) { dir = filepath.Join(home, dir[1:]) } //if the directory is not absolute, we make it absolute - if !filepath.IsAbs(dir) { + if dir[0] != '/' { home, err := userHomeDir() if err != nil { return "", err From d8afe9b88066f8938b0c5478a7bfb8caf3b6a74a Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Fri, 14 Apr 2023 04:59:59 +0000 Subject: [PATCH 10/22] fix logic to pass tests --- agent/agent.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/agent.go b/agent/agent.go index 791e3d9e537d7..2ab579fce2174 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -1408,7 +1408,7 @@ func expandDirectory(dir string) (string, error) { dir = filepath.Join(home, dir[1:]) } //if the directory is not absolute, we make it absolute - if dir[0] != '/' { + else if dir[0] != '/' { home, err := userHomeDir() if err != nil { return "", err From 2e5639a0cd39b4402cb29deaeb25cf2a25c2e946 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Fri, 14 Apr 2023 05:03:29 +0000 Subject: [PATCH 11/22] fix fix logic to pass tests --- agent/agent.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/agent/agent.go b/agent/agent.go index 2ab579fce2174..6cd567fbeb0ac 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -1415,5 +1415,8 @@ func expandDirectory(dir string) (string, error) { } dir = filepath.Join(home, dir) } + else { + return "", fmt.Errorf("not a valid directory" + } return os.ExpandEnv(dir), nil } From 4bae3e9ba619bdeb8c4f699ddcd2976d91c2dcde Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Fri, 14 Apr 2023 05:09:02 +0000 Subject: [PATCH 12/22] fix go brackets are weired --- agent/agent.go | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index 6cd567fbeb0ac..4d56a0cd26cba 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -1406,17 +1406,14 @@ func expandDirectory(dir string) (string, error) { return "", err } dir = filepath.Join(home, dir[1:]) - } - //if the directory is not absolute, we make it absolute - else if dir[0] != '/' { + } else if dir[0] != '/' { home, err := userHomeDir() if err != nil { return "", err } dir = filepath.Join(home, dir) - } - else { - return "", fmt.Errorf("not a valid directory" + } else { + return "", fmt.Errorf("not a valid directory") } return os.ExpandEnv(dir), nil } From 8761402aeb72a62133ce1c153fdcbe6ce14275c1 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Fri, 14 Apr 2023 05:24:36 +0000 Subject: [PATCH 13/22] WIP --- agent/agent.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index 4d56a0cd26cba..77f9654e84139 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -1406,14 +1406,20 @@ func expandDirectory(dir string) (string, error) { return "", err } dir = filepath.Join(home, dir[1:]) - } else if dir[0] != '/' { + + } else if !filepath.IsAbs(dir) { + // If the directory is not absolute, we assume it is relative to the + // user's home directory. home, err := userHomeDir() if err != nil { return "", err } dir = filepath.Join(home, dir) + } else { - return "", fmt.Errorf("not a valid directory") + // If the directory is absolute, we assume it is an absolute path. + // We do not check if the directory exists. + return dir, nil } return os.ExpandEnv(dir), nil } From f18768b5b9dcc3f20e20a11b1193b69c0f64af2f Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Fri, 14 Apr 2023 05:26:11 +0000 Subject: [PATCH 14/22] fmt --- agent/agent.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/agent.go b/agent/agent.go index 77f9654e84139..91feaf4859a45 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -1415,7 +1415,7 @@ func expandDirectory(dir string) (string, error) { return "", err } dir = filepath.Join(home, dir) - + } else { // If the directory is absolute, we assume it is an absolute path. // We do not check if the directory exists. From 586e7cbafe5bb953695219b8fdb54ddb0dcbe2df Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Fri, 14 Apr 2023 05:32:38 +0000 Subject: [PATCH 15/22] WIP --- agent/agent.go | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index 91feaf4859a45..1aefa7375e263 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -1406,20 +1406,13 @@ func expandDirectory(dir string) (string, error) { return "", err } dir = filepath.Join(home, dir[1:]) - - } else if !filepath.IsAbs(dir) { - // If the directory is not absolute, we assume it is relative to the - // user's home directory. + } + if !filepath.IsAbs(dir) { home, err := userHomeDir() if err != nil { return "", err } dir = filepath.Join(home, dir) - - } else { - // If the directory is absolute, we assume it is an absolute path. - // We do not check if the directory exists. - return dir, nil } return os.ExpandEnv(dir), nil } From ea7b2897828e8059a500e99976031a00fec72717 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Fri, 14 Apr 2023 07:34:01 +0000 Subject: [PATCH 16/22] WIP --- agent/agent.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/agent/agent.go b/agent/agent.go index 1aefa7375e263..8c6f58b625de3 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -1406,13 +1406,15 @@ func expandDirectory(dir string) (string, error) { return "", err } dir = filepath.Join(home, dir[1:]) + return os.ExpandEnv(dir), nil } + if !filepath.IsAbs(dir) { home, err := userHomeDir() if err != nil { return "", err } dir = filepath.Join(home, dir) + return dir, nil } - return os.ExpandEnv(dir), nil } From 1c15caa6cea590cee081aafab629c5f4c4ee4990 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Fri, 14 Apr 2023 07:48:06 +0000 Subject: [PATCH 17/22] WIP --- agent/agent.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index 8c6f58b625de3..b525494c325a6 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -1406,7 +1406,7 @@ func expandDirectory(dir string) (string, error) { return "", err } dir = filepath.Join(home, dir[1:]) - return os.ExpandEnv(dir), nil + dir = os.ExpandEnv(dir) } if !filepath.IsAbs(dir) { @@ -1415,6 +1415,6 @@ func expandDirectory(dir string) (string, error) { return "", err } dir = filepath.Join(home, dir) - return dir, nil } + return dir, nil } From 3c03c207fddb129f9711809538a769abdc8a669e Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Fri, 14 Apr 2023 07:54:14 +0000 Subject: [PATCH 18/22] WIP --- agent/agent.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index b525494c325a6..05f8a19364e46 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -1406,15 +1406,14 @@ func expandDirectory(dir string) (string, error) { return "", err } dir = filepath.Join(home, dir[1:]) - dir = os.ExpandEnv(dir) } - if !filepath.IsAbs(dir) { + if !filepath.IsAbs(dir) && dir[0] != '$' { home, err := userHomeDir() if err != nil { return "", err } dir = filepath.Join(home, dir) } - return dir, nil + return filepath.Abs(os.ExpandEnv(dir)), nil } From 3a19877a39fa4f569d6b80ffab7883de1bff17a1 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Fri, 14 Apr 2023 07:56:51 +0000 Subject: [PATCH 19/22] WIP --- agent/agent.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/agent.go b/agent/agent.go index 05f8a19364e46..cc566901fae6d 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -1408,7 +1408,7 @@ func expandDirectory(dir string) (string, error) { dir = filepath.Join(home, dir[1:]) } - if !filepath.IsAbs(dir) && dir[0] != '$' { + if !filepath.IsAbs(dir) && dir[0] != '$' { home, err := userHomeDir() if err != nil { return "", err From 08857714e13ffc3d482260ec6fdc17437fa5b41e Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Fri, 14 Apr 2023 08:03:03 +0000 Subject: [PATCH 20/22] WIP --- agent/agent.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/agent.go b/agent/agent.go index cc566901fae6d..6316f13eb7276 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -1415,5 +1415,5 @@ func expandDirectory(dir string) (string, error) { } dir = filepath.Join(home, dir) } - return filepath.Abs(os.ExpandEnv(dir)), nil + return filepath.Abs(os.ExpandEnv(dir)) } From 8e460ba97de11348005560829c3049358f44384e Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Fri, 14 Apr 2023 08:53:56 +0000 Subject: [PATCH 21/22] WIP --- agent/agent.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index 6316f13eb7276..5c171d7d513c7 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -1407,13 +1407,14 @@ func expandDirectory(dir string) (string, error) { } dir = filepath.Join(home, dir[1:]) } + dir = os.ExpandEnv(dir) - if !filepath.IsAbs(dir) && dir[0] != '$' { + if !filepath.IsAbs(dir) { home, err := userHomeDir() if err != nil { return "", err } dir = filepath.Join(home, dir) } - return filepath.Abs(os.ExpandEnv(dir)) + return dir, nil } From 7ef0c98ed676d6178738664ee6b3436aefb57f29 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Fri, 14 Apr 2023 12:25:34 +0300 Subject: [PATCH 22/22] Update docs/templates/open-in-coder.md Co-authored-by: Mathias Fredriksson --- docs/templates/open-in-coder.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/templates/open-in-coder.md b/docs/templates/open-in-coder.md index e84fd40a27386..aa8a0e978c858 100644 --- a/docs/templates/open-in-coder.md +++ b/docs/templates/open-in-coder.md @@ -38,7 +38,7 @@ To support any infrastructure and software stack, Coder provides a generic appro } ``` - > Note: The `dir` attribute can be set to any of the following: + > Note: The `dir` attribute can be set in multiple ways, for example: > > - `~/coder` > - `/home/coder/coder`