В настоящее время структура каталогов не поддерживается, что является небольшим ограничением, но, возможно, что-то вроде команды tree, смешанной с командой генерации дерева (я написал) под названием eert, могло бы помочь.

Вверх: суть

Чтобы получить файлы в Интернете, вы можете загрузить их по отдельности на основной веб-сайт или, что еще лучше, установите gist инструмент командной строки.

Для пользователей Mac я бы рекомендовал использовать brew install gist (и получить brew, установщик пакетов из brew.sh). В противном случае gem install gist (хотя мой собственный послужной список использования gem install… довольно шаткий, так что, надеюсь, вам повезет больше).

Затем вы указываете файлы для отправки:

$ gist index.js package.json
https://gist.github.com/a24b93601b8b2a68b8e978460bf6e4e1

Затем этот URL-адрес можно/нужно использовать в этой проблеме.

Вниз: от сути

Теперь самое интересное, извлечение сути и создание всех отдельных файлов одной командой 💪😃

Используя jq (легкий и гибкий процессор JSON для командной строки), хорошо сформированная команда может использовать общедоступный API Github для чтения сути (хотя она не будет работать с секретными списками, если вы также не используете токен аутентификации… выходит за рамки этого поста хотя).

Во-первых, вот полная рабочая команда (при условии, что вы установили jq и у вас есть curl на вашей машине — большинство так и делает):

$ eval "$(curl -L https://git.io/vbSgz \
  | jq -r '.files
  | to_entries
  | .[].value
  | @sh "echo \(.content) > \(.filename)"')"
$ tree
.
├── index.js
└── package.json

Что происходит на самом деле?

jq дается скрипт для запуска с результатом JSON вызова gist API. Вы можете поиграть с интерактивной игрушкой jq, которую я построил и увидеть результаты настройки запроса.

Чтобы объяснить запрос:

  • .files: считывает свойство files.
  • to_entries: преобразует объекты в массив, который предоставляет свойство из каждого уникального имени файла в общее имя свойства.
  • .[].value: возвращает список (не массив) объектов, содержащих имя файла и содержимое для извлечения.
  • @sh "echo \(.content) > \(.filename)": генерирует «безопасную для оболочки» строку, которая представляет собой команду echo, переданную в файл, названный свойством .filename в нашем объекте. Синтаксис \(.<prop>) — это синтаксис шаблона для jq.

Этот запрос передается в jq -r — часть -r возвращает результат в виде пустой строки (а не в кавычках, поскольку вы увидите результат в ссылках инструмента Jace).

Наконец, весь результат evaled через командную строку, что аналогично копированию и вставке каждой строки в командную строку.

Результат: отдельные файлы с содержимым из gists.

Первоначально опубликовано в журнале Remy Sharp’s b:log