vagrant-timezone 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 0cb2f52c3d1916a0e4d2b2f8dfbdd10c894a7c1f
4
+ data.tar.gz: 55a4334eeddab2f762c8f50d3db7fdf0af4ecf7e
5
+ SHA512:
6
+ metadata.gz: 73dc18f9adeb3721f188cc946349fe2cf84795d846592f890d6afaa86959170ea7665971e96fdcbafb2abcf0614ce83e83bd2248613dd0e404de5b419cd7beed
7
+ data.tar.gz: 009b39f98fdfd27b22000edb82a8294c27da3f5b58e25bc992d3e4f34519b990b5a590d6c18417c0f23eb4426232bf8a2e322a61440bba5f0d614155e31a7dca
@@ -0,0 +1,3 @@
1
+ /.bundle
2
+ /Gemfile.lock
3
+ *.gem
@@ -0,0 +1,18 @@
1
+ language: ruby
2
+
3
+ before_install:
4
+ - rvm @global do gem uninstall bundler --all --executables
5
+ - gem uninstall bundler --all --executables
6
+ - gem install bundler --version '~> 1.5.2'
7
+ - bundle --version
8
+ bundler_args: --without=development
9
+
10
+ rvm: 2.0.0
11
+ env: VAGRANT_VERSION=v1.6.5
12
+ matrix:
13
+ include:
14
+ - env: VAGRANT_VERSION=v1.2.7
15
+ rvm: 1.9.3
16
+ - env: VAGRANT_VERSION=master
17
+ allow_failures:
18
+ - env: VAGRANT_VERSION=master
@@ -0,0 +1,4 @@
1
+ # 0.1.0 / 2014-10-26
2
+
3
+ - Initial release
4
+ - Support Debian and RedHat based distros
data/Gemfile ADDED
@@ -0,0 +1,12 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'vagrant',
4
+ git: 'https://github.com/mitchellh/vagrant.git',
5
+ ref: ENV.fetch('VAGRANT_VERSION', 'v1.6.5')
6
+
7
+ gem 'rake'
8
+ gem 'rspec', '~> 3.1'
9
+
10
+ group :plugins do
11
+ gem 'vagrant-timezone', path: '.'
12
+ end
@@ -0,0 +1,21 @@
1
+ The MIT License
2
+
3
+ Copyright (c) 2014 Teemu Matilainen <teemu.matilainen@iki.fi>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,38 @@
1
+ # Time Zone Configuration Plugin for Vagrant
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/vagrant-timezone.png)][gem]
4
+ [![Build Status](https://travis-ci.org/tmatilai/vagrant-timezone.png?branch=master)][travis]
5
+
6
+ [gem]: https://rubygems.org/gems/vagrant-timezone
7
+ [travis]: https://travis-ci.org/tmatilai/vagrant-timezone
8
+
9
+ A [Vagrant](http://www.vagrantup.com/) plugin that configures the time zone of a virtual machines.
10
+
11
+ If you want to use a specific time zone in a Vagrant VM, or if a third party base box comes with a non-standard time zone, this plugin is to the rescue. The configuration is done on `vagrant up` and `vagrant reload` actions. Note that no services are restarted automatically so they may keep using the old time zone information.
12
+
13
+ ## Usage
14
+
15
+ Install the plugin:
16
+
17
+ ```sh
18
+ vagrant plugin install vagrant-timezone
19
+ ```
20
+
21
+ To configure time zone for all Vagrant VMs, add the following to _$HOME/.vagrant.d/Vagrantfile_ (or to a project specific _Vagrantfile_):
22
+
23
+ ```ruby
24
+ Vagrant.configure("2") do |config|
25
+ if Vagrant.has_plugin?("vagrant-timezone")
26
+ config.timezone.value = "UTC"
27
+ end
28
+ # ... other stuff
29
+ end
30
+ ```
31
+
32
+ ## Compatibility
33
+
34
+ This plugin requires Vagrant 1.2 or newer ([downloads](https://www.vagrantup.com/downloads)).
35
+
36
+ The plugin is supposed to be compatible with all Vagrant providers and other plugins. Please file an [issue](https://github.com/tmatilai/vagrant-timezone/issues) if this is not the case.
37
+
38
+ At the moment only Debian and RedHat based VMs are supported.
@@ -0,0 +1,14 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ task default: 'test:unit'
5
+
6
+ # Remove 'install' task as the gem is installed to Vagrant, not to system
7
+ Rake::Task[:install].clear
8
+
9
+ namespace :test do
10
+ RSpec::Core::RakeTask.new('unit') do |task|
11
+ task.pattern = 'spec/unit/**/*_spec.rb'
12
+ end
13
+ end
14
+ task spec: ['test:unit']
@@ -0,0 +1,2 @@
1
+ require_relative 'vagrant-timezone/version'
2
+ require_relative 'vagrant-timezone/plugin'
@@ -0,0 +1,34 @@
1
+ require_relative '../logger'
2
+
3
+ module VagrantPlugins
4
+ module TimeZone
5
+ module Action
6
+ # Vagrant middleware action that sets the specified time zone
7
+ class SetTimeZone
8
+ def initialize(app, env)
9
+ @app = app
10
+ end
11
+
12
+ def call(env)
13
+ @app.call(env)
14
+
15
+ machine = env[:machine]
16
+ timezone = machine.config.timezone.value
17
+ if timezone.nil?
18
+ logger.info I18n.t('vagrant_timezone.not_enabled')
19
+ elsif machine.guest.capability?(:change_timezone)
20
+ env[:ui].info I18n.t('vagrant_timezone.configuring')
21
+ machine.guest.capability(:change_timezone, timezone)
22
+ else
23
+ logger.info I18n.t('vagrant_timezone.not_supported')
24
+ end
25
+ end
26
+
27
+ # @return [Log4r::Logger]
28
+ def logger
29
+ TimeZone.logger
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,16 @@
1
+ module VagrantPlugins
2
+ module TimeZone
3
+ module Cap
4
+ # Debian capabilities for changing time zone
5
+ module Debian
6
+ # Set the time zone
7
+ def self.change_timezone(machine, timezone)
8
+ machine.communicate.tap do |comm|
9
+ comm.sudo("echo '#{timezone}' > /etc/timezone")
10
+ comm.sudo('dpkg-reconfigure --frontend noninteractive tzdata')
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ module VagrantPlugins
2
+ module TimeZone
3
+ module Cap
4
+ # RedHat capabilities for changing time zone
5
+ module RedHat
6
+ # Set the time zone
7
+ def self.change_timezone(machine, timezone)
8
+ machine.communicate.tap do |comm|
9
+ comm.sudo("echo 'ZONE=\"#{timezone}\"' > /etc/sysconfig/clock")
10
+ comm.sudo("ln -sf /usr/share/zoneinfo/#{timezone} /etc/localtime")
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,24 @@
1
+ require 'vagrant'
2
+
3
+ module VagrantPlugins
4
+ module TimeZone
5
+ # Configuration for the Time Zone plugin
6
+ #
7
+ # @!parse class Config < Vagrant::Plugin::V2::Config; end
8
+ class Config < Vagrant.plugin('2', :config)
9
+ attr_accessor :value
10
+
11
+ def initialize
12
+ super
13
+
14
+ @value = UNSET_VALUE
15
+ end
16
+
17
+ def finalize!
18
+ super
19
+
20
+ @value = nil if @value == UNSET_VALUE
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,11 @@
1
+ require 'log4r'
2
+
3
+ module VagrantPlugins
4
+ # Base module for Vagrant TimeZone plugin
5
+ module TimeZone
6
+ # @return [Log4r::Logger] the logger instance for this plugin
7
+ def self.logger
8
+ @logger ||= Log4r::Logger.new('vagrant::timezone')
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,73 @@
1
+ require 'vagrant'
2
+ require_relative 'logger'
3
+
4
+ module VagrantPlugins
5
+ module TimeZone
6
+ # Vagrant Plugin class that registers configs, hooks, etc.
7
+ #
8
+ # @!parse class Plugin < Vagrant::Plugin::V2::Plugin; end
9
+ class Plugin < Vagrant.plugin('2')
10
+ # Compatible Vagrant versions
11
+ VAGRANT_VERSION_REQUIREMENT = '>= 1.2.0'
12
+
13
+ # Returns true if the Vagrant version fulfills the requirements
14
+ #
15
+ # @param requirements [String, Array<String>] the version requirement
16
+ # @return [Boolean]
17
+ def self.check_vagrant_version(*requirements)
18
+ Gem::Requirement.new(*requirements).satisfied_by?(
19
+ Gem::Version.new(Vagrant::VERSION))
20
+ end
21
+
22
+ # Verifies that the Vagrant version fulfills the requirements
23
+ #
24
+ # @raise [VagrantPlugins::TimeZone::VagrantVersionError] if this plugin
25
+ # is incompatible with the Vagrant version
26
+ def self.check_vagrant_version!
27
+ if !check_vagrant_version(VAGRANT_VERSION_REQUIREMENT)
28
+ msg = I18n.t(
29
+ 'vagrant_timezone.errors.vagrant_version',
30
+ requirement: VAGRANT_VERSION_REQUIREMENT.inspect)
31
+ $stderr.puts msg
32
+ raise msg
33
+ end
34
+ end
35
+
36
+ # Initializes the internationalization strings
37
+ def self.setup_i18n
38
+ I18n.load_path << File.expand_path('../../../locales/en.yml', __FILE__)
39
+ I18n.reload!
40
+ end
41
+
42
+ setup_i18n
43
+ check_vagrant_version!
44
+
45
+ name 'vagrant-timezone'
46
+
47
+ config 'timezone' do
48
+ require_relative 'config'
49
+ Config
50
+ end
51
+
52
+ action_hook 'timezone_configure', :machine_action_up do |hook|
53
+ require_relative 'action/set_timezone'
54
+ hook.after Vagrant::Action::Builtin::Provision, Action::SetTimeZone
55
+ end
56
+
57
+ action_hook 'timezone_configure', :machine_action_reload do |hook|
58
+ require_relative 'action/set_timezone'
59
+ hook.after Vagrant::Action::Builtin::Provision, Action::SetTimeZone
60
+ end
61
+
62
+ guest_capability 'debian', 'change_timezone' do
63
+ require_relative 'cap/debian'
64
+ Cap::Debian
65
+ end
66
+
67
+ guest_capability 'redhat', 'change_timezone' do
68
+ require_relative 'cap/redhat'
69
+ Cap::RedHat
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,5 @@
1
+ module VagrantPlugins
2
+ module TimeZone
3
+ VERSION = '0.1.0'
4
+ end
5
+ end
@@ -0,0 +1,9 @@
1
+ en:
2
+ vagrant_timezone:
3
+ not_enabled: "Time zone not configured"
4
+ not_supported: "Setting time zone not supported"
5
+ configuring: "Setting time zone..."
6
+
7
+ errors:
8
+ vagrant_version: |-
9
+ vagrant-timezone plugin requires Vagrant version %{requirement}
@@ -0,0 +1,18 @@
1
+ require 'simplecov'
2
+ require 'coveralls'
3
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
4
+ SimpleCov::Formatter::HTMLFormatter,
5
+ Coveralls::SimpleCov::Formatter
6
+ ]
7
+ SimpleCov.start do
8
+ coverage_dir('tmp/coverage')
9
+ add_filter '/spec/'
10
+ end
11
+
12
+ RSpec.configure do |config|
13
+ config.expect_with :rspec do |c|
14
+ c.syntax = :expect
15
+ end
16
+ config.color = true
17
+ config.tty = true
18
+ end
@@ -0,0 +1,20 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'vagrant-timezone/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'vagrant-timezone'
8
+ spec.version = VagrantPlugins::TimeZone::VERSION
9
+ spec.authors = ['Teemu Matilainen']
10
+ spec.email = ['teemu.matilainen@iki.fi']
11
+ spec.description = 'A Vagrant plugin that configures the time zone of a virtual machine'
12
+ spec.summary = spec.description
13
+ spec.homepage = 'http://github.com/tmatilai/vagrant-timezone'
14
+ spec.license = 'MIT'
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ['lib']
20
+ end
metadata ADDED
@@ -0,0 +1,63 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vagrant-timezone
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Teemu Matilainen
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-10-26 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A Vagrant plugin that configures the time zone of a virtual machine
14
+ email:
15
+ - teemu.matilainen@iki.fi
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - ".gitignore"
21
+ - ".travis.yml"
22
+ - CHANGELOG.md
23
+ - Gemfile
24
+ - LICENSE.txt
25
+ - README.md
26
+ - Rakefile
27
+ - lib/vagrant-timezone.rb
28
+ - lib/vagrant-timezone/action/set_timezone.rb
29
+ - lib/vagrant-timezone/cap/debian.rb
30
+ - lib/vagrant-timezone/cap/redhat.rb
31
+ - lib/vagrant-timezone/config.rb
32
+ - lib/vagrant-timezone/logger.rb
33
+ - lib/vagrant-timezone/plugin.rb
34
+ - lib/vagrant-timezone/version.rb
35
+ - locales/en.yml
36
+ - spec/spec_helper.rb
37
+ - vagrant-timezone.gemspec
38
+ homepage: http://github.com/tmatilai/vagrant-timezone
39
+ licenses:
40
+ - MIT
41
+ metadata: {}
42
+ post_install_message:
43
+ rdoc_options: []
44
+ require_paths:
45
+ - lib
46
+ required_ruby_version: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ requirements: []
57
+ rubyforge_project:
58
+ rubygems_version: 2.2.2
59
+ signing_key:
60
+ specification_version: 4
61
+ summary: A Vagrant plugin that configures the time zone of a virtual machine
62
+ test_files:
63
+ - spec/spec_helper.rb