var fse = require("fs-extra"); var path = require("path"); var npm = require("npm"); var Promise = require("nodegit-promise"); var rooted = path.join.bind(path, __dirname, ".."); if (fse.existsSync(rooted(".didntcomefromthenpmregistry"))) { console.error("[nodegit] We only clean when downloaded from the npm " + "registry. Skipping clean."); return; } npm.load({ "production": true }, function() { var filesToDelete = [ "build/Makefile", "build/binding.Makefile", "build/config.gypi", "build/gyp-mac-tool", "build/nodegit.target.mk", "build/vendor", "build/Release/.deps", "build/Release/git2.a", "build/Release/http_parser.a", "build/Release/linker.lock", "build/Release/obj.target", "build/Release/openssl.a", "build/Release/ssh2.a", "build/Release/zlib.a", "build/Debug/.deps", "build/Debug/git2.a", "build/Debug/http_parser.a", "build/Debug/linker.lock", "build/Debug/obj.target", "build/Debug/openssl.a", "build/Debug/ssh2.a", "build/Debug/zlib.a", "example", "generate", "include", "lifecycleScripts", "src", "test", "vendor", ".astylerc", ".editorconfig", ".gitingore", ".gitmodules", ".jshintrc", ".npmignore", ".travis.yml", "appveyor.yml", "binding.gyp", "TESTING.md" ]; var modulesToPrune = [ "for-node-webkit", "which-native-nodish", "fs-extra", "node-pre-gyp", "npm" ]; console.info("[nodegit] Cleaning up after ourselves."); Promise.all([ cleanFiles(), pruneDevDependencies(), pruneOtherDependencies() ]).then( function success() { console.info("[nodegit] Done cleaning, enjoy!"); }, function failure() { console.error("[nodegit] Couldn't finish cleaning."); } ); function cleanFiles() { console.info("[nodegit] Deleting unneeded files."); return new Promise(function(resolve, reject) { var failures = filesToDelete.some(function(deletable) { try { fse.removeSync(rooted(deletable)); return false; } catch (e) { console.info("[nodegit] Error deleting files. Errored on " + rooted(deletable) + "."); console.error(e); reject(e); return true; } }); if (!failures) { console.info("[nodegit] Finished deleting files."); resolve(); } }); } function pruneDevDependencies() { console.info("[nodegit] Pruning devdependencies."); return new Promise(function (resolve, reject) { npm.commands.prune(function(err) { if (err) { console.error("[nodegit] Failed pruning devdependencies."); reject(err); } else { console.info("[nodegit] Successfully pruned devdependencies."); resolve(); } }); }); } function pruneOtherDependencies() { console.info("[nodegit] Cleaning unneeded dependencies."); return new Promise(function (resolve, reject) { npm.commands.uninstall(modulesToPrune, function(err) { if (err) { console.error("[nodegit] Failed cleaning unneeded dependencies."); reject(err); } else { console.info("[nodegit] Successfully cleaned unneeded dependencies."); resolve(); } }); }); } });