class Fastlane::Actions::RunClangFormatAction

Public Class Methods

authors() click to toggle source
# File lib/fastlane/plugin/clang_format/actions/run_clang_format.rb, line 76
def self.authors
  ["Marcin Stepnowski"]
end
available_options() click to toggle source
# File lib/fastlane/plugin/clang_format/actions/run_clang_format.rb, line 41
def self.available_options
  [
    FastlaneCore::ConfigItem.new(key: :script_path,
                                 env_name: 'FL_RUN_CLANG_FORMAT_SCRIPT_PATH',
                                 description: 'Optional, you must specify the path to run-clang-format.py if it is not in the project root directory',
                                 optional: true,
                                 type: String),
    FastlaneCore::ConfigItem.new(key: :extensions,
                                 env_name: 'FL_RUN_CLANG_FORMAT_EXTENSIONS',
                                 description: 'Comma separated list of file extensions (default: c,h,C,H,cpp,hpp,cc,hh,c++,h++,cxx,hxx)',
                                 optional: true,
                                 type: String),
    FastlaneCore::ConfigItem.new(key: :recursive,
                                 env_name: 'FL_RUN_CLANG_FORMAT_RECURSIVE',
                                 description: 'Run recursively over directories',
                                 optional: true,
                                 default_value: true,
                                 type: Boolean),
    FastlaneCore::ConfigItem.new(key: :paths,
                                 env_name: 'FL_RUN_CLANG_FORMAT_PATHS',
                                 description: 'Array of path to check formatting',
                                 optional: false,
                                 type: Array),
    FastlaneCore::ConfigItem.new(key: :executable,
                                 env_name: 'FL_RUN_CLANG_FORMAT_EXECUTABLE',
                                 description: 'Path to the clang-format executable',
                                 optional: false,
                                 type: String)
  ]
end
description() click to toggle source
# File lib/fastlane/plugin/clang_format/actions/run_clang_format.rb, line 28
def self.description
  'Run clang format python script: https://github.com/Sarcasm/run-clang-format'
end
details() click to toggle source
# File lib/fastlane/plugin/clang_format/actions/run_clang_format.rb, line 32
def self.details
  [
    'A wrapper script around clang-format, suitable for linting multiple files and',
    'to use for continuous integration. This is an alternative API for the clang-format',
    'command line. It runs over multiple files and directories in parallel.',
    'A diff output is produced and a sensible exit code is returned.'
  ].join(' ')
end
is_supported?(_platform) click to toggle source
# File lib/fastlane/plugin/clang_format/actions/run_clang_format.rb, line 72
def self.is_supported?(_platform)
  true
end
run(params) click to toggle source
# File lib/fastlane/plugin/clang_format/actions/run_clang_format.rb, line 6
def self.run(params)
  script_path = params[:script_path]
  script_path ||= Dir['run-clang-format.py'].first
  UI.user_error!('run-clang-format.py not found, add file or pass path to it') if script_path.to_s.empty?

  cmd = []
  cmd << script_path
  extensions = params[:extensions]
  cmd << "--extensions" if extensions
  cmd << extensions if extensions
  clang_format_executable = params[:executable]
  cmd << "--clang-format-executable" if clang_format_executable
  cmd << clang_format_executable if clang_format_executable
  cmd << '-r' if params[:recursive]
  paths = params[:paths]
  Array(paths).each do |path|
    cmd << path
  end
  Actions.sh(Shellwords.join(cmd))
  UI.success('Everything is formatted correctly, all good! 💪')
end