Update a configuration file: Difference between revisions
Content added Content deleted
(Added Kotlin) |
Thundergnat (talk | contribs) (→{{header|Perl 6}}: Update broken example. use a module for tempfile, explicitly close file) |
||
Line 2,489: | Line 2,489: | ||
The script: |
The script: |
||
<lang perl6> |
<lang perl6>use File::Temp; |
||
my $tmpfile = |
my ($tmpfile, $out) = tempfile; |
||
sub MAIN ($file, *%changes) { |
sub MAIN ($file, *%changes) { |
||
%changes.=map({; .key.uc => .value }); |
%changes.=map({; .key.uc => .value }); |
||
my %seen; |
my %seen; |
||
⚫ | |||
for $file.IO.lines { |
for $file.IO.lines { |
||
when /:s ^ ('#' .* | '') $/ { |
when /:s ^ ('#' .* | '') $/ { |
||
Line 2,514: | Line 2,512: | ||
} |
} |
||
} |
} |
||
say $out: format-line .key, |(.value ~~ Bool ?? (Nil, .value) !! (.value, True)) |
say $out: format-line .key, |(.value ~~ Bool ?? (Nil, .value) !! (.value, True)) |
||
for %changes; |
for %changes; |
||
move $tmpfile, $file; |
|||
⚫ | |||
$out.close; |
|||
END { unlink $tmpfile if $tmpfile.IO.e } |
|||
⚫ | |||
⚫ | |||
sub format-line ($key, $value, $enabled) { |
sub format-line ($key, $value, $enabled) { |
||
("; " if !$enabled) ~ $key.uc ~ (" $value" if defined $value); |
("; " if !$enabled) ~ $key.uc ~ (" $value" if defined $value); |
||
} |
|||
sub tmpfile { |
|||
$*SPEC.catfile: $*SPEC.tmpdir, ("a".."z").roll(20).join |
|||
}</lang> |
}</lang> |
||