             return ".package(url: \"\(self.url)\", \(requirement.packageString)),"
         }
     }
-
-    public struct Tag: Decodable {
-        public let name: String
-
-        private enum NodeKeys: String, CodingKey {
-            case node
-        }
-
-        private enum CodingKeys: String, CodingKey {
-            case name
-        }
-
-        public init(from decoder: Decoder) throws {
-            let nodeContainer = try decoder.container(keyedBy: NodeKeys.self)
-            let container = try nodeContainer.nestedContainer(keyedBy: CodingKeys.self, forKey: .node)
-            let name = try container.decode(String.self, forKey: .name)
-            self.init(with: name)
-        }
-
-        public init(with name: String) {
-            if name.hasPrefix("v") {
-                self.name = String(name.dropFirst())
-            } else {
-                self.name = name
-            }
-        }
-    }
 }
 
 extension Repository.DependencyRepresentationError: LocalizedError {

    public let license: String?
    public let openIssues: Int
    public let stargazers: Int
    public var tags: [Tag]
    public let hasPackageManifest: Bool

    public var owner: String {

import Foundation
import Rainbow

public typealias Tag = String
public typealias Head = String

public struct Repository: Decodable {
    public let nameWithOwner: String
