how to refactor bash script with duplicates












0












$begingroup$


I have a working bash script, but I have many duplicates on the "CURL" body...



if ! npm test
then
# Tell the human about the failure, if the npm output wasn't enough
echo >&2 "Testing failed"
curl -X POST -H 'Content-type: application/json' --data '{"text":"Tests failed for Platform: '"$PLATFORM"'nEnvironment: '"$ENVIRONMENT"'"}' https://hooks.slack.com/services/rr/qq/pp

# Exit and tell computers about the failure (0 = success, 1+ = failure)
echo "A test Failed"
exit 1

else

echo "Tests passed"
curl -X POST -H 'Content-type: application/json' --data '{"text":"Tests passed for Platform: '"$PLATFORM"'nEnvironment: '"$ENVIRONMENT"'"}' https://hooks.slack.com/services/rr/qq/pp

fi









share|improve this question











$endgroup$

















    0












    $begingroup$


    I have a working bash script, but I have many duplicates on the "CURL" body...



    if ! npm test
    then
    # Tell the human about the failure, if the npm output wasn't enough
    echo >&2 "Testing failed"
    curl -X POST -H 'Content-type: application/json' --data '{"text":"Tests failed for Platform: '"$PLATFORM"'nEnvironment: '"$ENVIRONMENT"'"}' https://hooks.slack.com/services/rr/qq/pp

    # Exit and tell computers about the failure (0 = success, 1+ = failure)
    echo "A test Failed"
    exit 1

    else

    echo "Tests passed"
    curl -X POST -H 'Content-type: application/json' --data '{"text":"Tests passed for Platform: '"$PLATFORM"'nEnvironment: '"$ENVIRONMENT"'"}' https://hooks.slack.com/services/rr/qq/pp

    fi









    share|improve this question











    $endgroup$















      0












      0








      0





      $begingroup$


      I have a working bash script, but I have many duplicates on the "CURL" body...



      if ! npm test
      then
      # Tell the human about the failure, if the npm output wasn't enough
      echo >&2 "Testing failed"
      curl -X POST -H 'Content-type: application/json' --data '{"text":"Tests failed for Platform: '"$PLATFORM"'nEnvironment: '"$ENVIRONMENT"'"}' https://hooks.slack.com/services/rr/qq/pp

      # Exit and tell computers about the failure (0 = success, 1+ = failure)
      echo "A test Failed"
      exit 1

      else

      echo "Tests passed"
      curl -X POST -H 'Content-type: application/json' --data '{"text":"Tests passed for Platform: '"$PLATFORM"'nEnvironment: '"$ENVIRONMENT"'"}' https://hooks.slack.com/services/rr/qq/pp

      fi









      share|improve this question











      $endgroup$




      I have a working bash script, but I have many duplicates on the "CURL" body...



      if ! npm test
      then
      # Tell the human about the failure, if the npm output wasn't enough
      echo >&2 "Testing failed"
      curl -X POST -H 'Content-type: application/json' --data '{"text":"Tests failed for Platform: '"$PLATFORM"'nEnvironment: '"$ENVIRONMENT"'"}' https://hooks.slack.com/services/rr/qq/pp

      # Exit and tell computers about the failure (0 = success, 1+ = failure)
      echo "A test Failed"
      exit 1

      else

      echo "Tests passed"
      curl -X POST -H 'Content-type: application/json' --data '{"text":"Tests passed for Platform: '"$PLATFORM"'nEnvironment: '"$ENVIRONMENT"'"}' https://hooks.slack.com/services/rr/qq/pp

      fi






      bash






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 6 mins ago







      MaKo

















      asked 14 mins ago









      MaKoMaKo

      225213




      225213






















          1 Answer
          1






          active

          oldest

          votes


















          1












          $begingroup$

          Use a function with a parameter for the variable part to eliminate duplication:



          post_report() {
          local result=$1
          curl -X POST -H 'Content-type: application/json'
          --data '{"text":"Tests '"$result"' for Platform: '"$PLATFORM"'nEnvironment: '"$ENVIRONMENT"'"}'
          https://hooks.slack.com/services/rr/qq/pp
          }

          if ! npm test
          then
          echo >&2 "Testing failed"
          post_report failed
          exit 1
          else
          echo "Tests passed"
          post_report passed
          fi




          share









          $endgroup$













            Your Answer





            StackExchange.ifUsing("editor", function () {
            return StackExchange.using("mathjaxEditing", function () {
            StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
            StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
            });
            });
            }, "mathjax-editing");

            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "196"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: false,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: null,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f214441%2fhow-to-refactor-bash-script-with-duplicates%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            1












            $begingroup$

            Use a function with a parameter for the variable part to eliminate duplication:



            post_report() {
            local result=$1
            curl -X POST -H 'Content-type: application/json'
            --data '{"text":"Tests '"$result"' for Platform: '"$PLATFORM"'nEnvironment: '"$ENVIRONMENT"'"}'
            https://hooks.slack.com/services/rr/qq/pp
            }

            if ! npm test
            then
            echo >&2 "Testing failed"
            post_report failed
            exit 1
            else
            echo "Tests passed"
            post_report passed
            fi




            share









            $endgroup$


















              1












              $begingroup$

              Use a function with a parameter for the variable part to eliminate duplication:



              post_report() {
              local result=$1
              curl -X POST -H 'Content-type: application/json'
              --data '{"text":"Tests '"$result"' for Platform: '"$PLATFORM"'nEnvironment: '"$ENVIRONMENT"'"}'
              https://hooks.slack.com/services/rr/qq/pp
              }

              if ! npm test
              then
              echo >&2 "Testing failed"
              post_report failed
              exit 1
              else
              echo "Tests passed"
              post_report passed
              fi




              share









              $endgroup$
















                1












                1








                1





                $begingroup$

                Use a function with a parameter for the variable part to eliminate duplication:



                post_report() {
                local result=$1
                curl -X POST -H 'Content-type: application/json'
                --data '{"text":"Tests '"$result"' for Platform: '"$PLATFORM"'nEnvironment: '"$ENVIRONMENT"'"}'
                https://hooks.slack.com/services/rr/qq/pp
                }

                if ! npm test
                then
                echo >&2 "Testing failed"
                post_report failed
                exit 1
                else
                echo "Tests passed"
                post_report passed
                fi




                share









                $endgroup$



                Use a function with a parameter for the variable part to eliminate duplication:



                post_report() {
                local result=$1
                curl -X POST -H 'Content-type: application/json'
                --data '{"text":"Tests '"$result"' for Platform: '"$PLATFORM"'nEnvironment: '"$ENVIRONMENT"'"}'
                https://hooks.slack.com/services/rr/qq/pp
                }

                if ! npm test
                then
                echo >&2 "Testing failed"
                post_report failed
                exit 1
                else
                echo "Tests passed"
                post_report passed
                fi





                share











                share


                share










                answered 6 mins ago









                janosjanos

                98k12125350




                98k12125350






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Code Review Stack Exchange!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    Use MathJax to format equations. MathJax reference.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f214441%2fhow-to-refactor-bash-script-with-duplicates%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Create new schema in PostgreSQL using DBeaver

                    Deepest pit of an array with Javascript: test on Codility

                    Costa Masnaga