Commits

Anonymous committed 5e4b8ee

Initial commit

Comments (0)

Files changed (13)

dictionary/.hgkeep

Empty file added.

fligtplan_ja-level1.tmx

+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE tmx SYSTEM "tmx11.dtd">
+<tmx version="1.1">
+  <header creationtool="OmegaT" o-tmf="OmegaT TMX" adminlang="EN-US" datatype="plaintext" creationtoolversion="3.0.8_1" segtype="sentence" srclang="EN-US"/>
+  <body>
+<!-- Default translations -->
+    <tu>
+      <tuv lang="EN-US">
+        <seg>Project-Id-Version: PACKAGE VERSION
+POT-Creation-Date: 2014-07-04 15:05+0900
+PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE
+Last-Translator: FULL NAME &lt;EMAIL@ADDRESS&gt;
+Language-Team: LANGUAGE &lt;LL@li.org&gt;
+Language: 
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit</seg>
+      </tuv>
+      <tuv lang="JA" changeid="dai_yamashita" changedate="20140704T061013Z" creationid="dai_yamashita" creationdate="20140704T061013Z">
+        <seg>Project-Id-Version: PACKAGE VERSION
+POT-Creation-Date: 2014-07-04 15:05+0900
+PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE
+Last-Translator: FULL NAME &lt;EMAIL@ADDRESS&gt;
+Language-Team: LANGUAGE &lt;LL@li.org&gt;
+Language: 
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit</seg>
+      </tuv>
+    </tu>
+<!-- Alternative translations -->
+  </body>
+</tmx>

fligtplan_ja-level2.tmx

+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE tmx SYSTEM "tmx14.dtd">
+<tmx version="1.4">
+  <header creationtool="OmegaT" o-tmf="OmegaT TMX" adminlang="EN-US" datatype="plaintext" creationtoolversion="3.0.8_1" segtype="sentence" srclang="EN-US"/>
+  <body>
+<!-- Default translations -->
+    <tu>
+      <tuv xml:lang="EN-US">
+        <seg>Project-Id-Version: PACKAGE VERSION
+POT-Creation-Date: 2014-07-04 15:05+0900
+PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE
+Last-Translator: FULL NAME &lt;EMAIL@ADDRESS&gt;
+Language-Team: LANGUAGE &lt;LL@li.org&gt;
+Language: 
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit</seg>
+      </tuv>
+      <tuv xml:lang="JA" changeid="dai_yamashita" changedate="20140704T061013Z" creationid="dai_yamashita" creationdate="20140704T061013Z">
+        <seg>Project-Id-Version: PACKAGE VERSION
+POT-Creation-Date: 2014-07-04 15:05+0900
+PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE
+Last-Translator: FULL NAME &lt;EMAIL@ADDRESS&gt;
+Language-Team: LANGUAGE &lt;LL@li.org&gt;
+Language: 
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit</seg>
+      </tuv>
+    </tu>
+<!-- Alternative translations -->
+  </body>
+</tmx>

fligtplan_ja-omegat.tmx

+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE tmx SYSTEM "tmx11.dtd">
+<tmx version="1.1">
+  <header creationtool="OmegaT" o-tmf="OmegaT TMX" adminlang="EN-US" datatype="plaintext" creationtoolversion="3.0.8_1" segtype="sentence" srclang="EN-US"/>
+  <body>
+<!-- Default translations -->
+    <tu>
+      <tuv lang="EN-US">
+        <seg>Project-Id-Version: PACKAGE VERSION
+POT-Creation-Date: 2014-07-04 15:05+0900
+PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE
+Last-Translator: FULL NAME &lt;EMAIL@ADDRESS&gt;
+Language-Team: LANGUAGE &lt;LL@li.org&gt;
+Language: 
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit</seg>
+      </tuv>
+      <tuv lang="JA" changeid="dai_yamashita" changedate="20140704T061013Z" creationid="dai_yamashita" creationdate="20140704T061013Z">
+        <seg>Project-Id-Version: PACKAGE VERSION
+POT-Creation-Date: 2014-07-04 15:05+0900
+PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE
+Last-Translator: FULL NAME &lt;EMAIL@ADDRESS&gt;
+Language-Team: LANGUAGE &lt;LL@li.org&gt;
+Language: 
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit</seg>
+      </tuv>
+    </tu>
+<!-- Alternative translations -->
+  </body>
+</tmx>

glossary/.htkeep

Empty file added.
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<omegat>
+    <project version="1.0">
+        <source_dir>__DEFAULT__</source_dir>
+        <target_dir>__DEFAULT__</target_dir>
+        <tm_dir>__DEFAULT__</tm_dir>
+        <glossary_dir>__DEFAULT__</glossary_dir>
+        <glossary_file>__DEFAULT__</glossary_file>
+        <dictionary_dir>__DEFAULT__</dictionary_dir>
+        <source_lang>EN-US</source_lang>
+        <target_lang>JA</target_lang>
+        <source_tok>org.omegat.tokenizer.LuceneEnglishTokenizer</source_tok>
+        <target_tok>org.omegat.tokenizer.LuceneJapaneseTokenizer</target_tok>
+        <sentence_seg>true</sentence_seg>
+        <support_default_translations>true</support_default_translations>
+        <remove_tags>false</remove_tags>
+        <external_command></external_command>
+    </project>
+</omegat>

omegat/ignored_words.txt

Empty file added.

omegat/learned_words.txt

Empty file added.

omegat/project_save.tmx

+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE tmx SYSTEM "tmx11.dtd">
+<tmx version="1.1">
+  <header creationtool="OmegaT" o-tmf="OmegaT TMX" adminlang="EN-US" datatype="plaintext" creationtoolversion="3.0.8_1" segtype="sentence" srclang="EN-US"/>
+  <body>
+<!-- Default translations -->
+    <tu>
+      <tuv lang="EN-US">
+        <seg>Project-Id-Version: PACKAGE VERSION
+POT-Creation-Date: 2014-07-04 15:05+0900
+PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE
+Last-Translator: FULL NAME &lt;EMAIL@ADDRESS&gt;
+Language-Team: LANGUAGE &lt;LL@li.org&gt;
+Language: 
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit</seg>
+      </tuv>
+      <tuv lang="JA" changeid="dai_yamashita" changedate="20140704T061013Z" creationid="dai_yamashita" creationdate="20140704T061013Z">
+        <seg>Project-Id-Version: PACKAGE VERSION
+POT-Creation-Date: 2014-07-04 15:05+0900
+PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE
+Last-Translator: FULL NAME &lt;EMAIL@ADDRESS&gt;
+Language-Team: LANGUAGE &lt;LL@li.org&gt;
+Language: 
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit</seg>
+      </tuv>
+    </tu>
+<!-- Alternative translations -->
+  </body>
+</tmx>

omegat/project_save.tmx.201407041510.bak

+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE tmx SYSTEM "tmx11.dtd">
+<tmx version="1.1">
+  <header creationtool="OmegaT" o-tmf="OmegaT TMX" adminlang="EN-US" datatype="plaintext" creationtoolversion="3.0.8_1" segtype="sentence" srclang="EN-US"/>
+  <body>
+<!-- Default translations -->
+    <tu>
+      <tuv lang="EN-US">
+        <seg>Project-Id-Version: PACKAGE VERSION
+POT-Creation-Date: 2014-07-04 15:05+0900
+PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE
+Last-Translator: FULL NAME &lt;EMAIL@ADDRESS&gt;
+Language-Team: LANGUAGE &lt;LL@li.org&gt;
+Language: 
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit</seg>
+      </tuv>
+      <tuv lang="JA" changeid="dai_yamashita" changedate="20140704T061013Z" creationid="dai_yamashita" creationdate="20140704T061013Z">
+        <seg>Project-Id-Version: PACKAGE VERSION
+POT-Creation-Date: 2014-07-04 15:05+0900
+PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE
+Last-Translator: FULL NAME &lt;EMAIL@ADDRESS&gt;
+Language-Team: LANGUAGE &lt;LL@li.org&gt;
+Language: 
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit</seg>
+      </tuv>
+    </tu>
+<!-- Alternative translations -->
+  </body>
+</tmx>

omegat/project_stats.txt

+14/07/04 15:11
+プロジェクトの翻訳状況
+
+            	分節数	 単語数	文字数(空白を除く)	文字数(空白を含む)	
+合計:         	276	2068	     13905	     15683	
+未翻訳:        	275	2033	     13625	     15387	
+繰り返しを除いた:   	249	2007	     13341	     15078	
+繰り返しを除いた未翻訳:	248	1972	     13061	     14782	
+
+
+ファイルごとの翻訳状況:
+
+ファイル名    	すべての分節数	未翻訳分節数	繰り返しを除いた分節数	繰り返しを除いた未翻訳分節数	すべての単語数	未翻訳単語数	繰り返しを除いた単語数	繰り返しを除いた未翻訳単語数	すべての文字数(空白を除く)	未翻訳文字数(空白を除く)	繰り返しを除いた文字数(空白を除く)	繰り返しを除いた未翻訳文字数(空白を除く)	すべての文字数(空白を含む)	未翻訳文字数(空白を含む)	繰り返しを除いた文字数(空白を含む)	繰り返しを除いた未翻訳文字数(空白を含む)	
+README.po	    276	   275	        249	           248	   2068	  2033	       2007	          1972	         13905	        13625	             13341	                13061	         15683	        15387	             15078	                14782	
+# SOME DESCRIPTIVE TITLE
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2014-07-04 15:05+0900\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. type: Title #
+#: ./README.md:1
+#, no-wrap
+msgid "Flightplan ✈ [![NPM version][npm-image]][npm-url]"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:4
+msgid "Run a sequence of commands against local and remote hosts."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:6
+msgid ""
+"Flightplan is a [node.js](http://nodejs.org) library for streamlining "
+"application deployment or systems administration tasks, similar to Python's "
+"[Fabric](http://fabfile.org)."
+msgstr ""
+
+#. type: Title ##
+#: ./README.md:7
+#, no-wrap
+msgid "Installation & Usage"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:10 ./README.md:357
+msgid "```bash"
+msgstr ""
+
+#. type: Title #
+#: ./README.md:10
+#, no-wrap
+msgid "install the cli tool"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:12
+msgid "$ npm install -g flightplan"
+msgstr ""
+
+#. type: Title #
+#: ./README.md:13
+#, no-wrap
+msgid "use it in your project"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:15
+msgid "$ npm install flightplan --save-dev"
+msgstr ""
+
+#. type: Title #
+#: ./README.md:16
+#, no-wrap
+msgid "run a flightplan (`fly --help` for more information)"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:19
+#, no-wrap
+msgid ""
+"$ fly <destination> [--plan flightplan.(js|coffee)]\n"
+"```\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:21
+msgid ""
+"By default, the `fly` command will look for `flightplan.js` or "
+"`flightplan.coffee`."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:23
+msgid ""
+"If you do not install the Flightplan module locally to your project (i.e. to "
+"support non-javascript projects) then make sure the global `node_modules` is "
+"in your Node.js path. For example:"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:28
+#, no-wrap
+msgid ""
+"```bash\n"
+"$ export NODE_PATH=/usr/local/lib/node_modules\n"
+"$ fly <destination>\n"
+"```\n"
+msgstr ""
+
+#. type: Title ##
+#: ./README.md:29
+#, no-wrap
+msgid "Sample flightplan.js"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:34
+msgid "```javascript // flightplan.js var Flightplan = require('flightplan');"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:36
+msgid "var tmpDir = 'pstadler-sh-' + new Date().getTime();"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:38
+msgid "var plan = new Flightplan();"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:62
+#, no-wrap
+msgid ""
+"// configuration\n"
+"plan.briefing({\n"
+"  debug: false,\n"
+"  destinations: {\n"
+"    'staging': {\n"
+"      host: 'staging.pstadler.sh',\n"
+"      username: 'pstadler',\n"
+"      agent: process.env.SSH_AUTH_SOCK\n"
+"    },\n"
+"    'production': [\n"
+"      {\n"
+"        host: 'www1.pstadler.sh',\n"
+"        username: 'pstadler',\n"
+"        agent: process.env.SSH_AUTH_SOCK\n"
+"      },\n"
+"      {\n"
+"        host: 'www2.pstadler.sh',\n"
+"        username: 'pstadler',\n"
+"        agent: process.env.SSH_AUTH_SOCK\n"
+"      }\n"
+"    ]\n"
+"  }\n"
+"});\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:67
+#, no-wrap
+msgid ""
+"// run commands on localhost\n"
+"plan.local(function(local) {\n"
+"  local.log('Run build');\n"
+"  local.exec('gulp build');\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:73
+#, no-wrap
+msgid ""
+"  local.log('Copy files to remote hosts');\n"
+"  var filesToCopy = local.exec('git ls-files', {silent: true});\n"
+"  // rsync files to all the destination's hosts\n"
+"  local.transfer(filesToCopy, '/tmp/' + tmpDir);\n"
+"});\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:79
+#, no-wrap
+msgid ""
+"// run commands on remote hosts (destinations)\n"
+"plan.remote(function(remote) {\n"
+"  remote.log('Move folder to web root');\n"
+"  remote.sudo('cp -R /tmp/' + tmpDir + ' ~', {user: 'www'});\n"
+"  remote.rm('-rf /tmp/' + tmpDir);\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:83
+#, no-wrap
+msgid ""
+"  remote.log('Install dependencies');\n"
+"  remote.sudo('npm --production --prefix ~/' + tmpDir\n"
+"                            + ' install ~/' + tmpDir, {user: 'www'});\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:88
+#, no-wrap
+msgid ""
+"  remote.log('Reload application');\n"
+"  remote.sudo('ln -snf ~/' + tmpDir + ' ~/pstadler-sh', {user: 'www'});\n"
+"  remote.sudo('pm2 reload pstadler-sh', {user: 'www'});\n"
+"});\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:93
+msgid ""
+"// run more commands on localhost afterwards plan.local(function(local) { /* "
+"... */ }); // ...or on remote hosts plan.remote(function(remote) { /* ... */ "
+"});"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:96
+msgid "// executed if flightplan succeeded plan.success(function() { /* ... */ });"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:99
+msgid "// executed if flightplan failed plan.disaster(function() { /* ... */ });"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:103
+msgid ""
+"// always executed after flightplan finished plan.debriefing(function() { /* "
+"... */ }); ```"
+msgstr ""
+
+#. type: Title #
+#: ./README.md:104
+#, no-wrap
+msgid "Documentation"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:107
+#, no-wrap
+msgid "<!-- DOCS -->\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:109
+#, no-wrap
+msgid "<!-- Start lib/flightplan.js -->\n"
+msgstr ""
+
+#. type: Title ##
+#: ./README.md:110
+#, no-wrap
+msgid "Flightplan"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:115
+msgid ""
+"A flightplan is a set of subsequent flights to be executed on one or more "
+"hosts. The constructor doesn't take any arguments. The configuration is "
+"handled with the `briefing()` method."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:119
+msgid "```javascript var plan = new Flightplan(); ```"
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:120
+#, no-wrap
+msgid "Flights"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:123
+msgid ""
+"A flight is a set of commands to be executed on one or more hosts. There are "
+"two types of flights:"
+msgstr ""
+
+#. type: Title ####
+#: ./README.md:124
+#, no-wrap
+msgid "Local flights"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:127
+msgid "Commands in local flights are executed on the **localhost**."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:133
+#, no-wrap
+msgid ""
+"```javascript\n"
+"plan.local(function(transport) {\n"
+"  transport.hostname(); // prints the hostname of localhost\n"
+"});\n"
+"```\n"
+msgstr ""
+
+#. type: Title ####
+#: ./README.md:134
+#, no-wrap
+msgid "Remote flights"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:138
+msgid ""
+"Commands in remote flights are executed in **parallel** against remote hosts "
+"defined during the briefing."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:144
+#, no-wrap
+msgid ""
+"```javascript\n"
+"plan.remote(function(transport) {\n"
+"  transport.hostname(); // prints the hostname(s) of the remote host(s)\n"
+"});\n"
+"```\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:149
+msgid ""
+"You can define multiple flights of each type. They will be executed in the "
+"order of their definition. If a previous flight failed, all subsequent "
+"flights won't get executed. For more information about what it means for a "
+"flight to fail, see the section about `Transport`."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:153
+msgid "```javascript // executed first plan.local(function(transport) {});"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:156
+msgid "// executed if first flight succeeded plan.remote(function(transport) {});"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:159
+msgid "// executed if second flight succeeded plan.local(function(transport) {});"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:162
+msgid "// ...  ```"
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:163
+#, no-wrap
+msgid "flightplan.briefing(config) → this"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:168
+msgid ""
+"Configure the flightplan's destinations with `briefing()`. Without a proper "
+"briefing you can't do remote flights which require at least one "
+"destination. Each destination consists of one ore more hosts."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:173
+msgid ""
+"Values in the hosts section are passed directly to the `connect()` method of "
+"[mscdex/ssh2](https://github.com/mscdex/ssh2#connection-methods)  with one "
+"exception: `privateKey` needs to be passed as a string containing the path "
+"to the keyfile instead of the key itself."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:200
+#, no-wrap
+msgid ""
+"```javascript\n"
+"plan.briefing({\n"
+"  destinations: {\n"
+"    // run with `fly staging`\n"
+"    'staging': {\n"
+"      // see: https://github.com/mscdex/ssh2#connection-methods\n"
+"      host: 'staging.pstadler.sh',\n"
+"      username: 'pstadler',\n"
+"      agent: process.env.SSH_AUTH_SOCK\n"
+"    },\n"
+"    // run with `fly production`\n"
+"    'production': [\n"
+"      {\n"
+"        host: 'www1.pstadler.sh',\n"
+"        username: 'pstadler',\n"
+"        agent: process.env.SSH_AUTH_SOCK\n"
+"      },\n"
+"      {\n"
+"        host: 'www2.pstadler.sh',\n"
+"        username: 'pstadler',\n"
+"        agent: process.env.SSH_AUTH_SOCK\n"
+"      },\n"
+"    ]\n"
+"  }\n"
+"});\n"
+"```\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:203
+msgid ""
+"You can override the `username` value of all hosts by calling `fly` with the "
+"`-u|--username` option:"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:207
+msgid "```bash fly production --username=admin ```"
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:208
+#, no-wrap
+msgid "flightplan.local(fn) → this"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:213
+msgid ""
+"Calling this method registers a local flight. Local flights are executed on "
+"your localhost. When `fn` gets called a `Transport` object is passed with "
+"the first argument."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:219
+#, no-wrap
+msgid ""
+"```javascript\n"
+"plan.local(function(local) {\n"
+"  local.echo('hello from your localhost.');\n"
+"});\n"
+"```\n"
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:220
+#, no-wrap
+msgid "flightplan.remote(fn) → this"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:226
+msgid ""
+"Calling this method registers a remote flight. Remote flights are executed "
+"on the current destination's remote hosts defined with `briefing()`. When "
+"`fn` gets called a `Transport` object is passed with the first argument."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:232
+#, no-wrap
+msgid ""
+"```javascript\n"
+"plan.remote(function(remote) {\n"
+"  remote.echo('hello from the remote host.');\n"
+"});\n"
+"```\n"
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:233
+#, no-wrap
+msgid "flightplan.success(fn) → this"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:237
+msgid ""
+"`fn()` is called after the flightplan (and therefore all flights)  "
+"succeeded."
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:238
+#, no-wrap
+msgid "flightplan.disaster(fn) → this"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:241
+msgid "`fn()` is called after the flightplan was aborted."
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:242
+#, no-wrap
+msgid "flightplan.debriefing(fn)"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:245
+msgid "`fn()` is called at the very end of the flightplan's execution."
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:246
+#, no-wrap
+msgid "flightplan.isAborted() → Boolean"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:249
+msgid "Whether the flightplan is aborted or not."
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:250
+#, no-wrap
+msgid "flightplan.abort()"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:254
+msgid ""
+"Calling this method will abort the flightplan and prevent any further "
+"flights from being executed."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:258
+msgid "```javascript plan.abort(); ```"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:260
+#, no-wrap
+msgid "<!-- End lib/flightplan.js -->\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:262
+#, no-wrap
+msgid "<!-- Start lib/transport/index.js -->\n"
+msgstr ""
+
+#. type: Title ##
+#: ./README.md:263
+#, no-wrap
+msgid "Transport"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:270
+msgid ""
+"A transport is the interface you use during flights. Basically they offer "
+"you a set of methods to execute a chain of commands. Depending on the type "
+"of flight, this is either a `ShellTransport` object for local flights, or an "
+"`SSHTransport` for remote flights. Both transports expose the same set of "
+"methods as described in this section."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:275
+#, no-wrap
+msgid ""
+"```javascript\n"
+"plan.local(function(local) {\n"
+"  local.echo('ShellTransport.echo() called');\n"
+"});\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:280
+#, no-wrap
+msgid ""
+"plan.remote(function(remote) {\n"
+"  remote.echo('SSHTransport.echo() called');\n"
+"});\n"
+"```\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:284
+msgid ""
+"We call the Transport object `transport` in the following section to avoid "
+"confusion. However, do yourself a favor and use `local` for local, and "
+"`remote` for remote flights."
+msgstr ""
+
+#. type: Title ####
+#: ./README.md:285
+#, no-wrap
+msgid "Accessing flight-specific information"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:288
+msgid "Flightplan provides information during flights with the `target` properties:"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:294
+#, no-wrap
+msgid ""
+"```javascript\n"
+"plan.remote(function(transport) { // applies to local flights as well\n"
+"  // Flightplan specific information\n"
+"  console.log(plan.target.destination); // 'production'\n"
+"  console.log(plan.target.hosts); // [{ host: 'www1.pstadler.sh', port: 22 "
+"}, ...]\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:299
+#, no-wrap
+msgid ""
+"  // Flight specific information\n"
+"  console.log(transport.target); // { host: 'www1.pstadler.sh', port: 22 }\n"
+"});\n"
+"```\n"
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:300
+#, no-wrap
+msgid ""
+"transport.exec(command[, options]) → code: int, stdout: String, stderr: "
+"String"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:307
+msgid ""
+"To execute a command you have the choice between using `exec()` or one of "
+"the handy wrappers for often used commands: `transport.exec('ls -al')` is "
+"the same as `transport.ls('-al')`. If a command returns a non-zero exit "
+"code, the flightplan will be aborted and all subsequent commands and flights "
+"won't get executed."
+msgstr ""
+
+#. type: Title ####
+#: ./README.md:308
+#, no-wrap
+msgid "Options"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:312
+msgid ""
+"Options can be passed as a second argument. If `failsafe: true` is passed, "
+"the command is allowed to fail (i.e. exiting with a non-zero exit code), "
+"whereas `silent: true` will simply suppress its output."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:316
+msgid ""
+"```javascript // output of `ls -al` is suppressed transport.ls('-al', "
+"{silent: true});"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:319
+msgid ""
+"// flightplan continues even if command fails with exit code `1` "
+"transport.ls('-al foo', {failsafe: true}); // ls: foo: No such file or "
+"directory"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:323
+msgid ""
+"// both options together transport.ls('-al foo', {silent: true, failsafe: "
+"true}); ```"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:326
+msgid ""
+"To apply these options to multiple commands check out the docs of "
+"`transport.silent()` and `transport.failsafe()`."
+msgstr ""
+
+#. type: Title ####
+#: ./README.md:327
+#, no-wrap
+msgid "Return value"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:329
+msgid "Each command returns an object containing `code`, `stdout` and`stderr`:"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:334
+msgid ""
+"```javascript var retval = transport.echo('Hello world'); "
+"console.log(retval); // { code: 0, stdout: 'Hello world\\n', stderr: null } "
+"```"
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:335
+#, no-wrap
+msgid ""
+"transport.sudo(command[, options]) → code: int, stdout: String, stderr: "
+"String"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:341
+msgid ""
+"Execute a command as another user with `sudo()`. It has the same signature "
+"as `exec()`. Per default, the user under which the command will be executed "
+"is \"root\". This can be changed by passing `user: \"name\"` with the second "
+"argument:"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:345
+msgid ""
+"```javascript // will run: sudo -u root -i bash -c 'Hello world' "
+"transport.sudo('echo Hello world');"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:348
+msgid ""
+"// will run sudo -u www -i bash -c 'Hello world' transport.sudo('echo Hello "
+"world', {user: 'www'});"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:352
+msgid ""
+"// further options passed (see `exec()`)  transport.sudo('echo Hello world', "
+"{user: 'www', silent: true, failsafe: true}); ```"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:355
+msgid ""
+"Flightplan's `sudo()` requires a certain setup on your host. In order to "
+"make things work on a typical Ubuntu installation, follow these rules:"
+msgstr ""
+
+#. type: Title #
+#: ./README.md:357
+#, no-wrap
+msgid "Scenario:"
+msgstr ""
+
+#. type: Title #
+#: ./README.md:358
+#, no-wrap
+msgid "'pstadler' is the user for connecting to the host and 'www' is the user"
+msgstr ""
+
+#. type: Title #
+#: ./README.md:359
+#, no-wrap
+msgid "under which you want to execute commands with sudo."
+msgstr ""
+
+#. type: Title #
+#: ./README.md:361
+#, no-wrap
+msgid "1. 'pstadler' has to be in the sudo group:"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:364
+msgid "$ groups pstadler pstadler : pstadler sudo"
+msgstr ""
+
+#. type: Title #
+#: ./README.md:365
+#, no-wrap
+msgid "2. 'pstadler' needs to be able to run sudo -u 'www' without a password."
+msgstr ""
+
+#. type: Title #
+#: ./README.md:366
+#, no-wrap
+msgid "In order to do this, add the following line to /etc/sudoers:"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:368
+msgid "pstadler ALL=(www) NOPASSWD: ALL"
+msgstr ""
+
+#. type: Title #
+#: ./README.md:369
+#, no-wrap
+msgid "3. user 'www' needs to have a login shell (e.g. bash, sh, zsh, ...)"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:374
+#, no-wrap
+msgid ""
+"$ cat /etc/passwd | grep www\n"
+"www:x:1002:1002::/home/www:/bin/bash   # GOOD\n"
+"www:x:1002:1002::/home/www:/bin/false  # BAD\n"
+"```\n"
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:375
+#, no-wrap
+msgid "transport.transfer(files, remoteDir[, options]) → [results]"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:382
+#, no-wrap
+msgid ""
+"Copy a list of files to the current destination's remote host(s) using\n"
+"`rsync` with the SSH protocol. File transfers are executed in parallel.\n"
+" After finishing all transfers, an array containing results from\n"
+"`transport.exec()` is returned. This method is only available on local\n"
+"flights.\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:387
+msgid ""
+"```javascript var files = ['path/to/file1', 'path/to/file2']; "
+"local.transfer(files, '/tmp/foo'); ```"
+msgstr ""
+
+#. type: Title ####
+#: ./README.md:388
+#, no-wrap
+msgid "Files argument"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:392
+msgid ""
+"To make things more comfortable, the `files` argument doesn't have to be "
+"passed as an array. Results from previous commands and zero-terminated "
+"strings are handled as well:"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:397
+msgid ""
+"```javascript // use result from a previous command var files = "
+"local.git('ls-files', {silent: true}); // get list of files under version "
+"control local.transfer(files, '/tmp/foo');"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:401
+msgid ""
+"// use zero-terminated result from a previous command var files = "
+"local.exec('(git ls-files -z;find node_modules -type f -print0)', {silent: "
+"true}); local.transfer(files, '/tmp/foo');"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:409
+msgid ""
+"// use results from multiple commands var result1 = local.git('ls-files', "
+"{silent: true}).stdout.split('\\n'); var result2 = local.find('node_modules "
+"-type f', {silent: true}).stdout.split('\\n'); var files = "
+"result1.concat(result2); files.push('path/to/another/file'); "
+"local.transfer(files, '/tmp/foo'); ```"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:415
+msgid ""
+"`transfer()` will use the current host's username defined with `briefing()` "
+"unless `fly` is called with the `-u|--username` option.  In this case the "
+"latter will be used. If debugging is enabled (either with `briefing()` or "
+"with `fly --debug`), `rsync` is executed in verbose mode (`-v`)."
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:416
+#, no-wrap
+msgid "transport.prompt(message[, options]) → input"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:419
+msgid "Prompt for user input."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:425
+#, no-wrap
+msgid ""
+"```javascript\n"
+"var input = transport.prompt('Are you sure you want to continue? [yes]');\n"
+"if(input.indexOf('yes') === -1) {\n"
+"  transport.abort('user canceled flight');\n"
+"}\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:428
+msgid ""
+"// prompt for password (with UNIX-style hidden input)  var password = "
+"transport.prompt('Enter your password:', { hidden: true });"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:437
+#, no-wrap
+msgid ""
+"// prompt when deploying to a specific destination\n"
+"if(plan.target.destination === 'production') {\n"
+"  var input = transport.prompt('Ready for deploying to production? "
+"[yes]');\n"
+"  if(input.indexOf('yes') === -1) {\n"
+"    transport.abort('user canceled flight');\n"
+"  }\n"
+"}\n"
+"```\n"
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:438
+#, no-wrap
+msgid "transport.log(message)"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:442
+msgid ""
+"Print a message to stdout. Flightplan takes care that the message is "
+"formatted correctly within the current context."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:446
+msgid "```javascript transport.log('Copying files to remote hosts'); ```"
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:447
+#, no-wrap
+msgid "transport.waitFor(fn(done)) → mixed"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:451
+msgid ""
+"Execute a function and return after the callback `done` is called.  This is "
+"used for running asynchronous functions in a synchronous way."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:454
+msgid ""
+"The callback takes an optional argument which is then returned by "
+"`waitFor()`."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:465
+#, no-wrap
+msgid ""
+"```javascript\n"
+"var result = transport.waitFor(function(done) {\n"
+"  require('node-notifier').notify({\n"
+"      message: 'Hello World'\n"
+"    }, function(err, response) {\n"
+"      done(err || 'sent!');\n"
+"    });\n"
+"});\n"
+"console.log(result); // 'sent!'\n"
+"```\n"
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:466
+#, no-wrap
+msgid "transport.with(cmd|options[, options], fn)"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:469
+msgid "Execute commands with a certain context."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:474
+#, no-wrap
+msgid ""
+"```javascript\n"
+"transport.with('cd /tmp', function() {\n"
+"  transport.ls('-al'); // 'cd /tmp && ls -al'\n"
+"});\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:478
+#, no-wrap
+msgid ""
+"transport.with({silent: true, failsafe: true}, function() {\n"
+"  transport.ls('-al'); // output suppressed, fail safely\n"
+"});\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:483
+#, no-wrap
+msgid ""
+"transport.with('cd /tmp', {silent: true}, function() {\n"
+"  transport.ls('-al'); // 'cd /tmp && ls -al', output suppressed\n"
+"});\n"
+"```\n"
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:484
+#, no-wrap
+msgid "transport.silent()"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:488
+msgid ""
+"When calling `silent()` all subsequent commands are executed without "
+"printing their output to stdout until `verbose()` is called."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:494
+msgid ""
+"```javascript transport.ls(); // output will be printed to stdout "
+"transport.silent(); transport.ls(); // output won't be printed to stdout ```"
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:495
+#, no-wrap
+msgid "transport.verbose()"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:499
+msgid ""
+"Calling `verbose()` reverts the behavior introduced with `silent()`.  Output "
+"of commands will be printed to stdout."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:506
+msgid ""
+"```javascript transport.silent(); transport.ls(); // output won't be printed "
+"to stdout transport.verbose(); transport.ls(); // output will be printed to "
+"stdout ```"
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:507
+#, no-wrap
+msgid "transport.failsafe()"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:514
+msgid ""
+"When calling `failsafe()`, all subsequent commands are allowed to fail until "
+"`unsafe()` is called. In other words, the flight will continue even if the "
+"return code of the command is not `0`. This is helpful if either you expect "
+"a command to fail or their nature is to return a non-zero exit code."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:520
+msgid ""
+"```javascript transport.failsafe(); transport.ls('foo'); // ls: foo: No such "
+"file or directory transport.log('Previous command failed, but flight was not "
+"aborted'); ```"
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:521
+#, no-wrap
+msgid "transport.unsafe()"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:526
+msgid ""
+"Calling `unsafe()` reverts the behavior introduced with `failsafe()`.  The "
+"flight will be aborted if a subsequent command fails (i.e. returns a "
+"non-zero exit code). This is the default behavior."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:535
+msgid ""
+"```javascript transport.failsafe(); transport.ls('foo'); // ls: foo: No such "
+"file or directory transport.log('Previous command failed, but flight was not "
+"aborted'); transport.unsafe(); transport.ls('foo'); // ls: foo: No such file "
+"or directory // flight aborted ```"
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:536
+#, no-wrap
+msgid "transport.debug(message)"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:541
+msgid ""
+"Print a debug message to stdout if debug mode is enabled. Flightplan takes "
+"care that the message is formatted correctly within the current context."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:545
+msgid "```javascript transport.debug('Copying files to remote hosts'); ```"
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:546
+#, no-wrap
+msgid "transport.abort([message])"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:551
+msgid ""
+"Manually abort the current flight and prevent any further commands and "
+"flights from being executed. An optional message can be passed which is "
+"displayed after the flight has been aborted."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:555
+msgid ""
+"```javascript transport.abort('Severe turbulences over the atlantic "
+"ocean!'); ```"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:557
+#, no-wrap
+msgid "<!-- End lib/transport/index.js -->\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:559
+#, no-wrap
+msgid "<!-- ENDDOCS -->\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:561
+msgid ""
+"[npm-url]: https://npmjs.org/package/flightplan [npm-image]: "
+"https://badge.fury.io/js/flightplan.png"
+msgstr ""
+# SOME DESCRIPTIVE TITLE
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr "Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2014-07-04 15:05+0900\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. type: Title #
+#: ./README.md:1
+#, no-wrap
+msgid "Flightplan ✈ [![NPM version][npm-image]][npm-url]"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:4
+msgid "Run a sequence of commands against local and remote hosts."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:6
+msgid ""
+"Flightplan is a [node.js](http://nodejs.org) library for streamlining "
+"application deployment or systems administration tasks, similar to Python's "
+"[Fabric](http://fabfile.org)."
+msgstr ""
+
+#. type: Title ##
+#: ./README.md:7
+#, no-wrap
+msgid "Installation & Usage"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:10 ./README.md:357
+msgid "```bash"
+msgstr ""
+
+#. type: Title #
+#: ./README.md:10
+#, no-wrap
+msgid "install the cli tool"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:12
+msgid "$ npm install -g flightplan"
+msgstr ""
+
+#. type: Title #
+#: ./README.md:13
+#, no-wrap
+msgid "use it in your project"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:15
+msgid "$ npm install flightplan --save-dev"
+msgstr ""
+
+#. type: Title #
+#: ./README.md:16
+#, no-wrap
+msgid "run a flightplan (`fly --help` for more information)"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:19
+#, no-wrap
+msgid ""
+"$ fly <destination> [--plan flightplan.(js|coffee)]\n"
+"```\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:21
+msgid ""
+"By default, the `fly` command will look for `flightplan.js` or "
+"`flightplan.coffee`."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:23
+msgid ""
+"If you do not install the Flightplan module locally to your project (i.e. to "
+"support non-javascript projects) then make sure the global `node_modules` is "
+"in your Node.js path. For example:"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:28
+#, no-wrap
+msgid ""
+"```bash\n"
+"$ export NODE_PATH=/usr/local/lib/node_modules\n"
+"$ fly <destination>\n"
+"```\n"
+msgstr ""
+
+#. type: Title ##
+#: ./README.md:29
+#, no-wrap
+msgid "Sample flightplan.js"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:34
+msgid "```javascript // flightplan.js var Flightplan = require('flightplan');"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:36
+msgid "var tmpDir = 'pstadler-sh-' + new Date().getTime();"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:38
+msgid "var plan = new Flightplan();"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:62
+#, no-wrap
+msgid ""
+"// configuration\n"
+"plan.briefing({\n"
+"  debug: false,\n"
+"  destinations: {\n"
+"    'staging': {\n"
+"      host: 'staging.pstadler.sh',\n"
+"      username: 'pstadler',\n"
+"      agent: process.env.SSH_AUTH_SOCK\n"
+"    },\n"
+"    'production': [\n"
+"      {\n"
+"        host: 'www1.pstadler.sh',\n"
+"        username: 'pstadler',\n"
+"        agent: process.env.SSH_AUTH_SOCK\n"
+"      },\n"
+"      {\n"
+"        host: 'www2.pstadler.sh',\n"
+"        username: 'pstadler',\n"
+"        agent: process.env.SSH_AUTH_SOCK\n"
+"      }\n"
+"    ]\n"
+"  }\n"
+"});\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:67
+#, no-wrap
+msgid ""
+"// run commands on localhost\n"
+"plan.local(function(local) {\n"
+"  local.log('Run build');\n"
+"  local.exec('gulp build');\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:73
+#, no-wrap
+msgid ""
+"  local.log('Copy files to remote hosts');\n"
+"  var filesToCopy = local.exec('git ls-files', {silent: true});\n"
+"  // rsync files to all the destination's hosts\n"
+"  local.transfer(filesToCopy, '/tmp/' + tmpDir);\n"
+"});\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:79
+#, no-wrap
+msgid ""
+"// run commands on remote hosts (destinations)\n"
+"plan.remote(function(remote) {\n"
+"  remote.log('Move folder to web root');\n"
+"  remote.sudo('cp -R /tmp/' + tmpDir + ' ~', {user: 'www'});\n"
+"  remote.rm('-rf /tmp/' + tmpDir);\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:83
+#, no-wrap
+msgid ""
+"  remote.log('Install dependencies');\n"
+"  remote.sudo('npm --production --prefix ~/' + tmpDir\n"
+"                            + ' install ~/' + tmpDir, {user: 'www'});\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:88
+#, no-wrap
+msgid ""
+"  remote.log('Reload application');\n"
+"  remote.sudo('ln -snf ~/' + tmpDir + ' ~/pstadler-sh', {user: 'www'});\n"
+"  remote.sudo('pm2 reload pstadler-sh', {user: 'www'});\n"
+"});\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:93
+msgid ""
+"// run more commands on localhost afterwards plan.local(function(local) { /* "
+"... */ }); // ...or on remote hosts plan.remote(function(remote) { /* ... */ "
+"});"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:96
+msgid "// executed if flightplan succeeded plan.success(function() { /* ... */ });"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:99
+msgid "// executed if flightplan failed plan.disaster(function() { /* ... */ });"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:103
+msgid ""
+"// always executed after flightplan finished plan.debriefing(function() { /* "
+"... */ }); ```"
+msgstr ""
+
+#. type: Title #
+#: ./README.md:104
+#, no-wrap
+msgid "Documentation"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:107
+#, no-wrap
+msgid "<!-- DOCS -->\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:109
+#, no-wrap
+msgid "<!-- Start lib/flightplan.js -->\n"
+msgstr ""
+
+#. type: Title ##
+#: ./README.md:110
+#, no-wrap
+msgid "Flightplan"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:115
+msgid ""
+"A flightplan is a set of subsequent flights to be executed on one or more "
+"hosts. The constructor doesn't take any arguments. The configuration is "
+"handled with the `briefing()` method."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:119
+msgid "```javascript var plan = new Flightplan(); ```"
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:120
+#, no-wrap
+msgid "Flights"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:123
+msgid ""
+"A flight is a set of commands to be executed on one or more hosts. There are "
+"two types of flights:"
+msgstr ""
+
+#. type: Title ####
+#: ./README.md:124
+#, no-wrap
+msgid "Local flights"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:127
+msgid "Commands in local flights are executed on the **localhost**."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:133
+#, no-wrap
+msgid ""
+"```javascript\n"
+"plan.local(function(transport) {\n"
+"  transport.hostname(); // prints the hostname of localhost\n"
+"});\n"
+"```\n"
+msgstr ""
+
+#. type: Title ####
+#: ./README.md:134
+#, no-wrap
+msgid "Remote flights"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:138
+msgid ""
+"Commands in remote flights are executed in **parallel** against remote hosts "
+"defined during the briefing."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:144
+#, no-wrap
+msgid ""
+"```javascript\n"
+"plan.remote(function(transport) {\n"
+"  transport.hostname(); // prints the hostname(s) of the remote host(s)\n"
+"});\n"
+"```\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:149
+msgid ""
+"You can define multiple flights of each type. They will be executed in the "
+"order of their definition. If a previous flight failed, all subsequent "
+"flights won't get executed. For more information about what it means for a "
+"flight to fail, see the section about `Transport`."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:153
+msgid "```javascript // executed first plan.local(function(transport) {});"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:156
+msgid "// executed if first flight succeeded plan.remote(function(transport) {});"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:159
+msgid "// executed if second flight succeeded plan.local(function(transport) {});"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:162
+msgid "// ...  ```"
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:163
+#, no-wrap
+msgid "flightplan.briefing(config) → this"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:168
+msgid ""
+"Configure the flightplan's destinations with `briefing()`. Without a proper "
+"briefing you can't do remote flights which require at least one "
+"destination. Each destination consists of one ore more hosts."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:173
+msgid ""
+"Values in the hosts section are passed directly to the `connect()` method of "
+"[mscdex/ssh2](https://github.com/mscdex/ssh2#connection-methods)  with one "
+"exception: `privateKey` needs to be passed as a string containing the path "
+"to the keyfile instead of the key itself."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:200
+#, no-wrap
+msgid ""
+"```javascript\n"
+"plan.briefing({\n"
+"  destinations: {\n"
+"    // run with `fly staging`\n"
+"    'staging': {\n"
+"      // see: https://github.com/mscdex/ssh2#connection-methods\n"
+"      host: 'staging.pstadler.sh',\n"
+"      username: 'pstadler',\n"
+"      agent: process.env.SSH_AUTH_SOCK\n"
+"    },\n"
+"    // run with `fly production`\n"
+"    'production': [\n"
+"      {\n"
+"        host: 'www1.pstadler.sh',\n"
+"        username: 'pstadler',\n"
+"        agent: process.env.SSH_AUTH_SOCK\n"
+"      },\n"
+"      {\n"
+"        host: 'www2.pstadler.sh',\n"
+"        username: 'pstadler',\n"
+"        agent: process.env.SSH_AUTH_SOCK\n"
+"      },\n"
+"    ]\n"
+"  }\n"
+"});\n"
+"```\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:203
+msgid ""
+"You can override the `username` value of all hosts by calling `fly` with the "
+"`-u|--username` option:"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:207
+msgid "```bash fly production --username=admin ```"
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:208
+#, no-wrap
+msgid "flightplan.local(fn) → this"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:213
+msgid ""
+"Calling this method registers a local flight. Local flights are executed on "
+"your localhost. When `fn` gets called a `Transport` object is passed with "
+"the first argument."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:219
+#, no-wrap
+msgid ""
+"```javascript\n"
+"plan.local(function(local) {\n"
+"  local.echo('hello from your localhost.');\n"
+"});\n"
+"```\n"
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:220
+#, no-wrap
+msgid "flightplan.remote(fn) → this"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:226
+msgid ""
+"Calling this method registers a remote flight. Remote flights are executed "
+"on the current destination's remote hosts defined with `briefing()`. When "
+"`fn` gets called a `Transport` object is passed with the first argument."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:232
+#, no-wrap
+msgid ""
+"```javascript\n"
+"plan.remote(function(remote) {\n"
+"  remote.echo('hello from the remote host.');\n"
+"});\n"
+"```\n"
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:233
+#, no-wrap
+msgid "flightplan.success(fn) → this"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:237
+msgid ""
+"`fn()` is called after the flightplan (and therefore all flights)  "
+"succeeded."
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:238
+#, no-wrap
+msgid "flightplan.disaster(fn) → this"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:241
+msgid "`fn()` is called after the flightplan was aborted."
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:242
+#, no-wrap
+msgid "flightplan.debriefing(fn)"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:245
+msgid "`fn()` is called at the very end of the flightplan's execution."
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:246
+#, no-wrap
+msgid "flightplan.isAborted() → Boolean"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:249
+msgid "Whether the flightplan is aborted or not."
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:250
+#, no-wrap
+msgid "flightplan.abort()"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:254
+msgid ""
+"Calling this method will abort the flightplan and prevent any further "
+"flights from being executed."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:258
+msgid "```javascript plan.abort(); ```"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:260
+#, no-wrap
+msgid "<!-- End lib/flightplan.js -->\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:262
+#, no-wrap
+msgid "<!-- Start lib/transport/index.js -->\n"
+msgstr ""
+
+#. type: Title ##
+#: ./README.md:263
+#, no-wrap
+msgid "Transport"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:270
+msgid ""
+"A transport is the interface you use during flights. Basically they offer "
+"you a set of methods to execute a chain of commands. Depending on the type "
+"of flight, this is either a `ShellTransport` object for local flights, or an "
+"`SSHTransport` for remote flights. Both transports expose the same set of "
+"methods as described in this section."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:275
+#, no-wrap
+msgid ""
+"```javascript\n"
+"plan.local(function(local) {\n"
+"  local.echo('ShellTransport.echo() called');\n"
+"});\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:280
+#, no-wrap
+msgid ""
+"plan.remote(function(remote) {\n"
+"  remote.echo('SSHTransport.echo() called');\n"
+"});\n"
+"```\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:284
+msgid ""
+"We call the Transport object `transport` in the following section to avoid "
+"confusion. However, do yourself a favor and use `local` for local, and "
+"`remote` for remote flights."
+msgstr ""
+
+#. type: Title ####
+#: ./README.md:285
+#, no-wrap
+msgid "Accessing flight-specific information"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:288
+msgid "Flightplan provides information during flights with the `target` properties:"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:294
+#, no-wrap
+msgid ""
+"```javascript\n"
+"plan.remote(function(transport) { // applies to local flights as well\n"
+"  // Flightplan specific information\n"
+"  console.log(plan.target.destination); // 'production'\n"
+"  console.log(plan.target.hosts); // [{ host: 'www1.pstadler.sh', port: 22 "
+"}, ...]\n"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:299
+#, no-wrap
+msgid ""
+"  // Flight specific information\n"
+"  console.log(transport.target); // { host: 'www1.pstadler.sh', port: 22 }\n"
+"});\n"
+"```\n"
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:300
+#, no-wrap
+msgid ""
+"transport.exec(command[, options]) → code: int, stdout: String, stderr: "
+"String"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:307
+msgid ""
+"To execute a command you have the choice between using `exec()` or one of "
+"the handy wrappers for often used commands: `transport.exec('ls -al')` is "
+"the same as `transport.ls('-al')`. If a command returns a non-zero exit "
+"code, the flightplan will be aborted and all subsequent commands and flights "
+"won't get executed."
+msgstr ""
+
+#. type: Title ####
+#: ./README.md:308
+#, no-wrap
+msgid "Options"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:312
+msgid ""
+"Options can be passed as a second argument. If `failsafe: true` is passed, "
+"the command is allowed to fail (i.e. exiting with a non-zero exit code), "
+"whereas `silent: true` will simply suppress its output."
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:316
+msgid ""
+"```javascript // output of `ls -al` is suppressed transport.ls('-al', "
+"{silent: true});"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:319
+msgid ""
+"// flightplan continues even if command fails with exit code `1` "
+"transport.ls('-al foo', {failsafe: true}); // ls: foo: No such file or "
+"directory"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:323
+msgid ""
+"// both options together transport.ls('-al foo', {silent: true, failsafe: "
+"true}); ```"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:326
+msgid ""
+"To apply these options to multiple commands check out the docs of "
+"`transport.silent()` and `transport.failsafe()`."
+msgstr ""
+
+#. type: Title ####
+#: ./README.md:327
+#, no-wrap
+msgid "Return value"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:329
+msgid "Each command returns an object containing `code`, `stdout` and`stderr`:"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:334
+msgid ""
+"```javascript var retval = transport.echo('Hello world'); "
+"console.log(retval); // { code: 0, stdout: 'Hello world\\n', stderr: null } "
+"```"
+msgstr ""
+
+#. type: Title ###
+#: ./README.md:335
+#, no-wrap
+msgid ""
+"transport.sudo(command[, options]) → code: int, stdout: String, stderr: "
+"String"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:341
+msgid ""
+"Execute a command as another user with `sudo()`. It has the same signature "
+"as `exec()`. Per default, the user under which the command will be executed "
+"is \"root\". This can be changed by passing `user: \"name\"` with the second "
+"argument:"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:345
+msgid ""
+"```javascript // will run: sudo -u root -i bash -c 'Hello world' "
+"transport.sudo('echo Hello world');"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:348
+msgid ""
+"// will run sudo -u www -i bash -c 'Hello world' transport.sudo('echo Hello "
+"world', {user: 'www'});"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:352
+msgid ""
+"// further options passed (see `exec()`)  transport.sudo('echo Hello world', "
+"{user: 'www', silent: true, failsafe: true}); ```"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:355
+msgid ""
+"Flightplan's `sudo()` requires a certain setup on your host. In order to "
+"make things work on a typical Ubuntu installation, follow these rules:"
+msgstr ""
+
+#. type: Title #
+#: ./README.md:357
+#, no-wrap
+msgid "Scenario:"
+msgstr ""
+
+#. type: Title #
+#: ./README.md:358
+#, no-wrap
+msgid "'pstadler' is the user for connecting to the host and 'www' is the user"
+msgstr ""
+
+#. type: Title #
+#: ./README.md:359
+#, no-wrap
+msgid "under which you want to execute commands with sudo."
+msgstr ""
+
+#. type: Title #
+#: ./README.md:361
+#, no-wrap
+msgid "1. 'pstadler' has to be in the sudo group:"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:364
+msgid "$ groups pstadler pstadler : pstadler sudo"
+msgstr ""
+
+#. type: Title #
+#: ./README.md:365
+#, no-wrap
+msgid "2. 'pstadler' needs to be able to run sudo -u 'www' without a password."
+msgstr ""
+
+#. type: Title #
+#: ./README.md:366
+#, no-wrap
+msgid "In order to do this, add the following line to /etc/sudoers:"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:368
+msgid "pstadler ALL=(www) NOPASSWD: ALL"
+msgstr ""
+
+#. type: Title #
+#: ./README.md:369
+#, no-wrap
+msgid "3. user 'www' needs to have a login shell (e.g. bash, sh, zsh, ...)"
+msgstr ""
+
+#. type: Plain text
+#: ./README.md:374
+#, no-wrap
+msgid ""
+"$ cat /etc/passwd | grep www\n"