Skip to content

Commit 731345a

Browse files
committed
Introduced .gitignore filter support
fixed file logs
1 parent a50f634 commit 731345a

File tree

1 file changed

+47
-3
lines changed

1 file changed

+47
-3
lines changed

sc.code.cls

+47-3
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ ClassMethod export(generated = 0, system = 0, percent = 0, mapped = 0, mask = ""
1414
#define isGenerated(%code) ##class(%RoutineMgr).IsGenerated( %code )
1515
#define isPercented(%code) ("%" = $e(%code))
1616
#define isMapped(%code) ##class(%RoutineMgr).IsMapped( %code )
17-
#define log w !, code, " -> ", ##class(%File).GetFilename(filename), " "
17+
#define log w !, code, " -> ", $piece(filename,..workdir(),2), " "
1818

1919
#define mkdir(%filename) ##continue
2020
s path = ##class(%File).GetDirectory( %filename ) ##continue
@@ -91,10 +91,11 @@ ClassMethod import(filemask = "*.*", qspec = "cku-d", ByRef err = "", recurse =
9191
#define push(%dir) s dirs( $i( dirs ) ) = %dir
9292
#define next(%i,%dir) s %i=$o( dirs( "" ), 1, %dir ) k:%i'="" dirs(%i)
9393
#define isDirectory(%type) ( %type = "D" )
94-
#define log w !, ##class(%File).GetFilename(filename), " " w:sc "Ok" d:'sc $system.OBJ.DisplayError(sc)
94+
#define log w !, $piece(filename,..workdir(),2), " " w:sc "Ok" d:'sc $system.OBJ.DisplayError(sc)
9595

9696
s sc = 1, dirs = "", dir = ..workdir() $$$push(dir)
9797
if verbose w "#; Importing from ", dir,!
98+
d ..setIgnore(.fm)
9899
for { $$$next(i,dir) Q:i="" Q:dir=""
99100

100101
s rs = ##class(%File).FileSetFunc( dir, filemask, , 1 )
@@ -106,6 +107,8 @@ ClassMethod import(filemask = "*.*", qspec = "cku-d", ByRef err = "", recurse =
106107
if recurse $$$push(filename)
107108
continue
108109
}
110+
// check file filter
111+
if ..inFilter(.fm,filename) continue
109112

110113
s ext = $p( filename, ".", * )
111114

@@ -123,6 +126,43 @@ ClassMethod import(filemask = "*.*", qspec = "cku-d", ByRef err = "", recurse =
123126
Q sc
124127
}
125128

129+
ClassMethod inFilter(ByRef filtermask,filename) as %Boolean
130+
{
131+
s result=0
132+
for
133+
{
134+
if '$d(filtermask($I(i))) quit
135+
set filter=$piece(filtermask(i),"*")
136+
if $length(filename,filter)>1 set result=1
137+
}
138+
139+
quit result
140+
}
141+
142+
/// get the filtermask for the repository.
143+
/// looks for .gitignore file and applies all the lines to filters
144+
ClassMethod setIgnore(ByRef filtermask)
145+
{
146+
147+
// working with .gitignore file
148+
// gitignore consists of masks of filtering files
149+
s filename=..workdir()_"/.gitignore"
150+
if '##class(%File).Exists(filename) quit
151+
s file=##class(%File).%New(filename)
152+
s sc=file.Open("R")
153+
if 'sc
154+
{
155+
if verbose d $System.OBJ.DisplayError(sc) return
156+
}
157+
158+
While 'file.AtEnd
159+
{
160+
s filtermask($I(filtermask))=file.ReadLine()
161+
}
162+
quit
163+
}
164+
165+
126166
/// get or set working directory for export/import source
127167
ClassMethod workdir(workdir)
128168
{
@@ -181,10 +221,11 @@ ClassMethod importUpdated(filemask = "*.*", qspec = "cku-d", ByRef err = "", rec
181221
#define push(%dir) s dirs( $i( dirs ) ) = %dir
182222
#define next(%i,%dir) s %i=$o( dirs( "" ), 1, %dir ) k:%i'="" dirs(%i)
183223
#define isDirectory(%type) ( %type = "D" )
184-
#define log w !, ##class(%File).GetFilename(filename)," " w:sc "Ok" d:'sc $system.OBJ.DisplayError( sc )
224+
#define log w !, $piece(filename,..workdir(),2)," " w:sc "Ok" d:'sc $system.OBJ.DisplayError( sc )
185225

186226
s sc = 1, dirs = "", dir = ..workdir() $$$push(dir)
187227
if verbose w "#; Importing updated from ", dir,!
228+
d ..setIgnore(.fm)
188229
for { $$$next(i,dir) Q:i="" Q:dir=""
189230

190231
s rs = ##class(%File).FileSetFunc( dir, filemask, , 1 )
@@ -197,6 +238,9 @@ ClassMethod importUpdated(filemask = "*.*", qspec = "cku-d", ByRef err = "", rec
197238
continue
198239
}
199240

241+
// check file filter
242+
if ..inFilter(.fm,filename) continue
243+
200244
s filets = rs.DateModified
201245
s codename = ..codename( filename, .ext )
202246
s codets = ..codets( codename, ext )

0 commit comments

Comments
 (0)