Skip to content

Instantly share code, notes, and snippets.

@manveru
Created September 28, 2017 09:49
Show Gist options
  • Save manveru/504bec9cca43a5457ad72038951b2174 to your computer and use it in GitHub Desktop.
Save manveru/504bec9cca43a5457ad72038951b2174 to your computer and use it in GitHub Desktop.
Extract VPKs
package main
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"github.com/watbe/vpk"
)
func main() {
if len(os.Args) != 2 {
fmt.Println("Usage:", os.Args[0], "filename.vpk")
return
}
MAIN_FILE := os.Args[1]
f, err := os.Open(MAIN_FILE)
eh(err)
defer func() {
err := f.Close()
eh(err)
}()
vpkFile, err := vpk.ReadVPKFile(f)
eh(err)
for _, filename := range vpkFile.ListFiles() {
data, err := vpkFile.GetReader(vpkFile.GetFileInfo(filename), MAIN_FILE)
eh(err)
buf, err := ioutil.ReadAll(data)
eh(err)
dir := filepath.Dir(filename)
eh(os.MkdirAll(dir, 0744))
eh(ioutil.WriteFile(filename, buf, 0644))
eh(data.Close())
}
}
func eh(err error) {
if err != nil {
panic(err)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment