Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F547665
DivinerWorkflow.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
DivinerWorkflow.php
View Options
<?php
abstract
class
DivinerWorkflow
extends
PhabricatorManagementWorkflow
{
private
$config
;
private
$bookConfigPath
;
public
function
getBookConfigPath
()
{
return
$this
->
bookConfigPath
;
}
protected
function
getConfig
(
$key
,
$default
=
null
)
{
return
idx
(
$this
->
config
,
$key
,
$default
);
}
protected
function
getAllConfig
()
{
return
$this
->
config
;
}
protected
function
readBookConfiguration
(
$book_path
)
{
if
(
$book_path
===
null
)
{
throw
new
PhutilArgumentUsageException
(
pht
(
'Specify a Diviner book configuration file with %s.'
,
'--book'
));
}
$book_data
=
Filesystem
::
readFile
(
$book_path
);
$book
=
phutil_json_decode
(
$book_data
);
PhutilTypeSpec
::
checkMap
(
$book
,
array
(
'name'
=>
'string'
,
'title'
=>
'optional string'
,
'short'
=>
'optional string'
,
'preface'
=>
'optional string'
,
'root'
=>
'optional string'
,
'uri.source'
=>
'optional string'
,
'rules'
=>
'optional map<regex, string>'
,
'exclude'
=>
'optional regex|list<regex>'
,
'groups'
=>
'optional map<string, map<string, wild>>'
,
));
// If the book specifies a "root", resolve it; otherwise, use the directory
// the book configuration file lives in.
$full_path
=
dirname
(
Filesystem
::
resolvePath
(
$book_path
));
if
(
empty
(
$book
[
'root'
]))
{
$book
[
'root'
]
=
'.'
;
}
$book
[
'root'
]
=
Filesystem
::
resolvePath
(
$book
[
'root'
],
$full_path
);
if
(!
preg_match
(
'/^[a-z][a-z-]*
\z
/'
,
$book
[
'name'
]))
{
$name
=
$book
[
'name'
];
throw
new
PhutilArgumentUsageException
(
pht
(
"Book configuration '%s' has name '%s', but book names must "
.
"include only lowercase letters and hyphens."
,
$book_path
,
$name
));
}
foreach
(
idx
(
$book
,
'groups'
,
array
())
as
$group
)
{
PhutilTypeSpec
::
checkMap
(
$group
,
array
(
'name'
=>
'string'
,
'include'
=>
'optional regex|list<regex>'
,
));
}
$this
->
bookConfigPath
=
$book_path
;
$this
->
config
=
$book
;
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Mon, May 12, 1:36 PM (2 d)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
122868
Default Alt Text
DivinerWorkflow.php (2 KB)
Attached To
Mode
rP Phorge
Attached
Detach File
Event Timeline
Log In to Comment