Skip to content

Commit

Permalink
Revert use Shards::Version as value in Shardbox
Browse files Browse the repository at this point in the history
  • Loading branch information
straight-shoota committed May 2, 2020
1 parent 4305d06 commit 4b8220f
Show file tree
Hide file tree
Showing 7 changed files with 25 additions and 32 deletions.
8 changes: 4 additions & 4 deletions spec/service/sync_release_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ describe Service::SyncRelease do
shard_id = Factory.create_shard(db)
# repo_id = Factory.create_repo(db, shard_id: shard_id)

service = Service::SyncRelease.new(db, shard_id, Shards::Version.new("0.1.0"))
service = Service::SyncRelease.new(db, shard_id, "0.1.0")

service.sync_release(Repo::Resolver.new(mock_resolver, Repo::Ref.new("git", "foo")))

Expand Down Expand Up @@ -56,7 +56,7 @@ describe Service::SyncRelease do
VALUES($1, '0.1.0', '2018-12-30 00:00:00 UTC', '{}', '{}', 1, true, NOW())
SQL

service = Service::SyncRelease.new(db, shard_id, Shards::Version.new("0.1.0"))
service = Service::SyncRelease.new(db, shard_id, "0.1.0")

service.sync_release(Repo::Resolver.new(mock_resolver, Repo::Ref.new("git", "foo")))

Expand Down Expand Up @@ -89,7 +89,7 @@ describe Service::SyncRelease do

transaction do |db|
shard_id = Factory.create_shard(db)
service = Service::SyncRelease.new(db, shard_id, Shards::Version.new("0.1.0"))
service = Service::SyncRelease.new(db, shard_id, "0.1.0")
resolver = Repo::Resolver.new(mock_resolver, Repo::Ref.new("git", "foo"))

service.sync_release(resolver)
Expand Down Expand Up @@ -141,7 +141,7 @@ describe Service::SyncRelease do
shard_id = Factory.create_shard(db)
release_id = Factory.create_release(db, shard_id, "0.1.0")

service = Service::SyncRelease.new(db, shard_id, Shards::Version.new("0.1.0"))
service = Service::SyncRelease.new(db, shard_id, "0.1.0")

version.files["README.md"] = "Hello World!"
service.sync_files(release_id, Repo::Resolver.new(mock_resolver, Repo::Ref.new("git", "foo")))
Expand Down
1 change: 0 additions & 1 deletion spec/support/factory.cr
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ module Factory
yanked_at = nil, latest = false, position = nil)
shard_id ||= create_shard(db)
revision_info ||= build_revision_info("v#{version}")
version = Shards::Version.new(version)

release = Release.new(version, released_at, revision_info, spec, yanked_at, latest)

Expand Down
2 changes: 1 addition & 1 deletion src/db.cr
Original file line number Diff line number Diff line change
Expand Up @@ -338,7 +338,7 @@ class ShardsDB
id, version, released_at, revision_info, spec, yanked_at, latest = result
revision_info = Release::RevisionInfo.from_json(revision_info)
Release.new(
Shards::Version.new(version), released_at, revision_info, spec.as_h, yanked_at, !!latest, id: id
version, released_at, revision_info, spec.as_h, yanked_at, !!latest, id: id
)
end
end
Expand Down
6 changes: 3 additions & 3 deletions src/release.cr
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class Release
include JSON::Serializable
end

property version : Shards::Version
property version : String
property released_at : Time
property! revision_info : RevisionInfo?
property? yanked_at : Time?
Expand All @@ -27,7 +27,7 @@ class Release
property! id : Int64

def self.new(
version : Shards::Version,
version : String,
revision_info : RevisionInfo,
spec : Hash(String, JSON::Any) = {} of String => JSON::Any,
yanked_at : Time? = nil,
Expand All @@ -44,7 +44,7 @@ class Release
end

def initialize(
@version : Shards::Version,
@version : String,
@released_at : Time,
@revision_info : RevisionInfo? = nil,
@spec : Hash(String, JSON::Any) = {} of String => JSON::Any,
Expand Down
26 changes: 10 additions & 16 deletions src/repo/resolver.cr
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,6 @@ require "../ext/shards/resolvers/git"
require "../ext/shards/resolvers/github"
require "../release"

struct Shards::Version
def to_json(builder : JSON::Builder)
value.to_json(builder)
end
end

class Repo
class Resolver
class RepoUnresolvableError < Exception
Expand All @@ -24,8 +18,8 @@ class Repo
new(resolver_instance(repo_ref), repo_ref)
end

def fetch_versions : Array(Shards::Version)
@resolver.available_releases
def fetch_versions : Array(String)
@resolver.available_releases.map(&.value)
rescue exc : Shards::Error
if exc.message.try &.starts_with?("Failed to clone")
raise RepoUnresolvableError.new(cause: exc)
Expand All @@ -34,8 +28,8 @@ class Repo
end
end

def fetch_raw_spec(version : Shards::Version = nil) : String?
@resolver.read_spec!(version)
def fetch_raw_spec(version : String? = nil) : String?
@resolver.read_spec!(Shards::Version.new(version))
rescue exc : Shards::Error
if exc.message.try &.starts_with?("Failed to clone")
raise RepoUnresolvableError.new(cause: exc)
Expand All @@ -46,12 +40,12 @@ class Repo
end
end

def fetch_file(version : Shards::Version?, path : String)
@resolver.fetch_file(version, path)
def fetch_file(version : String?, path : String)
@resolver.fetch_file(Shards::Version.new(version), path)
end

def revision_info(version : Shards::Version? = nil) : Release::RevisionInfo
@resolver.revision_info(version)
def revision_info(version : String? = nil) : Release::RevisionInfo
@resolver.revision_info(Shards::Version.new(version))
end

def fetch_metadata : Repo::Metadata?
Expand All @@ -60,8 +54,8 @@ class Repo
end
end

def latest_version_for_ref(ref) : Shards::Version?
@resolver.latest_version_for_ref(ref)
def latest_version_for_ref(ref) : String?
@resolver.latest_version_for_ref(ref).try &.value
end

def self.resolver_instance(repo_ref)
Expand Down
6 changes: 3 additions & 3 deletions src/service/sync_release.cr
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ require "./import_shard"

# This service synchronizes the information about a release in the database.
class Service::SyncRelease
def initialize(@db : ShardsDB, @shard_id : Int64, @version : Shards::Version)
def initialize(@db : ShardsDB, @shard_id : Int64, @version : String)
end

def perform
repo = @db.find_canonical_repo(@shard_id)
resolver = Repo::Resolver.new(repo.ref)

Raven.tags_context repo: repo.ref.to_s, version: @version.to_s
Raven.tags_context repo: repo.ref.to_s, version: @version

sync_release(resolver)
end
Expand All @@ -38,7 +38,7 @@ class Service::SyncRelease
spec_json = JSON.parse(YAML.parse(spec_raw).to_json).as_h
else
# No `shard.yml` found, using mock spec
spec = Shards::Spec.new(name: @db.get_shard(@shard_id).name, version: @version)
spec = Shards::Spec.new(name: @db.get_shard(@shard_id).name, version: Shards::Version.new(@version))
spec_json = {} of String => JSON::Any
end

Expand Down
8 changes: 4 additions & 4 deletions src/service/sync_repo.cr
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,9 @@ struct Service::SyncRepo
def sync_releases(resolver, shard_id)
versions = resolver.fetch_versions

failed_versions = [] of Shards::Version
failed_versions = [] of String
versions.each do |version|
if !SoftwareVersion.valid?(version.to_s) && version.to_s != "HEAD"
if !SoftwareVersion.valid?(version) && version != "HEAD"
# TODO: What should happen when a version tag is invalid?
# Ignoring this release for now and sending a note to sentry.

Expand All @@ -58,7 +58,7 @@ struct Service::SyncRepo
message: "Invalid version, ignoring release.",
tags: {
repo: resolver.repo_ref.to_s,
tag_version: version.to_s,
tag_version: version,
}
)
next
Expand All @@ -68,7 +68,7 @@ struct Service::SyncRepo
SyncRelease.new(@db, shard_id, version).sync_release(resolver)
rescue exc : Shards::ParseError
repo = @db.get_repo(resolver.repo_ref)
SyncRepo.sync_failed(@db, repo, "sync_release:failed", exc, tags: {"error_message" => exc.message, "version" => version.to_s})
SyncRepo.sync_failed(@db, repo, "sync_release:failed", exc, tags: {"error_message" => exc.message, "version" => version})

failed_versions << version
end
Expand Down

0 comments on commit 4b8220f

Please sign in to comment.