OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library git_source; | 5 library git_source; |
6 | 6 |
7 import 'git.dart' as git; | 7 import 'git.dart' as git; |
8 import 'io.dart'; | 8 import 'io.dart'; |
9 import 'package.dart'; | 9 import 'package.dart'; |
10 import 'source.dart'; | 10 import 'source.dart'; |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 } | 141 } |
142 | 142 |
143 /** | 143 /** |
144 * Clones the repo at the URI [from] to the path [to] on the local filesystem. | 144 * Clones the repo at the URI [from] to the path [to] on the local filesystem. |
145 * | 145 * |
146 * If [mirror] is true, create a bare, mirrored clone. This doesn't check out | 146 * If [mirror] is true, create a bare, mirrored clone. This doesn't check out |
147 * the working tree, but instead makes the repository a local mirror of the | 147 * the working tree, but instead makes the repository a local mirror of the |
148 * remote repository. See the manpage for `git clone` for more information. | 148 * remote repository. See the manpage for `git clone` for more information. |
149 */ | 149 */ |
150 Future _clone(String from, String to, {bool mirror: false}) { | 150 Future _clone(String from, String to, {bool mirror: false}) { |
151 // TODO(rnystrom): For some mysterious reason, the Windows buildbots do not | |
152 // have the right working directory when pub spawns git, so the relative | |
153 // path fails. To work around it, if [from] looks like a relative path then | |
154 // manually make it absolute here. Should figure out what's really going on. | |
155 var URL_LIKE = new RegExp(r'^[a-z]+\:'); | |
156 if (!URL_LIKE.hasMatch(from)) { | |
157 from = getFullPath(from); | |
158 } | |
159 | |
160 // Git on Windows does not seem to automatically create the destination | 151 // Git on Windows does not seem to automatically create the destination |
161 // directory. | 152 // directory. |
162 return ensureDir(to).chain((_) { | 153 return ensureDir(to).chain((_) { |
163 var args = ["clone", from, to]; | 154 var args = ["clone", from, to]; |
164 if (mirror) args.insertRange(1, 1, "--mirror"); | 155 if (mirror) args.insertRange(1, 1, "--mirror"); |
165 return git.run(args); | 156 return git.run(args); |
166 }).transform((result) => null); | 157 }).transform((result) => null); |
167 } | 158 } |
168 | 159 |
169 /** | 160 /** |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
226 | 217 |
227 /** | 218 /** |
228 * Returns [description] if it's a description, or [PackageId.description] if | 219 * Returns [description] if it's a description, or [PackageId.description] if |
229 * it's a [PackageId]. | 220 * it's a [PackageId]. |
230 */ | 221 */ |
231 _getDescription(description) { | 222 _getDescription(description) { |
232 if (description is PackageId) return description.description; | 223 if (description is PackageId) return description.description; |
233 return description; | 224 return description; |
234 } | 225 } |
235 } | 226 } |
OLD | NEW |