-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathindex.html
831 lines (789 loc) · 61.3 KB
/
index.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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
<title>Regolith — regolith - software group content managment system</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="_static/cloud.css" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Noticia+Text:400,i,b,bi|Open+Sans:400,i,b,bi|Roboto+Mono:400,i,b,bi&display=swap" type="text/css" />
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
<script src="_static/doctools.js"></script>
<script src="_static/jquery.cookie.js"></script>
<script src="_static/cloud.base.js"></script>
<script src="_static/cloud.js"></script>
<link rel="shortcut icon" href="_static/regolith-logo.ico"/>
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Tutorials" href="tutorials/index.html" />
<meta name="viewport" content="width=device-width, initial-scale=1">
</head><body>
<div class="relbar-top">
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="tutorials/index.html" title="Tutorials"
accesskey="N">next</a></li>
<li><a href="#">regolith</a> »</li>
<li class="nav-item nav-item-this"><a href="">Regolith</a></li>
</ul>
</div>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<link href="_static/unicodetiles.css" rel="stylesheet" type="text/css" />
<script src="_static/unicodetiles.min.js"></script>
<script src="_static/rg-dungeon.js"></script>
<div style="text-align:center;">
<div id="game"><h1>welcome to the regolith docs</h1></div>
</div>
<script type="text/javascript">initRgDungeon();</script><section id="regolith">
<h1>Regolith<a class="headerlink" href="#regolith" title="Permalink to this heading">¶</a></h1>
<p>Regolith is a content management system for software & research groups.
Regolith creates and manages a database of people, publications, projects,
proposals & grants, courses, and more! From this database, regolith is then
able to:</p>
<ul class="simple">
<li><p>Generate a group website,</p></li>
<li><p>Generate CVs and publication lists for the group members,</p></li>
<li><p>Act as a grade book for your courses, and more!</p></li>
</ul>
<p>Databases may be file-based (JSON and YAML) or MongoDB-based.</p>
<p>Regolith is developed as a <a class="reference external" href="https://regro.github.io/">regro project</a></p>
</section>
<section id="example-sites">
<h1>Example Sites<a class="headerlink" href="#example-sites" title="Permalink to this heading">¶</a></h1>
<p>The following are some sample websites that are powered by regolith, even though
building
websites is just one of the many facets of this tool:</p>
<ol class="arabic simple">
<li><p><a class="reference external" href="http://www.ergs.sc.edu">ERGS Home Page</a></p></li>
<li><p><a class="reference external" href="http://twofcs.ergs.sc.edu">Technical WorkShop on Fuel Cycle Simulation</a></p></li>
</ol>
</section>
<section id="installation">
<h1>Installation<a class="headerlink" href="#installation" title="Permalink to this heading">¶</a></h1>
<section id="make-your-first-database">
<h2>1. Make your first database<a class="headerlink" href="#make-your-first-database" title="Permalink to this heading">¶</a></h2>
<p>The quickest way to get started is to set up your first minimal database using a
handy cookie cutter. These instructions use the command line and assume you know
how to use the terminal/cmd prompt, and that you know how to install software from
either Pypi using <code class="code highlight bash docutils literal highlight-bash">pip</code> or Anaconda/Miniconda using <code class="code highlight bash docutils literal highlight-bash">conda</code>. The
instructions use the linux shell commands which should work on Mac and linux
computers, and on windows if you are running from at Git Bash terminal (recommended)
but will be slightly different (but still work) on a windows cmd terminal.</p>
<p>First install the cookiecutter package if you don’t already have it</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ conda install cookiecutter
</pre></div>
</div>
<p>or</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ pip install cookiecutter
</pre></div>
</div>
<p>Next, clone the GitHub repository with the handy beginning database template</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ git clone [email protected]/sbillinge/regolithdb-cookiecutter.git
</pre></div>
</div>
<p>to get it using SSH or</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ git clone https://github.com/sbillinge/regolithdb-cookiecutter.git
</pre></div>
</div>
<p>to get it using the HTTPS protocol (just use whichever works for you)</p>
<p>Make a note of the path to the resulting <code class="code highlight bash docutils literal highlight-bash">regolithdb-cookiecutter</code> directory,
(e.g., <code class="code highlight bash docutils literal highlight-bash">/c/Users/me/scratch/regolithdb-cookiecutter</code> but yours will be different).
This is not your database, this is just the template and will be removed shortly.</p>
<p>Next, in a new terminal, or in the same terminal, move to the directory where
you want to install your own permanent database. For example, we like to
create a directory off our home directory called <code class="code highlight bash docutils literal highlight-bash">dbs</code> where we will keep
all of our databases (believe me, once you start using Regolith you will want
to make more and more)</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ <span class="nb">cd</span> ~ <span class="c1"># takes you to your home directory</span>
$ mkdir dbs <span class="c1"># creates the dbs directory if it is not already there</span>
$ <span class="nb">cd</span> dbs <span class="c1"># change dir to the new dbs directory</span>
</pre></div>
</div>
<p>Now by running cookiecutter your starting db will be built from the template</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ cookiecutter <path>/<to>/regolithdb-cookiecutter
</pre></div>
</div>
<p>The program will ask a series of questions and you can type responses. Take your
time and answer the questions as accurately as possible, because you are already
entering data into your database!</p>
<p>Here is an example, and the questions look like</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ cookiecutter ~/scratch/regolithdb-cookiecutter/
database_name <span class="o">[</span>my-cv-db<span class="o">]</span>:
my_first_name <span class="o">[</span>Albert<span class="o">]</span>: Simon
my_last_name <span class="o">[</span>Einstein<span class="o">]</span>: Billinge
id_for_me <span class="o">[</span>aeinstein<span class="o">]</span>: sbillinge
my_group_name <span class="o">[</span>Einstein Group<span class="o">]</span>: Billinge Group
</pre></div>
</div>
<p>and so on. If you just hit enter the cookie-cutter will use the default values
and you will build a database for Einstein, but type the values you want in
answer to each question to make your own.</p>
<p>If you make a mistake just type CTL^C
and do it again. You may have to remove the directory if it has already been
created, for example, <code class="code highlight bash docutils literal highlight-bash">$ rm -r my-cv-db</code>. Watch what you type here and
be careful not to remove something you care about by mistake!</p>
<p>When you are happy with your database setup, type</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ ls
</pre></div>
</div>
<p>which lists all the files in your current directory,
and you should see a directory called <code class="code highlight bash docutils literal highlight-bash">my-cv-db</code> or whatever you chose to
call you database. OK, let’s go and look at our database. change directory into it and do a directory
listing,</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ <span class="nb">cd</span> my-cv-db
$ ls
</pre></div>
</div>
<p>or open a file
browser such as windows explorer and check out what is in there.</p>
<p>You will see a direcotry called <code class="code highlight bash docutils literal highlight-bash">db</code> and a file called <code class="code highlight bash docutils literal highlight-bash">regolithrc.json</code>.
All of the collections in your database are in the <code class="code highlight bash docutils literal highlight-bash">db</code> directory. The
<code class="code highlight bash docutils literal highlight-bash">regolithrc.json</code> contains a bunch of information that Regolith needs to run and do its business.</p>
<p>You can use the Regolith program to do many things with, and to, your
database. But you must always run Regolith from a directory that contains a
<code class="code highlight bash docutils literal highlight-bash">regolithrc.json</code> file. Since you are in a directory that contains one,
you can run Regolith from here, but first you have to install it….</p>
</section>
<section id="install-regolith">
<h2>2. install Regolith<a class="headerlink" href="#install-regolith" title="Permalink to this heading">¶</a></h2>
<p>Regolith packages are available from conda-forge and PyPI:</p>
<p><strong>conda:</strong></p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ conda install -c conda-forge regolith
</pre></div>
</div>
<p><strong>pip:</strong></p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ pip install regolith
</pre></div>
</div>
<p>The Regolith code is migrating quickly these days. If you prefer you can
install from the GitHub repository mode and get the latest changes.
In that case, clone the <a class="reference external" href="https://github.com/regro/regolith">GitHub repository</a>,
change directory to the top level directory in that cloned repository where the
<code class="code highlight bash docutils literal highlight-bash">setup.py</code> file is. From inside your virtual environment, type</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ pip install regolith -e
</pre></div>
</div>
<p>which installs regolith in this environment in develop mode. In this mode, the
version of Regolith you run will change each time you update from the repo
leading to instability so be careful.</p>
<p>To check that your installation is working, let’s have Regolith make us a
todo list from our database.</p>
<p>Make sure you are in a directory that
contains a <code class="code highlight bash docutils literal highlight-bash">regolithrc.json</code> file (which you should be, i.e., the
top level directory of <code class="code highlight bash docutils literal highlight-bash">~/dbs/my-cv-db</code>, if you have been
following these instructions) and type</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ regolith helper l_todos
</pre></div>
</div>
<p>and you should see something like</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>loading .<span class="se">\.</span>/db<span class="se">\t</span>odos.yml...
dumping todos...
usage: regolith helper <span class="o">[</span>-h<span class="o">]</span> <span class="o">[</span>-s STATI <span class="o">[</span>STATI ...<span class="o">]]</span> <span class="o">[</span>--short <span class="o">[</span>SHORT<span class="o">]]</span>
<span class="o">[</span>-t TAGS <span class="o">[</span>TAGS ...<span class="o">]]</span> <span class="o">[</span>-a ASSIGNED_TO<span class="o">]</span>
<span class="o">[</span>-b <span class="o">[</span>ASSIGNED_BY<span class="o">]]</span> <span class="o">[</span>--date DATE<span class="o">]</span>
<span class="o">[</span>-f FILTER <span class="o">[</span>FILTER ...<span class="o">]]</span>
helper_target
positional arguments:
helper_target helper target to run. Currently valid targets are:
<span class="o">[</span><span class="s1">'a_expense'</span>, <span class="s1">'a_grppub_readlist'</span>, <span class="s1">'a_manurev'</span>,
<span class="s1">'a_presentation'</span>, <span class="s1">'a_projectum'</span>, <span class="s1">'a_proposal'</span>,
<span class="s1">'a_proprev'</span>, <span class="s1">'a_todo'</span>, <span class="s1">'f_prum'</span>, <span class="s1">'f_todo'</span>,
<span class="s1">'l_abstract'</span>, <span class="s1">'l_contacts'</span>, <span class="s1">'l_grants'</span>, <span class="s1">'l_members'</span>,
<span class="s1">'l_milestones'</span>, <span class="s1">'l_progress'</span>, <span class="s1">'l_projecta'</span>, <span class="s1">'l_todo'</span>,
<span class="s1">'u_contact'</span>, <span class="s1">'u_institution'</span>, <span class="s1">'u_logurl'</span>,
<span class="s1">'u_milestone'</span>, <span class="s1">'u_todo'</span>, <span class="s1">'v_meetings'</span>, <span class="s1">'lister'</span>,
<span class="s1">'makeappointments'</span><span class="o">]</span>
optional arguments:
-h, --help show this <span class="nb">help</span> message and <span class="nb">exit</span>
-s STATI <span class="o">[</span>STATI ...<span class="o">]</span>, --stati STATI <span class="o">[</span>STATI ...<span class="o">]</span>
Filter tasks with specific status from <span class="o">[</span><span class="s1">'started'</span>,
<span class="s1">'finished'</span>, <span class="s1">'cancelled'</span>, <span class="s1">'paused'</span><span class="o">]</span>. Default is
started.
--short <span class="o">[</span>SHORT<span class="o">]</span> Filter tasks with estimated duration <<span class="o">=</span> <span class="m">30</span> mins, but
<span class="k">if</span> a number is specified, the duration of the filtered
tasks will be less than that number of minutes.
-t TAGS <span class="o">[</span>TAGS ...<span class="o">]</span>, --tags TAGS <span class="o">[</span>TAGS ...<span class="o">]</span>
Filter tasks by tags. Items are returned <span class="k">if</span> they
contain any of the tags listed
-a ASSIGNED_TO, --assigned-to ASSIGNED_TO
Filter tasks that are assigned to this user id.
Default id is saved <span class="k">in</span> user.json.
-b <span class="o">[</span>ASSIGNED_BY<span class="o">]</span>, --assigned-by <span class="o">[</span>ASSIGNED_BY<span class="o">]</span>
Filter tasks that are assigned to other members by
this user id. Default id is saved <span class="k">in</span> user.json.
--date DATE Enter a date such that the helper can calculate how
many days are left from that date to the due-date.
Default is today.
-f FILTER <span class="o">[</span>FILTER ...<span class="o">]</span>, --filter FILTER <span class="o">[</span>FILTER ...<span class="o">]</span>
Search this collection by giving key element pairs.
<span class="s1">'-f description paper'</span> will <span class="k">return</span> tasks with
description containing <span class="s1">'paper'</span>
If the indices are far from being <span class="k">in</span> numerical order, please renumber them by running regolith helper u_todo -r
<span class="o">(</span>index<span class="o">)</span> action <span class="o">(</span>days to due date<span class="p">|</span>importance<span class="p">|</span>expected duration <span class="o">(</span>mins<span class="o">)</span><span class="p">|</span>tags<span class="p">|</span>assigned by<span class="o">)</span>
--------------------------------------------------------------------------------
started:
<span class="o">(</span><span class="m">1</span><span class="o">)</span> Do all the things to <span class="nb">set</span> up todos <span class="k">in</span> regolith <span class="o">(</span><span class="m">59</span><span class="p">|</span><span class="m">3</span><span class="p">|</span><span class="m">60</span>.0<span class="o">||</span>None<span class="o">)</span>
------------------------------
Tasks <span class="o">(</span>decreasing priority going up<span class="o">)</span>
------------------------------
<span class="m">2021</span>-07-29<span class="o">(</span><span class="m">59</span> days<span class="o">)</span>: <span class="o">(</span><span class="m">1</span><span class="o">)</span> Do all the things to <span class="nb">set</span> up todos <span class="k">in</span> regolith <span class="o">(</span><span class="m">59</span><span class="p">|</span><span class="m">3</span><span class="p">|</span><span class="m">60</span>.0<span class="o">||</span>None<span class="o">)</span>
------------------------------
Deadlines:
------------------------------
</pre></div>
</div>
<p>After all the help messages is your list of Todo items. There is just one item,
<code class="code highlight bash docutils literal highlight-bash">Do all the things to <span class="nb">set</span> up todos <span class="k">in</span> regolith</code>.</p>
<p>OK, your Regolith is working. If it isn’t working, consider joining, browsing
and posting questions to the <a class="reference external" href="https://groups.google.com/u/1/g/regolith-users">regolith-users</a>
Google group.</p>
</section>
</section>
<section id="quick-ish-start">
<h1>Quick(ish) Start<a class="headerlink" href="#quick-ish-start" title="Permalink to this heading">¶</a></h1>
<p>OK, let’s use Regolith to build our cv. Why not. again, in a terminal navigate
to the top level directory of your database (where the <code class="code highlight bash docutils literal highlight-bash">regolithrc.json</code>
file is). and type:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ regolith build cv
</pre></div>
</div>
<p>Regolith will take information from the various collections in your database and
build them into your academic cv according to a pre-determined template. The
current template builds the cv using latex. If your computer has latex installed
and Regolith can find it, your cv should appear as a pdf document in the directory
<code class="code highlight bash docutils literal highlight-bash">my-cv-db/_build</code> (or more generally <code class="code highlight bash docutils literal highlight-bash"><path>/<to>/<database_name>/_build</code>).
All your built documents will appear in the <code class="code highlight bash docutils literal highlight-bash">_build</code>
directory.</p>
<p>If you don’t have latex installed we can have Regolith build the latex
source file for the cv but without trying to
render it to PDF,</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ regolith build cv --no-pdf
</pre></div>
</div>
<p>The latex source is a text file that you will find in the <code class="code highlight bash docutils literal highlight-bash">_build</code> directory
and you can open it in a text editor. Even without latex installed you can
render it by opening a free account at <a class="reference external" href="http://overleaf.com">http://overleaf.com</a> starting a new blank
project, uploading the <code class="code highlight bash docutils literal highlight-bash"><filename>.tex</code> and <code class="code highlight bash docutils literal highlight-bash"><filename>.bib</code> files to
that project and hitting the <code class="code highlight bash docutils literal highlight-bash">recompile</code> button.</p>
<p>Whether it builds on your computer or on overleaf, it should look something like</p>
<img alt="../_static/cv.pdf" src="../_static/cv.pdf" />
<p>If, for some reason, the publication list doesn’t render
correctly, try running the latex command again. If you are going to
do much building with regolith it is definitely recommended to install latex on
your computer, such as MikTeX for windows (latex comes installed with many linux
systems and is easily installed on IOS).</p>
</section>
<section id="what-next">
<h1>What Next?<a class="headerlink" href="#what-next" title="Permalink to this heading">¶</a></h1>
<p>You have not spent too much time entering data into your database yet, but you
can already build a number of different things. Try building your
resume (<code class="code highlight bash docutils literal highlight-bash">$ regolith build resume</code>), your publication list
(<code class="code highlight bash docutils literal highlight-bash">$ regolith build publist</code>) and your presentation list
(<code class="code highlight bash docutils literal highlight-bash">$ regolith build preslist</code>). You can even build a web-page
for your group (<code class="code highlight bash docutils literal highlight-bash">$ regolith build html</code>). It will look pretty
ugly until we set it up properly with a nice template, but all the content
will be dynamically built from the latest info in your databases.</p>
<p>To see everything you can build, type <code class="code highlight bash docutils literal highlight-bash">$ regolith build --help</code>.
To build some of those things you will need more collections that are not
in the cookie cutter template, for example,
<code class="code highlight bash docutils literal highlight-bash">proposals</code> and <code class="code highlight bash docutils literal highlight-bash">grants</code> collections, but you get the idea.</p>
<p>So next we might want to work on those collections and start adding more data.
This can be done in a couple of ways. Probably the simplest to begin
with is just use a text editor or IDE like PyCharm. The <code class="code highlight bash docutils literal highlight-bash">yml</code> files are
yaml files, which is a human readable way of storing information that can be
read and understood by python. Please read about it <a class="reference external" href="https://en.wikipedia.org/wiki/YAML">here</a>
if you are not familiar with it. However, briefly to get you started, it encodes
whether information is part of a list or a dictionary by indentation and semantics.
For example,</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>key:
- list item
- another list item
</pre></div>
</div>
<p>would be read by python as <code class="code highlight python docutils literal highlight-python"><span class="p">{</span><span class="s2">"key"</span><span class="p">:</span> <span class="p">[</span><span class="s2">"list item"</span><span class="p">,</span> <span class="s2">"another list item"</span><span class="p">]}</span></code>,
and a collection consisting of a list of dictionaries would look like this in yaml:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>id:
- name: Arthur
quest: To find the Holy Grail
favorite_color: Blue
- name: Sir Lancelot
quest: To find the Holy Grail
favorite_color: Green, no pink
</pre></div>
</div>
<p>Long story short, you can update your database by directly editing the file,
and this is quick and easy when you get comfortable with the YAML syntax,
but can be frustrating as you are learning it.</p>
<p>If you want to check what
fields are allowed or required in a collection look at the Collections part of
the docs, <a class="reference internal" href="collections/index.html#regolith-collections"><span class="std std-ref">Collections</span></a>, which are built from the Regolith schema
(or directly look at the
schema in <code class="code highlight bash docutils literal highlight-bash">schema.py</code>). You can automatically check if your database
edits are valid by running <code class="code highlight bash docutils literal highlight-bash">$ regolith validate</code>.</p>
</section>
<section id="getting-help-from-helpers">
<h1>Getting Help from Helpers<a class="headerlink" href="#getting-help-from-helpers" title="Permalink to this heading">¶</a></h1>
<p>Regolith builders build documents, but there are a small but growing number of
tools that either will run popular queries on the database and print the results
to the terminal (“lister helpers” with <code class="code highlight bash docutils literal highlight-bash">l_</code> prefixes – you
already used one,
it was the lister helper that builds your todo list).</p>
<p>There are also helpers
that help you to add documents to your database collections. These are
“adder helpers” with <code class="code highlight bash docutils literal highlight-bash">a_</code> prefixes. An important adder helper is
<code class="code highlight bash docutils literal highlight-bash">a_todo</code> helper that will add a todo item to your list.</p>
<p>“Updater
helpers” will update existing entries in your databases and have prefix
<code class="code highlight bash docutils literal highlight-bash">u_</code>.</p>
<p>An important special kind of updater helper is a “finish helper” that will mark
something as finished (and give it a finish date). So when you do that
pesky 15th todo item on your todo list, run
<code class="code highlight bash docutils literal highlight-bash">regolith helper f_todo -i <span class="m">15</span></code> to finish it.</p>
<p>That is a lot of typing to finish a todo, so consider setting up an alias in
the config file for your terminal program (my terminals run bash so I put the
alias in the <code class="code highlight bash docutils literal highlight-bash">.bashrc</code> file in my home directory (<code class="code highlight bash docutils literal highlight-bash">$ <span class="nb">cd</span> ~</code> to get there).
With this alias I just type <code class="code highlight bash docutils literal highlight-bash">rhlt <span class="m">15</span></code> to finish that 15th todo item.</p>
<p>To explore what helpers are there so you can play with them, type</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ regolith helper
</pre></div>
</div>
<p>and hit return. It will return a list of available helpers, e.g.,</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ regolith helper
usage: regolith helper <span class="o">[</span>-h<span class="o">]</span> helper_target
regolith helper: error: the following arguments are required: helper_target
usage: regolith helper <span class="o">[</span>-h<span class="o">]</span> helper_target
positional arguments:
helper_target helper target to run. Currently valid targets are:
<span class="o">[</span><span class="s1">'a_expense'</span>, <span class="s1">'a_grppub_readlist'</span>, <span class="s1">'a_manurev'</span>,
<span class="s1">'a_presentation'</span>, <span class="s1">'a_projectum'</span>, <span class="s1">'a_proposal'</span>, <span class="s1">'a_proprev'</span>,
<span class="s1">'a_todo'</span>, <span class="s1">'f_prum'</span>, <span class="s1">'f_todo'</span>, <span class="s1">'l_abstract'</span>, <span class="s1">'l_contacts'</span>,
<span class="s1">'l_grants'</span>, <span class="s1">'l_members'</span>, <span class="s1">'l_milestones'</span>, <span class="s1">'l_progress'</span>,
<span class="s1">'l_projecta'</span>, <span class="s1">'l_todo'</span>, <span class="s1">'u_contact'</span>, <span class="s1">'u_institution'</span>,
<span class="s1">'u_logurl'</span>, <span class="s1">'u_milestone'</span>, <span class="s1">'u_todo'</span>, <span class="s1">'v_meetings'</span>, <span class="s1">'lister'</span>,
<span class="s1">'makeappointments'</span><span class="o">]</span>
</pre></div>
</div>
<p>then if you want to know how to use any of the helpers type</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ regolith helper <helper target>
</pre></div>
</div>
<p>and hit return, e.g.,</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ regolith helper l_contacts
usage: regolith helper <span class="o">[</span>-h<span class="o">]</span> <span class="o">[</span>-v<span class="o">]</span> <span class="o">[</span>-n NAME<span class="o">]</span> <span class="o">[</span>-i INST<span class="o">]</span> <span class="o">[</span>-d DATE<span class="o">]</span> <span class="o">[</span>-r RANGE<span class="o">]</span>
<span class="o">[</span>-o NOTES<span class="o">]</span> <span class="o">[</span>-f FILTER <span class="o">[</span>FILTER ...<span class="o">]]</span>
<span class="o">[</span>-k KEYS <span class="o">[</span>KEYS ...<span class="o">]]</span>
helper_target run
regolith helper: error: the following arguments are required: run
usage: regolith helper <span class="o">[</span>-h<span class="o">]</span> <span class="o">[</span>-v<span class="o">]</span> <span class="o">[</span>-n NAME<span class="o">]</span> <span class="o">[</span>-i INST<span class="o">]</span> <span class="o">[</span>-d DATE<span class="o">]</span> <span class="o">[</span>-r RANGE<span class="o">]</span>
<span class="o">[</span>-o NOTES<span class="o">]</span> <span class="o">[</span>-f FILTER <span class="o">[</span>FILTER ...<span class="o">]]</span>
<span class="o">[</span>-k KEYS <span class="o">[</span>KEYS ...<span class="o">]]</span>
helper_target run
positional arguments:
helper_target helper target to run. Currently valid targets are:
<span class="o">[</span><span class="s1">'a_expense'</span>, <span class="s1">'a_grppub_readlist'</span>, <span class="s1">'a_manurev'</span>,
<span class="s1">'a_presentation'</span>, <span class="s1">'a_projectum'</span>, <span class="s1">'a_proposal'</span>,
<span class="s1">'a_proprev'</span>, <span class="s1">'a_todo'</span>, <span class="s1">'f_prum'</span>, <span class="s1">'f_todo'</span>,
<span class="s1">'l_abstract'</span>, <span class="s1">'l_contacts'</span>, <span class="s1">'l_grants'</span>, <span class="s1">'l_members'</span>,
<span class="s1">'l_milestones'</span>, <span class="s1">'l_progress'</span>, <span class="s1">'l_projecta'</span>, <span class="s1">'l_todo'</span>,
<span class="s1">'u_contact'</span>, <span class="s1">'u_institution'</span>, <span class="s1">'u_logurl'</span>,
<span class="s1">'u_milestone'</span>, <span class="s1">'u_todo'</span>, <span class="s1">'v_meetings'</span>, <span class="s1">'lister'</span>,
<span class="s1">'makeappointments'</span><span class="o">]</span>
run run the lister. To see allowed optional arguments,
<span class="nb">type</span> <span class="s2">"regolith helper l_contacts"</span>.
optional arguments:
-h, --help show this <span class="nb">help</span> message and <span class="nb">exit</span>
-v, --verbose Increases the verbosity of the output.
-n NAME, --name NAME name or name fragment <span class="o">(</span>single argument only<span class="o">)</span> to use to
find contacts.
-i INST, --inst INST institution or an institution fragment <span class="o">(</span>single
argument only<span class="o">)</span> to use to find contacts.
-d DATE, --date DATE approximate date <span class="k">in</span> ISO format <span class="o">(</span>YYYY-MM-DD<span class="o">)</span>
corresponding to when the contact was entered <span class="k">in</span> the
database. Comes with a default range of <span class="m">4</span> months
centered around the date<span class="p">;</span> change range using --range
argument.
-r RANGE, --range RANGE
range <span class="o">(</span><span class="k">in</span> months<span class="o">)</span> centered around date d specified by
--date, i.e. <span class="o">(</span>d +/- r/2<span class="o">)</span>.
-o NOTES, --notes NOTES
fragment <span class="o">(</span>single argument only<span class="o">)</span> to be found <span class="k">in</span> the
notes section of a contact.
-f FILTER <span class="o">[</span>FILTER ...<span class="o">]</span>, --filter FILTER <span class="o">[</span>FILTER ...<span class="o">]</span>
Search this collection by giving key element pairs.
-k KEYS <span class="o">[</span>KEYS ...<span class="o">]</span>, --keys KEYS <span class="o">[</span>KEYS ...<span class="o">]</span>
Specify what keys to <span class="k">return</span> values from when running
--filter. If no argument is given the default is just
the id.
</pre></div>
</div>
<p>you then would rerun the command giving all required, and any
optional, command
line arguments. e.g.,</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ regolith helper l_contacts run --name frank -v
</pre></div>
</div>
<p>will return all contacts in the contacts collection where <code class="code highlight bash docutils literal highlight-bash">frank</code> appears anywhere
in the name, such as <code class="code highlight bash docutils literal highlight-bash">Frankie Valli</code>, <code class="code highlight bash docutils literal highlight-bash">Baron von Frankenstein</code>
and <code class="code highlight bash docutils literal highlight-bash">Anne Frank</code> (if they are in your contacts). The <code class="code highlight bash docutils literal highlight-bash">-v</code>
command stands for <code class="code highlight bash docutils literal highlight-bash">verbose</code> which means more information is
returned than if you don’t type <code class="code highlight bash docutils literal highlight-bash">-v</code>. You can try it now:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ regolith helper l_contacts run -n auth -v
</pre></div>
</div>
</section>
<section id="setting-up-gitlab-repository-information-for-api-requests">
<h1>Setting up Gitlab repository information for API requests<a class="headerlink" href="#setting-up-gitlab-repository-information-for-api-requests" title="Permalink to this heading">¶</a></h1>
<p>Some helpers have features that make API requests to GitLab (or GitHub). For example, the a_presentation helper has a functionality that
creates a repository in a designated GitLab group. In order to use these features, the target repository
information needs to be defined in your configuration files (<code class="code docutils literal notranslate"><span class="pre">regolithrc.json</span></code>, <code class="code docutils literal notranslate"><span class="pre">user.json</span></code>).</p>
<section id="setting-up-destination-repo-information">
<h2>Setting up Destination Repo Information<a class="headerlink" href="#setting-up-destination-repo-information" title="Permalink to this heading">¶</a></h2>
<p>The designated repository information should be defined in <code class="code docutils literal notranslate"><span class="pre">regolithrc.json</span></code> in the directory in which you are
running the helper. Create a collection of repository targets designated as <code class="code docutils literal notranslate"><span class="pre">repos</span></code> (see below for an example).
according to the following pattern. We will use as an example an entry that will
allow <code class="code docutils literal notranslate"><span class="pre">a_presentation</span></code> to successfully create a repository in a group called <cite>talks</cite>
on a GitLab instance.</p>
<p><code class="code docutils literal notranslate"><span class="pre">a_presentation</span></code> looks for a rep with the entry <code class="code docutils literal notranslate"><span class="pre">_id</span></code> with value <code class="docutils literal notranslate"><span class="pre">"talk_repo"</span></code>.</p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span>
</pre></div>
</div>
<dl>
<dt>“repos”:[</dt><dd><blockquote>
<div><dl>
<dt>{“_id”: “talk_repo”, # a_presentation looks for the entry with this ID</dt><dd><dl class="simple">
<dt>“params”: {“namespace_id”: “35”, # These params are handed to the API post request.</dt><dd><p>“initialize_with_readme”: “True” # “name” is also needed but a_presentation generates that automatially
},</p>
</dd>
</dl>
<p>“url”: “<a class="reference external" href="https://gitlab.example.com">https://gitlab.example.com</a>”, # The URL of the main GitLab/GitHub instance
“api_route”: “/api/v4/projects/”, # This is the route to the REST-API. The value</p>
<blockquote>
<div><p># shown here is correct for GitLab at the time of writing</p>
</div></blockquote>
<p>“namespace_name”: “talks” # the name of group/org which corresponds to the namespace_id above.</p>
</dd>
</dl>
<p>},
{</p>
<blockquote>
<div><p>“_id”: “another_example_repo”,
[…]</p>
</div></blockquote>
<p>}</p>
</div></blockquote>
<p>]</p>
</dd>
</dl>
<p>The namespace ID is the repository’s group ID which can be found on the target repository’s main page.
The <code class="code docutils literal notranslate"><span class="pre">url</span></code> and <code class="code docutils literal notranslate"><span class="pre">api_route</span></code> should be in the format above, including the dashes.</p>
<p>For more information on the required request info, or to see a list of additional attributes
that can also be defined in the request (e.g. <code class="docutils literal notranslate"><span class="pre">initialize_with_readme</span></code>, <code class="docutils literal notranslate"><span class="pre">description</span></code>, etc.),
see GitHub or GitLab API documentation, e.g., for GitLab the <a class="reference external" href="https://docs.gitlab.com/ee/api/projects.html#create-project">GitLab docs</a>.
(Note that additional attributes can be defined under <code class="docutils literal notranslate"><span class="pre">params</span></code>, where needed.)</p>
</section>
<section id="setting-up-your-private-access-token">
<h2>Setting up your Private Access Token<a class="headerlink" href="#setting-up-your-private-access-token" title="Permalink to this heading">¶</a></h2>
<p>Your personal/private API request token should be defined in <code class="code docutils literal notranslate"><span class="pre">user.json</span></code>, which can be found in your
~/.config directory. Similarly, define a distinct ID for each private token. For example, to create a repo
in GitLab, you should define your authentication token with the ID, <code class="docutils literal notranslate"><span class="pre">"gitlab_private_token"</span></code>:</p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span>[
{
"_id": "gitlab_private_token",
"token": "<private-token>"
},
{
"_id": "example_token",
[...]
}
]
</pre></div>
</div>
<p>To learn more about creating a personal access token, refer to the
<a class="reference external" href="https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html#personal-access-tokens">Gitlab docs</a>.
Note that your personal access token should have the <code class="docutils literal notranslate"><span class="pre">api</span></code> scope enabled in order to make a successful request.</p>
<p>To change the target directory, you can change the parameters (or IDs) in the function
<code class="code docutils literal notranslate"><span class="pre">create_repo(destination_id,</span> <span class="pre">token_info_id,</span> <span class="pre">rc)</span></code> in <cite>a_presentationhelper.py</cite> to
the IDs of your desired repo info and corresponding token.</p>
</section>
</section>
<section id="setting-up-github-repository-information-for-api-requests">
<h1>Setting up GitHub repository information for API requests<a class="headerlink" href="#setting-up-github-repository-information-for-api-requests" title="Permalink to this heading">¶</a></h1>
</section>
<section id="using-the-filter-capabilities-in-the-helpers">
<h1>Using the filter capabilities in the helpers<a class="headerlink" href="#using-the-filter-capabilities-in-the-helpers" title="Permalink to this heading">¶</a></h1>
<p>Most helpers have a filter field. This allows you to filter the relevant collection
before running the helper functionality.</p>
<p>The logic of filter is the following. A document will be valid if the value of key contains value for all keys and values using AND logic.</p>
<p>As an example, if we consider filtering in the <code class="code highlight bash docutils literal highlight-bash">l_milestones</code> helper we will get the following behavior. <code class="code highlight bash docutils literal highlight-bash">l_milestones</code> operates on the <code class="code highlight bash docutils literal highlight-bash">projecta</code> collection, so the filter will be applied to this collection.
If you specify <code class="code highlight bash docutils literal highlight-bash">--filter lead voe</code> it will return all documents where <code class="code highlight bash docutils literal highlight-bash">voe</code> appears in the value for the <code class="code highlight bash docutils literal highlight-bash">lead</code> field (e.g., if there is someone with an id of <code class="code highlight bash docutils literal highlight-bash">carvoe</code> and another person with and id of <code class="code highlight bash docutils literal highlight-bash">voedemort</code> the filter will return all the documents where either of these people are <code class="code highlight bash docutils literal highlight-bash">lead</code>).</p>
<p>If you then select <code class="code highlight bash docutils literal highlight-bash">current</code> and <code class="code highlight bash docutils literal highlight-bash">verbose</code> the helper will do the normal thing of returning in verbose form the current milestones, but it will do it on the filtered collection.</p>
<p>A slight gotcha is that since filter uses “in” in its logic, if the type of the key value is a string it will find all strings that contain that fragment, as above, but if the type of the key value is a list it will return documents where the specified value is in the list, so <code class="code highlight bash docutils literal highlight-bash">--filter group_member voe</code> will return all the documents where <code class="code highlight bash docutils literal highlight-bash">voe</code> is listed as a group member, but it won’t return any documents where <code class="code highlight bash docutils literal highlight-bash">carvoe</code> or <code class="code highlight bash docutils literal highlight-bash">voedemort</code> are listed as a group member.</p>
<p>The filter uses AND logic and operates such that <code class="code highlight bash docutils literal highlight-bash">--filter lead voe grants mygrant21 status finished</code> will return all prums that are led by <code class="code highlight bash docutils literal highlight-bash">carvoe</code> or <code class="code highlight bash docutils literal highlight-bash">voedemort</code> that acknowledge the mygrant21 grant and are finished. Actually, similar behavior can be obtained also by selecting <code class="code highlight bash docutils literal highlight-bash">--lead voe --stati finished --filter grants mygrant21</code></p>
<p>unfortunately the filter function does not currently recurse, so it will only operate on top level key-value pairs where the type of the value is a string or a list or a tuple.</p>
</section>
<section id="backing-up-and-protecting-your-work">
<h1>Backing up and protecting your work<a class="headerlink" href="#backing-up-and-protecting-your-work" title="Permalink to this heading">¶</a></h1>
<p>Now you have started saving your precious life’s work in your regolith database
you better start protecting it and backing it up. One low overhead approach
for this is simply to set up your database directory to be backed up remotely as
a Google drive or Dropbox synced directory, for example.</p>
<p>However, Regolith is set up to
work with git and GitHub and this is a powerful option if you are
comfortable with it. This gets more useful when you want to start
sharing databases with group members, for example, using GitHub access rights.
It is also possible to make sure people’s edits to the database won’t
break things by setting up continuous integration (CI) that runs some
validation and builders and makes sure they don’t crash before the
edits are accepted. This is much more advanced usage which you
should save for later.</p>
<p>To get started with the GitHub option, the next thing to do is to turn your database directory
on your filesystem into a git repository and link it to a repository on
your personal space on GitHub (you will need a GitHub account). You can make
that repo private so the world
cannot see your todo list, or public so that the world can see the web-page
you build from it. We will get back to this later, but Regolith will build
collections from across databases, so you can have parts of your <code class="code highlight bash docutils literal highlight-bash">people</code>
collection private and other parts public. Depending which <code class="code highlight bash docutils literal highlight-bash">regolithrc.json</code>
file you use to build with, you can pull from the public, or private, or both
parts. Again, this is a peep to the future.
For now, let’s assume you just want to back up and keep versions of
you private database. You will make a repository on your personal GitHub account
and synchronize your local database with this repo.
<a class="reference external" href="https://docs.github.com/en/github/importing-your-projects-to-github/importing-source-code-to-github/adding-an-existing-project-to-github-using-the-command-line">Instructions for doing this are here</a></p>
<p>Once you get everything set up you will want to periodically (meaning
frequently) type</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ git commit -a -m <span class="s2">"my commit message"</span>
$ git push
</pre></div>
</div>
<p>This will add, commit and push all files that git is tracking that have been
updated locally. If you add a new file to the repository and want it in the
GitHub backup, you will have to explicitly add it before committing,</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>$ git add my_new_file.py
$ git commit -m <span class="s2">"an even more informative commit message"</span>
</pre></div>
</div>
<p><code class="code highlight bash docutils literal highlight-bash">$ git commit</code> commits (i.e., checks in) to the git database (yes,
git, like you now, is using a database backend) everything that has been added, or staged, for commit.
<code class="code highlight bash docutils literal highlight-bash">$ git commit -a</code> automatically adds all files that git is tracking
(have been previously committed in the past) that have been edited and then
commits them.</p>
<p>They are now safely captured in the git database and you can retrieve them
later if you accidentally delete your personal database or mess it up some other way.
But this version of the git database is still stored on your local computer, so
if you spill coffee on your computer, you may lose everything. <code class="code highlight bash docutils literal highlight-bash">$ git push</code> pushes all
these updates to a remote computer on the internet at the GitHub headquarters.
Git and GitHub form a wonderful but complicated infrastructure, it is well worth
getting to know how to use them well. For now, we have used it to
secure your precious database. Remember to make frequent pushes.</p>
<p>OK, you are started with your Regolith database. Go play. Regolith
can do many more complicated things to help with administering your
research group, or whatever you are working on. We will continue to
add tutorials below explaining some of these things, so check back
from time to time. And remember join and to ask questions at the <a class="reference external" href="https://groups.google.com/u/1/g/regolith-users">regolith-users</a>
Google group. They will get answered.</p>
</section>
<section id="tutorials">
<h1>Tutorials<a class="headerlink" href="#tutorials" title="Permalink to this heading">¶</a></h1>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="tutorials/index.html">Tutorials</a></li>
</ul>
</div>
</section>
<section id="run-control">
<h1>Run Control<a class="headerlink" href="#run-control" title="Permalink to this heading">¶</a></h1>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="rc.html">Top-level Configuration Keys</a></li>
<li class="toctree-l1"><a class="reference internal" href="rc.html#keys-usually-set-by-cli">Keys Usually Set by CLI</a></li>
<li class="toctree-l1"><a class="reference internal" href="rc.html#user-configuration">User Configuration</a></li>
</ul>
</div>
</section>
<section id="database-collections">
<h1>Database Collections<a class="headerlink" href="#database-collections" title="Permalink to this heading">¶</a></h1>
<p><strong>Collections</strong> are the regolith (and mongo) abstraction for <em>tables</em>.
<strong>Entries</strong> (or <em>rows</em>) in
a collection must follow the schema defined below. In general, the following notions
hold:</p>
<ul class="simple">
<li><p>An entry is a dictionary with string keys.</p></li>
<li><p>Each entry must contain a unique identifier. This is called <code class="docutils literal notranslate"><span class="pre">"_id"</span></code> in JSON
and Mongo, and is simply the top-level key in YAML.</p></li>
<li><p>A collection is a list of entries that follow the same schema.</p></li>
</ul>
<p>Not all regolith actions will use every collection type. It is common for regolith
projects to just use some of the collections below. For example, building a group
website will use different collections than managing students and grades in a course!
With these points in mind, feel free to dive into the databases below!</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="collections/index.html">Collections</a><ul>
<li class="toctree-l2"><a class="reference internal" href="collections/abstracts.html">Abstracts</a></li>
<li class="toctree-l2"><a class="reference internal" href="collections/assignments.html">Assignments</a></li>
<li class="toctree-l2"><a class="reference internal" href="collections/beamplan.html">Beamplan</a></li>
<li class="toctree-l2"><a class="reference internal" href="collections/blog.html">Blog</a></li>
<li class="toctree-l2"><a class="reference internal" href="collections/citations.html">Citations</a></li>
<li class="toctree-l2"><a class="reference internal" href="collections/contacts.html">Contacts</a></li>
<li class="toctree-l2"><a class="reference internal" href="collections/courses.html">Courses</a></li>
<li class="toctree-l2"><a class="reference internal" href="collections/expenses.html">Expenses</a></li>
<li class="toctree-l2"><a class="reference internal" href="collections/grades.html">Grades</a></li>
<li class="toctree-l2"><a class="reference internal" href="collections/grants.html">Grants</a></li>
<li class="toctree-l2"><a class="reference internal" href="collections/groups.html">Groups</a></li>
<li class="toctree-l2"><a class="reference internal" href="collections/institutions.html">Institutions</a></li>
<li class="toctree-l2"><a class="reference internal" href="collections/jobs.html">Jobs</a></li>
<li class="toctree-l2"><a class="reference internal" href="collections/meetings.html">Meetings</a></li>
<li class="toctree-l2"><a class="reference internal" href="collections/news.html">News</a></li>
<li class="toctree-l2"><a class="reference internal" href="collections/people.html">People</a></li>
<li class="toctree-l2"><a class="reference internal" href="collections/presentations.html">Presentations</a></li>
<li class="toctree-l2"><a class="reference internal" href="collections/projecta.html">Projecta</a></li>
<li class="toctree-l2"><a class="reference internal" href="collections/projects.html">Projects</a></li>
<li class="toctree-l2"><a class="reference internal" href="collections/proposalReviews.html">Proposalreviews</a></li>
<li class="toctree-l2"><a class="reference internal" href="collections/proposals.html">Proposals</a></li>
<li class="toctree-l2"><a class="reference internal" href="collections/reading_lists.html">Reading_Lists</a></li>
<li class="toctree-l2"><a class="reference internal" href="collections/refereeReports.html">Refereereports</a></li>
<li class="toctree-l2"><a class="reference internal" href="collections/students.html">Students</a></li>
<li class="toctree-l2"><a class="reference internal" href="collections/todos.html">Todos</a></li>
</ul>
</li>
</ul>
</div>
</section>
<section id="regolith-api">
<h1>Regolith API<a class="headerlink" href="#regolith-api" title="Permalink to this heading">¶</a></h1>
<p>For those who want to dive deeper into the library itself.</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="api/index.html">Regolith API</a></li>
</ul>
</div>
</section>
<section id="regolith-commands">
<h1>Regolith Commands<a class="headerlink" href="#regolith-commands" title="Permalink to this heading">¶</a></h1>
<p>Shell commmands for regolith</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="commands/index.html">Regolith Commands</a><ul>
<li class="toctree-l2"><a class="reference internal" href="commands/add.html">add</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands/app.html">app</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands/build.html">build</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands/classlist.html">classlist</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands/deploy.html">deploy</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands/email.html">email</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands/fs-to-mongo.html">fs-to-mongo</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands/grade.html">grade</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands/helper.html">helper</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands/ingest.html">ingest</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands/json-to-yaml.html">json-to-yaml</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands/mongo-to-fs.html">mongo-to-fs</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands/rc.html">rc</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands/store.html">store</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands/validate.html">validate</a></li>
<li class="toctree-l2"><a class="reference internal" href="commands/yaml-to-json.html">yaml-to-json</a></li>
</ul>
</li>
</ul>
</div>
</section>
<section id="database-maintenance">
<h1>Database Maintenance<a class="headerlink" href="#database-maintenance" title="Permalink to this heading">¶</a></h1>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="database_maintenance/index.html">Database Maintenance</a></li>
</ul>
</div>
</section>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="#" title="index">
<img class="logo" src="_static/regolith-logo.svg" alt="Logo"/>
</a></p><div class="sphinx-toc sphinxlocaltoc">
<h3><a href="#">Page contents</a></h3>
<ul>
<li><a class="reference internal" href="#">Regolith</a></li>
<li><a class="reference internal" href="#example-sites">Example Sites</a></li>
<li><a class="reference internal" href="#installation">Installation</a><ul>
<li><a class="reference internal" href="#make-your-first-database">1. Make your first database</a></li>
<li><a class="reference internal" href="#install-regolith">2. install Regolith</a></li>
</ul>
</li>
<li><a class="reference internal" href="#quick-ish-start">Quick(ish) Start</a></li>
<li><a class="reference internal" href="#what-next">What Next?</a></li>
<li><a class="reference internal" href="#getting-help-from-helpers">Getting Help from Helpers</a></li>
<li><a class="reference internal" href="#setting-up-gitlab-repository-information-for-api-requests">Setting up Gitlab repository information for API requests</a><ul>
<li><a class="reference internal" href="#setting-up-destination-repo-information">Setting up Destination Repo Information</a></li>
<li><a class="reference internal" href="#setting-up-your-private-access-token">Setting up your Private Access Token</a></li>
</ul>
</li>
<li><a class="reference internal" href="#setting-up-github-repository-information-for-api-requests">Setting up GitHub repository information for API requests</a></li>
<li><a class="reference internal" href="#using-the-filter-capabilities-in-the-helpers">Using the filter capabilities in the helpers</a></li>
<li><a class="reference internal" href="#backing-up-and-protecting-your-work">Backing up and protecting your work</a></li>
<li><a class="reference internal" href="#tutorials">Tutorials</a></li>
<li><a class="reference internal" href="#run-control">Run Control</a></li>
<li><a class="reference internal" href="#database-collections">Database Collections</a></li>
<li><a class="reference internal" href="#regolith-api">Regolith API</a></li>
<li><a class="reference internal" href="#regolith-commands">Regolith Commands</a></li>
<li><a class="reference internal" href="#database-maintenance">Database Maintenance</a></li>
</ul>
</div>
<div class="sphinxnext">
<h4>Next page</h4>
<p class="topless"><a href="tutorials/index.html"
title="Next page">→ Tutorials</a></p>
</div>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>document.getElementById('searchbox').style.display = "block"</script>
</div>
</div>
<div class="sidebar-toggle-group no-js">
<button class="sidebar-toggle" id="sidebar-hide" title="Hide the sidebar menu">
«
<span class="show-for-small">hide menu</span>
</button>
<button class="sidebar-toggle" id="sidebar-show" title="Show the sidebar menu">
<span class="show-for-small">menu</span>
<span class="hide-for-small">sidebar</span>
»
</button>
</div>
<div class="clearer"></div>
</div>
<div class="relbar-bottom">
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="tutorials/index.html" title="Tutorials"
>next</a></li>
<li><a href="#">regolith</a> »</li>
<li class="nav-item nav-item-this"><a href="">Regolith</a></li>
</ul>
</div>
</div>
<div class="footer" role="contentinfo">
© Copyright 2015, Anthony Scopatz.
</div>
<!-- cloud_sptheme 1.4 -->
</body>
</html>