<commit_before>const fs = require('fs');
const path = require('path');
const gulp = require('gulp');
const gif = require('gulp-if');
const replace = require('gulp-replace');
const readlineSync = require('readline-sync');
const CMD = require('cmd-exec').init();
const CHALK = require('chalk');

const CERROR = CHALK.bold.red;
const CWARN = CHALK.bold.yellow;
const CSUCCESS = CHALK.bold.green;
const LOG = console.log;

module.exports = (dir, opts) => {
  // набор поддерживаемых css-препроцессоров marmelad
  const supportedCSS = new Set(['scss', 'sass', 'styl']);

  // удаление необходимого препроцессора из набора исключений
  supportedCSS.delete(opts.css);

  const boilerplatePath = path.join(__dirname.replace('commands', ''), 'boilerplate');

  // набор файлов для копирования заготовки нового проекта
  const boilerplateFiles = new Set([
    path.join(boilerplatePath, 'base', '**', `*.!(${[...supportedCSS].join('|')})`),
  ]);

  // файлы для копирования в корень проекта
  const rootFiles = new Set([
    path.join(boilerplatePath, 'rootfiles', '**', '*'),
  ]);

  let btsUse = 'false';
  let btsDonor = 'false';

  if (opts.bootstrap) {
    boilerplateFiles.add(path.join(boilerplatePath, 'extensions', 'bootstrap', '**', '*'));

    btsUse = 'true';

    if (opts.bootstrap === 'donor') {
      btsUse = 'false';
      btsDonor = 'true';
    }
  }

  gulp.task('copy:boilerplate', (done) => {
    LOG(`${CSUCCESS('[marmelad]')} copy:boilerplate`);

    const stream = gulp.src(
      [...boilerplateFiles],
      { dot: true },
    )
      .pipe(gif('settings.marmelad.js', replace('<%- css %>', opts.css)))
      .pipe(gif('settings.marmelad.js', replace("'<%- btsUse %>'", btsUse)))
      .pipe(gif('settings.marmelad.js', replace("'<%- btsDonor %>'", btsDonor)))
      .pipe(gulp.dest(path.join(process.cwd(), dir, 'marmelad')));

    stream.on('end', () => {
      done();
    });
  });

  gulp.task('copy:rootfiles', (done) => {
    LOG(`${CSUCCESS('[marmelad]')} copy:rootfiles...`);

    const stream = gulp.src(
      [...rootFiles],
      { dot: true },
    )
      .pipe(gulp.dest(path.join(process.cwd(), dir)));

    stream.on('end', () => {
      done();
    });
  });

  gulp.task('git:init', (done) => {
    LOG(`${CSUCCESS('[marmelad]')} git:init`);

    CMD
      .exec('git init && git add . && git commit -m "[marmelad] initial commit"')
      .then((res) => {
        LOG(res.message);
      })
      .fail((err) => {
        LOG(err.message);
      })
      .done(() => {
        done();
      });
  });

  dir = dir || '';<commit_msg>fix init с указанием директории<commit_after>const fs = require('fs');
const path = require('path');
const gulp = require('gulp');
const gif = require('gulp-if');
const replace = require('gulp-replace');
const readlineSync = require('readline-sync');
const CMD = require('cmd-exec').init();
const CHALK = require('chalk');

const CERROR = CHALK.bold.red;
const CWARN = CHALK.bold.yellow;
const CSUCCESS = CHALK.bold.green;
const LOG = console.log;

module.exports = (dir, opts) => {
  // набор поддерживаемых css-препроцессоров marmelad
  const supportedCSS = new Set(['scss', 'sass', 'styl']);

  // удаление необходимого препроцессора из набора исключений
  supportedCSS.delete(opts.css);

  const boilerplatePath = path.join(__dirname.replace('commands', ''), 'boilerplate');

  // набор файлов для копирования заготовки нового проекта
  const boilerplateFiles = new Set([
    path.join(boilerplatePath, 'base', '**', `*.!(${[...supportedCSS].join('|')})`),
  ]);

  // файлы для копирования в корень проекта
  const rootFiles = new Set([
    path.join(boilerplatePath, 'rootfiles', '**', '*'),
  ]);

  let btsUse = 'false';
  let btsDonor = 'false';

  if (opts.bootstrap) {
    boilerplateFiles.add(path.join(boilerplatePath, 'extensions', 'bootstrap', '**', '*'));

    btsUse = 'true';

    if (opts.bootstrap === 'donor') {
      btsUse = 'false';
      btsDonor = 'true';
    }
  }

  gulp.task('copy:boilerplate', (done) => {
    LOG(`${CSUCCESS('[marmelad]')} copy:boilerplate`);

    const stream = gulp.src(
      [...boilerplateFiles],
      { dot: true },
    )
      .pipe(gif('settings.marmelad.js', replace('<%- css %>', opts.css)))
      .pipe(gif('settings.marmelad.js', replace("'<%- btsUse %>'", btsUse)))
      .pipe(gif('settings.marmelad.js', replace("'<%- btsDonor %>'", btsDonor)))
      .pipe(gulp.dest(path.join(process.cwd(), dir, 'marmelad')));

    stream.on('end', () => {
      done();
    });
  });

  gulp.task('copy:rootfiles', (done) => {
    LOG(`${CSUCCESS('[marmelad]')} copy:rootfiles...`);

    const stream = gulp.src(
      [...rootFiles],
      { dot: true },
    )
      .pipe(gulp.dest(path.join(process.cwd(), dir)));

    stream.on('end', () => {
      done();
    });
  });

  gulp.task('git:init', (done) => {
    LOG(`${CSUCCESS('[marmelad]')} git:init`);

    const gitInitCommands = [
      'git init',
      'git add .',
      'git commit -m "[marmelad] initial commit"',
    ];

    if (dir) {
      gitInitCommands.unshift(`cd ${dir}`);
    }

    CMD
      .exec(gitInitCommands.join(' && '))
      .then((res) => {
        LOG(res.message);
      })
      .fail((err) => {
        LOG(err.message);
      })
      .done(() => {
        done();
      });
  });

  dir = dir || '';
{'fraction_non_alphanumeric': 0.21224105461393597, 'fraction_numerical': 0.0, 'mean_word_length': 3.1202482544608223, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 27, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2921206', 'n_tokens_mistral': 1977, 'n_tokens_neox': 1952, 'n_words': 351}