Skip to content

Commit 33455a4

Browse files
authored
Merge pull request #182 from subfusc/master
Allow detection of snap installs on linux systems
2 parents dc89897 + f365c57 commit 33455a4

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

lsp-dart-utils.el

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,14 @@ Order is important."
118118
(append list (list value))
119119
list))
120120

121+
(defun lsp-dart-flutter-snap-install-p ()
122+
;; Detecting whether this is a Linux system with a Snap style install
123+
(and (string= system-type "gnu/linux")
124+
(let ((first-dir (-some-> (executable-find lsp-dart-flutter-executable) f-split cdr car)))
125+
(and first-dir
126+
(string= first-dir "snap")
127+
(file-exists-p "~/snap/flutter/common/flutter/bin/flutter")))))
128+
121129

122130
;; SDKs
123131

@@ -132,6 +140,7 @@ is used in preference."
132140
(if (file-exists-p dart-sdk)
133141
dart-sdk
134142
(error "Dart SDK not found inside flutter cache dir %s. Consider setting `lsp-dart-sdk-dir` variable" dart-sdk))))
143+
(and (lsp-dart-flutter-snap-install-p) "~/snap/flutter/common/flutter/bin/cache/dart-sdk")
135144
(-some-> (executable-find "dart")
136145
file-truename
137146
(locate-dominating-file "bin")
@@ -143,6 +152,7 @@ Check for `lsp-dart-flutter-sdk-dir` then
143152
flutter executable on PATH then
144153
FLUTTER_ROOT environment variable."
145154
(or lsp-dart-flutter-sdk-dir
155+
(and (lsp-dart-flutter-snap-install-p) "~/snap/flutter/common/flutter")
146156
(-some-> (executable-find lsp-dart-flutter-executable)
147157
file-truename
148158
(locate-dominating-file "bin")

test/lsp-dart-utils-test.el

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
(let ((dart-command (lsp-dart-test-command-fixture)))
6767
(lsp-dart-test-from-dart-project
6868
(mock (executable-find "dart") => dart-command)
69+
(mock (lsp-dart-flutter-snap-install-p) => nil)
6970
(should (equal (lsp-dart-get-sdk-dir) (concat (-> dart-command
7071
f-parent
7172
f-parent)
@@ -81,15 +82,28 @@
8182
(mock (file-exists-p dart-sdk) => t)
8283
(should (equal (lsp-dart-get-sdk-dir) dart-sdk)))))
8384

85+
(ert-deftest lsp-dart-get-sdk-dir--snap-install-test ()
86+
(lsp-dart-test-from-dart-project
87+
(mock (lsp-dart-flutter-snap-install-p) => t)
88+
(should (equal (lsp-dart-get-sdk-dir) "~/snap/flutter/common/flutter/bin/cache/dart-sdk"))))
89+
8490
(ert-deftest lsp-dart-get-sdk-dir--project-without-dart-on-path-test ()
8591
(lsp-dart-test-from-dart-project
8692
(mock (executable-find "dart") => nil)
93+
(mock (lsp-dart-flutter-snap-install-p) => nil)
8794
(should (equal (lsp-dart-get-sdk-dir) nil))))
8895

8996
(ert-deftest lsp-dart-get-flutter-sdk-dir--custom-dir-test ()
9097
(let ((lsp-dart-flutter-sdk-dir "/some/sdk"))
9198
(should (equal (lsp-dart-get-flutter-sdk-dir) "/some/sdk"))))
9299

100+
(ert-deftest lsp-dart-get-flutter-sdk-dir--snap-install-test ()
101+
(lsp-dart-test-from-flutter-project
102+
(let ((system-type "gnu/linux"))
103+
(mock (executable-find lsp-dart-flutter-executable) => "/snap/bin/flutter")
104+
(mock (file-exists-p "~/snap/flutter/common/flutter/bin/flutter") => t)
105+
(should (equal (lsp-dart-get-flutter-sdk-dir) "~/snap/flutter/common/flutter")))))
106+
93107
(ert-deftest lsp-dart-get-flutter-sdk-dir--with-flutter-on-path-test ()
94108
(let ((flutter-command (lsp-dart-test-flutter-command-fixture)))
95109
(lsp-dart-test-from-flutter-project

0 commit comments

Comments
 (0)