versionizer 0.0.9 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/models/versionizer/version.rb +11 -0
- data/lib/generators/versionizer/migration_generator.rb +24 -0
- data/lib/generators/versionizer/save_generator.rb +29 -0
- data/lib/generators/versionizer/templates/create_table.rb +8 -0
- data/lib/generators/versionizer/templates/initializer.rb +1 -1
- data/lib/versionizer.rb +9 -11
- data/lib/versionizer/engine.rb +23 -0
- data/lib/versionizer/save.rb +23 -0
- data/lib/versionizer/tasks/version.rake +37 -0
- data/lib/versionizer/version.rb +1 -1
- data/spec/lib/generators/install_generator_spec.rb +5 -3
- data/spec/lib/generators/migration_generator_spec.rb +38 -0
- data/spec/lib/generators/save_generator_spec.rb +37 -0
- data/spec/lib/version_spec.rb +1 -1
- data/spec/spec_helper.rb +5 -1
- data/versionizer.gemspec +1 -1
- metadata +13 -5
- data/lib/tasks/github.rake +0 -2
- data/lib/versionizer/railtie.rb +0 -11
- data/lib/versionizer/tasks.rb +0 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3178d3c0003133f42416d98447004b60d59da841
|
4
|
+
data.tar.gz: effa122a52078671bec633eb16381ffd3ff45a28
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 763b212735b9e2b2f4395f377fc183d95bbd51eeb53ddd555c186ee59a965f992da0bcc643616550e05fa950d07ba89146d47a6cb8b9f27a9d31a6a90b2f9970
|
7
|
+
data.tar.gz: 587ecfe69add2623a67e2a90d91632b764805687f117f463b182881a42df37a5f92d3bdb873dc4da0fb053e2865812ed7098874ba13e3cee4dc505f7919d77e9
|
@@ -0,0 +1,11 @@
|
|
1
|
+
|
2
|
+
# Versionizer Model
|
3
|
+
#
|
4
|
+
# Default functionality is to save version updates to "version" model
|
5
|
+
# Gives the developer a running total of latest upgrades etc
|
6
|
+
# To ignore this, user can override the "save" method
|
7
|
+
|
8
|
+
###########################################
|
9
|
+
|
10
|
+
class Versionizer::Version < ActiveRecord::Base
|
11
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
###########################################
|
2
|
+
|
3
|
+
require 'rails/generators/active_record'
|
4
|
+
|
5
|
+
###########################################
|
6
|
+
|
7
|
+
module Versionizer
|
8
|
+
class MigrationGenerator < ActiveRecord::Generators::Base
|
9
|
+
|
10
|
+
#Source of Migrations
|
11
|
+
source_root File.expand_path("../templates", __FILE__)
|
12
|
+
|
13
|
+
#Name (otherwise fails)
|
14
|
+
argument :name, default: "migration"
|
15
|
+
|
16
|
+
###########################################
|
17
|
+
|
18
|
+
#Create Migration
|
19
|
+
def create_versions_migration
|
20
|
+
migration_template "create_table.rb", "db/migrate/create_versions.rb"
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
###########################################
|
2
|
+
|
3
|
+
require 'rails/generators/base'
|
4
|
+
|
5
|
+
###########################################
|
6
|
+
|
7
|
+
module Versionizer
|
8
|
+
class SaveGenerator < Rails::Generators::Base
|
9
|
+
|
10
|
+
#Setup
|
11
|
+
source_root File.expand_path("../../../versionizer", __FILE__)
|
12
|
+
|
13
|
+
#Generate File
|
14
|
+
def generate
|
15
|
+
|
16
|
+
#Generate
|
17
|
+
template "save.rb", "vendor/versionizer/save.rb"
|
18
|
+
|
19
|
+
#Insert
|
20
|
+
inject_into_file "vendor/versionizer/save.rb", :after => "repos.first.tag_name" do
|
21
|
+
"\n\n\t\t#EDITABLE REGION"
|
22
|
+
end
|
23
|
+
|
24
|
+
#Success
|
25
|
+
puts "Save Generated Successfully"
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
@@ -9,6 +9,6 @@
|
|
9
9
|
|
10
10
|
Versionizer.setup do |config|
|
11
11
|
config.user = "<%= @user %>" #-> Your Github Username
|
12
|
-
config.api
|
12
|
+
config.api = "<%= @api %>" #-> Your Github API Key
|
13
13
|
config.repo = "<%= @repo %>" #-> Your Github Repo to track
|
14
14
|
end
|
data/lib/versionizer.rb
CHANGED
@@ -1,19 +1,17 @@
|
|
1
|
-
|
2
|
-
require "versionizer/config"
|
1
|
+
###########################################
|
3
2
|
|
4
|
-
|
3
|
+
dependencies = %w(version config save)
|
4
|
+
dependencies.each do |d|
|
5
|
+
require "versionizer/#{d}"
|
6
|
+
end
|
7
|
+
require "versionizer/engine" if defined?(Rails) # -> http://stackoverflow.com/questions/742633/make-rake-task-from-gem-available-everywhere
|
5
8
|
|
6
|
-
|
7
|
-
require "versionizer/railtie" if defined?(Rails)
|
9
|
+
###########################################
|
8
10
|
|
9
|
-
|
10
|
-
def self.save repo
|
11
|
-
option = Option.find_by name: "version"
|
12
|
-
option.update!(value: repo.first.tag_name)
|
13
|
-
end
|
11
|
+
module Versionizer
|
14
12
|
|
15
13
|
####################
|
16
|
-
#
|
14
|
+
# Setup #
|
17
15
|
####################
|
18
16
|
|
19
17
|
#Ref http://robots.thoughtbot.com/mygem-configure-block
|
@@ -0,0 +1,23 @@
|
|
1
|
+
###########################################
|
2
|
+
|
3
|
+
#http://stackoverflow.com/questions/742633/make-rake-task-from-gem-available-everywhere
|
4
|
+
require 'versionizer'
|
5
|
+
require 'rails'
|
6
|
+
|
7
|
+
###########################################
|
8
|
+
|
9
|
+
module Versionizer
|
10
|
+
class Engine < Rails::Engine
|
11
|
+
#Tasks
|
12
|
+
rake_tasks do
|
13
|
+
load File.expand_path('../../versionizer/tasks/version.rake', __FILE__) # https://github.com/kjvarga/sitemap_generator/blob/master/lib/sitemap_generator/railtie.rb
|
14
|
+
end
|
15
|
+
|
16
|
+
#Autoload (for auto-installed gems)
|
17
|
+
initializer "versionizer" do |app|
|
18
|
+
Dir[Rails.root + 'lib/versionizer/*.rb'].each do |file| #-> http://stackoverflow.com/questions/4235782/rails-3-library-not-loading-until-require/6797707#6797707
|
19
|
+
require file
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
|
2
|
+
# Versionizer "Save" Method
|
3
|
+
#
|
4
|
+
# This is called *after* you call `rake version:update`
|
5
|
+
# Standard functionality updates "Version" model (which is generated initially)
|
6
|
+
# Can be overridden by invoking `rails g versionizer:save`
|
7
|
+
|
8
|
+
###########################################
|
9
|
+
|
10
|
+
module Versionizer
|
11
|
+
class Save
|
12
|
+
|
13
|
+
#Save
|
14
|
+
def initialize repos
|
15
|
+
latest = repos.first.tag_name
|
16
|
+
|
17
|
+
#Need to determine if exists
|
18
|
+
#Here you save your update
|
19
|
+
Versionizer::Version.create!(tag: latest)
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
#########################################
|
2
|
+
|
3
|
+
require 'rake' #-> Tasks Structure https://github.com/kjvarga/sitemap_generator/blob/master/lib/sitemap_generator/tasks.rb
|
4
|
+
require 'github_api'
|
5
|
+
|
6
|
+
#########################################
|
7
|
+
|
8
|
+
##GITHUB AUTHENTICATION RAKE
|
9
|
+
#Authorization API Key = https://github.com/settings/applications#personal-access-tokens
|
10
|
+
|
11
|
+
#Github
|
12
|
+
namespace :version do
|
13
|
+
|
14
|
+
# Have to load "Github" gem into environment. Github object depends on it being
|
15
|
+
# present & available
|
16
|
+
|
17
|
+
# Update
|
18
|
+
desc "Get The Latest Release From Github"
|
19
|
+
task :save => :environment do #-> http://stackoverflow.com/questions/2574921/how-do-i-pass-arguments-from-the-parent-task-to-the-child-task-in-rake
|
20
|
+
github = Github.new basic_auth: "#{Versionizer.config.user}:#{Versionizer.config.api}"
|
21
|
+
@repos = github.repos.releases.list "#{Versionizer.config.user}", "#{Versionizer.config.repo}"
|
22
|
+
end
|
23
|
+
|
24
|
+
#After
|
25
|
+
desc "Save The Latest Release"
|
26
|
+
task :update => [:environment, :save] do
|
27
|
+
if @repos.present?
|
28
|
+
unless Rails.env.test?
|
29
|
+
Versionizer::Save.new @repos
|
30
|
+
puts "Version Updated To v#{@repos.first.tag_name}"
|
31
|
+
end
|
32
|
+
else
|
33
|
+
puts "Invalid Github"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
data/lib/versionizer/version.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require "spec_helper"
|
4
4
|
require "generator_spec"
|
5
|
+
require "versionizer" #-> for assert_match
|
5
6
|
|
6
7
|
##########################################
|
7
8
|
|
@@ -28,9 +29,10 @@ describe Versionizer::InstallGenerator do
|
|
28
29
|
#Config
|
29
30
|
it "has valid config" do
|
30
31
|
assert_file "config/initializers/versionizer.rb" do |file|
|
31
|
-
|
32
|
-
|
33
|
-
|
32
|
+
%w(user api repo).each do |item|
|
33
|
+
string = "config.#{item} = \"#{Versionizer.config.send(item)}\"" #-> Regex
|
34
|
+
assert_match(string, file)
|
35
|
+
end
|
34
36
|
end
|
35
37
|
end
|
36
38
|
|
@@ -0,0 +1,38 @@
|
|
1
|
+
##########################################
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
require "generator_spec"
|
5
|
+
require "versionizer" #-> for assert_match
|
6
|
+
|
7
|
+
##########################################
|
8
|
+
|
9
|
+
#Install Generator
|
10
|
+
describe Versionizer::MigrationGenerator do
|
11
|
+
|
12
|
+
#Setup
|
13
|
+
GeneratorSpec::TestCase
|
14
|
+
|
15
|
+
#Destination
|
16
|
+
destination File.expand_path("../../tmp", __FILE__)
|
17
|
+
|
18
|
+
#Before
|
19
|
+
before(:all) do
|
20
|
+
prepare_destination
|
21
|
+
run_generator
|
22
|
+
end
|
23
|
+
|
24
|
+
#Create
|
25
|
+
it "creates the migration" do
|
26
|
+
assert_migration "db/migrate/create_versions.rb"
|
27
|
+
end
|
28
|
+
|
29
|
+
#Table
|
30
|
+
it "creates Version table" do
|
31
|
+
# expect {
|
32
|
+
# CreateVersions.change
|
33
|
+
# Version.reset_column_information
|
34
|
+
# }.to change { Version.columns }
|
35
|
+
#Version.columns.map(&:tag).should include()
|
36
|
+
# end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
##########################################
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
require "generator_spec"
|
5
|
+
require "versionizer" #-> for assert_match
|
6
|
+
|
7
|
+
##########################################
|
8
|
+
|
9
|
+
#Install Generator
|
10
|
+
describe Versionizer::SaveGenerator do
|
11
|
+
|
12
|
+
#Setup
|
13
|
+
GeneratorSpec::TestCase
|
14
|
+
|
15
|
+
#Destination
|
16
|
+
destination File.expand_path("../../tmp", __FILE__)
|
17
|
+
|
18
|
+
#Before
|
19
|
+
before(:all) do
|
20
|
+
prepare_destination
|
21
|
+
run_generator
|
22
|
+
end
|
23
|
+
|
24
|
+
#Create
|
25
|
+
it "creates the files" do
|
26
|
+
assert_file "vendor/versionizer/save.rb"
|
27
|
+
end
|
28
|
+
|
29
|
+
#Contents
|
30
|
+
it "has the method" do
|
31
|
+
assert_file "vendor/versionizer/save.rb" do |file|
|
32
|
+
assert_match "def initialize repos", file
|
33
|
+
assert_match "\n\n\t\t#EDITABLE REGION", file
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
data/spec/lib/version_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -23,7 +23,11 @@ require 'coveralls'
|
|
23
23
|
Coveralls.wear!
|
24
24
|
|
25
25
|
#Generators
|
26
|
-
|
26
|
+
generators = %w(install save migration)
|
27
|
+
generators.each do |g|
|
28
|
+
require "generators/versionizer/#{g}_generator"
|
29
|
+
end
|
30
|
+
|
27
31
|
|
28
32
|
#Env
|
29
33
|
ENV["RAILS_ENV"] = 'test'
|
data/versionizer.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency
|
21
|
+
spec.add_dependency "github_api", "~> 0.12.1"
|
22
22
|
spec.add_development_dependency "bundler", "~> 1.6"
|
23
23
|
spec.add_development_dependency "rake"
|
24
24
|
spec.add_development_dependency "rspec"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: versionizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Peck
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: github_api
|
@@ -81,15 +81,21 @@ files:
|
|
81
81
|
- LICENSE.txt
|
82
82
|
- README.md
|
83
83
|
- Rakefile
|
84
|
+
- app/models/versionizer/version.rb
|
84
85
|
- lib/generators/versionizer/install_generator.rb
|
86
|
+
- lib/generators/versionizer/migration_generator.rb
|
87
|
+
- lib/generators/versionizer/save_generator.rb
|
88
|
+
- lib/generators/versionizer/templates/create_table.rb
|
85
89
|
- lib/generators/versionizer/templates/initializer.rb
|
86
|
-
- lib/tasks/github.rake
|
87
90
|
- lib/versionizer.rb
|
88
91
|
- lib/versionizer/config.rb
|
89
|
-
- lib/versionizer/
|
90
|
-
- lib/versionizer/
|
92
|
+
- lib/versionizer/engine.rb
|
93
|
+
- lib/versionizer/save.rb
|
94
|
+
- lib/versionizer/tasks/version.rake
|
91
95
|
- lib/versionizer/version.rb
|
92
96
|
- spec/lib/generators/install_generator_spec.rb
|
97
|
+
- spec/lib/generators/migration_generator_spec.rb
|
98
|
+
- spec/lib/generators/save_generator_spec.rb
|
93
99
|
- spec/lib/version_spec.rb
|
94
100
|
- spec/spec_helper.rb
|
95
101
|
- versionizer.gemspec
|
@@ -119,5 +125,7 @@ specification_version: 4
|
|
119
125
|
summary: '"Versions" for your app using Github "Releases" feature'
|
120
126
|
test_files:
|
121
127
|
- spec/lib/generators/install_generator_spec.rb
|
128
|
+
- spec/lib/generators/migration_generator_spec.rb
|
129
|
+
- spec/lib/generators/save_generator_spec.rb
|
122
130
|
- spec/lib/version_spec.rb
|
123
131
|
- spec/spec_helper.rb
|
data/lib/tasks/github.rake
DELETED
data/lib/versionizer/railtie.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
#http://stackoverflow.com/questions/742633/make-rake-task-from-gem-available-everywhere
|
2
|
-
require 'versionizer'
|
3
|
-
require 'rails'
|
4
|
-
|
5
|
-
module Versionizer
|
6
|
-
class Railtie < Rails::Railtie
|
7
|
-
rake_tasks do
|
8
|
-
require File.expand_path('../tasks', __FILE__) # https://github.com/kjvarga/sitemap_generator/blob/master/lib/sitemap_generator/railtie.rb
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
data/lib/versionizer/tasks.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
#########################################
|
2
|
-
|
3
|
-
require 'rake' #-> Tasks Structure https://github.com/kjvarga/sitemap_generator/blob/master/lib/sitemap_generator/tasks.rb
|
4
|
-
require 'github_api'
|
5
|
-
|
6
|
-
#########################################
|
7
|
-
|
8
|
-
##GITHUB AUTHENTICATION RAKE
|
9
|
-
#Authorization API Key = https://github.com/settings/applications#personal-access-tokens
|
10
|
-
|
11
|
-
#Github
|
12
|
-
namespace :version do
|
13
|
-
|
14
|
-
# Have to load "Github" gem into environment. Github object depends on it being
|
15
|
-
# present & available
|
16
|
-
|
17
|
-
# Update
|
18
|
-
task :update => :environment do
|
19
|
-
github = Github.new basic_auth: 'richpeck:29fbd56c3ab779a8ef22df8e52671c8c1c1ff194'
|
20
|
-
repo = github.repos.releases.list "richpeck", "sgm"
|
21
|
-
|
22
|
-
#Versionizer.save repo
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|