
    7j                     r   d Z ddlZddlZddlmZ ddlmZ ddlZddl	m
Z
 ddlmZmZ ddlmZmZ ddlmZmZmZmZ dd	lmZ dd
lmZ  ej6                  dddd       ej6                  dddej8                  j:                  d       ej6                  ddddd       ej6                  ddeed       ej6                  ddd       ej6                  d d!ej8                  j=                  d"      d ed#      d$%       ej>                  d&      eed'                                                                Zy)(z-Generate a keymap.json from a keymap.c file.
    N)FilesCompleter)cli)InfoJSONEncoder)automagic_keyboardautomagic_keymap)keyboard_completerkeyboard_folder)locate_keymapfind_keymap_from_dirgenerate_jsonc2json)CppError)
dump_linesz--no-cppTstore_falsezDo not use 'cpp' on keymap.c)arg_onlyactionhelpz-oz--outputzFile to write to)r   typer   z-qz--quiet
store_truez&Quiet mode, only output error messagesz-kbz
--keyboardzThe keyboard's name)r   	completerr   z-kmz--keymapzThe keymap's name)r   filename?rz.czkeymap.c file)nargsr   r   r   r   z+Creates a keymap.json from a keymap.c file.c                    | j                   j                  }| j                  j                  j                  }| j                  j                  j
                  }|rO|s_|s]t        |      \  }}|dk(  rJt        j                  d| d|j                               j                  d      }n|r|r|st        ||      }t        |||f      s-| j                  j                  d        | j                          y	 t!        |||| j                   j"                        }	 t-        |d   |d   |d   |d         }| j                   j0                  rt3        j4                  |t6        d      g}nt3        j4                  |      g}t9        | j                   j0                  || j                   j:                         y
# t$        $ ra}| j                  j&                  j(                  r| j                  j+                  d|       | j                  j                  d	       Y d
}~yd
}~ww xY w# t.        $ r | j                  j                  d       Y yw xY w)zGenerate a keymap.json from a keymap.c file.

    This command uses the `qmk.keymap` module to generate a keymap.json from a keymap.c file. The generated keymap is written to stdout, or to a file if -o is provided.
    keymap_directoryzkeyboards/(.+)/keymaps/z/.*   z{You must supply keyboard and keymap, a path to a keymap.c within qmk_firmware, or absolute filename and keyboard and keymapF)use_cppz.The C pre-processor ran into a fatal error: %szXSomething went wrong. Try to use --no-cpp.
Use the CLI in verbose mode to find out more.Nkeymapkeyboardlayoutlayersz*Something went wrong. Try to use --no-cpp.T)cls	sort_keys)argsr   configr   r    r   r   researchas_posixgroupr
   alllogerror
print_helpc2json_implno_cppr   generalverbosedebugr   KeyErroroutputjsondumpsr   r   quiet)r   r   r    r   
found_typekeymap_jsonekeymap_liness           G/home/hanthebot/chat/keyboard/qmk_firmware/lib/python/qmk/cli/c2json.pyr   r      s    xx  Hzz  ))HZZ%%F#7#A VZ//99(?xs%KXM^M^M`agghij	f$Xv6H(F+,  T  	U!(FHchhooV#K$9;z;RT_`hTikvw  lA  B
 xx

;OtTU

;/0sxxchhnn=%  ::%%GGMMJANqr	  BCs+   6#F4 H! 4	H=AHH!$II) __doc__r'   r6   argcomplete.completersr   milcr   qmk.pathqmkqmk.json_encodersr   qmk.decoratorsr   r   qmk.keyboardr   r	   
qmk.keymapr
   r   r   r   r/   
qmk.errorsr   qmk.commandsr   argumentpathnormpathFileType
subcommand     r=   <module>rP      s/   	  1   - ? < ` `  # j4DdedJCHH4E4EL^_dI\Hpqe\CU\rseZ&:;j#((*;*;C*@4[ijn[o  wF  G=>.>   ? G < t r ` f.>rO   