Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(892)

Side by Side Diff: lib/src/package.dart

Issue 1528523003: Clean up the semantics of package descriptions. (Closed) Base URL: git@github.com:dart-lang/pub.git@master
Patch Set: Code review changes Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « lib/src/lock_file.dart ('k') | lib/src/pubspec.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 pub.package; 5 library pub.package;
6 6
7 import 'dart:io'; 7 import 'dart:io';
8 8
9 import 'package:barback/barback.dart'; 9 import 'package:barback/barback.dart';
10 import 'package:path/path.dart' as p; 10 import 'package:path/path.dart' as p;
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 if (isMagic) return name; 333 if (isMagic) return name;
334 return "$name from $source"; 334 return "$name from $source";
335 } 335 }
336 336
337 /// Returns a [PackageRef] with this one's [name], [source], and 337 /// Returns a [PackageRef] with this one's [name], [source], and
338 /// [description]. 338 /// [description].
339 PackageRef toRef() => isMagic 339 PackageRef toRef() => isMagic
340 ? new PackageRef.magic(name) 340 ? new PackageRef.magic(name)
341 : new PackageRef(name, source, description); 341 : new PackageRef(name, source, description);
342 342
343 /// Returns a [PackageId] for this package with the given concrete version.
344 PackageId atVersion(Version version) =>
345 new PackageId(name, source, version, description);
346
347 /// Returns a [PackageDep] for this package with the given version constraint. 343 /// Returns a [PackageDep] for this package with the given version constraint.
348 PackageDep withConstraint(VersionConstraint constraint) => 344 PackageDep withConstraint(VersionConstraint constraint) =>
349 new PackageDep(name, source, constraint, description); 345 new PackageDep(name, source, constraint, description);
350 } 346 }
351 347
352 /// A reference to a [Package], but not any particular version(s) of it. 348 /// A reference to a [Package], but not any particular version(s) of it.
353 class PackageRef extends _PackageName { 349 class PackageRef extends _PackageName {
350 /// Creates a reference to a package with the given [name], [source], and
351 /// [description].
352 ///
353 /// Since an ID's description is an implementation detail of its source, this
354 /// should generally not be called outside of [Source] subclasses. A reference
355 /// can be obtained from a user-supplied description using [Source.parseRef].
354 PackageRef(String name, String source, description) 356 PackageRef(String name, String source, description)
355 : super(name, source, description); 357 : super(name, source, description);
356 358
357 /// Creates a reference to a magic package (see [isMagic]). 359 /// Creates a reference to a magic package (see [isMagic]).
358 PackageRef.magic(String name) 360 PackageRef.magic(String name)
359 : super.magic(name); 361 : super.magic(name);
360 362
361 int get hashCode => name.hashCode ^ source.hashCode; 363 int get hashCode => name.hashCode ^ source.hashCode;
362 364
363 bool operator ==(other) { 365 bool operator ==(other) {
364 // TODO(rnystrom): We're assuming here that we don't need to delve into the 366 // TODO(rnystrom): We're assuming here that we don't need to delve into the
365 // description. 367 // description.
366 return other is PackageRef && 368 return other is PackageRef &&
367 other.name == name && 369 other.name == name &&
368 other.source == source; 370 other.source == source;
369 } 371 }
370 } 372 }
371 373
372 /// A reference to a specific version of a package. 374 /// A reference to a specific version of a package.
373 /// 375 ///
374 /// A package ID contains enough information to correctly get the package. 376 /// A package ID contains enough information to correctly get the package.
375 /// 377 ///
376 /// Note that it's possible for multiple distinct package IDs to point to 378 /// It's possible for multiple distinct package IDs to point to different
377 /// different packages that have identical contents. For example, the same 379 /// packages that have identical contents. For example, the same package may be
378 /// package may be available from multiple sources. As far as Pub is concerned, 380 /// available from multiple sources. As far as Pub is concerned, those packages
379 /// those packages are different. 381 /// are different.
382 ///
383 /// Note that a package ID's [description] field has a different structure than
384 /// the [PackageRef.description] or [PackageDep.description] fields for some
385 /// sources. For example, the `git` source adds revision information to the
386 /// description to ensure that the same ID always points to the same source.
380 class PackageId extends _PackageName { 387 class PackageId extends _PackageName {
381 /// The package's version. 388 /// The package's version.
382 final Version version; 389 final Version version;
383 390
391 /// Creates an ID for a package with the given [name], [source], [version],
392 /// and [description].
393 ///
394 /// Since an ID's description is an implementation detail of its source, this
395 /// should generally not be called outside of [Source] subclasses.
384 PackageId(String name, String source, this.version, description) 396 PackageId(String name, String source, this.version, description)
385 : super(name, source, description); 397 : super(name, source, description);
386 398
387 /// Creates an ID for a magic package (see [isMagic]). 399 /// Creates an ID for a magic package (see [isMagic]).
388 PackageId.magic(String name) 400 PackageId.magic(String name)
389 : super.magic(name), 401 : super.magic(name),
390 version = Version.none; 402 version = Version.none;
391 403
392 /// Creates an ID for the given root package. 404 /// Creates an ID for the given root package.
393 PackageId.root(Package package) 405 PackageId.root(Package package)
(...skipping 16 matching lines...) Expand all
410 if (isMagic) return name; 422 if (isMagic) return name;
411 return "$name $version from $source"; 423 return "$name $version from $source";
412 } 424 }
413 } 425 }
414 426
415 /// A reference to a constrained range of versions of one package. 427 /// A reference to a constrained range of versions of one package.
416 class PackageDep extends _PackageName { 428 class PackageDep extends _PackageName {
417 /// The allowed package versions. 429 /// The allowed package versions.
418 final VersionConstraint constraint; 430 final VersionConstraint constraint;
419 431
432 /// Creates a reference to package with the given [name], [source],
433 /// [constraint], and [description].
434 ///
435 /// Since an ID's description is an implementation detail of its source, this
436 /// should generally not be called outside of [Source] subclasses.
420 PackageDep(String name, String source, this.constraint, description) 437 PackageDep(String name, String source, this.constraint, description)
421 : super(name, source, description); 438 : super(name, source, description);
422 439
423 PackageDep.magic(String name) 440 PackageDep.magic(String name)
424 : super.magic(name), 441 : super.magic(name),
425 constraint = Version.none; 442 constraint = Version.none;
426 443
427 String toString() { 444 String toString() {
428 if (isRoot) return "$name $constraint (root)"; 445 if (isRoot) return "$name $constraint (root)";
429 if (isMagic) return name; 446 if (isMagic) return name;
430 return "$name $constraint from $source ($description)"; 447 return "$name $constraint from $source ($description)";
431 } 448 }
432 449
433 int get hashCode => name.hashCode ^ source.hashCode; 450 int get hashCode => name.hashCode ^ source.hashCode;
434 451
435 bool operator ==(other) { 452 bool operator ==(other) {
436 // TODO(rnystrom): We're assuming here that we don't need to delve into the 453 // TODO(rnystrom): We're assuming here that we don't need to delve into the
437 // description. 454 // description.
438 return other is PackageDep && 455 return other is PackageDep &&
439 other.name == name && 456 other.name == name &&
440 other.source == source && 457 other.source == source &&
441 other.constraint == constraint; 458 other.constraint == constraint;
442 } 459 }
443 } 460 }
OLDNEW
« no previous file with comments | « lib/src/lock_file.dart ('k') | lib/src/pubspec.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698