nl_tokens: snap save <name > [ source ] save a directory or repository provided by [ source ] to . snap / <name >
pl_tokens: function save ( name , src = path . resolve ( ) , options ) { // ensure that the vault exists const vault = path . join ( os . homedir ( ) , '.snap' ) ; if ( ! fs . pathExistsSync ( vault ) ) shell . exec ( ` ${ path . join ( __dirname , 'init.js' ) } ` ) ; const root = path . join ( vault , name ) ; // check if the name is already taken if ( fs . pathExistsSync ( root ) && ! options . overwrite ) { console . error ( ` \n ${ chalk . red ( chalk . underline ( name ) , 'already exists' ) } \n ` ) ; return ; } // check if the source provided resolves to a valid path const sourcePath = <mask> . resolve ( src ) ; if ( fs . pathExistsSync ( sourcePath ) ) { // if --overwrite is passed, remove the existing save first if ( options . overwrite ) fs . removeSync ( root ) ; // copy the source provided to the new boilerplate in the vault fs . copySync ( src , root , { overwrite : false , // don't want to modify existing boilerplates, -o will remove the old one first errorOnExist : true , // shouldn't happen, either the boilerplate is new or has been removed with -o filter : pathToCopy => { const match = pathToCopy . match ( / node_modules$|.git$ / ) ; if ( match ) { console . log ( ` ${ chalk . dim . redBright ( match [ 0 ] ) } ${ chalk . yellow ( name ) } ` ) ; } return ! match ; } } ) ; logSuccess ( name ) ; clean ( root , name ) ; return ; } // check if the source provided is a valid git url const gitUrl = / ((git|ssh|http(s)?)|(git@[\w.]+))(:(\/\/)?)([\w.@:/\-~]+)(\.git)(\/)? / ; if ( gitUrl . test ( src ) ) { shell . exec ( ` ${ src } ${ root } ` , { silent : true } , exitCode => { if ( exitCode !== 0 ) { console . error ( ` \n ${ chalk . red ( 'Save failed :(' ) } ${ chalk . cyan ( src ) } \n ` ) ; } else { logSuccess ( name ) ; clean ( root , name ) ; } } ) ; return ; } // log if the source was invalid console . error ( chalk . red ( '\nInvalid [source]' ) ) ; console . log ( ` ${ chalk . yellow ( 'snap save -h' ) } \n ` ) ; }