@@ -44,25 +44,49 @@ type LocalStorage struct {
4444 binDir string
4545}
4646
47- func NewLocalStorage (log * zap.SugaredLogger , baseDir string ) (* LocalStorage , error ) {
47+ func NewLocalStorage (log * zap.SugaredLogger , baseDir string ) (ls * LocalStorage , err error ) {
48+ logger := log .Named ("storage" )
49+ isDirty := false
4850 workDir := filepath .Join (baseDir , workDirName )
49- if err : = os .MkdirAll (workDir , perm ); err != nil {
51+ if err = os .MkdirAll (workDir , perm ); err != nil {
5052 if ! os .IsExist (err ) {
5153 return nil , errors .Wrap (err , "failed to create temporary build directory for WASM compiler" )
5254 }
5355 }
5456
57+ isDirty , err = isDirDirty (workDir )
58+ if err != nil {
59+ logger .Errorw ("failed to check if work dir is dirty" , "err" , err )
60+ }
61+
62+ if isDirty {
63+ logger .Info ("storage directory is not empty and dirty" )
64+ }
65+
5566 return & LocalStorage {
67+ log : logger ,
5668 workDir : workDir ,
5769 useLock : & sync.Mutex {},
58- dirty : abool .NewBool (false ),
70+ dirty : abool .NewBool (isDirty ),
5971 gcRun : abool .NewBool (false ),
60- log : log .Named ("storage" ),
6172 binDir : filepath .Join (workDir , binDirName ),
6273 srcDir : filepath .Join (workDir , srcDirName ),
6374 }, nil
6475}
6576
77+ func isDirDirty (dir string ) (bool , error ) {
78+ items , err := ioutil .ReadDir (dir )
79+ if os .IsNotExist (err ) {
80+ return false , nil
81+ }
82+
83+ if err != nil {
84+ return false , err
85+ }
86+
87+ return len (items ) > 0 , nil
88+ }
89+
6690func (s LocalStorage ) getOutputLocation (id ArtifactID ) string {
6791 return filepath .Join (s .binDir , id .Ext (ExtWasm ))
6892}
0 commit comments