-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathversion-sync
executable file
·48 lines (37 loc) · 1.08 KB
/
version-sync
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/usr/bin/perl
# Syncs manifest.json version with the package.json version.
use warnings;
use strict;
use utf8;
use JSON;
sub decodeFile {
my ($filename) = @_;
open my $fh, '<', $filename or die "Failed to open $filename";
my $jsonText = do { local $/; <$fh> };
my $json = JSON->new;
my $decoded = $json->decode($jsonText);
close $fh;
return $decoded;
}
sub readPackageVersion {
my $decoded = decodeFile('package.json');
return $decoded->{'version'};
}
sub setManifestVersion {
my ($version) = @_;
my $manifestFilename = 'manifest.json';
my $decoded = decodeFile($manifestFilename);
$decoded->{'version'} = $version;
my %result;
foreach my $key (sort keys %{$decoded}) {
$result{$key} = $decoded->{$key};
}
my $json = JSON->new;
open my $fh, '>:encoding(UTF-8)', $manifestFilename or die "Could not open file $manifestFilename";
truncate $fh, 0;
seek $fh, 0, 0;
print $fh $json->canonical->pretty(1)->encode(\%result);
close $fh;
}
my $version = readPackageVersion;
setManifestVersion($version);