Page MenuHomePhabricator

Modify `.arclint` file format to be INI instead of JSON.
AbandonedPublic

Authored by joshuaspence on May 6 2014, 10:28 PM.
Tags
None
Referenced Files
F14116958: D8999.diff
Thu, Nov 28, 5:02 PM
Unknown Object (File)
Wed, Nov 27, 7:59 PM
Unknown Object (File)
Tue, Nov 26, 1:07 PM
Unknown Object (File)
Mon, Nov 25, 4:42 PM
Unknown Object (File)
Sun, Nov 24, 10:01 PM
Unknown Object (File)
Thu, Nov 21, 5:04 PM
Unknown Object (File)
Wed, Nov 20, 7:07 PM
Unknown Object (File)
Sat, Nov 16, 7:18 PM

Details

Reviewers
epriestley
Group Reviewers
Blessed Reviewers
Maniphest Tasks
Restricted Maniphest Task
Summary

Ref T2039.

Modify the .arclint file format to be INI instead of JSON. In addition, modify the .arclint paths to be a glob rather than a regular expression. These changes generally make the .arclint format much easier to use.

Note that these changes would break backwards compatibility, which we could fix by either:

  1. Attemping to parse the file as JSON if it is not a valid INI.
  2. Creating a new ArcanistLintEngine that understands INI files and leaving the existing ArcanistConfigurationDrivenLintEngine as is.
Test Plan

This isn't quite ready to land, but I wanted to get some initial feedback.

Diff Detail

Repository
rARC Arcanist
Branch
arclint
Lint
Lint Errors
SeverityLocationCodeMessage
Errorsrc/lint/engine/ArcanistConfigurationDrivenLintEngine.php:82XHP31Use Of PHP 5.3 Features
Unit
No Test Coverage
Build Status
Buildable 279
Build 279: [Placeholder Plan] Wait for 30 Seconds

Event Timeline

joshuaspence retitled this revision from to Modify `.arclint` file format to be INI instead of JSON..
joshuaspence updated this object.
joshuaspence edited the test plan for this revision. (Show Details)
joshuaspence added a reviewer: epriestley.
joshuaspence added a task: Restricted Maniphest Task.

Ok, it seems that parse_ini_string requires PHP 5.3.0, but parse_ini_file is fine.

joshuaspence edited edge metadata.

Use parse_ini_file instead of parse_ini_string to ensure compatibility with PHP 5.2.3

I'm pretty happy with the JSON file: I think it's a format pretty much everyone is familiar with (for example, I know all the escaping rules for JSON files), it gives us a way to validate the structure of the file as a whole, and it's consistent with other configuration in arc and Phabricator which is mostly all JSON. It's also easier in most languages to write a tool to generate or curate JSON than .ini.

I think regexps are better too -- they're more powerful, and we generally use them elsewhere. They also give us broader latitude to solve weird support problems by crafting a zany regex instead of having to introduce more complexity elsewhere.

Overall I'd say this just feels premature? Let's wait until users have issues with JSON and/or regexps. If they do, we could swap the formats or allow both.

In both work and personal projects, I prefer JSON over INI for this kind of configuration. It's more flexible and standard, not to mention JSON can be written out in almost any language (whereas INI semantics is not necessarily as widely supported).

Also, regexps is absolutely essential for matching paths correctly.