@@ -41,28 +41,24 @@ class Blueprint {
4141 }
4242 } )
4343
44- this . uses . forEach ( b => {
45- const extras = b . models ( )
46- extras . forEach ( e => { if ( ! e . parent ) e . parent = b . name } )
47- models . push ( ...extras )
48- } )
49-
50- return models
51- }
44+ return grabExtras ( models , this . uses , 'models' )
45+ } // models
5246
5347 forms ( ) {
5448 const names = listJsonFiles ( this . path , 'card-templates' )
55- return names . map ( n => {
49+ const forms = names . map ( n => {
5650 return {
5751 name : n ,
5852 meta : formMeta ( this . path , 'card-templates' , `${ n } .json` )
5953 }
6054 } )
55+
56+ return grabExtras ( forms , this . uses , 'forms' )
6157 } // forms
6258
6359 stateMachines ( ) {
6460 const names = listJsonFiles ( this . path , 'state-machines' )
65- return names . map ( name => {
61+ const machines = names . map ( name => {
6662 const details = readJson ( this . path , 'state-machines' , `${ name } .json` )
6763
6864 const parts = [
@@ -76,6 +72,8 @@ class Blueprint {
7672 . map ( p => p . replace ( '.' , '_' ) )
7773 . join ( '_' )
7874 } )
75+
76+ return grabExtras ( machines , this . uses , 'stateMachines' )
7977 } // stateMachines
8078
8179 categories ( ) {
@@ -87,10 +85,10 @@ class Blueprint {
8785 ...details
8886 }
8987 } )
90- return cats
88+ return grabExtras ( cats , this . uses , 'categories' )
9189 }
9290
93- roles ( includeBuiltin = true ) {
91+ roles ( includeBuiltin = false ) {
9492 const names = listJsonFiles ( this . path , 'template-roles' )
9593 const roles = names . map ( n => {
9694 const details = readJson ( this . path , 'template-roles' , `${ n } .json` )
@@ -99,6 +97,7 @@ class Blueprint {
9997 ...details
10098 }
10199 } )
100+ grabExtras ( roles , this . uses , 'roles' )
102101 if ( includeBuiltin ) {
103102 roles . unshift ( {
104103 name : '$everyone' ,
@@ -127,6 +126,16 @@ class Blueprint {
127126 get scaffold ( ) { return this . scaffold_ }
128127}
129128
129+ function grabExtras ( target , uses , fn ) {
130+ uses . forEach ( b => {
131+ const extras = b [ fn ] ( )
132+ extras . forEach ( e => { if ( ! e . parent ) e . parent = b . name } )
133+ target . push ( ...extras )
134+ } )
135+ return target
136+ }
137+
138+
130139function listJsonFiles ( basepath , directory ) {
131140 if ( ! isDir ( basepath , directory ) ) return [ ]
132141
0 commit comments