# 範例 - 搭配 Github CLI 工具的應用產生個人貢獻列表 ###### tags: `Github` `CLI` `績效考核` [toc] ## List My Contributions of Pull-requests ### Dump pull-request list ``` $ gh pr list --state all --author "@me" --limit 150 --json number,url,title,headRefName,updatedAt,labels > {some folder path}/gh_list.json ``` ### Convert to markdown table view #### Script ```php= <?php function markdown_line($number, $title, $labels, $headRefName, $date, $url = null) { if (! empty($url)) { $number = sprintf('[#%s](%s)', $number, $url); } $line = sprintf('|%s|%s|%s|%s|%s|', $number, $title, $labels, $headRefName, $date); return $line; } $json_contents = file_get_contents('./gh_list.json'); $list = json_decode($json_contents, true); //var_dump($list); $fields = array_keys($list[0]); //var_dump($fields); // number,url,title,headRefName,updatedAt echo markdown_line(' # ', 'title', 'labels', 'RefName', 'date') . "\n"; echo markdown_line(' --- ', ' --- ', ' --- ', ' --- ', ' --- ') . "\n"; foreach ($list as $record) { $datetime = new DateTime($record['updatedAt']); $date = $datetime->format('Y/m/d'); $labels = ''; if (! empty($record['labels'])) { $labels = implode(',', array_column($record['labels'], 'name')); } // var_dump($record['labels']); // var_dump($labels); echo markdown_line( number: $record['number'], title: $record['title'], labels: $labels, headRefName: $record['headRefName'], date: $date, url: $record['url'] ) . "\n"; } echo "\n"; ``` #### Generate markdown file ``` $ php gh_list.php > gh_list.md ``` ## Reference - gh formatting https://cli.github.com/manual/gh_help_formatting