aboutsummaryrefslogblamecommitdiffstats
path: root/README.html
blob: 4c8647c0d47e773ab047ec9e7d84267808882a5c (plain) (tree)
1
2
3
4
5
6




                                                                   
                             



































































































































































































































                                                                            
                                
    

                                                 

     
                                              
    

                                                          

     
                                      
    


                                                
    

                                             



     
                                                   
                              
    


                                                       

     
                                       


      
                                              


                                                         


                        



















































                                                                                  


                                                         








                                                                                               


      


                                                         










                                                                                                                         
                                                                
    
      


      

                                                                
                                                         
      


                                                         




                                             


      


                                                         


                                                                                      
                               
                                                                                                                  
                                                       


                                                                                                               
                     
                                                                                    
         
                                                                                      
                 
                                                                                  
       





      


                                                         


                                                                                                  
      


                                                         



                                    


                                                                                                                                                                   






                                                                 
                                                                 

      

      
 


                                                         
   
                  

                               


                                                                                 




                               
                                                                                                                  
                                                       


                                                                                                               
                                              
                                                                                    
         
                                                                                    
              
                                                                                  





         


                                                         







                                                                               


                                                         
   

                                                                            

                               
                                   




      


                                                         
                               
                                      






                                                     
                                                            






                                  


                                                         
   
                                             
    
      

      

                                                         
                                            
   
                                                              


    
                                 
    
      


                                                         
                               

                                                                                                                
                                 
 
                                                                                             
                                




      


                                                         
                               

                                                                                                                     
                                      
                                                                                                                            
                                       
                                                                                                      

                               
                                                                                           

                           
                                                                                         


                      
                                                                                                    

                                    

                                                                                                                                    
                                                         




      


                                                         
                               
                                                                                                                                                               
                 
                                                                                                                  
                 
 
                                                                                                                            

                                  
 
                                                                                              
                  
 
                                                                                              
                    


                                                                                          
 
                                                                                                            
               
                                                                                                            
                          
                                                                                              

                                           
                                                                                                                 
                 
                                                                                                

                                         
                                                                                                                    
                
                                                                                                     

               
                                                                                                  

             



      

      

                                                         
                                              
                                           
                                               






















                                                                       
                                              























                                                      

















































































































































































































                                                                         



































                                                            






                                                           










                                                            





                                                         

                                                   

            

















                                                          

                                                 




















                                                           


                                                             

                                                          







                                                        

 


                     
 
 



                                                             
 
                                              



                                                                                
                                                
 




                                                        
 
 


                                      

 




                                                       
 
 


                             
 
 



                                                          
 







                                                                                       



                                                            

                                                       
 




                                                        
 
 


                     

 






                                              



                                                                               


















                                                           
 
 


                              
 
 

                                                            
 
                                            
 




                                                        

 


                           
 
 




                                                         

 


                           
 
 


                                                   
 
                                               
 






                                                 
 


                                                     

                                                            







                                                        

 


                     
 
 




                                    
 
                                              



                                                                                                   
                                                
 




                                                        
 
 


                               

 




                                               
 
 


                                  
 
 













































































                                                                

 


                     
 
 



                              
 
                                              



                                                                                                                 
                                                
 




                                                        
 
 


                       

 




                                                           
 
 


                        
 
 




                                                         

 


                           
 
 



                                                                
 
 


                                                    

 



                                                                    
 
 


                         

 


                                                                          
 
                                            
 




                                                        
 
 


                                            

 






                                                            
 
 
































                                                            




                                                            








                                                           

 


                     
 
 




                                  
 
                                              



                                                                                
                                                
 




                                                        
 
 


                               

 






                                                        
 
 


                                  
 
 




                                                           
 







                                                     


                                                          






                                                         
 




                                                        

 


                     
 
 



                                            
 
                                              



                                                                                                    
                                                
 




                                                        
 
 


                              

 



                                                             
 
                                               
 





                                                                 









                                                            























                                                            





















                                                        
 
 


                     
 
 



                              
 
                                              



                                                                                   
                                                
 




                                                        
 
 


                               
 
 



                                                               

 


                      
 
 









                                                               
    








                                                           

 


                     
 
 



                                          
 
                                              



                                                                                                                                







                                                        
 


                         
 
 

                                                                  
 
                                               
 


                                           
 















                                                           



                                                            
























































                                                            

                                   
                                                 



                                                                                          
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2018-11-14 Wed 16:42 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>&lrm;</title>
<meta name="generator" content="Org mode" />
<style type="text/css">
 <!--/*--><![CDATA[/*><!--*/
  .title  { text-align: center;
             margin-bottom: .2em; }
  .subtitle { text-align: center;
              font-size: medium;
              font-weight: bold;
              margin-top:0; }
  .todo   { font-family: monospace; color: red; }
  .done   { font-family: monospace; color: green; }
  .priority { font-family: monospace; color: orange; }
  .tag    { background-color: #eee; font-family: monospace;
            padding: 2px; font-size: 80%; font-weight: normal; }
  .timestamp { color: #bebebe; }
  .timestamp-kwd { color: #5f9ea0; }
  .org-right  { margin-left: auto; margin-right: 0px;  text-align: right; }
  .org-left   { margin-left: 0px;  margin-right: auto; text-align: left; }
  .org-center { margin-left: auto; margin-right: auto; text-align: center; }
  .underline { text-decoration: underline; }
  #postamble p, #preamble p { font-size: 90%; margin: .2em; }
  p.verse { margin-left: 3%; }
  pre {
    border: 1px solid #ccc;
    box-shadow: 3px 3px 3px #eee;
    padding: 8pt;
    font-family: monospace;
    overflow: auto;
    margin: 1.2em;
  }
  pre.src {
    position: relative;
    overflow: visible;
    padding-top: 1.2em;
  }
  pre.src:before {
    display: none;
    position: absolute;
    background-color: white;
    top: -10px;
    right: 10px;
    padding: 3px;
    border: 1px solid black;
  }
  pre.src:hover:before { display: inline;}
  /* Languages per Org manual */
  pre.src-asymptote:before { content: 'Asymptote'; }
  pre.src-awk:before { content: 'Awk'; }
  pre.src-C:before { content: 'C'; }
  /* pre.src-C++ doesn't work in CSS */
  pre.src-clojure:before { content: 'Clojure'; }
  pre.src-css:before { content: 'CSS'; }
  pre.src-D:before { content: 'D'; }
  pre.src-ditaa:before { content: 'ditaa'; }
  pre.src-dot:before { content: 'Graphviz'; }
  pre.src-calc:before { content: 'Emacs Calc'; }
  pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
  pre.src-fortran:before { content: 'Fortran'; }
  pre.src-gnuplot:before { content: 'gnuplot'; }
  pre.src-haskell:before { content: 'Haskell'; }
  pre.src-hledger:before { content: 'hledger'; }
  pre.src-java:before { content: 'Java'; }
  pre.src-js:before { content: 'Javascript'; }
  pre.src-latex:before { content: 'LaTeX'; }
  pre.src-ledger:before { content: 'Ledger'; }
  pre.src-lisp:before { content: 'Lisp'; }
  pre.src-lilypond:before { content: 'Lilypond'; }
  pre.src-lua:before { content: 'Lua'; }
  pre.src-matlab:before { content: 'MATLAB'; }
  pre.src-mscgen:before { content: 'Mscgen'; }
  pre.src-ocaml:before { content: 'Objective Caml'; }
  pre.src-octave:before { content: 'Octave'; }
  pre.src-org:before { content: 'Org mode'; }
  pre.src-oz:before { content: 'OZ'; }
  pre.src-plantuml:before { content: 'Plantuml'; }
  pre.src-processing:before { content: 'Processing.js'; }
  pre.src-python:before { content: 'Python'; }
  pre.src-R:before { content: 'R'; }
  pre.src-ruby:before { content: 'Ruby'; }
  pre.src-sass:before { content: 'Sass'; }
  pre.src-scheme:before { content: 'Scheme'; }
  pre.src-screen:before { content: 'Gnu Screen'; }
  pre.src-sed:before { content: 'Sed'; }
  pre.src-sh:before { content: 'shell'; }
  pre.src-sql:before { content: 'SQL'; }
  pre.src-sqlite:before { content: 'SQLite'; }
  /* additional languages in org.el's org-babel-load-languages alist */
  pre.src-forth:before { content: 'Forth'; }
  pre.src-io:before { content: 'IO'; }
  pre.src-J:before { content: 'J'; }
  pre.src-makefile:before { content: 'Makefile'; }
  pre.src-maxima:before { content: 'Maxima'; }
  pre.src-perl:before { content: 'Perl'; }
  pre.src-picolisp:before { content: 'Pico Lisp'; }
  pre.src-scala:before { content: 'Scala'; }
  pre.src-shell:before { content: 'Shell Script'; }
  pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
  /* additional language identifiers per "defun org-babel-execute"
       in ob-*.el */
  pre.src-cpp:before  { content: 'C++'; }
  pre.src-abc:before  { content: 'ABC'; }
  pre.src-coq:before  { content: 'Coq'; }
  pre.src-groovy:before  { content: 'Groovy'; }
  /* additional language identifiers from org-babel-shell-names in
     ob-shell.el: ob-shell is the only babel language using a lambda to put
     the execution function name together. */
  pre.src-bash:before  { content: 'bash'; }
  pre.src-csh:before  { content: 'csh'; }
  pre.src-ash:before  { content: 'ash'; }
  pre.src-dash:before  { content: 'dash'; }
  pre.src-ksh:before  { content: 'ksh'; }
  pre.src-mksh:before  { content: 'mksh'; }
  pre.src-posh:before  { content: 'posh'; }
  /* Additional Emacs modes also supported by the LaTeX listings package */
  pre.src-ada:before { content: 'Ada'; }
  pre.src-asm:before { content: 'Assembler'; }
  pre.src-caml:before { content: 'Caml'; }
  pre.src-delphi:before { content: 'Delphi'; }
  pre.src-html:before { content: 'HTML'; }
  pre.src-idl:before { content: 'IDL'; }
  pre.src-mercury:before { content: 'Mercury'; }
  pre.src-metapost:before { content: 'MetaPost'; }
  pre.src-modula-2:before { content: 'Modula-2'; }
  pre.src-pascal:before { content: 'Pascal'; }
  pre.src-ps:before { content: 'PostScript'; }
  pre.src-prolog:before { content: 'Prolog'; }
  pre.src-simula:before { content: 'Simula'; }
  pre.src-tcl:before { content: 'tcl'; }
  pre.src-tex:before { content: 'TeX'; }
  pre.src-plain-tex:before { content: 'Plain TeX'; }
  pre.src-verilog:before { content: 'Verilog'; }
  pre.src-vhdl:before { content: 'VHDL'; }
  pre.src-xml:before { content: 'XML'; }
  pre.src-nxml:before { content: 'XML'; }
  /* add a generic configuration mode; LaTeX export needs an additional
     (add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
  pre.src-conf:before { content: 'Configuration File'; }

  table { border-collapse:collapse; }
  caption.t-above { caption-side: top; }
  caption.t-bottom { caption-side: bottom; }
  td, th { vertical-align:top;  }
  th.org-right  { text-align: center;  }
  th.org-left   { text-align: center;   }
  th.org-center { text-align: center; }
  td.org-right  { text-align: right;  }
  td.org-left   { text-align: left;   }
  td.org-center { text-align: center; }
  dt { font-weight: bold; }
  .footpara { display: inline; }
  .footdef  { margin-bottom: 1em; }
  .figure { padding: 1em; }
  .figure p { text-align: center; }
  .inlinetask {
    padding: 10px;
    border: 2px solid gray;
    margin: 10px;
    background: #ffffcc;
  }
  #org-div-home-and-up
   { text-align: right; font-size: 70%; white-space: nowrap; }
  textarea { overflow-x: auto; }
  .linenr { font-size: smaller }
  .code-highlighted { background-color: #ffff00; }
  .org-info-js_info-navigation { border-style: none; }
  #org-info-js_console-label
    { font-size: 10px; font-weight: bold; white-space: nowrap; }
  .org-info-js_search-highlight
    { background-color: #ffff00; color: #000000; font-weight: bold; }
  .org-svg { width: 90%; }
  /*]]>*/-->
</style>
<script type="text/javascript">
/*
@licstart  The following is the entire license notice for the
JavaScript code in this tag.

Copyright (C) 2012-2018 Free Software Foundation, Inc.

The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version.  The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.

As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.


@licend  The above is the entire license notice
for the JavaScript code in this tag.
*/
<!--/*--><![CDATA[/*><!--*/
 function CodeHighlightOn(elem, id)
 {
   var target = document.getElementById(id);
   if(null != target) {
     elem.cacheClassElem = elem.className;
     elem.cacheClassTarget = target.className;
     target.className = "code-highlighted";
     elem.className   = "code-highlighted";
   }
 }
 function CodeHighlightOff(elem, id)
 {
   var target = document.getElementById(id);
   if(elem.cacheClassElem)
     elem.className = elem.cacheClassElem;
   if(elem.cacheClassTarget)
     target.className = elem.cacheClassTarget;
 }
/*]]>*///-->
</script>
</head>
<body>
<div id="content">
<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#orgac39c95">ck</a>
<ul>
<li><a href="#org2f1cd2a">Technicalities</a></li>
<li><a href="#orgb8c0efd">Download</a></li>
</ul>
</li>
<li><a href="#build-instructions">build it</a>
<ul>
<li><a href="#org9b6c6f0">requirements</a></li>
<li><a href="#org01b87bb">make &amp;&amp; install</a></li>
</ul>
</li>
<li><a href="#org982cbd5">for devs</a>
<ul>
<li><a href="#org6b070c4">CMake options</a></li>
<li><a href="#orgcd2bc40">compiler</a></li>
<li><a href="#orgc1ff7c9">tests</a>
<ul>
<li><a href="#org7c12f69">run tests</a></li>
<li><a href="#org0629f99">test suite</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#orga05b7b3">ck configuration</a></li>
<li><a href="#usage">Usage</a>
<ul>
<li><a href="#orgdeb4b8f">Initialize</a></li>
<li><a href="#org9308f2c">Add configs</a></li>
<li><a href="#org8fcf2fd">Using the ck actions</a></li>
</ul>
</li>
<li><a href="#manpage">manpage</a></li>
</ul>
</div>
</div>
<p align="center"><img src="res/logo.png"></p>
<div id="outline-container-orgac39c95" class="outline-2">
<h2 id="orgac39c95">ck</h2>
<div class="outline-text-2" id="text-orgac39c95">
<p>
<b>The Config Keeper</b>
</p>

<p>
Have you ever wondered:
</p>
<blockquote>
<p>
"Jeez Luiz, how can I manage all my configs across my desktop and server?"
</p>

<p>
&#x2013; You
</p>
</blockquote>

<p>
or maybe:
</p>
<blockquote>
<p>
"How can I possibly keep all my configs in sync across computers?"
</p>

<p>
&#x2013; You again
</p>
</blockquote>

<p>
<b>ck</b> is the solution you've been looking for all your life.
</p>

<p>
With it you can keep track of all the configs you cherish and love,
and store them neat and tidy in a folder you can later sync using
your favorite sync solution (git, nextcloud, rsync). You can even gift
your precious data to Google and use GDrive (<i><i>not recommended!!</i></i>).
</p>

<p>
After you create your local config db you can list them, edit them
and even search in them, all within the comforting hands of <b>ck</b>, your
faithful companion.
</p>

<p>
You can also use <b>ck</b> to store sensitive configurations (with passwords, etc)
and instruct it to save them in a different folder, so they won't be in the
same place with the normal ones (in the event you want to share your configs
with the rest of us).
</p>
</div>

<div id="outline-container-org2f1cd2a" class="outline-3">
<h3 id="org2f1cd2a">Technicalities</h3>
<div class="outline-text-3" id="text-org2f1cd2a">
<p>
Upon adding a config to <b>ck</b>, it moves it to the specified folder and adds a symbolic link
back where it came from (<code>ln -s</code>).
</p>

<p>
Make sure that the target program can read it's configuration from a symlink (the vast
majority should).
</p>
</div>
</div>

<div id="outline-container-orgb8c0efd" class="outline-3">
<h3 id="orgb8c0efd">Download</h3>
<div class="outline-text-3" id="text-orgb8c0efd">
<p>
Go ahead and download <b>ck</b> and give it a try. It comes with a help sub-command
that explains any inquires you might have.
</p>

<p>
Grab the latest zip/tarball from the tag section in the <a href="https://ubuntos.dynu.net/git/ck">repo</a> and proceed to
the <a href="#build-instructions">build</a> section.
</p>

<p>
You can also read the manpage <a href="#manpage">down below</a>.
</p>
</div>
</div>
</div>

<div id="outline-container-org262e9ab" class="outline-2">
<h2 id="build-instructions"><a id="org262e9ab"></a>build it</h2>
<div class="outline-text-2" id="text-build-instructions">
</div>
<div id="outline-container-org9b6c6f0" class="outline-3">
<h3 id="org9b6c6f0">requirements</h3>
<div class="outline-text-3" id="text-org9b6c6f0">
<ul class="org-ul">
<li>cmake</li>
<li>sqlite3-dev</li>
<li>build tools (gcc/llvm, make&#x2026;)</li>
</ul>
</div>
</div>

<div id="outline-container-org01b87bb" class="outline-3">
<h3 id="org01b87bb">make &amp;&amp; install</h3>
<div class="outline-text-3" id="text-org01b87bb">
<p>
Use <code>-DCMAKE_INSTALL_PREFIX</code> when running cmake to change the install path.
</p>
<div class="org-src-container">
<pre class="src src-sh"><span style="color: #656565;"># </span><span style="color: #757575;">clone the repo</span>
&gt; cd ~/code; git clone https://gitlab.com/grm-grm/ck
<span style="color: #656565;"># </span><span style="color: #757575;">make a build directory and enter it</span>
&gt; mkdir ~/ck_build; <span style="color: #528fd1;">cd</span> ~/ck_build;
<span style="color: #656565;"># </span><span style="color: #757575;">run cmake</span>
&gt; cmake ~/code/ck 
<span style="color: #656565;"># </span><span style="color: #757575;">run make</span>
&gt; make
<span style="color: #656565;"># </span><span style="color: #757575;">install it</span>
&gt; make install
<span style="color: #656565;"># </span><span style="color: #757575;">run ck</span>
&gt; ck
</pre>
</div>
</div>
</div>
</div>

<div id="outline-container-org982cbd5" class="outline-2">
<h2 id="org982cbd5">for devs</h2>
<div class="outline-text-2" id="text-org982cbd5">
<p>
Please be <a href="https://www.gnu.org/philosophy/kind-communication.html">kind</a> to each other.
</p>
</div>
<div id="outline-container-org6b070c4" class="outline-3">
<h3 id="org6b070c4">CMake options</h3>
<div class="outline-text-3" id="text-org6b070c4">
<p>
cmake accepts the following options:
</p>
<div class="org-src-container">
<pre class="src src-cmake"><span style="color: #6aaf50;">option</span>(CK_DEBUG <span style="color: #bdbc61;">"Build with debug symbols, asan and warnings"</span>)
<span style="color: #6aaf50;">option</span>(CK_TESTS <span style="color: #bdbc61;">"Make the tests"</span>)
<span style="color: #6aaf50;">option</span>(CK_SHARED <span style="color: #bdbc61;">"Build with shared lib"</span>)
</pre>
</div>

<p>
To use any one of them append it after the cmake command like so:
</p>
<div class="org-src-container">
<pre class="src src-sh">cmake -DCK_DEBUG=1 -DCK_TESTS=1 ~/code/ck
</pre>
</div>
</div>
</div>

<div id="outline-container-orgcd2bc40" class="outline-3">
<h3 id="orgcd2bc40">compiler</h3>
<div class="outline-text-3" id="text-orgcd2bc40">
<p>
Pick your favorite
</p>
<div class="org-src-container">
<pre class="src src-sh">&gt; export <span style="color: #baba36;">CC</span>=clang
<span style="color: #656565;"># </span><span style="color: #757575;">or</span>
&gt; export <span style="color: #baba36;">CC</span>=gcc
</pre>
</div>


<div class="org-src-container">
<pre class="src src-sh"><span style="color: #656565;"># </span><span style="color: #757575;">clone the repo</span>
&gt; cd ~/code; git clone https://gitlab.com/grm-grm/ck
<span style="color: #656565;"># </span><span style="color: #757575;">make a build directory and enter it</span>
&gt; mkdir ~/ck_build; <span style="color: #528fd1;">cd</span> ~/ck_build;
<span style="color: #656565;"># </span><span style="color: #757575;">run cmake</span>
&gt; cmake -DCK_DEBUG=1 -DCK_TESTS=1 ~/code/ck
<span style="color: #656565;"># </span><span style="color: #757575;">run make</span>
&gt; make
<span style="color: #656565;"># </span><span style="color: #757575;">check ck</span>
&gt; ./test-ck
<span style="color: #656565;"># </span><span style="color: #757575;">run ck</span>
&gt; ./ck
</pre>
</div>
</div>
</div>

<div id="outline-container-orgc1ff7c9" class="outline-3">
<h3 id="orgc1ff7c9">tests</h3>
<div class="outline-text-3" id="text-orgc1ff7c9">
<p>
The testing "suite" is a bash script that runs regression
and unit tests. Regression tests are under the <code>tests/</code> directory
and are bash scripts that test <code>ck</code> functionality. Unit tests reside
under <code>unit/</code> directory and test the code.
</p>
</div>

<div id="outline-container-org7c12f69" class="outline-4">
<h4 id="org7c12f69">run tests</h4>
<div class="outline-text-4" id="text-org7c12f69">
<p>
First make sure you build ck with the <code>-DCK_TESTS=1</code> option. Then
go to the build directory and type:
</p>
<div class="org-src-container">
<pre class="src src-sh">$ ./test-ck
</pre>
</div>
</div>
</div>

<div id="outline-container-org0629f99" class="outline-4">
<h4 id="org0629f99">test suite</h4>
<div class="outline-text-4" id="text-org0629f99">
<div class="org-src-container">
<pre class="src src-sh">$ ./test-ck -h
ck test suite
use without flags to run all tests

flags:
  -u, --unit            run only the unit tests
  -r, --regression      run only the regression tests
  -c, --clear           remove test files
                         use if the tests crush unexpectedly
  -h, --help, *         print this
</pre>
</div>
</div>
</div>
</div>
</div>
<div id="outline-container-orga05b7b3" class="outline-2">
<h2 id="orga05b7b3">ck configuration</h2>
<div class="outline-text-2" id="text-orga05b7b3">
<p>
See the <a href="#manpage">manpage</a> below.
</p>
</div>
</div>

<div id="outline-container-org001e3df" class="outline-2">
<h2 id="usage"><a id="org001e3df"></a>Usage</h2>
<div class="outline-text-2" id="text-usage">
<p>
ck's goal is to assist with the configuration file management.
</p>

<p>
This section is an example usage.
</p>
</div>
<div id="outline-container-orgdeb4b8f" class="outline-3">
<h3 id="orgdeb4b8f">Initialize</h3>
<div class="outline-text-3" id="text-orgdeb4b8f">
<div class="org-src-container">
<pre class="src src-sh"><span style="color: #528fd1;">cd</span> ~
<span style="color: #656565;"># </span><span style="color: #757575;">make the directories for the configs</span>
$ mkdir -p configs/vc configs/sec

<span style="color: #656565;"># </span><span style="color: #757575;">initialize new ck</span>
$ ck init configs/vc configs/sec
</pre>
</div>
</div>
</div>

<div id="outline-container-org9308f2c" class="outline-3">
<h3 id="org9308f2c">Add configs</h3>
<div class="outline-text-3" id="text-org9308f2c">
<div class="org-src-container">
<pre class="src src-sh"><span style="color: #656565;"># </span><span style="color: #757575;">add emacs configs</span>
<span style="color: #656565;">## </span><span style="color: #757575;">primary config</span>
$ ck add emacs .emacs.d/orgconf.org -p
<span style="color: #656565;">## </span><span style="color: #757575;">secret config, with passwords and naughty words</span>
$ ck add emacs .emacs.d/accounts.org -s
<span style="color: #656565;">## </span><span style="color: #757575;">and another one for emacs</span>
$ ck add emacs .emacs.d/init.el

<span style="color: #656565;"># </span><span style="color: #757575;">add tmux config</span>
$ ck add tmux .tmux.conf -p

<span style="color: #656565;"># </span><span style="color: #757575;">add X configs</span>
$ ck add X .xinitrc
$ ck add X .Xresources

<span style="color: #656565;"># </span><span style="color: #757575;">add ssh configs (secret)</span>
$ ck add ssh .ssh/config -s -p
$ ck add ssh .ssh/authorized_keys -s
<span style="color: #656565;"># </span><span style="color: #757575;">When running with sudo, we need to specify the ck config</span>
<span style="color: #656565;"># </span><span style="color: #757575;">location.</span>
$ sudo ck -c /home/ckuser add ssh /etc/ssh/sshd_config -s
</pre>
</div>
</div>
</div>

<div id="outline-container-org8fcf2fd" class="outline-3">
<h3 id="org8fcf2fd">Using the ck actions</h3>
<div class="outline-text-3" id="text-org8fcf2fd">
<div class="org-src-container">
<pre class="src src-sh"><span style="color: #656565;"># </span><span style="color: #757575;">list the configs in a treelike structure with basename only</span>
$ ck list tree -b
<span style="color: #656565;"># </span><span style="color: #757575;">or with the full path &amp; attributes</span>
$ ck list tree -a

<span style="color: #656565;"># </span><span style="color: #757575;">list only the paths in python or lisp like lists</span>
$ ck list paths -t lisp
$ ck list programs -t python -b -a

<span style="color: #656565;"># </span><span style="color: #757575;">list emacs configs</span>
$ ck list -p emacs

<span style="color: #656565;"># </span><span style="color: #757575;">search the configs</span>
$ ck search Hostname
$ ck search <span style="color: #bdbc61;">"search term with spaces"</span>
<span style="color: #656565;"># </span><span style="color: #757575;">escape symbols</span>
$ ck search <span style="color: #bdbc61;">\(</span>

<span style="color: #656565;"># </span><span style="color: #757575;">edit the primary config of emacs</span>
$ ck edit emacs
<span style="color: #656565;"># </span><span style="color: #757575;">edit a non-primary config of ssh</span>
$ ck e ssh authorized_keys
<span style="color: #656565;"># </span><span style="color: #757575;">edit a root config</span>
$ sudo ck -c /home/ckuser e ssh sshd_config

<span style="color: #656565;"># </span><span style="color: #757575;">delete a program with all the configs</span>
$ ck delete emacs
<span style="color: #656565;"># </span><span style="color: #757575;">or a specific config</span>
$ ck del -c /home/ckuser/.emacs.d/init.el

<span style="color: #656565;"># </span><span style="color: #757575;">restore all links (on a new instalation)</span>
$ ck restore all
<span style="color: #656565;"># </span><span style="color: #757575;">restore a program's links</span>
$ ck r -p emacs

<span style="color: #656565;"># </span><span style="color: #757575;">get help for an action</span>
$ ck h add
$ ck --help e
</pre>
</div>
</div>
</div>
</div>

<div id="outline-container-orgbb97793" class="outline-2">
<h2 id="manpage"><a id="orgbb97793"></a>manpage</h2>
<div class="outline-text-2" id="text-manpage">
<!-- Creator     : groff version 1.22.3 -->
<!-- CreationDate: Wed Nov 14 16:42:24 2018 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="generator" content="groff -Thtml, see www.gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta name="Content-Style" content="text/css">
<style type="text/css">
       p       { margin-top: 0; margin-bottom: 0; vertical-align: top }
       pre     { margin-top: 0; margin-bottom: 0; vertical-align: top }
       table   { margin-top: 0; margin-bottom: 0; vertical-align: top }
       h1      { text-align: center }
</style>
<title>ck</title>

</head>
<body>

<h1 align="center">ck</h1>

<a href="#NAME">NAME</a><br>
<a href="#SYNOPSIS">SYNOPSIS</a><br>
<a href="#DESCRIPTION">DESCRIPTION</a><br>
<a href="#CONFIGURATION">CONFIGURATION</a><br>
<a href="#OPTIONS">OPTIONS</a><br>
<a href="#ACTIONS">ACTIONS</a><br>
<a href="#EXIT STATUS">EXIT STATUS</a><br>
<a href="#FILES">FILES</a><br>
<a href="#BUILD VALUES">BUILD VALUES</a><br>
<a href="#VERSION">VERSION</a><br>
<a href="#AUTHOR">AUTHOR</a><br>

<hr>


<h2>NAME
<a name="NAME"></a>
</h2>


<p style="margin-left:11%; margin-top: 1em">ck &minus;
manage configuration across the system</p>

<h2>SYNOPSIS
<a name="SYNOPSIS"></a>
</h2>


<table width="100%" border="0" rules="none" frame="void"
       cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">


<p style="margin-top: 1em"><b>ck</b></p></td>
<td width="1%"></td>
<td width="70%">



<p style="margin-top: 1em">[<b>&minus;v</b>|<b>&minus;&minus;verbose</b>]
[<b>&minus;c</b>|<b>&minus;&minus;config&nbsp;</b><i>DIR</i>]
<i>action&nbsp;</i>[...]</p> </td>
<td width="15%">
</td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="70%">


<p>[<b>version</b>|<b>&minus;&minus;version</b>]</p></td>
<td width="15%">
</td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="70%">


<p><b>init</b> <i>VERSION_CONTROL_DIR SECRET_DIR</i></p></td>
<td width="15%">
</td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="70%">


<p><b>add</b> <i>PROGRAM_NAME CONFIG_PATH</i>
[<b>&minus;p</b>] [<b>&minus;s</b>]</p></td>
<td width="15%">
</td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="70%">


<p><b>delete</b> <i>PROGRAM_NAME</i>
[<i>CONFIG_BASENAME</i>]</p> </td>
<td width="15%">
</td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="70%">


<p><b>list tree</b> [<b>&minus;a</b>] [<b>&minus;b</b>]</p></td>
<td width="15%">
</td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="70%">


<p><b>list &minus;p&nbsp;</b><i>PROGRAM_NAME</i>
[<b>&minus;t&nbsp;</b><i>list-type</i>] [<b>&minus;a</b>]
[<b>&minus;b</b>]</p> </td>
<td width="15%">
</td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="70%">


<p><b>list programs</b>
[<b>&minus;t&nbsp;</b><i>list-type</i>] [<b>&minus;a</b>]
[<b>&minus;b</b>]</p> </td>
<td width="15%">
</td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="70%">


<p><b>list paths</b>
[<b>&minus;t&nbsp;</b><i>list-type</i>] [<b>&minus;a</b>]
[<b>&minus;b</b>]</p> </td>
<td width="15%">
</td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="70%">


<p><b>list ckconf</b></p></td>
<td width="15%">
</td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="70%">


<p><b>edit</b> <i>PROGRAM_NAME</i>
[<i>CONFIG_BASENAME</i>]</p> </td>
<td width="15%">
</td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="70%">


<p><b>search</b> <i>SEARCH_TERM</i></p></td>
<td width="15%">
</td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="70%">


<p><b>restore &minus;p</b> <i>PROGRAM_NAME</i></p></td>
<td width="15%">
</td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="70%">


<p><b>restore all</b></p></td>
<td width="15%">
</td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="70%">


<p><b>help&nbsp;</b><i>action</i></p></td>
<td width="15%">
</td></tr>
</table>

<h2>DESCRIPTION
<a name="DESCRIPTION"></a>
</h2>



<p style="margin-left:11%; margin-top: 1em"><i><b>ck</b></i>
manages configuration files in a Linux system. To that end
it provides an <b>action</b> based command line
interface.</p>

<p style="margin-left:11%; margin-top: 1em"><b>ck</b> needs
a database and an rc file to run. It also needs two
directories (stored in the rc file), the
<i>VERSION_CONRTOL_DIR</i> and the <i>SECRET_DIR</i>. This
is where the configurations will end up after they are added
to <b>ck</b>. The <b>init</b> action takes care of them. For
more details see the
<b>ACTIONS&nbsp;</b>and&nbsp;<b>FILES</b> sections
below.</p>

<p style="margin-left:11%; margin-top: 1em">In <b>ck</b>
terms a <i>program</i> is an entity that has one or more
<i>configs</i> attached to it. Each <i>program</i> can have
exactly one <b>primary&nbsp;</b><i>config</i>. Upon adding a
<i>config</i> to <b>ck</b>, it is moved to the appropriate
directory, and then symbolically linked back to it&rsquo;s
original place (<i>ln -s</i>).</p>

<p style="margin-left:11%; margin-top: 1em">In a later time
you can sync the <i>VERSION_CONRTOL_DIR</i> and
<i>SECRET_DIR</i>. You can also <b>restore</b> the links
given these two directories and the correspondig rc file and
database.</p>

<h2>CONFIGURATION
<a name="CONFIGURATION"></a>
</h2>


<p style="margin-left:11%; margin-top: 1em"><b>ck</b> uses
<b>sqlite</b> to index the configuration files. The <b>init
action</b> by default creates a directory in witch the
<i>ckrc</i> and <i>ckdb</i> files reside. See the
<b>FILES</b> section for more details.</p>

<p style="margin-left:11%; margin-top: 1em"><b>ck</b> will
first search for the configuration in the folder shown by
the <i>$CK_CONFIG</i> environment variable. If it is set it
will use the <i>ckrc</i> and <i>ckdb</i> inside this
directory. Else it wil use <i>$XDG_CONFIG_HOME/ck</i> and if
that is not set as well it will fall back to
<i>$HOME/.ck</i>.</p>

<p style="margin-left:11%; margin-top: 1em">One can have
multiple <b>config directories</b> with different
configurations each. Using the
<b>config&nbsp;</b>or&nbsp;<b>&minus;c</b> option one can
set the path in which ck will search for <i>ckrc</i> and
<i>ckdb</i>. Using this will ignore any environment
variables. See the <b>OPTIONS</b> section for more
details.</p>

<h2>OPTIONS
<a name="OPTIONS"></a>
</h2>


<p style="margin-left:11%; margin-top: 1em">Change
<b>ck</b> behaviour using the following options. They must
be present before any <b>action. <br>
&minus;&minus;verbose</b>, <b>&minus;v</b></p>

<p style="margin-left:22%;">[WIP] <br>
Currently prints the log. Must be the first argument in
order to work.</p>

<p style="margin-left:11%;"><b>&minus;&minus;config</b>
<i>DIR</i>, <b>&minus;c</b> <i>DIR</i></p>

<p style="margin-left:22%;">Use
<b>ckdb&nbsp;</b>and&nbsp;<b>ckrc</b> residing in
<i>DIR</i>.</p>

<p style="margin-left:11%;"><b>&minus;&minus;version</b>,
<b>version</b></p>

<p style="margin-left:22%;">Print version and licence
information, and quit.</p>

<h2>ACTIONS
<a name="ACTIONS"></a>
</h2>


<p style="margin-left:11%; margin-top: 1em">Each
<b>action</b> has several aliases. The selected
<b>action</b> must be after the <b>OPTIONS</b> if any. All
available <b>actions</b> can be seen in the <b>SYNOPSIS</b>
section above.</p>

<p style="margin-left:11%; margin-top: 1em">Each
<b>action</b> takes a number of arguments and flags.</p>


<p style="margin-left:11%; margin-top: 1em"><b>INITIALIZE</b>
<br>
Create the <b>ck</b> database (<i>ckdb</i>) and initialize
it. Create the ck config file (<i>ckrc</i>) and add the
directory paths to it. <b><br>
USAGE</b></p>

<table width="100%" border="0" rules="none" frame="void"
       cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="14%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="54%">


<p><b>init</b> <i>VERSION_CONTROL_DIR SECRET_DIR</i></p></td>
<td width="28%">
</td></tr>
</table>

<p style="margin-left:11%;"><b>ALIASES</b></p>


<p style="margin-left:14%;"><b>init</b>,&nbsp;<b>i</b>,&nbsp;<b>&minus;i</b></p>

<p style="margin-left:11%;"><b>ARGUMENTS</b></p>

<table width="100%" border="0" rules="none" frame="void"
       cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="14%"></td>
<td width="29%">


<p><i>VERSION_CONTROL_DIR</i></p></td>
<td width="3%"></td>
<td width="54%">


<p>The directory where <b>configs</b> will be stored by
default. <b>File must exist</b>.</p></td></tr>
<tr valign="top" align="left">
<td width="14%"></td>
<td width="29%">


<p><i>SECRET_DIR</i></p></td>
<td width="3%"></td>
<td width="54%">


<p>The directory where <b>configs</b> will be stored when
using the <b>&minus;s</b> flag in <b>add</b>. <b>File must
exist</b>.</p> </td></tr>
</table>

<p style="margin-left:11%;"><b>EXAMPLES</b></p>

<pre style="margin-left:14%;">$ ck init /home/ckuser/configs/vc home/ckuser/configs/sec
$ ck i configs/vc configs/sec</pre>


<p style="margin-left:11%; margin-top: 1em"><b>ADD
CONFIG</b> <br>
Add a <b>config</b> to the database (<i>ckdb</i>). Each
<b>config</b> belongs to a <b>program</b>. Every
<b>program</b> can have multiple <b>configs</b> under it and
one of them can be <b>primary</b>. The <b>edit action</b>
will open the <b>primary config</b> by default. <b><br>
USAGE</b></p>

<table width="100%" border="0" rules="none" frame="void"
       cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="14%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="59%">


<p><b>add</b> <i>PROGRAM_NAME CONFIG_PATH</i>
[<b>&minus;p</b>] [<b>&minus;s</b>]</p></td>
<td width="23%">
</td></tr>
</table>

<p style="margin-left:11%;"><b>ALIASES</b></p>


<p style="margin-left:14%;"><b>add</b>,&nbsp;<b>a</b>,&nbsp;<b>&minus;a</b></p>

<p style="margin-left:11%;"><b>ARGUMENTS</b></p>

<table width="100%" border="0" rules="none" frame="void"
       cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="14%"></td>
<td width="18%">


<p><i>PROGRAM_NAME</i></p></td>
<td width="14%"></td>
<td width="54%">


<p>The name of the <b>program</b> the <b>config</b> belongs
at.</p> </td></tr>
<tr valign="top" align="left">
<td width="14%"></td>
<td width="18%">


<p><i>CONFIG_PATH</i></p></td>
<td width="14%"></td>
<td width="54%">


<p>Path to the <b>config</b>. Can be relative.</p></td></tr>
</table>

<p style="margin-left:11%;"><b>FLAGS</b></p>

<table width="100%" border="0" rules="none" frame="void"
       cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="14%"></td>
<td width="3%">


<p><b>&minus;s</b></p></td>
<td width="29%"></td>
<td width="54%">


<p>Mark the <b>config</b> as secret. It will be stored on
the <i>SECRET_DIR</i>.</p></td></tr>
<tr valign="top" align="left">
<td width="14%"></td>
<td width="3%">


<p><b>&minus;p</b></p></td>
<td width="29%"></td>
<td width="54%">


<p>Mark the <b>config</b> as primary. The <b>edit
action</b> will open this by default.</p></td></tr>
</table>

<p style="margin-left:11%;"><b>EXAMPLES</b></p>

<pre style="margin-left:14%;"># add emacs configs
## primary config
$ ck add emacs ~/.emacs.d/orgconf.org -p
## secret config, with passwords
$ ck add emacs ~/.emacs.d/accounts.org -s
## another one for emacs
$ ck add emacs ~/.emacs.d/init.el</pre>


<p style="margin-left:11%; margin-top: 1em"><b>DELETE
CONFIG</b> <br>
Delete a <b>config</b> or a <b>program</b> from the database
(<i>ckdb</i>). This will not touch the actual file and link.
It is up to the user to handle it. <b><br>
USAGE</b></p>

<table width="100%" border="0" rules="none" frame="void"
       cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="14%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="57%">


<p><b>delete</b> <i>PROGRAM_NAME</i>
[<i>CONFIG_BASENAME</i>]</p> </td>
<td width="25%">
</td></tr>
</table>

<p style="margin-left:11%;"><b>ALIASES</b></p>


<p style="margin-left:14%;"><b>delete</b>,&nbsp;<b>del</b>,&nbsp;<b>d</b>,&nbsp;<b>&minus;d</b></p>

<p style="margin-left:11%;"><b>ARGUMENTS</b></p>

<table width="100%" border="0" rules="none" frame="void"
       cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="14%"></td>
<td width="23%">


<p><i>PROGRAM_NAME</i></p></td>
<td width="9%"></td>
<td width="54%">


<p>Delete the <b>program</b> and all it&rsquo;s
<b>configs</b>.</p> </td></tr>
<tr valign="top" align="left">
<td width="14%"></td>
<td width="23%">


<p><i>CONFIG_BASENAME</i></p></td>
<td width="9%"></td>
<td width="54%">


<p>The basename of the <b>config</b> file to be deleted. It
has to follow the <i>PROGRAM_NAME</i>.</p></td></tr>
</table>

<p style="margin-left:11%;"><b>EXAMPLES</b></p>

<pre style="margin-left:14%;">$ ck delete emacs
$ ck del emacs init.el</pre>


<p style="margin-left:11%; margin-top: 1em"><b>LIST
VALUES</b> <br>
List programs, configs and ck configuration values. <b><br>
USAGE</b></p>

<table width="100%" border="0" rules="none" frame="void"
       cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="14%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="70%">


<p><b>list tree</b> [<b>&minus;a</b>] [<b>&minus;b</b>]</p></td>
<td width="12%">
</td></tr>
<tr valign="top" align="left">
<td width="14%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="70%">


<p><b>list &minus;p&nbsp;</b><i>PROGRAM_NAME</i>
[<b>&minus;t&nbsp;</b><i>list-type</i>] [<b>&minus;a</b>]
[<b>&minus;b</b>]</p> </td>
<td width="12%">
</td></tr>
<tr valign="top" align="left">
<td width="14%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="70%">


<p><b>list programs</b>
[<b>&minus;t&nbsp;</b><i>list-type</i>] [<b>&minus;a</b>]
[<b>&minus;b</b>]</p> </td>
<td width="12%">
</td></tr>
<tr valign="top" align="left">
<td width="14%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="70%">


<p><b>list paths</b>
[<b>&minus;t&nbsp;</b><i>list-type</i>] [<b>&minus;a</b>]
[<b>&minus;b</b>]</p> </td>
<td width="12%">
</td></tr>
<tr valign="top" align="left">
<td width="14%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="70%">


<p><b>list ckconf</b></p></td>
<td width="12%">
</td></tr>
</table>

<p style="margin-left:11%;"><b>ALIASES</b></p>


<p style="margin-left:14%;"><b>list</b>,&nbsp;<b>ls</b>,&nbsp;<b>l</b>,&nbsp;<b>-ls</b>,&nbsp;<b>&minus;l</b></p>

<p style="margin-left:11%;"><b>ARGUMENTS</b></p>

<table width="100%" border="0" rules="none" frame="void"
       cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="14%"></td>
<td width="23%">


<p><b>tree</b></p></td>
<td width="9%"></td>
<td width="54%">


<p>List <b>programs</b> with their <b>configs</b> in a tree
like structure.</p></td></tr>
<tr valign="top" align="left">
<td width="14%"></td>
<td width="23%">


<p><b>paths</b></p></td>
<td width="9%"></td>
<td width="54%">


<p>List all the <b>config</b> paths <b>ck</b> keeps track
of.</p> </td></tr>
<tr valign="top" align="left">
<td width="14%"></td>
<td width="23%">


<p><b>programs</b></p></td>
<td width="9%"></td>
<td width="54%">


<p>List all the <b>programs ck</b> keeps track of.</p></td></tr>
<tr valign="top" align="left">
<td width="14%"></td>
<td width="23%">


<p><b>&minus;c&nbsp;</b><i>PROGRAM_NAME</i></p></td>
<td width="9%"></td>
<td width="54%">


<p>List all the <b>configs</b> of <i>PROGRAM_NAME</i>.</p></td></tr>
<tr valign="top" align="left">
<td width="14%"></td>
<td width="23%">


<p><b>ckconf</b></p></td>
<td width="9%"></td>
<td width="54%">


<p>List the <b>ck</b> configuration values, like the
<i>VERSION_CONTROL_DIR&nbsp;</i>and&nbsp;<i>SECRET_DIR</i>.</p> </td></tr>
</table>

<p style="margin-left:11%;"><b>FLAGS</b></p>

<table width="100%" border="0" rules="none" frame="void"
       cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="14%"></td>
<td width="11%">


<p><b>&minus;t&nbsp;</b><i>type</i></p></td>
<td width="21%"></td>
<td width="54%">


<p>Set the type of the <b>list</b>. Can be either
<b>plain</b> (the default) a simple list, <b>python</b> to
print it like a python array or <b>lisp</b> to print it like
a lisp list.</p></td></tr>
<tr valign="top" align="left">
<td width="14%"></td>
<td width="11%">


<p><b>&minus;a</b></p></td>
<td width="21%"></td>
<td width="54%">


<p>Show attributes to the listing (when aplicable). These
are <b>[s]</b> for <b>secret</b>, <b>[p]</b> for
<b>primary</b> and <b>[root]</b> if the file is owned by the
root user.</p></td></tr>
<tr valign="top" align="left">
<td width="14%"></td>
<td width="11%">


<p><b>&minus;b</b></p></td>
<td width="21%"></td>
<td width="54%">


<p>Print the <b>config</b> basename instead of the full
path.</p> </td></tr>
</table>

<p style="margin-left:11%;"><b>EXAMPLES</b></p>

<pre style="margin-left:14%;">$ ck list tree -a
$ ck list paths -t lisp
$ ck list programs -t python
$ ck list -p emacs</pre>


<p style="margin-left:11%; margin-top: 1em"><b>EDIT
CONFIGS</b> <br>
Edit a <b>config</b> stored in <b>ck</b> with the
<i>$EDITOR</i>. <b>Edit</b> will open the <b>primary
config</b> of the <b>program</b>. If there is no <b>primary
config</b> but the <b>program</b> only has one
<b>config</b>, <b>edit</b> will open that. Whenever there is
ambiguity, a list of possible <b>configs</b> will be shown.
<b><br>
USAGE</b></p>

<table width="100%" border="0" rules="none" frame="void"
       cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="14%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="54%">


<p><b>edit</b> <i>PROGRAM_NAME</i>
[<i>CONFIG_BASENAME</i>]</p> </td>
<td width="28%">
</td></tr>
</table>

<p style="margin-left:11%;"><b>ALIASES</b></p>


<p style="margin-left:14%;"><b>edit</b>,&nbsp;<b>e</b>,&nbsp;<b>&minus;e</b></p>

<p style="margin-left:11%;"><b>ARGUMENTS</b></p>

<table width="100%" border="0" rules="none" frame="void"
       cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="14%"></td>
<td width="23%">


<p><i>PROGRAM_NAME</i></p></td>
<td width="9%"></td>
<td width="54%">


<p>The name of the <b>program</b> to be edited. If the
<b>program</b> has only one <b>config</b> or you want to
edit the <b>primary</b> one, no further action is
required.</p> </td></tr>
<tr valign="top" align="left">
<td width="14%"></td>
<td width="23%">


<p><i>CONFIG_BASENAME</i></p></td>
<td width="9%"></td>
<td width="54%">


<p>The basename of the <b>config</b> to be edited. This has
to follow the <i>PROGRAM_NAME</i> name. It is only needed
when editing a <b>config</b> other than the <b>primary</b>
one.</p> </td></tr>
</table>

<p style="margin-left:11%;"><b>EXAMPLES</b></p>

<pre style="margin-left:14%;">$ ck edit emacs
$ ck e tmux .tmux.conf</pre>


<p style="margin-left:11%; margin-top: 1em"><b>SEARCH
CONFIGS</b> <br>
Grep through the configs. This <b>action</b> is equivalent
to this:</p>

<p style="margin-left:14%;">$ ck ls paths | xargs grep -H
-n &quot;search term&quot;</p>

<p style="margin-left:11%;">Thus for more advanced search
through the <b>configs</b> one can use other programs and
replace grep in the command above. <b><br>
USAGE</b></p>

<table width="100%" border="0" rules="none" frame="void"
       cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="14%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="28%">


<p><b>search</b> <i>SEARCH_TERM</i></p></td>
<td width="54%">
</td></tr>
</table>

<p style="margin-left:11%;"><b>ALIASES</b></p>


<p style="margin-left:14%;"><b>search</b>,&nbsp;<b>grep</b>,&nbsp;<b>s</b>,&nbsp;<b>&minus;s</b></p>

<p style="margin-left:11%;"><b>ARGUMENTS</b></p>

<table width="100%" border="0" rules="none" frame="void"
       cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="14%"></td>
<td width="17%">


<p><i>SEARCH_TERM</i></p></td>
<td width="15%"></td>
<td width="54%">


<p>The term you wish to search for. If it&rsquo;s a phrase
enclose it in &quot;&quot;. If it&rsquo;s a special
character you can escape it with \ (backslash).</p></td></tr>
</table>

<p style="margin-left:11%;"><b>EXAMPLES</b></p>

<pre style="margin-left:14%;">$ ck search &quot;search term&quot;
$ ck search &quot;\(require&quot;</pre>


<p style="margin-left:11%; margin-top: 1em"><b>RESTORE
CONFIGS</b> <br>
Given a working <b>ck</b> instance (<i>ckdb</i> +
<i>ckrc</i> + directories in <i>ckrc</i> with
<b>configs</b>),&nbsp;<b>restore</b> shall recreate the
links from the <b>config</b> directories in <i>ckrc</i> back
to their corresponding position when added to <b>ck</b>. It
is useful for copying <b>configs</b> to a new linux
installation or <b>restoring</b> deleted links. It can
either <b>restore</b> a specific <b>program</b> or all of
them.</p>

<p style="margin-left:11%; margin-top: 1em"><b>NOTE</b>: If
<b>ck</b> tracks <b>configs</b> that are owned by root,
simply running</p>

<p style="margin-left:14%;">$ ck restore ...</p>

<p style="margin-left:11%;">will fail due to permissions.
To remedy this, <b>ck</b> will alter the
<b>owner&nbsp;</b>and&nbsp;<b>group</b> of a link to match
the one in the original <b>config</b> file. Thus,
running</p>

<p style="margin-left:14%;">$ sudo ck -c /home/ckuser/.ck
restore ...</p>

<p style="margin-left:11%;">will <b>restore</b> the root
user&rsquo;s links as it should and the user links will have
the user as the owner instead of the root.</p>

<p style="margin-left:11%; margin-top: 1em"><b>ck</b>
checks that the <b>configs</b> exist and that the location
for the link is avaliable before making any links. However,
in the even that <b>symlink</b> fails for some other reason,
the process will stop as is. The user will have to take care
of the already created links, if that&rsquo;s the case.
<b><br>
USAGE</b></p>

<table width="100%" border="0" rules="none" frame="void"
       cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="14%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="36%">


<p><b>restore &minus;p</b> <i>PROGRAM_NAME</i></p></td>
<td width="46%">
</td></tr>
<tr valign="top" align="left">
<td width="14%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="36%">


<p><b>restore all</b></p></td>
<td width="46%">
</td></tr>
</table>

<p style="margin-left:11%;"><b>ALIASES</b></p>


<p style="margin-left:14%;"><b>restore</b>,&nbsp;<b>r</b>,&nbsp;<b>&minus;r</b></p>

<p style="margin-left:11%;"><b>ARGUMENTS</b></p>

<table width="100%" border="0" rules="none" frame="void"
       cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="14%"></td>
<td width="18%">


<p><i>PROGRAM_NAME</i></p></td>
<td width="14%"></td>
<td width="54%">


<p>The name of the <b>program</b> to be restored.</p></td></tr>
<tr valign="top" align="left">
<td width="14%"></td>
<td width="18%">


<p><b>all</b></p></td>
<td width="14%"></td>
<td width="54%">


<p>Restore all <b>programs ck</b> keeps track of.</p></td></tr>
</table>

<p style="margin-left:11%;"><b>EXAMPLES</b></p>

<pre style="margin-left:14%;">$ ck restore all
$ ck restore -p emacs</pre>


<p style="margin-left:11%; margin-top: 1em"><b>GET HELP</b>
<br>
Get help for any given <b>action</b> from the command line.
<b><br>
USAGE</b></p>

<table width="100%" border="0" rules="none" frame="void"
       cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="14%"></td>
<td width="3%">


<p><b>ck</b></p></td>
<td width="1%"></td>
<td width="17%">


<p><b>help&nbsp;</b><i>action</i></p></td>
<td width="65%">
</td></tr>
</table>

<p style="margin-left:11%;"><b>ALIASES</b></p>


<p style="margin-left:14%;"><b>help</b>,&nbsp;<b>h</b>,&nbsp;<b>&minus;&minus;help</b>,&nbsp;<b>-h</b>,&nbsp;<b>&minus;?</b></p>

<p style="margin-left:11%;"><b>ARGUMENTS</b></p>

<table width="100%" border="0" rules="none" frame="void"
       cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="14%"></td>
<td width="9%">


<p><i>action</i></p></td>
<td width="23%"></td>
<td width="54%">


<p>Any <b>action alias</b> you wish to get help for.</p></td></tr>
</table>

<p style="margin-left:11%;"><b>EXAMPLES</b></p>

<pre style="margin-left:14%;">$ ck help add
$ ck h d
$ ck --help ls</pre>


<h2>EXIT STATUS
<a name="EXIT STATUS"></a>
</h2>


<p style="margin-left:11%; margin-top: 1em"><b>ck</b> shall
return 0 if the action was completed without an error, -1
otherwise</p>

<h2>FILES
<a name="FILES"></a>
</h2>


<p style="margin-left:11%; margin-top: 1em">By default
<b>ck</b> will store it&rsquo;s files in <i>$CK_CONFIG</i>
&gt; <i>$XDG_CONFIG_HOME/ck</i> &gt; <i>$HOME/.ck</i>. Using
the <b>&minus;c</b>|<b>&minus;&minus;config</b> one can
change this.</p>

<p style="margin-left:11%; margin-top: 1em"><b>ck generated
files</b> <i><br>
~/.ck/ckrc</i></p>

<p style="margin-left:22%;">Store the configuration values
(<i>VERSION_CONTROL_DIR</i> and <i>SECRET_DIR</i>).</p>

<p style="margin-left:11%;"><i>~/.ck/ckdb</i></p>

<p style="margin-left:22%;">SQLite3 database.</p>

<p style="margin-left:11%; margin-top: 1em"><b>User
files</b> <i><br>
VERSION_CONTROL_DIR</i></p>

<p style="margin-left:22%;">This is where the configuration
files will end up by default. It&rsquo;s value is set with
the <b>init</b> action, but can be changed by editing
<i>ckrc</i>.</p>

<p style="margin-left:11%;"><i>SECRET_DIR</i></p>

<p style="margin-left:22%;">This is where the configuration
files will end up when adding them with the <b>-s</b> flag.
It&rsquo;s value is set with the <b>init</b> action, but can
be changed by editing <i>ckrc</i>.</p>

<h2>BUILD VALUES
<a name="BUILD VALUES"></a>
</h2>



<p style="margin-left:11%; margin-top: 1em"><b>compiler</b>:
@CMAKE_C_COMPILER@ <b><br>
flags</b>: @CMAKE_C_FLAGS@</p>

<h2>VERSION
<a name="VERSION"></a>
</h2>


<p style="margin-left:11%; margin-top: 1em">ck version
@ck_MAJOR_VERSION@.@ck_MINOR_VERSION@.@ck_PATCH_VERSION@</p>

<h2>AUTHOR
<a name="AUTHOR"></a>
</h2>

 
<p style="margin-left:11%; margin-top: 1em">gramanas</p>
<hr>
</body>
</html>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="date">Created: 2018-11-14 Wed 16:42</p>
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
</div>
</body>
</html>