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

Side by Side Diff: lib/src/source/hosted.dart

Issue 2079303003: Track Source objects in PackageNames. (Closed) Base URL: git@github.com:dart-lang/pub.git@master
Patch Set: Code review changes Created 4 years, 6 months 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/source/git.dart ('k') | lib/src/source/path.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 import 'dart:async'; 5 import 'dart:async';
6 import 'dart:io' as io; 6 import 'dart:io' as io;
7 import "dart:convert"; 7 import "dart:convert";
8 8
9 import 'package:http/http.dart' as http; 9 import 'package:http/http.dart' as http;
10 import 'package:path/path.dart' as p; 10 import 'package:path/path.dart' as p;
(...skipping 27 matching lines...) Expand all
38 if (url != null) return url; 38 if (url != null) return url;
39 39
40 return "https://pub.dartlang.org"; 40 return "https://pub.dartlang.org";
41 } 41 }
42 42
43 /// Returns a reference to a hosted package named [name]. 43 /// Returns a reference to a hosted package named [name].
44 /// 44 ///
45 /// If [url] is passed, it's the URL of the pub server from which the package 45 /// If [url] is passed, it's the URL of the pub server from which the package
46 /// should be downloaded. It can be a [Uri] or a [String]. 46 /// should be downloaded. It can be a [Uri] or a [String].
47 PackageRef refFor(String name, {url}) => 47 PackageRef refFor(String name, {url}) =>
48 new PackageRef(name, 'hosted', _descriptionFor(name, url)); 48 new PackageRef(name, this, _descriptionFor(name, url));
49 49
50 /// Returns an ID for a hosted package named [name] at [version]. 50 /// Returns an ID for a hosted package named [name] at [version].
51 /// 51 ///
52 /// If [url] is passed, it's the URL of the pub server from which the package 52 /// If [url] is passed, it's the URL of the pub server from which the package
53 /// should be downloaded. It can be a [Uri] or a [String]. 53 /// should be downloaded. It can be a [Uri] or a [String].
54 PackageId idFor(String name, Version version, {url}) => 54 PackageId idFor(String name, Version version, {url}) =>
55 new PackageId(name, 'hosted', version, _descriptionFor(name, url)); 55 new PackageId(name, this, version, _descriptionFor(name, url));
56 56
57 /// Returns the description for a hosted package named [name] with the 57 /// Returns the description for a hosted package named [name] with the
58 /// given package server [url]. 58 /// given package server [url].
59 _descriptionFor(String name, [url]) { 59 _descriptionFor(String name, [url]) {
60 if (url == null) return name; 60 if (url == null) return name;
61 61
62 if (url is! String && url is! Uri) { 62 if (url is! String && url is! Uri) {
63 throw new ArgumentError.value(url, 'url', 'must be a Uri or a String.'); 63 throw new ArgumentError.value(url, 'url', 'must be a Uri or a String.');
64 } 64 }
65 65
66 return {'name': name, 'url': url.toString()}; 66 return {'name': name, 'url': url.toString()};
67 } 67 }
68 68
69 bool descriptionsEqual(description1, description2) => 69 bool descriptionsEqual(description1, description2) =>
70 _parseDescription(description1) == _parseDescription(description2); 70 _parseDescription(description1) == _parseDescription(description2);
71 71
72 int hashDescription(description) => _parseDescription.hashCode;
73
72 /// Ensures that [description] is a valid hosted package description. 74 /// Ensures that [description] is a valid hosted package description.
73 /// 75 ///
74 /// There are two valid formats. A plain string refers to a package with the 76 /// There are two valid formats. A plain string refers to a package with the
75 /// given name from the default host, while a map with keys "name" and "url" 77 /// given name from the default host, while a map with keys "name" and "url"
76 /// refers to a package with the given name from the host at the given URL. 78 /// refers to a package with the given name from the host at the given URL.
77 PackageRef parseRef(String name, description, {String containingPath}) { 79 PackageRef parseRef(String name, description, {String containingPath}) {
78 _parseDescription(description); 80 _parseDescription(description);
79 return new PackageRef(name, this.name, description); 81 return new PackageRef(name, this, description);
80 } 82 }
81 83
82 PackageId parseId(String name, Version version, description) { 84 PackageId parseId(String name, Version version, description) {
83 _parseDescription(description); 85 _parseDescription(description);
84 return new PackageId(name, this.name, version, description); 86 return new PackageId(name, this, version, description);
85 } 87 }
86 88
87 /// Parses the description for a package. 89 /// Parses the description for a package.
88 /// 90 ///
89 /// If the package parses correctly, this returns a (name, url) pair. If not, 91 /// If the package parses correctly, this returns a (name, url) pair. If not,
90 /// this throws a descriptive FormatException. 92 /// this throws a descriptive FormatException.
91 Pair<String, String> _parseDescription(description) { 93 Pair<String, String> _parseDescription(description) {
92 if (description is String) { 94 if (description is String) {
93 return new Pair<String, String>(description, defaultUrl); 95 return new Pair<String, String>(description, defaultUrl);
94 } 96 }
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 // Since HostedSource is cached, this will only be called for uncached 419 // Since HostedSource is cached, this will only be called for uncached
418 // packages. 420 // packages.
419 throw new UnsupportedError("Cannot download packages when offline."); 421 throw new UnsupportedError("Cannot download packages when offline.");
420 } 422 }
421 423
422 Future<Pubspec> describeUncached(PackageId id) { 424 Future<Pubspec> describeUncached(PackageId id) {
423 throw new PackageNotFoundException( 425 throw new PackageNotFoundException(
424 "${id.name} ${id.version} is not available in your system cache."); 426 "${id.name} ${id.version} is not available in your system cache.");
425 } 427 }
426 } 428 }
OLDNEW
« no previous file with comments | « lib/src/source/git.dart ('k') | lib/src/source/path.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698