Skip to content

Commit 0d1fc5e

Browse files
committed
updated to dcli 4.x and using pubspec_manager.
1 parent b184325 commit 0d1fc5e

15 files changed

+95
-76
lines changed

lib/src/commands/export.dart

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ run: onepub login
6464
'Found $user');
6565
}
6666
await API().checkVersion();
67-
final response = waitForEx(API().exportMemberToken(user));
67+
final response = await API().exportMemberToken(user);
6868

6969
if (response.success) {
7070
onepubToken = response.token!;
@@ -86,9 +86,8 @@ run: onepub login
8686
exitCode: 1, message: 'You may only pass one argument to --file.');
8787
}
8888

89-
final exportFile = TokenExportFile(pathToFile)
90-
..onepubToken = onepubToken
91-
..save();
89+
final exportFile = TokenExportFile(pathToFile)..onepubToken = onepubToken;
90+
await exportFile.save();
9291

9392
print('''
9493

lib/src/commands/import.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,11 @@ Use `onepub export` to obtain the OnePub token.
8888
throw ExitException(exitCode: 1, message: organisation.errorMessage!);
8989
}
9090

91-
OnePubSettings.use()
91+
final settings = OnePubSettings.use()
9292
..operatorEmail = 'not set during import'
9393
..obfuscatedOrganisationId = organisation.obfuscatedId
94-
..organisationName = organisation.name
95-
..save();
94+
..organisationName = organisation.name;
95+
await settings.save();
9696

9797
OnePubTokenStore().addToken(
9898
onepubApiUrl: OnePubSettings.use().onepubApiUrlAsString,

lib/src/commands/login.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ class OnePubLoginCommand extends Command<int> {
4949
final settings = OnePubSettings.use()
5050
..obfuscatedOrganisationId = auth.obfuscatedOrganisationId
5151
..organisationName = auth.organisationName
52-
..operatorEmail = auth.operatorEmail
53-
..save();
52+
..operatorEmail = auth.operatorEmail;
53+
await settings.save();
5454

5555
final onepubApiUrl = settings.onepubApiUrlAsString;
5656

lib/src/commands/pub/private.dart

Lines changed: 25 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@
33
* Written by Brett Sutton <bsutton@onepub.dev>, Jan 2022
44
*/
55

6-
import 'dart:io';
7-
86
import 'package:args/command_runner.dart';
9-
import 'package:dcli/dcli.dart' hide PubSpec;
10-
import 'package:pubspec2/pubspec2.dart';
7+
import 'package:dcli/dcli.dart';
8+
import 'package:pubspec_manager/pubspec_manager.dart';
119
import 'package:scope/scope.dart';
1210
import 'package:url_builder/url_builder.dart';
1311

@@ -66,36 +64,34 @@ run: onepub login
6664
final currentOrganisationName = settings.organisationName;
6765
final url = settings.onepubApiUrlAsString;
6866

69-
final pubspec = await PubSpec.loadFile(project.pathToPubSpec);
70-
if (pubspec.publishTo != null) {
71-
if (pubspec.publishTo.toString() == url) {
72-
print(orange('${pubspec.name} is already a private package.'));
73-
return;
74-
}
75-
76-
await API().checkVersion();
77-
final organisation = await getOrganisation(obfuscatedOrganisationId);
78-
if (organisation == null) {
79-
print(orange('${pubspec.name} is already a private package '
80-
'for another organisation'));
81-
} else {
82-
print(orange('${pubspec.name} is already a private package of '
83-
'${organisation.name}'));
84-
}
85-
if (!confirm('Do you want to change the organisation to '
86-
'$currentOrganisationName?')) {
87-
print(red('Action cancelled'));
88-
return;
89-
}
67+
final pubspec = PubSpec.loadFromPath(project.pathToPubSpec);
68+
if (pubspec.publishTo.toString() == url) {
69+
print(orange('${pubspec.name} is already a private package.'));
70+
return;
71+
}
72+
73+
await API().checkVersion();
74+
final organisation = await getOrganisation(obfuscatedOrganisationId);
75+
if (organisation == null) {
76+
print(orange('${pubspec.name} is already a private package '
77+
'for another organisation'));
78+
} else {
79+
print(orange('${pubspec.name} is already a private package of '
80+
'${organisation.name}'));
81+
}
82+
if (!confirm('Do you want to change the organisation to '
83+
'$currentOrganisationName?')) {
84+
print(red('Action cancelled'));
85+
return;
9086
}
9187

92-
final pubspecUpdated = pubspec.copy(publishTo: Uri.parse(url));
93-
await pubspecUpdated.save(Directory(project.pathToProjectRoot));
88+
pubspec.publishTo.set(url);
89+
pubspec.saveTo(project.pathToProjectRoot);
9490

9591
print('''
96-
${pubspecUpdated.name} has been marked as a private package for the organisation ${settings.organisationName}.
92+
${pubspec.name} has been marked as a private package for the organisation ${settings.organisationName}.
9793
98-
Run 'dart/flutter pub publish' to publish ${pubspecUpdated.name} to OnePub
94+
Run 'dart/flutter pub publish' to publish ${pubspec.name} to OnePub
9995
10096
See ${urlJoin(settings.onepubWebUrl, 'publish')}
10197
''');

lib/src/entry_point.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ Future<void> entrypoint(
3434
final runner = MyRunner(args, executableName, _description, commandSet);
3535
try {
3636
printPreamble();
37-
runner.init();
37+
await runner.init();
3838
await runner.run(args);
3939
} on FormatException catch (e) {
4040
printerr(e.message);

lib/src/exceptions.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,7 @@ class APIException extends OnePubCliException {
3333
class NotInitialisedException extends OnePubCliException {
3434
NotInitialisedException(super.message);
3535
}
36+
37+
class SettingsException extends OnePubCliException {
38+
SettingsException(super.message);
39+
}

lib/src/my_runner.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ import 'pub/command/upgrade.dart';
3737
import 'pub/command/uploader.dart';
3838
import 'pub/command/version.dart';
3939
import 'pub/io.dart';
40-
import 'pub/log.dart' hide red;
4140
import 'pub/log.dart' as plog;
41+
import 'pub/log.dart' hide red;
4242

4343
enum CommandSet { opub, onepub }
4444

@@ -62,7 +62,7 @@ class MyRunner extends CommandRunner<int> implements PubTopLevel {
6262
}
6363
CommandSet commandSet;
6464

65-
void init() {
65+
Future<void> init() async {
6666
PubTopLevel.addColorFlag(argParser);
6767

6868
results = argParser.parse(args);
@@ -76,7 +76,7 @@ class MyRunner extends CommandRunner<int> implements PubTopLevel {
7676
}
7777

7878
if (commandSet == CommandSet.onepub) {
79-
OnePubSettings.install(dev: results['dev'] as bool);
79+
await OnePubSettings.install(dev: results['dev'] as bool);
8080
}
8181
}
8282

lib/src/onepub_settings.dart

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -200,12 +200,12 @@ class OnePubSettings {
200200
String get operatorEmail => _settings.asString('operatorEmail');
201201

202202
// ignore: discarded_futures
203-
void save() => waitForEx(_settings.save());
203+
Future<void> save() async => _settings.save();
204204

205-
void saveTo(String tempSettingsDir) {
205+
Future<void> saveTo(String tempSettingsDir) async {
206206
_settings.filePath = join(tempSettingsDir, defaultSettingsFilename);
207207
// ignore: discarded_futures
208-
waitForEx(_settings.save());
208+
await _settings.save();
209209
}
210210

211211
String resolveApiEndPoint(String command, {String? queryParams}) {
@@ -241,7 +241,7 @@ class OnePubSettings {
241241
// });
242242
// }
243243

244-
static void install({required bool dev}) {
244+
static Future<void> install({required bool dev}) async {
245245
final create = !exists(defaultPathToSettings);
246246
final settings = OnePubSettings._load(create: create);
247247

@@ -251,7 +251,7 @@ class OnePubSettings {
251251
}
252252

253253
if (settings.onepubUrl == null || settings.onepubUrl!.isEmpty || dev) {
254-
settings.config(dev: dev);
254+
await settings.config(dev: dev);
255255

256256
print(orange('Installed OnePub version: $packageVersion.'));
257257
}
@@ -268,23 +268,24 @@ class OnePubSettings {
268268
}
269269

270270
///
271-
void config({required bool dev}) {
272-
promptForConfig(dev: dev);
271+
Future<void> config({required bool dev}) async {
272+
print('Configure OnePub');
273+
274+
await promptForConfig(dev: dev);
273275
}
274276

275277
final testingFlagPath = join(HOME, '.onepubtesting');
276278

277-
void promptForConfig({required bool dev}) {
279+
Future<void> promptForConfig({required bool dev}) async {
278280
var url = OnePubSettings.defaultOnePubUrl;
279281
if (dev) {
280282
print('Configure OnePub');
281283
url = ask('OnePub URL:', validator: UrlValidator(), defaultValue: url);
282284
testingFlagPath.write('onepubtesting');
283285
}
284286

285-
OnePubSettings.use()
286-
..onepubUrl = url
287-
..save();
287+
final settings = OnePubSettings.use()..onepubUrl = url;
288+
await settings.save();
288289
}
289290

290291
/// If the settings are using a non-standard url (e.g. not https;//onepub.dev)

lib/src/util/token_export_file.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@ class TokenExportFile {
3232
late final String pathToExportFile;
3333
late final SettingsYaml settings;
3434

35-
// ignore: discarded_futures
36-
void save() => waitForEx(settings.save());
35+
Future<void> save() async => settings.save();
3736

3837
bool get hasToken => settings.validString(onepubTokenKey);
3938
String get onepubToken => settings.asString(onepubTokenKey);

pubspec.lock

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -189,10 +189,10 @@ packages:
189189
dependency: "direct main"
190190
description:
191191
name: file
192-
sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
192+
sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c"
193193
url: "https://pub.dev"
194194
source: hosted
195-
version: "6.1.4"
195+
version: "7.0.0"
196196
file_utils:
197197
dependency: "direct main"
198198
description:
@@ -201,6 +201,14 @@ packages:
201201
url: "https://pub.dev"
202202
source: hosted
203203
version: "1.0.1"
204+
fixnum:
205+
dependency: transitive
206+
description:
207+
name: fixnum
208+
sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1"
209+
url: "https://pub.dev"
210+
source: hosted
211+
version: "1.1.0"
204212
frontend_server_client:
205213
dependency: "direct main"
206214
description:
@@ -428,8 +436,15 @@ packages:
428436
pubspec2:
429437
dependency: "direct main"
430438
description:
431-
name: pubspec2
432-
sha256: "7b1fd81927f1da6d88457c83b51134e1bc8cb07638bd8d9e205b2ce1cd9ec091"
439+
path: "../../pubspec_manager"
440+
relative: true
441+
source: path
442+
version: "1.0.0-alpha.14"
443+
quiver:
444+
dependency: transitive
445+
description:
446+
name: quiver
447+
sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47
433448
url: "https://pub.dev"
434449
source: hosted
435450
version: "2.4.2"
@@ -461,10 +476,10 @@ packages:
461476
dependency: "direct main"
462477
description:
463478
name: scope
464-
sha256: e0c880d8f0db2ffd2accd63eeb02396748f3b8a2f71bce4b7d3f8dab75fc8a74
479+
sha256: "80cf1cb727791fdaaa4131817974a6084815ed59b9ab02ef352c3a1badea488b"
465480
url: "https://pub.dev"
466481
source: hosted
467-
version: "3.0.0"
482+
version: "4.1.0"
468483
settings_yaml:
469484
dependency: "direct main"
470485
description:

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ dependencies:
5757
pool: 1.5.1
5858
posix: 5.0.0
5959
pub_semver: 2.1.4
60-
pubspec2: 2.4.2
6160
pubspec_lock: ^3.0.2
61+
pubspec_manager: ^1.0.0-alpha.14
6262
quiver: 3.2.1
6363
random_string: 2.3.1
6464
scope: 3.0.0

test/impersonate_user.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ Future<void> impersonateMember({
6060
..operatorEmail = member.email
6161
..onepubUrl = testSettings.onepubUrl
6262
..organisationName = member.organisationName
63-
..obfuscatedOrganisationId = member.obfuscatedOrganisationId
64-
..save();
63+
..obfuscatedOrganisationId = member.obfuscatedOrganisationId;
64+
await settings.save();
6565

6666
// set an alternate location for the token store
6767
await OnePubTokenStore.withPathTo(tempSettingsDir, () async {

test/src/commands/pub/add_dep_test.dart

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ import 'package:onepub/src/api/api.dart';
88
import 'package:onepub/src/entry_point.dart';
99
import 'package:onepub/src/my_runner.dart';
1010
import 'package:path/path.dart' hide equals;
11-
import 'package:pub_semver/pub_semver.dart';
11+
import 'package:pub_semver/pub_semver.dart' as ps;
12+
import 'package:pubspec_manager/pubspec_manager.dart';
1213
import 'package:scope/scope.dart';
1314
import 'package:test/test.dart';
1415

@@ -32,12 +33,16 @@ void main() {
3233

3334
// increment the package 2 version number so we can publish it.
3435
final pathToPackage2Pubspec = dartProject.pathToPubSpec;
35-
final pubspec = PubSpec.fromFile(pathToPackage2Pubspec);
36+
final pubspec = PubSpec.loadFromPath(pathToPackage2Pubspec);
37+
3638
final versions = await API()
3739
.fetchVersions(member.obfuscatedOrganisationId, packageName);
40+
final next = ps.Version.parse(versions.latest.version).nextMinor;
41+
3842
pubspec
39-
..version = Version.parse(versions.latest.version).nextMinor
40-
..save(pathToPackage2Pubspec);
43+
..version = VersionBuilder.parse(next.canonicalizedVersion)
44+
.attach(pubspec)
45+
..saveTo(pathToPackage2Pubspec);
4146

4247
// add new version to change log to stop pub publish complaining.
4348
join(pathToProjectRoot, 'CHANGELOG.md')
@@ -62,16 +67,16 @@ void main() {
6267
member: member,
6368
action: () async {
6469
var pubSpec = dartProject.pubSpec;
65-
expect(pubSpec.dependencies.containsKey('test_packag_2'), isFalse);
70+
expect(pubSpec.dependencies.exists('test_packag_2'), isFalse);
6671

6772
// run onepub add <dep>
6873
final progress = 'dart $pathToOnePubScript pub add test_packag_2'
6974
.start(workingDirectory: dartProject.pathToProjectRoot);
7075
expect(progress.exitCode, equals(0));
7176

7277
// load the updated pubspec
73-
pubSpec = PubSpec.fromFile(dartProject.pathToPubSpec);
74-
expect(pubSpec.dependencies.containsKey('test_packag_2'), isTrue);
78+
pubSpec = PubSpec.loadFromPath(dartProject.pathToPubSpec);
79+
expect(pubSpec.dependencies.exists('test_packag_2'), isTrue);
7580
});
7681
});
7782
});

test/src/commands/pub/private_test.dart

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'package:onepub/src/entry_point.dart';
88
import 'package:onepub/src/my_runner.dart';
99
import 'package:onepub/src/onepub_settings.dart';
1010
import 'package:onepub/src/version/version.g.dart';
11+
import 'package:pubspec_manager/pubspec_manager.dart';
1112
import 'package:scope/scope.dart';
1213
import 'package:test/test.dart';
1314
import 'package:url_builder/url_builder.dart';
@@ -31,7 +32,7 @@ void main() {
3132
action: () async {
3233
final settings = OnePubSettings.use();
3334
final organisationName = settings.organisationName;
34-
expect(dartProject.pubSpec.pubspec.publishTo, isNull);
35+
expect(dartProject.pubSpec.publishTo, isNull);
3536

3637
final size = stat(dartProject.pathToPubSpec).size;
3738

@@ -54,8 +55,8 @@ void main() {
5455
final url = OnePubSettings.use().onepubWebUrl;
5556
expect(clean.contains('See ${urlJoin(url, 'publish')}'), isTrue);
5657

57-
final pubSpec = PubSpec.fromFile(dartProject.pathToPubSpec);
58-
expect(pubSpec.pubspec.publishTo.toString(),
58+
final pubSpec = PubSpec.loadFromPath(dartProject.pathToPubSpec);
59+
expect(pubSpec.publishTo.toString(),
5960
equals(settings.onepubApiUrlAsString));
6061

6162
expect(stat(dartProject.pathToPubSpec).size, greaterThan(size));

0 commit comments

Comments
 (0)