summaryrefslogtreecommitdiff
path: root/lib/gitano/patterns.lua
blob: ede4541295f52987118f9645dfd9bf7793b19874 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
-- gitano.patterns
--
-- Internal centralised pattern definitions. Not stable ABI.
--
-- Copyright 2017 Richard Maw <richard.maw@gmail.com>
-- All rights reserved.
--
-- Redistribution and use in source and binary forms, with or without
-- modification, are permitted provided that the following conditions
-- are met:
-- 1. Redistributions of source code must retain the above copyright
--    notice, this list of conditions and the following disclaimer.
-- 2. Redistributions in binary form must reproduce the above copyright
--    notice, this list of conditions and the following disclaimer in the
--    documentation and/or other materials provided with the distribution.
-- 3. Neither the name of the author nor the names of their contributors
--    may be used to endorse or promote products derived from this software
--    without specific prior written permission.
--
-- THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-- ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-- SUCH DAMAGE.
--

local _NICE_NAME = "[a-z][a-z0-9_.-]+"
local _STARTS_DOT = "^%."
local _ENDS_DOTSTAR = "%.%*$"
local _HEX40 = string.rep("[0-9A-Fa-f]", 40)

local TEXT_LINE = "([^\n]*)\n"

local DOTFILE = _STARTS_DOT

local VALID_USERNAME = "^" .. _NICE_NAME .. "$"
local VALID_SSHKEYNAME = "^" .. _NICE_NAME .. "$"
local USER_INFO_PREFIX = "^(users/.-)(".. _NICE_NAME .. ")/"
local USER_CONF_MATCH = USER_INFO_PREFIX .. "user%.conf$"
local USER_KEY_MATCH = USER_INFO_PREFIX .. "(" .. _NICE_NAME .. ")%.key$"

local SSH_KEY_CONTENTS = "^([^ ]+) ([^ ]+) ([^ ].*)$"

local VALID_GROUPNAME = "^" .. _NICE_NAME .. "$"
local GROUP_INFO_PREFIX = "^(groups/.-)(".. _NICE_NAME .. ")"
local GROUP_CONF_MATCH = GROUP_INFO_PREFIX .. "%.conf$"

local VALID_KEY_FINGERPRINT = "^" .. _HEX40 .. "$"
local VALID_KEYRING_NAME = "^" .. _NICE_NAME .. "$"
local KEYRING_INFO_PREFIX = "^(keyrings/.-)(".. _NICE_NAME .. ")"
local KEYRING_MATCH = KEYRING_INFO_PREFIX .. "%.gpg$"

local GPG_OUTPUT_FINGERPRINT_MATCH = "fpr:::::::::([0-9A-F]+):"

local HTTP_RESPONSE = "^HTTP/1.[01] (...) ?([^\r\n]+)\r?\n(.-)\r?\n\r?\n(.*)$"
local HTTP_HEADER = "([^:\r\n]+): *([^\r\n]+)"

local CONF_ENDS_WILDCARD = _ENDS_DOTSTAR
local CONF_WILDCARD = "^(.+)" .. CONF_ENDS_WILDCARD
local CONF_ARRAY_INDEX = "^(.+)%.i_[0-9]+$"
local CONF_SET_TYPE_PREFIX = "^([sbi]):(.*)$"

local GIT_REPO_SUFFIX = "%.git$"
local GIT_REPO_NAME_MATCH = "^(.+)" .. GIT_REPO_SUFFIX

local LACE_GLOBAL_DEFINITION = "^global:(.+)$"

local PLUGIN_NAME = "^([^_]+)%.lua$"

local REF_IS_NORMALISED = "^refs/"

local PARSE_TIME_AND_TZOFFSET = "^([0-9]+) ([+-][0-9]+)$"

local SUPPLE_MODULE_LOAD_MATCH = "^([^%.]+)%.(.+)$"

local GITHOOK_PARSE_CHANGESET = "([^ ]+) ([^ ]+) ([^\n]+)\n?"

return {
    TEXT_LINE = TEXT_LINE,
    DOTFILE = DOTFILE,
    VALID_USERNAME = VALID_USERNAME,
    VALID_SSHKEYNAME = VALID_SSHKEYNAME,
    USER_INFO_PREFIX = USER_INFO_PREFIX,
    USER_CONF_MATCH = USER_CONF_MATCH,
    USER_KEY_MATCH = USER_KEY_MATCH,
    SSH_KEY_CONTENTS = SSH_KEY_CONTENTS,
    VALID_GROUPNAME = VALID_GROUPNAME,
    GROUP_INFO_PREFIX = GROUP_INFO_PREFIX,
    GROUP_CONF_MATCH = GROUP_CONF_MATCH,
    VALID_KEY_FINGERPRINT = VALID_KEY_FINGERPRINT,
    VALID_KEYRING_NAME = VALID_KEYRING_NAME,
    KEYRING_INFO_PREFIX = KEYRING_INFO_PREFIX,
    KEYRING_MATCH = KEYRING_MATCH,
    GPG_OUTPUT_FINGERPRINT_MATCH = GPG_OUTPUT_FINGERPRINT_MATCH,
    HTTP_RESPONSE = HTTP_RESPONSE,
    HTTP_HEADER = HTTP_HEADER,
    CONF_ENDS_WILDCARD = CONF_ENDS_WILDCARD,
    CONF_WILDCARD = CONF_WILDCARD,
    CONF_ARRAY_INDEX = CONF_ARRAY_INDEX,
    CONF_SET_TYPE_PREFIX = CONF_SET_TYPE_PREFIX,
    GIT_REPO_SUFFIX = GIT_REPO_SUFFIX,
    GIT_REPO_NAME_MATCH = GIT_REPO_NAME_MATCH,
    LACE_GLOBAL_DEFINITION = LACE_GLOBAL_DEFINITION,
    PLUGIN_NAME = PLUGIN_NAME,
    REF_IS_NORMALISED = REF_IS_NORMALISED,
    PARSE_TIME_AND_TZOFFSET = PARSE_TIME_AND_TZOFFSET,
    SUPPLE_MODULE_LOAD_MATCH = SUPPLE_MODULE_LOAD_MATCH,
    GITHOOK_PARSE_CHANGESET = GITHOOK_PARSE_CHANGESET,
}