сдев.ш | Кодементор

Я настраивал большинство своих сред разработки за последние 3 года, используя докер а также docker-compose без всяких важный вопросы. Сказав это, за последние пару месяцев я повторял следующий сценарий (с некоторыми вариациями в каждом конкретном случае) в большинстве своих проектов.

#!/bin/bash

case "$1" in
  server)
    docker-compose -f docker/docker-compose.yml run --rm -p 8080:8080 yarn start
    ;;
  build)
    docker-compose -f docker/docker-compose.yml run --rm app yarn build
    ;;
  test)
    docker-compose -f docker/docker-compose.yml run --rm app yarn test
    ;;
  bash)
    docker-compose -f docker/docker-compose.yml run --rm -p 8080:8080 server /bin/bash
    ;;
esac

Я всегда заканчивал тем, что звонил docker-compose в зависимости от задачи, которую мне нужно выполнить с некоторыми вариантами флагов или аргументов.

В то же время я провел некоторое время, работая над разными проектами, которые имели несколько способов запуска и не имели простой документации о том, какие задачи были доступны внутри проекта.

Я понял, что этот небольшой скрипт, который я продублировал в большинстве своих приложений, можно было бы лучше выразить в декларативной форме, используя файл yaml.

сдев.ш цель проста, простой декларативный синтаксис для ваших задач проектов.

Предыдущий сценарий bash теперь выражается как:

version: 1
name: My Cool App
description: This text should briefly mention what the application/library is about
docker:
  compose_file: docker/docker-compose.yml
tasks:
  - name: server
    description: Start the development server
    command: yarn start
    container: app
    rm: true
    ports:
      "8080:8080"

  - name: build
    description: This command will build the entire application and install dependencies
    command: yarn build
    container: app
    rm: true

  - name: test
    description: run unit test suite.
    command: yarn test
    container: app

  - name: bash
    description: ssh in docker container
    command: /bin/bash
    container: app
    ports:
      "8080:8080"

Используя этот файл yaml в качестве входных данных, sdev сгенерирует для вас следующую команду.

➜ sdev.sh git:(improve-readme) ✗ sdev

  Usage: sdev [options] [command]

  This text should briefly mention what the application/library is about

  Options:

    -V, --version output the version number
    -h, --help output usage information

  Commands:

    build This command will build the entire application and install dependencies
    test run unit test suite.
    bash ssh in docker container
    help [cmd] display help for [cmd]

Код является открытым исходным кодом и может быть найден здесь.

Я ищу более интересные функции, которые можно было бы встроить в sdev.sh. Если вы считаете, что этот инструмент может быть полезен в ваших проектах, я хочу услышать об этом. 😃. Пингуйте меня в [email protected]

Наслаждайтесь 🎉

*****

Написано Мартин Фернандес на 28 февраля 2018 г.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *