Как открыть пакет кликов?

Вот общая функция проверки равенства, которая получает массив элементов в качестве входных данных и сравнивает их друг с другом. Работает со всеми типами элементов.

const isEqual = function(inputs = []) {
  // Checks an element if js object.
  const isObject = function(data) {
    return Object.prototype.toString.call(data) === '[object Object]';
  };
  // Sorts given object by its keys.
  const sortObjectByKey = function(obj) {
    const self = this;
    if (!obj) return {};
    return Object.keys(obj).sort().reduce((initialVal, item) => {
      initialVal[item] = !Array.isArray(obj[item]) &&
        typeof obj[item] === 'object'
        ? self.objectByKey(obj[item])
        : obj[item];
      return initialVal;
    }, {});
  };

  // Checks equality of all elements in the input against each other. Returns true | false
  return (
    inputs
      .map(
        input =>
          typeof input == 'undefined'
            ? ''
            : isObject(input)
                ? JSON.stringify(sortObjectByKey(input))
                : JSON.stringify(input)
      )
      .reduce(
        (prevValue, input) =>
          prevValue === '' || prevValue === input ? input : false,
        ''
      ) !== false
  );
};

// Tests (Made with Jest test framework.)
test('String equality check', () => {
  expect(isEqual(['murat'])).toEqual(true);
  expect(isEqual(['murat', 'john', 'doe'])).toEqual(false);
  expect(isEqual(['murat', 'murat', 'murat'])).toEqual(true);
});

test('Float equality check', () => {
  expect(isEqual([7.89, 3.45])).toEqual(false);
  expect(isEqual([7, 7.50])).toEqual(false);
  expect(isEqual([7.50, 7.50])).toEqual(true);
  expect(isEqual([7, 7])).toEqual(true);
  expect(isEqual([0.34, 0.33])).toEqual(false);
  expect(isEqual([0.33, 0.33])).toEqual(true);
});

test('Array equality check', () => {
  expect(isEqual([[1, 2, 3], [1, 2, 3]])).toEqual(true);
  expect(isEqual([[1, 3], [1, 2, 3]])).toEqual(false);
  expect(isEqual([['murat', 18], ['murat', 18]])).toEqual(true);
});

test('Object equality check', () => {
  let obj1 = {
    name: 'murat',
    age: 18
  };
  let obj2 = {
    name: 'murat',
    age: 18
  };
  let obj3 = {
    age: 18,
    name: 'murat'
  };
  let obj4 = {
    name: 'murat',
    age: 18,
    occupation: 'nothing'
  };
  expect(isEqual([obj1, obj2])).toEqual(true);
  expect(isEqual([obj1, obj2, obj3])).toEqual(true);
  expect(isEqual([obj1, obj2, obj3, obj4])).toEqual(false);
});

test('Weird equality checks', () => {
  expect(isEqual(['', {}])).toEqual(false);
  expect(isEqual([0, '0'])).toEqual(false);
});

Существует также суть

3
задан 13.05.2020, 12:10

2 ответа

Как .deb пакеты пакеты Щелчка ar (не tar!) архивирует, таким образом, можно распаковать их на командной строке с помощью

ar x file_name

существует спецификация для формата файла Щелчка по readthedocs.org , но я не знаю, актуально ли это.

2
ответ дан 13.05.2020, 12:11

Можно переименовать .click для имения .ar расширения, тогда ролик файла откроет его. Пакет щелчка содержит

  • _click-binary - содержит номер версии упаковки щелчка, "0.4"
  • debian-binary - содержит номер версии deb формата файла, на котором это основано "2.0" , http://en.wikipedia.org/wiki/Deb_%28file_format%29
  • control.tar.gz - содержит декларацию, md5 суммы файлов в пакете и некоторых других битах и качается. Если Ваше содержание изменится тогда, то суммы md5 должны будут быть обновлены.
  • data.tar.gz - содержит суть Вашего содержания, это будет обычно заканчиваться в/opt/click.ubuntu.com/yourapp.yournamespace/version /

, Вы являетесь лучшими от использования инструментов сборки щелчка и SDK для построения пакетов щелчка вместо того, чтобы вручную соединить все биты.

1
ответ дан 13.05.2020, 12:12

Теги

Похожие вопросы