<?xml version="1.0"?>
<ruleset name="GTM Kit">

	<description>A custom set of rules to check for the GTM Kit project</description>

	<!--
	#############################################################################
	COMMAND LINE ARGUMENTS
	https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-Ruleset
	#############################################################################
	-->

	<file>.</file>

	<!-- Exclude the Composer Vendor directory. -->
	<exclude-pattern>/vendor/*</exclude-pattern>

	<!-- Exclude the Node Modules directory. -->
	<exclude-pattern>/node_modules/*</exclude-pattern>

	<!-- Exclude the Build directory. -->
	<exclude-pattern>/build/*</exclude-pattern>

	<!-- Exclude the Assets directory. -->
	<exclude-pattern>/assets/*</exclude-pattern>

	<!-- Exclude the Bundles zip directory. -->
	<exclude-pattern>/bundled/*</exclude-pattern>

	<!-- Strip the file paths down to the relevant bit. -->
	<arg name="basepath" value="."/>

	<!-- Check up to 8 files simultaneously. -->
	<arg name="parallel" value="8"/>

	<!-- Limit to PHP. -->
	<arg name="extensions" value="php"/>

	<arg value="ps"/>


	<!--
	#############################################################################
	SET UP THE RULES
	#############################################################################
	-->

	<!-- Include the WordPress-Extra standard. -->
	<rule ref="WordPress-Extra">
		<!--
		We may want a middle ground though. The best way to do this is adding the
		entire ruleset, then rule by rule, remove ones that don't suit a project.
		We can do this by running `phpcs` with the '-s' flag, which allows us to
		see the names of the sniffs reporting errors.
		Once we know the sniff names, we can opt to exclude sniffs which don't
		suit our project like so.
		-->
		<exclude name="Universal.Arrays.DisallowShortArraySyntax.Found"/>
		<exclude name="WordPress.Files.FileName.NotHyphenatedLowercase"/>
		<exclude name="WordPress.Files.FileName.InvalidClassFileName"/>
		<exclude name="WordPress.PHP.YodaConditions.NotYoda"/>
	</rule>

	<!-- Let's also check that everything is properly documented. -->
	<rule ref="WordPress-Docs"/>

	<!-- Add in some extra rules from other standards. -->
	<rule ref="Generic.Commenting.Todo"/>

	<!-- Check for PHP cross-version compatibility. -->
	<config name="testVersion" value="7.4-"/>
	<rule ref="PHPCompatibilityWP">
		<include-pattern>*\.php</include-pattern>
	</rule>


	<!--
	#############################################################################
	SNIFF SPECIFIC CONFIGURATION
	#############################################################################
	-->

	<!--
	To get the optimal benefits of using WordPressCS, we should add a couple of
	custom properties.
	Adjust the values of these properties to fit our needs.

	For information on additional custom properties available, check out
	the wiki:
	https://github.com/WordPress/WordPress-Coding-Standards/wiki/Customizable-sniff-properties
	-->
	<config name="minimum_wp_version" value="6.1"/>

	<rule ref="WordPress.WP.I18n">
		<properties>
			<property name="text_domain" type="array">
				<element value="gtm-kit"/>
			</property>
		</properties>
	</rule>

	<!---
	<rule ref="WordPress.NamingConventions.PrefixAllGlobals">
		<properties>
			<property name="prefixes" type="array">
				<element value="my_prefix"/>
			</property>
		</properties>
	</rule>
	-->


	<!--
	#############################################################################
	SELECTIVE EXCLUSIONS
	Exclude specific files for specific sniffs and/or exclude sub-groups in sniffs.
	#############################################################################
	-->

	<!--
	Sometimes, you may want to exclude a certain directory, like your tests,
	for select sniffs.
	The below examples demonstrate how to do this.

	In the example, the `GlobalVariablesOverride` rule is excluded for test files
	as it is sometimes necessary to overwrite WP globals in test situations (just
	don't forget to restore them after the test!).

	Along the same lines, PHPUnit is getting stricter about using PSR-4 file names,
	so excluding test files from the `WordPress.Files.Filename` sniff can be a
	legitimate exclusion.

	For more information on ruleset configuration options, check out the PHPCS wiki:
	https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-Ruleset
	-->
	<!--
	<rule ref="WordPress.WP.GlobalVariablesOverride">
		<exclude-pattern>/path/to/Tests/*Test\.php</exclude-pattern>
	</rule>
	-->


</ruleset>

