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

Side by Side Diff: sdk/lib/_internal/pub_generated/lib/src/command/uploader.dart

Issue 896623005: Use native async/await support in pub. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 10 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 | Annotate | Revision Log
OLDNEW
(Empty)
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
3 // BSD-style license that can be found in the LICENSE file.
4
5 library pub.command.uploader;
6
7 import 'dart:async';
8
9 import 'package:path/path.dart' as path;
10
11 import '../command.dart';
12 import '../entrypoint.dart';
13 import '../exit_codes.dart' as exit_codes;
14 import '../http.dart';
15 import '../io.dart';
16 import '../log.dart' as log;
17 import '../oauth2.dart' as oauth2;
18 import '../source/hosted.dart';
19
20 /// Handles the `uploader` pub command.
21 class UploaderCommand extends PubCommand {
22 String get name => "uploader";
23 String get description =>
24 "Manage uploaders for a package on pub.dartlang.org.";
25 String get invocation => "pub uploader [options] {add/remove} <email>";
26 String get docUrl => "http://dartlang.org/tools/pub/cmd/pub-uploader.html";
27
28 /// The URL of the package hosting server.
29 Uri get server => Uri.parse(argResults['server']);
30
31 UploaderCommand() {
32 argParser.addOption(
33 'server',
34 defaultsTo: HostedSource.defaultUrl,
35 help: 'The package server on which the package is hosted.');
36 argParser.addOption(
37 'package',
38 help: 'The package whose uploaders will be modified.\n'
39 '(defaults to the current package)');
40 }
41
42 Future run() {
43 if (argResults.rest.isEmpty) {
44 log.error('No uploader command given.');
45 this.printUsage();
46 return flushThenExit(exit_codes.USAGE);
47 }
48
49 var rest = argResults.rest.toList();
50
51 // TODO(rnystrom): Use subcommands for these.
52 var command = rest.removeAt(0);
53 if (!['add', 'remove'].contains(command)) {
54 log.error('Unknown uploader command "$command".');
55 this.printUsage();
56 return flushThenExit(exit_codes.USAGE);
57 } else if (rest.isEmpty) {
58 log.error('No uploader given for "pub uploader $command".');
59 this.printUsage();
60 return flushThenExit(exit_codes.USAGE);
61 }
62
63 return new Future.sync(() {
64 var package = argResults['package'];
65 if (package != null) return package;
66 return new Entrypoint(path.current, cache).root.name;
67 }).then((package) {
68 var uploader = rest[0];
69 return oauth2.withClient(cache, (client) {
70 if (command == 'add') {
71 var url =
72 server.resolve("/api/packages/" "${Uri.encodeComponent(package)}/u ploaders");
73 return client.post(url, headers: PUB_API_HEADERS, body: {
74 "email": uploader
75 });
76 } else { // command == 'remove'
77 var url = server.resolve(
78 "/api/packages/" "${Uri.encodeComponent(package)}/uploaders/"
79 "${Uri.encodeComponent(uploader)}");
80 return client.delete(url, headers: PUB_API_HEADERS);
81 }
82 });
83 }).then(
84 handleJsonSuccess).catchError(
85 (error) => handleJsonError(error.response),
86 test: (e) => e is PubHttpException);
87 }
88 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698