<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: chyroc</title>
    <description>The latest articles on DEV Community by chyroc (@chyroc).</description>
    <link>https://dev.to/chyroc</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F715804%2F050aaaeb-4613-4f4d-a156-0e82bd2a1ef0.jpeg</url>
      <title>DEV Community: chyroc</title>
      <link>https://dev.to/chyroc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chyroc"/>
    <language>en</language>
    <item>
      <title>GitHub Backup Action Utilities</title>
      <dc:creator>chyroc</dc:creator>
      <pubDate>Tue, 01 Mar 2022 02:41:13 +0000</pubDate>
      <link>https://dev.to/chyroc/github-backup-action-utilities-4j19</link>
      <guid>https://dev.to/chyroc/github-backup-action-utilities-4j19</guid>
      <description>&lt;p&gt;Hi, good morning everyone.&lt;/p&gt;

&lt;p&gt;I want to introduce a tool based on GitHub Action to backup GitHub data to DropBox.&lt;/p&gt;

&lt;p&gt;As an engineer, GitHub is the software we use frequently, and the information stored on GitHub is an important asset for us as engineers. To back up this data, I developed this tool.&lt;/p&gt;

&lt;p&gt;The address of the tool is: &lt;a href="https://github.com/chyroc/github2dropbox"&gt;https://github.com/chyroc/github2dropbox&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This tool can back up a variety of GitHub data, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Star&lt;/li&gt;
&lt;li&gt;Follower&lt;/li&gt;
&lt;li&gt;Following&lt;/li&gt;
&lt;li&gt;Repo&lt;/li&gt;
&lt;li&gt;Issue&lt;/li&gt;
&lt;li&gt;Issue Comment&lt;/li&gt;
&lt;li&gt;Gist&lt;/li&gt;
&lt;li&gt;.git&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Very simple to use:&lt;/p&gt;

&lt;p&gt;add file: &lt;code&gt;.github/workflows/github-backup.yml&lt;/code&gt; to your project&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;github-backup&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;master&lt;/span&gt; &lt;span class="pi"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;# trigger on pushes to master&lt;/span&gt;
  &lt;span class="na"&gt;pull_request&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="c1"&gt;# trigger on pull requests&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;timeout-minutes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;60&lt;/span&gt; &lt;span class="c1"&gt;# timeout after 60 minutes&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Backup&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;chyroc/github2dropbox@v0.2.0&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;DROPBOX_TOKEN&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.DROPBOX_TOKEN }}&lt;/span&gt; &lt;span class="c1"&gt;# dropbox token&lt;/span&gt;
          &lt;span class="na"&gt;GITHUB_TOKEN&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.G_TOKEN }}&lt;/span&gt; &lt;span class="c1"&gt;# github token&lt;/span&gt;
          &lt;span class="na"&gt;ENABLE_REPO&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt; &lt;span class="c1"&gt;# enable repo backup&lt;/span&gt;
          &lt;span class="na"&gt;ENABLE_STAR&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt; &lt;span class="c1"&gt;# enable star backup&lt;/span&gt;
          &lt;span class="na"&gt;ENABLE_FOLLOWER&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt; &lt;span class="c1"&gt;# enable follower backup&lt;/span&gt;
          &lt;span class="na"&gt;ENABLE_FOLLOWING&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt; &lt;span class="c1"&gt;# enable following backup&lt;/span&gt;
          &lt;span class="na"&gt;ENABLE_GIST&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt; &lt;span class="c1"&gt;# enable gist backup&lt;/span&gt;
          &lt;span class="na"&gt;ENABLE_ISSUE&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt; &lt;span class="c1"&gt;# enable issue backup(need ENABLE_REPO=true)&lt;/span&gt;
          &lt;span class="na"&gt;ENABLE_ISSUE_COMMENT&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt; &lt;span class="c1"&gt;# enable issue comment backup(need ENABLE_REPO=true)&lt;/span&gt;
          &lt;span class="na"&gt;ENABLE_REPO_GIT&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt; &lt;span class="c1"&gt;# enable repo .git folder backup(need ENABLE_REPO=true)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When GitHub Action runs, the tool will use the GitHub Access Token you configured to access the GitHub API, store it as a zip, json, etc. file, and upload it to DropBox.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>A Go SDK that supports more than 500 LarkSuite/Feishu's open API</title>
      <dc:creator>chyroc</dc:creator>
      <pubDate>Wed, 29 Sep 2021 15:22:12 +0000</pubDate>
      <link>https://dev.to/chyroc/a-go-sdk-that-supports-more-than-500-larksuite-feishu-s-open-api-386j</link>
      <guid>https://dev.to/chyroc/a-go-sdk-that-supports-more-than-500-larksuite-feishu-s-open-api-386j</guid>
      <description>&lt;p&gt;The project address is: &lt;a href="https://github.com/chyroc/lark"&gt;https://github.com/chyroc/lark&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project refers to the writing of gitlab's sdk, unified the writing of parameters and return values, and supports the processing of nearly 500 interfaces and 50 callback event types. Welcome to star.&lt;/p&gt;

&lt;p&gt;The project was written 5 months ago, and it has developed freely until now. It has 70 stars and has ranked first under the topic of larksuite-sdk (&lt;a href="https://github.com/topics/larksuite-sdk"&gt;https://github.com/topics/larksuite-sdk&lt;/a&gt;), so Send it to dev.to and introduce it to you in need.&lt;/p&gt;

&lt;p&gt;LarkSuite(Non-China)/Feishu(China) has developed rapidly recently, and the number of open platform interfaces has been increasing rapidly. I manually maintained the sdk for a period of time before, but later found that manual maintenance was unrealistic. I changed the code to read the document and then automatically generated the code to maintain the sdk, which is this project.&lt;/p&gt;

&lt;p&gt;Because it is an automatically generated relationship, it supports almost all interfaces, including contacts, messages, groups, calendars, documents, etc.&lt;/p&gt;

&lt;p&gt;The following is a scene of creating a calendar to give a very simple and easy-to-use example of the sdk:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;package&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="s"&gt;"context"&lt;/span&gt;
    &lt;span class="s"&gt;"fmt"&lt;/span&gt;

    &lt;span class="s"&gt;"github.com/chyroc/go-ptr"&lt;/span&gt;

    &lt;span class="s"&gt;"github.com/chyroc/lark"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;cli&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;lark&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;New&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;lark&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WithAppCredential&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"&amp;lt;APP_ID&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"&amp;lt;APP_SECRET&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

    &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;cli&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Calendar&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CreateCalendar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;lark&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CreateCalendarReq&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;Summary&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ptr&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"&amp;lt;SUMMARY&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
  </channel>
</rss>
