@@ -293,9 +293,9 @@ Return a JSON object."
293
293
The manifest file is searched from the PROJECT-DIRECTORY, defaults to
294
294
`default-directory' , or its ancestors."
295
295
(let* ((description (swift-mode:describe-package project-directory))
296
- (modules (cdr (assoc 'modules description))))
296
+ (modules (cdr (assoc 'targets description))))
297
297
(seq-find
298
- (lambda (module ) (not (eq :json-true (cdr (assoc 'is_test module)))))
298
+ (lambda (module ) (not (equal " test " (cdr (assoc 'type module)))))
299
299
modules)))
300
300
301
301
(defun swift-mode:read-package-name (project-directory )
@@ -352,9 +352,9 @@ Return a directory path if found. Return nil otherwise."
352
352
(swift-mode:find-ancestor-or-self-directory
353
353
'swift-mode:swift-project-directory-p directory))
354
354
355
- (defun swift-mode:read-project-directory ()
356
- " Read a project directory from the minibuffer."
357
- (expand-file-name (read-directory-name " Project directory: " nil nil t )))
355
+ (defun swift-mode:read-project-directory (default )
356
+ " Read a project directory from the minibuffer with DEFAULT directory ."
357
+ (expand-file-name (read-directory-name " Project directory: " default nil t )))
358
358
359
359
(defun swift-mode:ensure-swift-project-directory (project-directory )
360
360
" Check PROJECT-DIRECTORY contains the manifest file Package.swift.
@@ -460,8 +460,8 @@ passed as a destination to xcodebuild."
460
460
, scheme
461
461
" -showBuildSettings" )))
462
462
(when (and device-identifier
463
- (not (eql device-identifier
464
- swift-mode:ios-local-device-identifier)))
463
+ (not (equal device-identifier
464
+ swift-mode:ios-local-device-identifier)))
465
465
(setq arglist
466
466
(append arglist
467
467
`(" -destination"
@@ -489,7 +489,8 @@ passed as a destination to xcodebuild."
489
489
490
490
xcodebuild is executed in PROJECT-DIRECTORY."
491
491
(let* ((json (swift-mode:xcodebuild-list project-directory))
492
- (project (cdr (assoc 'project json)))
492
+ (project (or (cdr (assoc 'project json))
493
+ (cdr (assoc 'workspace json))))
493
494
(schemes (cdr (assoc 'schemes project)))
494
495
(choices (seq-map
495
496
(lambda (scheme ) (cons scheme scheme))
@@ -520,9 +521,11 @@ If PROJECT-DIRECTORY is nil or omited, it is searched from `default-directory'
520
521
or its ancestors.
521
522
An list ARGS are appended for builder command line arguments."
522
523
(interactive
523
- (let ((project-directory (if current-prefix-arg
524
- (swift-mode:read-project-directory)
525
- (swift-mode:find-swift-project-directory))))
524
+ (let* ((default-project-directory (swift-mode:find-swift-project-directory))
525
+ (project-directory
526
+ (if current-prefix-arg
527
+ (swift-mode:read-project-directory default-project-directory)
528
+ default-project-directory)))
526
529
(list
527
530
project-directory
528
531
(if (string-equal (swift-mode:read-module-type project-directory)
@@ -539,7 +542,7 @@ An list ARGS are appended for builder command line arguments."
539
542
(zerop
540
543
(apply 'swift-mode:call-process
541
544
swift-mode:swift-build-executable
542
- " --chdir " project-directory
545
+ " --package-path " project-directory
543
546
args))
544
547
(compilation-mode )
545
548
(goto-char (point-min ))
@@ -563,9 +566,14 @@ equal to `swift-mode:ios-local-device-identifier', a local device is used via
563
566
SCHEME is the name of the project scheme in Xcode. If it is nil or omitted,
564
567
the value of `swift-mode:ios-project-scheme' is used."
565
568
(interactive
566
- (let ((project-directory (if current-prefix-arg
567
- (swift-mode:read-project-directory)
568
- (swift-mode:find-xcode-project-directory))))
569
+ (let* ((default-project-directory
570
+ (or
571
+ (swift-mode:find-xcode-workspace-directory)
572
+ (swift-mode:find-xcode-project-directory)))
573
+ (project-directory
574
+ (if current-prefix-arg
575
+ (swift-mode:read-project-directory default-project-directory)
576
+ default-project-directory)))
569
577
(list
570
578
project-directory
571
579
(if current-prefix-arg
@@ -596,7 +604,7 @@ the value of `swift-mode:ios-project-scheme' is used."
596
604
(xcodebuild-args `(, swift-mode:xcodebuild-executable
597
605
" -configuration" " Debug"
598
606
" -scheme" , scheme )))
599
- (if (eql device-identifier swift-mode:ios-local-device-identifier)
607
+ (if (equal device-identifier swift-mode:ios-local-device-identifier)
600
608
(setq xcodebuild-args (append xcodebuild-args '(" -sdk" " iphoneos" )))
601
609
(setq xcodebuild-args
602
610
(append xcodebuild-args
@@ -655,15 +663,17 @@ STRING is passed to the command."
655
663
(defun swift-mode:debug-swift-module-library (project-directory )
656
664
" Run debugger on a Swift library module in the PROJECT-DIRECTORY."
657
665
(let* ((c99name (swift-mode:read-c99-name project-directory))
658
- (import-statement (concat " import " c99name)))
666
+ (import-statement (concat " import " c99name))
667
+ (build-debug-directory
668
+ (swift-mode:join-path project-directory " .build" " debug" )))
659
669
(unless c99name (error " Cannot get module name " ))
660
670
(swift-mode:build-swift-module project-directory)
661
671
(swift-mode:run-repl
662
672
(append
663
673
(swift-mode:command-string-to-list swift-mode:repl-executable)
664
674
(list
665
- " -I" (swift-mode:join-path project- directory " .build " " debug " )
666
- " -L" project -directory
675
+ " -I" build-debug- directory
676
+ " -L" build-debug -directory
667
677
(concat " -l" c99name)))
668
678
nil t )
669
679
(swift-mode:enqueue-repl-commands import-statement)))
@@ -691,10 +701,11 @@ STRING is passed to the command."
691
701
If PROJECT-DIRECTORY is nil or omited, it is searched from `default-directory'
692
702
or its ancestors."
693
703
(interactive
694
- (list
695
- (if current-prefix-arg
696
- (swift-mode:read-project-directory)
697
- (swift-mode:find-swift-project-directory))))
704
+ (let ((default-project-directory (swift-mode:find-swift-project-directory)))
705
+ (list
706
+ (if current-prefix-arg
707
+ (swift-mode:read-project-directory default-project-directory)
708
+ default-project-directory))))
698
709
(setq project-directory
699
710
(swift-mode:ensure-swift-project-directory project-directory))
700
711
(if (string-equal (swift-mode:read-module-type project-directory) " library" )
@@ -818,20 +829,20 @@ PRODUCT-BUNDLE-IDENTIFIER is the name of the product bundle identifier used
818
829
in Xcode build settings."
819
830
(swift-mode:build-ios-app project-directory device-identifier scheme)
820
831
(let* ((devices (swift-mode:list-ios-simulator-devices))
821
- (target-device
832
+ (target-device
822
833
(seq-find
823
- (lambda (device )
824
- (string-equal (cdr (assoc 'udid device)) device-identifier))
825
- devices))
826
- (active-devices
834
+ (lambda (device )
835
+ (string-equal (cdr (assoc 'udid device)) device-identifier))
836
+ devices))
837
+ (active-devices
827
838
(seq-filter
828
- (lambda (device )
829
- (string-equal (cdr (assoc 'state device)) " Booted" ))
830
- devices))
831
- (target-booted
839
+ (lambda (device )
840
+ (string-equal (cdr (assoc 'state device)) " Booted" ))
841
+ devices))
842
+ (target-booted
832
843
(string-equal (cdr (assoc 'state target-device)) " Booted" ))
833
- (simulator-running (consp active-devices))
834
- (progress-reporter
844
+ (simulator-running (consp active-devices))
845
+ (progress-reporter
835
846
(make-progress-reporter " Waiting for simulator..." )))
836
847
(cond
837
848
(target-booted
@@ -886,9 +897,14 @@ it is equal to `swift-mode:ios-local-device-identifier', a local build via
886
897
SCHEME is the name of the project scheme in Xcode. If it is nil or omitted,
887
898
the value of `swift-mode:ios-project-scheme' is used."
888
899
(interactive
889
- (let ((project-directory (if current-prefix-arg
890
- (swift-mode:read-project-directory)
891
- (swift-mode:find-xcode-project-directory))))
900
+ (let* ((default-project-directory
901
+ (or
902
+ (swift-mode:find-xcode-workspace-directory)
903
+ (swift-mode:find-xcode-project-directory)))
904
+ (project-directory
905
+ (if current-prefix-arg
906
+ (swift-mode:read-project-directory default-project-directory)
907
+ default-project-directory)))
892
908
(list
893
909
project-directory
894
910
(if current-prefix-arg
@@ -911,8 +927,8 @@ the value of `swift-mode:ios-project-scheme' is used."
911
927
swift-mode:ios-project-scheme
912
928
(swift-mode:read-project-scheme project-directory))))
913
929
(setq swift-mode:ios-project-scheme scheme)
914
- (let* ((local-device-build (eql device-identifier
915
- swift-mode:ios-local-device-identifier))
930
+ (let* ((local-device-build (equal device-identifier
931
+ swift-mode:ios-local-device-identifier))
916
932
(sdk (if local-device-build " iphoneos" " iphonesimulator" ))
917
933
(build-settings
918
934
(swift-mode:read-xcode-build-settings
0 commit comments