Skip to content

Instantly share code, notes, and snippets.

@nndnha
Forked from hooptie45/sourcemap-extract.rb
Created March 21, 2019 10:13
Show Gist options
  • Save nndnha/ae14cbf4779e1874780e58aeb4790872 to your computer and use it in GitHub Desktop.
Save nndnha/ae14cbf4779e1874780e58aeb4790872 to your computer and use it in GitHub Desktop.

Revisions

  1. @hooptie45 hooptie45 created this gist Aug 13, 2016.
    35 changes: 35 additions & 0 deletions sourcemap-extract.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,35 @@
    #!/usr/bin/env ruby

    require 'open-uri'
    require 'pathname'
    require 'json'

    def strip_hash(f)
    ext = f.extname

    if ext.include?("?")
    f.sub_ext(ext.split("?").first)
    else
    f
    end
    end

    sourcemap_url = ARGV[0] or "USAGE: sourcemap-extract.rb <source-map-url> [<destination>]"
    destination = ARGV[1]
    destination ||= "./tmp"

    root = Pathname(destination || "./tmp").expand_path
    sourcemap = open(sourcemap_url).read
    files, contents = JSON(sourcemap).values_at(*%w(sources sourcesContent))

    files = files.map { |f| f.sub("~", "./vendor") }
    files = files.map { |f| root.join(f).expand_path }
    files = files.map { |f| strip_hash(f) }


    files.zip(contents).each_with_index do |(dest, source), index|
    dest.dirname.mkpath
    puts "[%4s] \t (%5s) \t WROTE %s" % [index, dest.write(source), dest.relative_path_from(Pathname(".").expand_path)]
    end

    puts "\nDESTINATION #{root}"