versionizer 0.0.9 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7abc7e8daffcb13871d8dff1f970b1009d5287c9
4
- data.tar.gz: d2db32394ad05c872e4af923f31bd5c9d36726bd
3
+ metadata.gz: 3178d3c0003133f42416d98447004b60d59da841
4
+ data.tar.gz: effa122a52078671bec633eb16381ffd3ff45a28
5
5
  SHA512:
6
- metadata.gz: 7b74362249774112e3b8c3ade7e2637d018e49def0759eea1d186db37491a24adb996cef51b95ece308ac2568f3d085728d7c097731875f3a3ab35b2a55d948c
7
- data.tar.gz: a2f1b00044596fb0b951ac3c0a395dfe33e6416cf5587d6d14290c03eebd9b98d6fb3053a92837cb9ddadd8261f99b9ab4d9df55e2a0e3876d3ec94586a0c7e0
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
@@ -0,0 +1,8 @@
1
+ class CreateVersions < ActiveRecord::Migration
2
+ def change
3
+ create_table :versions do |t|
4
+ t.string :tag
5
+ t.timestamps
6
+ end
7
+ end
8
+ end
@@ -9,6 +9,6 @@
9
9
 
10
10
  Versionizer.setup do |config|
11
11
  config.user = "<%= @user %>" #-> Your Github Username
12
- config.api = "<%= @api %>" #-> Your Github API Key
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
- require "versionizer/version"
2
- require "versionizer/config"
1
+ ###########################################
3
2
 
4
- module Versionizer
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
- #Railtie - http://stackoverflow.com/questions/742633/make-rake-task-from-gem-available-everywhere
7
- require "versionizer/railtie" if defined?(Rails)
9
+ ###########################################
8
10
 
9
- #Save
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
- # Config #
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
@@ -1,3 +1,3 @@
1
1
  module Versionizer
2
- VERSION = "0.0.9"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -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
- assert_match("config.user =", file)
32
- assert_match("config.api =", file)
33
- assert_match("config.repo =", file)
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
@@ -15,7 +15,7 @@ describe "GitHub Connectivity Test" do
15
15
 
16
16
  #Load
17
17
  before do
18
- load "./lib/tasks/github.rake"
18
+ load "./lib/versionizer/tasks/version.rake"
19
19
  Rake::Task.define_task(:environment)
20
20
  end
21
21
 
data/spec/spec_helper.rb CHANGED
@@ -23,7 +23,11 @@ require 'coveralls'
23
23
  Coveralls.wear!
24
24
 
25
25
  #Generators
26
- require 'generators/versionizer/install_generator'
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 'github_api', '~> 0.12.1'
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.9
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-28 00:00:00.000000000 Z
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/railtie.rb
90
- - lib/versionizer/tasks.rb
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
@@ -1,2 +0,0 @@
1
- #https://github.com/kjvarga/sitemap_generator/blob/master/lib/tasks/sitemap_generator_tasks.rake
2
- load(File.expand_path(File.join(File.dirname(__FILE__), '../versionizer/tasks.rb')))
@@ -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
@@ -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