/
jitsu.html
137 lines (113 loc) · 26.7 KB
/
jitsu.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<!DOCTYPE html> <html> <head> <title>jitsu.js</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <link rel="stylesheet" media="all" href="docco.css" /> </head> <body> <div id="container"> <div id="background"></div> <div id="jump_to"> Jump To … <div id="jump_wrapper"> <div id="jump_page"> <a class="source" href="jitsu/api/apps.html"> jitsu/api/apps.html </a> <a class="source" href="jitsu/api/client.html"> jitsu/api/client.html </a> <a class="source" href="jitsu/api/snapshots.html"> jitsu/api/snapshots.html </a> <a class="source" href="jitsu/api/users.html"> jitsu/api/users.html </a> <a class="source" href="jitsu/commands/apps.html"> jitsu/commands/apps.html </a> <a class="source" href="jitsu/commands/config.html"> jitsu/commands/config.html </a> <a class="source" href="jitsu/commands/snapshots.html"> jitsu/commands/snapshots.html </a> <a class="source" href="jitsu/commands.html"> jitsu/commands.html </a> <a class="source" href="jitsu/config.html"> jitsu/config.html </a> <a class="source" href="jitsu/log.html"> jitsu/log.html </a> <a class="source" href="jitsu/prompt.html"> jitsu/prompt.html </a> <a class="source" href="jitsu/utils/base64.html"> jitsu/utils/base64.html </a> <a class="source" href="jitsu/utils/index.html"> jitsu/utils/index.html </a> <a class="source" href="jitsu.html"> jitsu.html </a> </div> </div> </div> <table cellpadding="0" cellspacing="0"> <thead> <tr> <th class="docs"> <h1> jitsu.js </h1> </th> <th class="code"> </th> </tr> </thead> <tbody> <tr id="section-1"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-1">¶</a> </div> </td> <td class="code"> <div class="highlight"><pre><span class="cm">/*</span>
<span class="cm"> * jitsu.js: Top-level include for the jitsu module.</span>
<span class="cm"> *</span>
<span class="cm"> * (C) 2010, Nodejitsu Inc.</span>
<span class="cm"> *</span>
<span class="cm"> */</span>
<span class="nx">require</span><span class="p">.</span><span class="nx">paths</span><span class="p">.</span><span class="nx">unshift</span><span class="p">(</span><span class="nx">__dirname</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">eyes</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'eyes'</span><span class="p">),</span>
<span class="nx">winston</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'winston'</span><span class="p">),</span>
<span class="nx">colors</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'colors'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">jitsu</span> <span class="o">=</span> <span class="nx">exports</span><span class="p">,</span>
<span class="nx">auth</span> <span class="o">=</span> <span class="kc">false</span><span class="p">,</span>
<span class="nx">started</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></pre></div> </td> </tr> <tr id="section-2"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-2">¶</a> </div> <p>Failure HTTP Response codes based
off of <code>/lib/broodmother/slave/service.js</code></p> </td> <td class="code"> <div class="highlight"><pre><span class="kd">var</span> <span class="nx">failCodes</span> <span class="o">=</span> <span class="nx">jitsu</span><span class="p">.</span><span class="nx">failCodes</span> <span class="o">=</span> <span class="p">{</span>
<span class="mi">400</span><span class="o">:</span> <span class="s2">"Bad Request"</span><span class="p">,</span>
<span class="mi">403</span><span class="o">:</span> <span class="s2">"Not Authorized"</span><span class="p">,</span>
<span class="mi">404</span><span class="o">:</span> <span class="s2">"Item not found"</span><span class="p">,</span>
<span class="mi">500</span><span class="o">:</span> <span class="s2">"Internal Server Error"</span>
<span class="p">};</span></pre></div> </td> </tr> <tr id="section-3"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-3">¶</a> </div> <p>Success HTTP Response codes based
off of <code>/lib/broodmother/slave/service.js</code></p> </td> <td class="code"> <div class="highlight"><pre><span class="kd">var</span> <span class="nx">successCodes</span> <span class="o">=</span> <span class="nx">jitsu</span><span class="p">.</span><span class="nx">successCodes</span> <span class="o">=</span> <span class="p">{</span>
<span class="mi">200</span><span class="o">:</span> <span class="s2">"OK"</span><span class="p">,</span>
<span class="mi">201</span><span class="o">:</span> <span class="s2">"Created"</span>
<span class="p">};</span>
<span class="nx">jitsu</span><span class="p">.</span><span class="nx">utils</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'jitsu/utils'</span><span class="p">);</span>
<span class="nx">jitsu</span><span class="p">.</span><span class="nx">log</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'jitsu/log'</span><span class="p">);</span>
<span class="nx">jitsu</span><span class="p">.</span><span class="nx">api</span> <span class="o">=</span> <span class="p">{};</span>
<span class="nx">jitsu</span><span class="p">.</span><span class="nx">api</span><span class="p">.</span><span class="nx">Client</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'jitsu/api/client'</span><span class="p">).</span><span class="nx">Client</span><span class="p">;</span>
<span class="nx">jitsu</span><span class="p">.</span><span class="nx">api</span><span class="p">.</span><span class="nx">Apps</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'jitsu/api/apps'</span><span class="p">).</span><span class="nx">Apps</span><span class="p">;</span>
<span class="nx">jitsu</span><span class="p">.</span><span class="nx">api</span><span class="p">.</span><span class="nx">Snapshots</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'jitsu/api/snapshots'</span><span class="p">).</span><span class="nx">Snapshots</span>
<span class="nx">jitsu</span><span class="p">.</span><span class="nx">api</span><span class="p">.</span><span class="nx">Users</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'jitsu/api/users'</span><span class="p">).</span><span class="nx">Users</span><span class="p">;</span>
<span class="nx">jitsu</span><span class="p">.</span><span class="nx">prompt</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'jitsu/prompt'</span><span class="p">);</span>
<span class="nx">jitsu</span><span class="p">.</span><span class="nx">config</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'jitsu/config'</span><span class="p">);</span>
<span class="nx">jitsu</span><span class="p">.</span><span class="nx">commands</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'jitsu/commands'</span><span class="p">);</span></pre></div> </td> </tr> <tr id="section-4"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-4">¶</a> </div> <h3>function start (command, callback)</h3>
<h4>@command {string} Command to execute once started</h4>
<h4>@callback {function} Continuation to pass control to when complete.</h4>
<p>Starts the jitsu CLI and runs the specified command.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">jitsu</span><span class="p">.</span><span class="nx">start</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">command</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span></pre></div> </td> </tr> <tr id="section-5"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-5">¶</a> </div> <p>Setup the initial prompt but don't leave it open</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">jitsu</span><span class="p">.</span><span class="nx">prompt</span><span class="p">.</span><span class="nx">start</span><span class="p">().</span><span class="nx">pause</span><span class="p">();</span>
<span class="nx">winston</span><span class="p">.</span><span class="nx">info</span><span class="p">(</span><span class="s1">'Welcome to '</span> <span class="o">+</span> <span class="s1">'Nodejitsu'</span><span class="p">.</span><span class="nx">grey</span><span class="p">);</span>
<span class="nx">winston</span><span class="p">.</span><span class="nx">info</span><span class="p">(</span><span class="s1">'It worked if it ends with '</span> <span class="o">+</span> <span class="s1">'Nodejitsu'</span><span class="p">.</span><span class="nx">grey</span> <span class="o">+</span> <span class="s1">' ok'</span><span class="p">.</span><span class="nx">yellow</span><span class="p">.</span><span class="nx">bold</span><span class="p">);</span>
<span class="nx">jitsu</span><span class="p">.</span><span class="nx">config</span><span class="p">.</span><span class="nx">load</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">jitsu</span><span class="p">.</span><span class="nx">config</span><span class="p">.</span><span class="nx">username</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">jitsu</span><span class="p">.</span><span class="nx">setupUser</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">err</span> <span class="o">?</span> <span class="nx">callback</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="o">:</span> <span class="nx">jitsu</span><span class="p">.</span><span class="nx">exec</span><span class="p">(</span><span class="nx">command</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span>
<span class="p">});</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">err</span> <span class="o">?</span> <span class="nx">callback</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="o">:</span> <span class="nx">jitsu</span><span class="p">.</span><span class="nx">exec</span><span class="p">(</span><span class="nx">command</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span>
<span class="p">});</span>
<span class="p">};</span></pre></div> </td> </tr> <tr id="section-6"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-6">¶</a> </div> <h3>function exec (command, callback)</h3>
<h4>@command {string} Command to execute</h4>
<h4>@callback {function} Continuation to pass control to when complete.</h4>
<p>Runs the specified command in the jitsu CLI.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">jitsu</span><span class="p">.</span><span class="nx">exec</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">command</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">command</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">winston</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="s1">'No command supplied'</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">started</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">jitsu</span><span class="p">.</span><span class="nx">setup</span><span class="p">();</span>
<span class="p">}</span>
<span class="nx">winston</span><span class="p">.</span><span class="nx">info</span><span class="p">(</span><span class="s1">'Executing command '</span> <span class="o">+</span> <span class="nx">jitsu</span><span class="p">.</span><span class="nx">commands</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">command</span><span class="p">).</span><span class="nx">splice</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">2</span><span class="p">).</span><span class="nx">join</span><span class="p">(</span><span class="s1">' '</span><span class="p">).</span><span class="nx">magenta</span><span class="p">);</span>
<span class="nx">jitsu</span><span class="p">.</span><span class="nx">commands</span><span class="p">.</span><span class="nx">run</span><span class="p">(</span><span class="nx">command</span><span class="p">,</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">err</span> <span class="o">&&</span> <span class="o">!</span><span class="sr">/403/</span><span class="p">.</span><span class="nx">test</span><span class="p">(</span><span class="nx">err</span><span class="p">.</span><span class="nx">message</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">winston</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="s1">'Error running command '</span> <span class="o">+</span> <span class="nx">command</span><span class="p">.</span><span class="nx">magenta</span><span class="p">);</span>
<span class="nx">winston</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="nx">err</span><span class="p">.</span><span class="nx">message</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">err</span><span class="p">.</span><span class="nx">stack</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">err</span><span class="p">.</span><span class="nx">stack</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="s1">'\n'</span><span class="p">).</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">trace</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">winston</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="nx">trace</span><span class="p">);</span>
<span class="p">})</span>
<span class="p">}</span>
<span class="k">return</span>
<span class="p">}</span>
</pre></div> </td> </tr> <tr id="section-7"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-7">¶</a> </div> <p>TODO (indexzero): Something here</p> </td> <td class="code"> <div class="highlight"><pre> <span class="nx">callback</span><span class="p">();</span>
<span class="p">});</span>
<span class="p">};</span></pre></div> </td> </tr> <tr id="section-8"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-8">¶</a> </div> <h3>function setup (callback)</h3>
<h4>@callback {function} Continuation to pass control to when complete.</h4>
<p>Sets up the instances of the Resource clients for jitsu and tests
the username/password combo for the authenticated user.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">jitsu</span><span class="p">.</span><span class="nx">setup</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">started</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">jitsu</span><span class="p">.</span><span class="nx">users</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">jitsu</span><span class="p">.</span><span class="nx">api</span><span class="p">.</span><span class="nx">Users</span><span class="p">(</span><span class="nx">jitsu</span><span class="p">.</span><span class="nx">config</span><span class="p">.</span><span class="nx">settings</span><span class="p">);</span>
<span class="nx">jitsu</span><span class="p">.</span><span class="nx">apps</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">jitsu</span><span class="p">.</span><span class="nx">api</span><span class="p">.</span><span class="nx">Apps</span><span class="p">(</span><span class="nx">jitsu</span><span class="p">.</span><span class="nx">config</span><span class="p">.</span><span class="nx">settings</span><span class="p">);</span>
<span class="nx">jitsu</span><span class="p">.</span><span class="nx">snapshots</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">jitsu</span><span class="p">.</span><span class="nx">api</span><span class="p">.</span><span class="nx">Snapshots</span><span class="p">(</span><span class="nx">jitsu</span><span class="p">.</span><span class="nx">config</span><span class="p">.</span><span class="nx">settings</span><span class="p">);</span>
<span class="nx">started</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">};</span></pre></div> </td> </tr> <tr id="section-9"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-9">¶</a> </div> <h3>function auth (callback)</h3>
<h4>@callback {function} Continuation to pass control to when complete.</h4>
<p>Attempts to authenicate the user identified in <code>jitsu.config.settings.auth</code></p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">jitsu</span><span class="p">.</span><span class="nx">auth</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">auth</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">callback</span><span class="p">();</span>
<span class="p">}</span>
<span class="nx">jitsu</span><span class="p">.</span><span class="nx">users</span><span class="p">.</span><span class="nx">auth</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">success</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">err</span> <span class="o">||</span> <span class="o">!</span><span class="nx">success</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">winston</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="s1">'Unable to Autenticate as '</span> <span class="o">+</span> <span class="nx">jitsu</span><span class="p">.</span><span class="nx">config</span><span class="p">.</span><span class="nx">username</span><span class="p">.</span><span class="nx">magenta</span><span class="p">);</span>
<span class="nx">winston</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="nx">err</span><span class="p">.</span><span class="nx">message</span><span class="p">);</span>
<span class="k">return</span> <span class="nx">callback</span><span class="p">(</span><span class="nx">err</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">auth</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="nx">winston</span><span class="p">.</span><span class="nx">info</span><span class="p">(</span><span class="s1">'Authenticated as '</span> <span class="o">+</span> <span class="nx">jitsu</span><span class="p">.</span><span class="nx">config</span><span class="p">.</span><span class="nx">username</span><span class="p">.</span><span class="nx">magenta</span><span class="p">);</span>
<span class="nx">callback</span><span class="p">();</span>
<span class="p">});</span>
<span class="p">}</span></pre></div> </td> </tr> <tr id="section-10"> <td class="docs"> <div class="pilwrap"> <a class="pilcrow" href="#section-10">¶</a> </div> <h3>function setupUser (callback)</h3>
<h4>@callback {function} Continuation to pass control to when complete.</h4>
<p>Prompts the user for their username / password combo, then sets up the jitsu CLI,
and saves the resulting configuration to disk.</p> </td> <td class="code"> <div class="highlight"><pre><span class="nx">jitsu</span><span class="p">.</span><span class="nx">setupUser</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">winston</span><span class="p">.</span><span class="nx">info</span><span class="p">(</span><span class="s1">'No user has been setup on this machine'</span><span class="p">)</span>
<span class="nx">jitsu</span><span class="p">.</span><span class="nx">prompt</span><span class="p">.</span><span class="nx">get</span><span class="p">([</span><span class="s1">'username'</span><span class="p">,</span> <span class="s1">'password'</span><span class="p">],</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">result</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">jitsu</span><span class="p">.</span><span class="nx">config</span><span class="p">.</span><span class="nx">settings</span><span class="p">.</span><span class="nx">auth</span> <span class="o">=</span> <span class="p">[</span><span class="nx">result</span><span class="p">.</span><span class="nx">username</span><span class="p">,</span> <span class="nx">result</span><span class="p">.</span><span class="nx">password</span><span class="p">].</span><span class="nx">join</span><span class="p">(</span><span class="s1">':'</span><span class="p">);</span>
<span class="nx">jitsu</span><span class="p">.</span><span class="nx">setup</span><span class="p">();</span>
<span class="nx">jitsu</span><span class="p">.</span><span class="nx">auth</span><span class="p">(</span><span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
<span class="nx">jitsu</span><span class="p">.</span><span class="nx">config</span><span class="p">.</span><span class="nx">save</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">err</span> <span class="o">?</span> <span class="nx">callback</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="o">:</span> <span class="nx">callback</span><span class="p">();</span>
<span class="p">});</span>
<span class="p">});</span>
<span class="p">});</span>
<span class="p">};</span>
</pre></div> </td> </tr> </tbody> </table> </div> </body> </html>