code: function fetchArchive(targetPath, template) {
    var q = Q.defer();
    var replace = require("replace");
  
    var archiveUrl = template.repo
    // The folder name the project will be downloaded and extracted to
    var message = ['Downloading:'.bold, archiveUrl].join(' ');
    console.log(message);
  
    var tmpFolder = os.tmpdir();
    var tempZipFilePath = path.join(tmpFolder, 'mobilecaddy-' + new Date().getTime());
  
    new Download({mode: '755', extract: true})
      .get(archiveUrl)
      .dest(tempZipFilePath)
      .run(function (err, files) {
          if (!err) {
            fs.rename(files[0].path, targetPath,
              function(res){
                if (!res) {
                  replace({
                      regex: template.name,
                      replacement: targetPath,
                      paths: [targetPath],
                      recursive: true,
                      silent: true,
                  });
                  q.resolve();
                } else {
                  console.error('Renaming template repo failed '.error);
                  console.error(res);
                  q.reject(res);
                }
              })
          } else {
            console.error(err);
            q.reject(err);
          }
      });
  
    return q.promise;
  }
docs: /*
  fetchArchive
  Desc: pulls git repo down and moves it into desired sub dir.
  Also does some small string replacement
  TODO : lots more can be done here based on CLI input