|
13 | 13 | # convenience function to print a status message in green |
14 | 14 | status () { |
15 | 15 | local GREEN='\033[0;32m' |
16 | | - local NC='\033[0m' # No Color |
| 16 | + local NC='\033[0m' # No Color |
17 | 17 | echo "${GREEN}◆ $1${NC}" |
18 | 18 | } |
19 | 19 |
|
@@ -75,21 +75,69 @@ RESOURCES_PATH="$PWD/Sources/CodeEditLanguages/Resources" |
75 | 75 | status "Copying language queries to package resources..." |
76 | 76 | rm -rf "$RESOURCES_PATH" |
77 | 77 |
|
78 | | -# find and copy language queries |
| 78 | +# find and copy language queries |
79 | 79 | LIST=$( echo $CHECKOUTS_PATH/tree-* ) |
80 | 80 |
|
| 81 | +OLD_PWD="$PWD" |
| 82 | + |
81 | 83 | for lang in $LIST ; do |
82 | | - name=${lang##*/} |
83 | | - mkdir -p $RESOURCES_PATH/$name |
84 | | - highlights=$( find $lang -type f -name "*.scm" ) |
85 | | - for highlight in $highlights ; do |
86 | | - highlight_name=${highlight##*/} |
87 | | - cp $highlight $RESOURCES_PATH/$name/$highlight_name |
| 84 | + # determine how many targets a given package has |
| 85 | + cd $lang |
| 86 | + |
| 87 | + # get package info as JSON |
| 88 | + manifest=$(swift package dump-package) |
| 89 | + |
| 90 | + # use jq to get the target path |
| 91 | + targets=$(echo $manifest | jq -r '.targets[].path') |
| 92 | + |
| 93 | + # use jq to count number of targets |
| 94 | + count=$(echo $manifest | jq '.targets | length') |
| 95 | + |
| 96 | + # Determine if target paths are all '.' |
| 97 | + same=1 |
| 98 | + for target in $targets; do |
| 99 | + if [[ $target != "." ]]; then |
| 100 | + same=0 |
| 101 | + break |
| 102 | + fi |
| 103 | + done |
| 104 | + |
| 105 | + # loop through targets |
| 106 | + for target in $targets; do |
| 107 | + name=${lang##*/} |
| 108 | + |
| 109 | + # if there is only one target, use name |
| 110 | + # otherwise use target |
| 111 | + if [[ $count -eq 1 || ($count -ne 1 && $same -eq 1) ]]; then |
| 112 | + mkdir -p $RESOURCES_PATH/$name |
| 113 | + else |
| 114 | + mkdir -p $RESOURCES_PATH/$target |
| 115 | + fi |
| 116 | + |
| 117 | + highlights=$( find $lang/$target -type f -name "*.scm" ) |
| 118 | + for highlight in $highlights ; do |
| 119 | + highlight_name=${highlight##*/} |
| 120 | + |
| 121 | + # if there is only one target, use name |
| 122 | + # otherwise use target |
| 123 | + if [[ $count -eq 1 || ($count -ne 1 && $same -eq 1) ]]; then |
| 124 | + cp $highlight $RESOURCES_PATH/$name/$highlight_name |
| 125 | + else |
| 126 | + cp $highlight $RESOURCES_PATH/$target/$highlight_name |
| 127 | + fi |
| 128 | + done |
| 129 | + |
| 130 | + # If target paths are all '.', break out of loop |
| 131 | + if [[ $same -eq 1 || ($count -ne 1 && $same -eq 1) ]]; then |
| 132 | + break |
| 133 | + fi |
88 | 134 | done |
89 | 135 | done |
90 | 136 | status "Language queries copied to package resources!" |
91 | 137 |
|
92 | | -# cleanup derived derived data |
| 138 | +# cleanup derived derived data |
| 139 | + |
| 140 | +cd $OLD_PWD |
93 | 141 |
|
94 | 142 | if [ -d "$PWD/DerivedData" ]; then |
95 | 143 | status "Cleaning up DerivedData..." |
|
0 commit comments