在GitHub我们经常需要下载某一个目录下面的文件,而不是整个仓库,而GitHub提供给用户的下载功能并不能指定下载某一个目录下的文件,于是使用golang写了一个工具,可以用来下载目录中的文件,下载之后的目录结构与仓库中的目录结构一致
效果如下
代码如下,可见 github-dl-tool, 欢迎 ⭐️
package main
import (
"bytes"
"flag"
"fmt"
"io"
"io/ioutil"
"net/http"
"os"
"path/filepath"
"regexp"
"strings"
"sync"
"time"
)
const GITHUB = "https://github.com"
const CONTENT = "https://raw.githubusercontent.com"
var urlPattern = regexp.MustCompile(`<a class="js-navigation-open link-gray-dark" title="(.*?)" href="(.*?)">`)
var repositoryPattern = regexp.MustCompile(`(/.*?/.*?/)blob/(.*$)`)
// command line args
var url string
var path string
func init(){
flag.StringVar(&url, "url", "", "the url you want to grab")
flag.StringVar(&path, "dl", "", "the path you want to save files")
}
func main() {
flag.Parse()
if url == ""{
fmt.Println("please specify the github url!")
return
}
if path == ""{
path = getRepositoryName(url)
}
var client http.Client
var wg sync.WaitGroup
start := time.Now()