code: def cid(i):
      
  
      o=i.get('out','')
  
      # Check which CID to detect
      ruoa=i.get('repo_uoa','')
      muoa=i.get('module_uoa','')
      duoa=i.get('data_uoa','')
  
      if ruoa=='' and muoa=='' and duoa=='':
         r=detect_cid_in_current_path(i)
      else:
         r=find({'repo_uoa':ruoa, 'module_uoa':muoa, 'data_uoa':duoa})
      if r['return']>0: return r
  
      rx=convert_entry_to_cid(r)
      if rx['return']>0: return rx
  
      cid=rx['cid']
  
      # If console, print CIDs
      if o=='con':
         out(cid)
         # Try to copy to Clipboard if supported by OS
         rx=copy_to_clipboard({'string':cid})
         # Ignore error
  
      return r
docs: Input:  {
                (repo_uoa)   - repo UOA
                (module_uoa) - module UOA
                (data_uoa)   - data UOA
  
                   If above is empty, detect in current path !
  
              }
  
      Output: {
                return       - return code =  0, if successful
                                           >  0, if error
                (error)      - error text if return > 0
  
                Output from from 'detect_cid_in_current_path' function
  
                data_uoa     - data UOA
                module_uoa   - module UOA
                (repo_uoa)   - repo UOA
              }