Git Product home page Git Product logo

Comments (1)

jimmymcpeter avatar jimmymcpeter commented on July 17, 2024

In the run_command.pm file, the $command variable is overwritten. You can fix this by changing

sub process_then_block {
    my ($self, $phase, $block, $file, $lang, $strref) = @_;

    die "This plugin should only be used in 'after_save_localized_file' phase (current phase: '$phase')" unless $phase eq 'after_save_localized_file';

    my $outfile = $self->{parent}->{engine}->get_full_output_path($file, $lang);
    ($_, my $outpath, $_) = fileparse($outfile); # this way $outpath will include the trailing delimiter

    foreach my $command (@{$block->{command}}) {
        # substitute %FILE% and target language-based macros
        # with the full path to the saved file
        $command = subst_macros($command, $file, $lang);

        # substitute %OUTFILE% macro with the full path to the saved file
        $command =~ s/%OUTFILE%/$outfile/sg;
        # substitute %OUTPATH% macro with the full directory path
        $command =~ s/%OUTPATH%/$outpath/sg;

        die "After macro substitution, 'command' parameter evaluates to an empty string" if $command eq '';

        print "RUN: $command\n";
        system($command);

        my $error_code = unpack 'c', pack 'C', $? >> 8; # error code
        die "Exit code: $error_code\n" if $error_code != 0;
    }

    return (shift @_)->SUPER::process_then_block(@_);
}

to

sub process_then_block {
    my ($self, $phase, $block, $file, $lang, $strref) = @_;

    die "This plugin should only be used in 'after_save_localized_file' phase (current phase: '$phase')" unless $phase eq 'after_save_localized_file';

    my $outfile = $self->{parent}->{engine}->get_full_output_path($file, $lang);
    ($_, my $outpath, $_) = fileparse($outfile); # this way $outpath will include the trailing delimiter

    foreach my $command (@{$block->{command}}) {
        # substitute %FILE% and target language-based macros
        # with the full path to the saved file
        my $runcmd = subst_macros($command, $file, $lang);

        # substitute %OUTFILE% macro with the full path to the saved file
        $runcmd =~ s/%OUTFILE%/$outfile/sg;
        # substitute %OUTPATH% macro with the full directory path
        $runcmd =~ s/%OUTPATH%/$outpath/sg;

        die "After macro substitution, 'command' parameter evaluates to an empty string" if $runcmd eq '';

        print "RUN: $runcmd\n";
        system($runcmd);

        my $error_code = unpack 'c', pack 'C', $? >> 8; # error code
        die "Exit code: $error_code\n" if $error_code != 0;
    }

    return (shift @_)->SUPER::process_then_block(@_);
}

from serge.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.