From 9ca18a0368feda2179feedd52c718a4275e0af75 Mon Sep 17 00:00:00 2001 From: 0xFORDCOMMA Date: Sun, 5 Jan 2020 12:37:49 +0100 Subject: [PATCH] Make META6.json updates more declarative with some meta magic. --- META6.json | 2 +- bin/ryov | 37 ++++++++++++++++++++++++++++--------- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/META6.json b/META6.json index ef97948..ebd0b92 100644 --- a/META6.json +++ b/META6.json @@ -14,5 +14,5 @@ "scripts": { "test": "zef test ." }, - "version": "2020.01.04.4" + "version": "2020.01.05" } \ No newline at end of file diff --git a/bin/ryov b/bin/ryov index e24a8ce..eb86ca3 100755 --- a/bin/ryov +++ b/bin/ryov @@ -19,18 +19,37 @@ multi MAIN('bump', Bool :$breaking = False) { meta-dispatch 'bump', :$breaking; } -sub break-meta6($path) { +class X::Ryov::BadUpdate is Exception { + method message() { + "Bad update, both transform and value provided"; + } +} + +sub update-meta6($path, $key, :$transform, :$value) { my %meta6 = $path.slurp.&from-json; - %meta6++; + if $transform.defined and $value.defined { + X::Ryov::BadUpdate.new.throw; + } + if $transform.defined { + %meta6{$key} = $transform(%meta6{$key}); + } + if $value.defined { + %meta6{$key} = $value; + } $path.spurt: to-json %meta6, :sorted-keys; - say "API version bumped to %meta6"; + return %meta6{$key}; +} + +sub break-meta6($path) { + my $res = update-meta6 $path, 'api', transform => { $_ + 1 }; + say "API version bumped to $res"; } sub bump-meta6($path, Bool :$breaking) { - my %meta6 = $path.slurp.&from-json; - my $version = Version::Chronological::Ryov.new: %meta6; - $version.bump: :$breaking; - %meta6 = $version.Str; - $path.spurt: to-json %meta6, :sorted-keys; - say "Bumped to %meta6"; + my $res = update-meta6 $path, + 'version', + transform => { + Version::Chronological::Ryov.new($_).bump(:$breaking).Str + }; + say "Bumped to $res"; } -- 2.38.5