| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 | 
							- #!/usr/bin/env node
 
- 'use strict';
 
- /* globals Set */
 
- /*!
 
-  * Script to update version number references in the project.
 
-  * Copyright 2015-2019 Twitter, Inc.
 
-  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 
-  */
 
- var fs = require('fs');
 
- var path = require('path');
 
- var sh = require('shelljs');
 
- sh.config.fatal = true;
 
- var sed = sh.sed;
 
- // Blame TC39... https://github.com/benjamingr/RegExp.escape/issues/37
 
- RegExp.quote = function (string) {
 
-   return string.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&');
 
- };
 
- RegExp.quoteReplacement = function (string) {
 
-   return string.replace(/[$]/g, '$$');
 
- };
 
- var DRY_RUN = false;
 
- function walkAsync(directory, excludedDirectories, fileCallback, errback) {
 
-   if (excludedDirectories.has(path.parse(directory).base)) {
 
-     return;
 
-   }
 
-   fs.readdir(directory, function (err, names) {
 
-     if (err) {
 
-       errback(err);
 
-       return;
 
-     }
 
-     names.forEach(function (name) {
 
-       var filepath = path.join(directory, name);
 
-       fs.lstat(filepath, function (err, stats) {
 
-         if (err) {
 
-           process.nextTick(errback, err);
 
-           return;
 
-         }
 
-         if (stats.isSymbolicLink()) {
 
-           return;
 
-         }
 
-         else if (stats.isDirectory()) {
 
-           process.nextTick(walkAsync, filepath, excludedDirectories, fileCallback, errback);
 
-         }
 
-         else if (stats.isFile()) {
 
-           process.nextTick(fileCallback, filepath);
 
-         }
 
-       });
 
-     });
 
-   });
 
- }
 
- function replaceRecursively(directory, excludedDirectories, allowedExtensions, original, replacement) {
 
-   original = new RegExp(RegExp.quote(original), 'g');
 
-   replacement = RegExp.quoteReplacement(replacement);
 
-   var updateFile = !DRY_RUN ? function (filepath) {
 
-     if (allowedExtensions.has(path.parse(filepath).ext)) {
 
-       sed('-i', original, replacement, filepath);
 
-     }
 
-   } : function (filepath) {
 
-     if (allowedExtensions.has(path.parse(filepath).ext)) {
 
-       console.log('FILE: ' + filepath);
 
-     }
 
-     else {
 
-       console.log('EXCLUDED:' + filepath);
 
-     }
 
-   };
 
-   walkAsync(directory, excludedDirectories, updateFile, function (err) {
 
-     console.error('ERROR while traversing directory!:');
 
-     console.error(err);
 
-     process.exit(1);
 
-   });
 
- }
 
- function main(args) {
 
-   if (args.length !== 2) {
 
-     console.error('USAGE: change-version old_version new_version');
 
-     console.error('Got arguments:', args);
 
-     process.exit(1);
 
-   }
 
-   var oldVersion = args[0];
 
-   var newVersion = args[1];
 
-   var EXCLUDED_DIRS = new Set([
 
-     '.git',
 
-     'node_modules',
 
-     'vendor'
 
-   ]);
 
-   var INCLUDED_EXTENSIONS = new Set([
 
-     // This extension whitelist is how we avoid modifying binary files
 
-     '',
 
-     '.css',
 
-     '.html',
 
-     '.js',
 
-     '.json',
 
-     '.less',
 
-     '.md',
 
-     '.nuspec',
 
-     '.ps1',
 
-     '.scss',
 
-     '.txt',
 
-     '.yml'
 
-   ]);
 
-   replaceRecursively('.', EXCLUDED_DIRS, INCLUDED_EXTENSIONS, oldVersion, newVersion);
 
- }
 
- main(process.argv.slice(2));
 
 
  |