github.com/muhammedhassanm/blockchain@v0.0.0-20200120143007-697261defd4d/sawtooth-core-master/bin/run_lint (about)

     1  #!/bin/bash
     2  #
     3  # Copyright 2016 Intel Corporation
     4  #
     5  # Licensed under the Apache License, Version 2.0 (the "License");
     6  # you may not use this file except in compliance with the License.
     7  # You may obtain a copy of the License at
     8  #
     9  #     http://www.apache.org/licenses/LICENSE-2.0
    10  #
    11  # Unless required by applicable law or agreed to in writing, software
    12  # distributed under the License is distributed on an "AS IS" BASIS,
    13  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14  # See the License for the specific language governing permissions and
    15  # limitations under the License.
    16  # ------------------------------------------------------------------------------
    17  
    18  set -e
    19  
    20  find_packages() {
    21      topdir=$1
    22      since=$2
    23  
    24      (
    25      if [ "$since" != "" ]; then
    26          git ls-files -mo "$topdir/*.py" -x build
    27          git diff --name-only $since "$topdir/*.py"
    28      else
    29          find $topdir -name \*.py
    30      fi
    31      ) \
    32          | sort \
    33          | uniq \
    34          | git check-ignore --stdin --non-matching --verbose \
    35          | grep ^:: \
    36          | sed -e 's/^::\s//' \
    37          | grep -v /setup.py$ \
    38          | grep -v /setup_tests.py$ \
    39          | grep -v _pb2\.py$ \
    40          | grep -v poet_enclave\.py$
    41  }
    42  
    43  lint() {
    44      top_dir=$(cd $(dirname $(dirname $0)) && pwd)
    45      cd $top_dir
    46      subdir=$1
    47      since=$2
    48  
    49      pylintrc=.pylintrc
    50      pylint_bin="python3 -m pylint"
    51  
    52      error=0
    53  
    54      packages=$(find_packages "$subdir" "$since")
    55  
    56      if [ "$packages" != "" ]; then
    57          [ $VERBOSE = 0 ] && echo "$subdir"
    58  
    59          [ $VERBOSE = 0 ] && echo "-- pycodestyle"
    60  
    61          [ $VERBOSE = 1 ] && (
    62              echo "------------------------------------------------------------------------------"
    63              echo "-- Running pycodestyle in $subdir..."
    64          )
    65  
    66          pycodestyle --config=$top_dir/.pycodestyle $packages || error=1
    67  
    68          [ $VERBOSE = 0 ] && echo "-- pylint"
    69  
    70          [ $VERBOSE = 1 ] && (
    71              echo "------------------------------------------------------------------------------"
    72              echo "-- Running $pylint_bin $pylintrc in $subdir..."
    73          )
    74  
    75          $pylint_bin \
    76              --rcfile=$pylintrc \
    77              --reports=no \
    78              --score=no \
    79              --persistent=no \
    80              $packages || error=1
    81  
    82  
    83          [ $VERBOSE = 1 ] && (
    84              echo "------------------------------------------------------------------------------"
    85              echo "-- Checking for CRLF in $subdir..."
    86          )
    87  
    88          file $packages | grep CRLF && error=1
    89  
    90      else
    91          [ $VERBOSE = 1 ] && (
    92              echo "------------------------------------------------------------------------------"
    93              echo "-- Skipping pep8 and pylint $pylintrc in $subdir. (Nothing to do.)"
    94          )
    95      fi
    96  
    97      return $error
    98  }
    99  
   100  usage() {
   101      echo "Usage:"
   102      echo "  $0 [-s BRANCH] [-n] [-h]"
   103      echo
   104      echo "Options:"
   105      echo "  -h          print usage and exit"
   106      echo "  -n          dry-run, only prints files that would be linted"
   107      echo "  -s BRANCH   only lint files changed since BRANCH"
   108      echo "  -v          increase verbosity"
   109  }
   110  
   111  
   112  DRY_RUN=0
   113  VERBOSE=0
   114  SINCE=""
   115  while getopts :s:nhv opt
   116  do
   117      case $opt in
   118        h)
   119          usage
   120          exit 0
   121          ;;
   122        n)
   123          DRY_RUN=1
   124          ;;
   125        s)
   126          SINCE=$OPTARG
   127          ;;
   128        v)
   129          if [ "$VERBOSE" = "1" ]; then
   130              set -x
   131          fi
   132          VERBOSE=1
   133          ;;
   134        \?)
   135          echo "Invalid option: -$OPTARG" >&2
   136          exit 2
   137          ;;
   138      esac
   139  done
   140  
   141  echo "pycodestyle $(pycodestyle --version)"
   142  echo "$(pylint --version)"
   143  
   144  if [ "$DRY_RUN" = "1" ]; then
   145      for dir in signing validator sdk/python sdk/examples/intkey_python \
   146          consensus/poet/cli consensus/poet/common consensus/poet/core \
   147          consensus/poet/families consensus/poet/sgx consensus/poet/simulator
   148      do
   149          for package in $(find_packages "$dir" "$SINCE")
   150          do
   151              echo $package
   152          done
   153      done
   154      exit 0
   155  fi
   156  
   157  
   158  top_dir=$(cd $(dirname $(dirname $0)) && pwd)
   159  retval=0
   160  
   161  # Modules should be ranked in decreasing likelihood of having lint
   162  # errors. It would be nice if there was a more convenient way of
   163  # organizing these.
   164  
   165  # validator
   166  PYTHONPATH=$top_dir/signing
   167  PYTHONPATH=$PYTHONPATH:$top_dir/validator
   168  export PYTHONPATH
   169  lint validator "$SINCE" || retval=1
   170  
   171  # integration
   172  PYTHONPATH=$PYTHONPATH:$top_dir/signing
   173  PYTHONPATH=$PYTHONPATH:$top_dir/cli
   174  PYTHONPATH=$PYTHONPATH:$top_dir/validator
   175  PYTHONPATH=$PYTHONPATH:$top_dir/integration
   176  PYTHONPATH=$PYTHONPATH:$top_dir/sdk/python
   177  PYTHONPATH=$PYTHONPATH:$top_dir/sdk/examples/intkey_python
   178  PYTHONPATH=$PYTHONPATH:$top_dir/families/block_info
   179  export PYTHONPATH
   180  lint integration "$SINCE" || retval=1
   181  
   182  # cli
   183  PYTHONPATH=$top_dir/cli
   184  PYTHONPATH=$PYTHONPATH:$top_dir/signing
   185  export PYTHONPATH
   186  lint cli "$SINCE" || retval=1
   187  
   188  # signing
   189  PYTHONPATH=$top_dir/signing
   190  export PYTHONPATH
   191  lint signing "$SINCE" || retval=1
   192  
   193  # sdk, rest api, xo, intkey
   194  PYTHONPATH=$top_dir/sdk/python
   195  PYTHONPATH=$PYTHONPATH:$top_dir/sdk/examples/intkey_python
   196  PYTHONPATH=$PYTHONPATH:$top_dir/sdk/examples/xo_python
   197  PYTHONPATH=$PYTHONPATH:$top_dir/signing
   198  PYTHONPATH=$PYTHONPATH:$top_dir/cli
   199  export PYTHONPATH
   200  lint sdk/python "$SINCE" || retval=1
   201  lint sdk/examples/intkey_python "$SINCE" || retval=1
   202  lint sdk/examples/xo_python "$SINCE" || retval=1
   203  lint rest_api "$SINCE" || retval=1
   204  
   205  # settings, identity
   206  PYTHONPATH=$top_dir/families/settings
   207  PYTHONPATH=$top_dir/families/identity
   208  PYTHONPATH=$top_dir/families/block_info
   209  PYTHONPATH=$PYTHONPATH:$top_dir/signing
   210  PYTHONPATH=$PYTHONPATH:$top_dir/sdk/python
   211  export PYTHONPATH
   212  lint families/settings "$SINCE" || retval=1
   213  lint families/identity "$SINCE" || retval=1
   214  
   215  # battleship
   216  PYTHONPATH=$top_dir/families/battleship
   217  PYTHONPATH=$PYTHONPATH:$top_dir/signing
   218  PYTHONPATH=$PYTHONPATH:$top_dir/sdk/python
   219  PYTHONPATH=$PYTHONPATH:$top_dir/validator
   220  export PYTHONPATH
   221  lint families/battleship "$SINCE" || retval=1
   222  
   223  # block info
   224  PYTHONPATH=$top_dir/families/block_info
   225  PYTHONPATH=$PYTHONPATH:$top_dir/signing
   226  PYTHONPATH=$PYTHONPATH:$top_dir/sdk/python
   227  PYTHONPATH=$PYTHONPATH:$top_dir/validator
   228  export PYTHONPATH
   229  lint families/block_info "$SINCE" || retval=1
   230  
   231  # poet
   232  PYTHONPATH=$top_dir/consensus/poet/common
   233  PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/common/tests
   234  export PYTHONPATH
   235  lint consensus/poet/common "$SINCE" || retval=1
   236  
   237  PYTHONPATH=$top_dir/signing
   238  PYTHONPATH=$PYTHONPATH:$top_dir/validator
   239  PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/common
   240  PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/core
   241  PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/core/tests
   242  PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/simulator
   243  export PYTHONPATH
   244  lint consensus/poet/core "$SINCE" || retval=1
   245  
   246  PYTHONPATH=$top_dir/sdk/python
   247  PYTHONPATH=$PYTHONPATH:$top_dir/signing
   248  PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/common
   249  PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/families
   250  PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/families/tests
   251  export PYTHONPATH
   252  lint consensus/poet/families "$SINCE" || retval=1
   253  
   254  PYTHONPATH=$top_dir/signing
   255  PYTHONPATH=$PYTHONPATH:$top_dir/validator
   256  PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/common
   257  PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/sgx
   258  PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/sgx/tests
   259  export PYTHONPATH
   260  lint consensus/poet/sgx "$SINCE" || retval=1
   261  
   262  PYTHONPATH=$top_dir/signing
   263  PYTHONPATH=$PYTHONPATH:$top_dir/validator
   264  PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/common
   265  PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/simulator
   266  PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/simulator/tests
   267  export PYTHONPATH
   268  lint consensus/poet/simulator "$SINCE" || retval=1
   269  
   270  PYTHONPATH=$top_dir/consensus/poet/cli
   271  PYTHONPATH=$PYTHONPATH:$top_dir/signing
   272  PYTHONPATH=$PYTHONPATH:$top_dir/validator
   273  PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/common
   274  PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/core
   275  export PYTHONPATH
   276  lint consensus/poet/cli "$SINCE" || retval=1
   277  
   278  # utility
   279  PYTHONPATH=$PYTHONPATH:$top_dir/signing
   280  PYTHONPATH=$PYTHONPATH:$top_dir/utility/ias_proxy
   281  PYTHONPATH=$PYTHONPATH:$top_dir/utility/ias_proxy/tests
   282  PYTHONPATH=$PYTHONPATH:$top_dir/utility/ias_client
   283  PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/common
   284  PYTHONPATH=$PYTHONPATH:$top_dir/consensus/poet/sgx
   285  PYTHONPATH=$PYTHONPATH:$top_dir/sdk/python
   286  export PYTHONPATH
   287  lint utility/ias_proxy "$SINCE" || retval=1
   288  
   289  PYTHONPATH=$PYTHONPATH:$top_dir/signing
   290  PYTHONPATH=$PYTHONPATH:$top_dir/utility/ias_client
   291  PYTHONPATH=$PYTHONPATH:$top_dir/utility/ias_client/tests
   292  export PYTHONPATH
   293  lint utility/ias_client "$SINCE" || retval=1
   294  
   295  exit $retval