2015-02-08 2 views
4

Поскольку я разрабатываю полезные однострочные линии, было бы удобно работать с meteor shell, передавая ему однострочный и ожидая, что он будет завершен. Возможно, такой синтаксис, как этот?Можно ли использовать однострочный вкладыш с помощью Meteor Shell?

meteor shell -e 'Meteor.users.remove({})' 

Этот запрос функции или уже существует?

Дополнительная информация: Я добавляю несколько этих сценариев в package.json, чтобы они могли совместно использоваться всеми разработчиками проекта.

+0

Привет, Дин! Я спросил [тот же вопрос] (https://groups.google.com/d/msg/meteor-talk/UScD0WroZkI/AsC9VGpGqMYJ) на днях. –

+0

Этот автор пакета должен быть упомянут, возможно, им есть что сказать об этом: https://atmospherejs.com/practicalmeteor/mcli –

ответ

8

Программа Expect для написания сценария оболочки Метеор. Вы можете запустить отдельный файл или запустить команду напрямую. Использование:

./mshell -f runThisFile.js 
./mshell -e 'console.log("foo")' 

Вот код (Лицензия: MIT). Сохранить в файл (mshell, или все, что вы выбираете) и сделать исполняемым:

#!/usr/bin/expect -- 
set timeout 3 
spawn meteor shell 
expect "> " 
set firstArg [lindex $argv 0] 
set secondArg [lindex $argv 1] 
if { $firstArg == "-f" } { 
    send [exec cat $secondArg] 
    send "\n" 
} elseif { $firstArg == "-e" } { 
    send "$secondArg\n" 
} 
expect "true" 
send "\x04" 
expect "Shell exiting...\n" 

На Ubuntu я побежал sudo apt-get install expect установить Ожидать до запуска этой программы.

Очевидно, что мы предпочли бы, чтобы скрипты или одностроки были встроены в meteor shell, поэтому давайте просто рассмотрим это как доказательство концепции.

+0

Спасибо, что представили меня, чтобы ожидать и демонтировать решение. Определенно, upvote, может быть, принято, если я заработаю и ничего не услышу за день или два :) –

+0

Это потрясающе. Спасибо! –

Смежные вопросы