opskeleton 0.0.5 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,10 +1,12 @@
1
1
  GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
- thor (0.16.0)
4
+ map (6.3.0)
5
+ thor (0.17.0)
5
6
 
6
7
  PLATFORMS
7
8
  ruby
8
9
 
9
10
  DEPENDENCIES
11
+ map
10
12
  thor
data/Rakefile CHANGED
@@ -1 +1,8 @@
1
1
  require "bundler/gem_tasks"
2
+
3
+ require 'rake/testtask'
4
+
5
+ Rake::TestTask.new do |t|
6
+ t.pattern = "test/*_test.rb"
7
+ t.verbose = true
8
+ end
data/bin/opsk CHANGED
@@ -4,42 +4,9 @@ $:.push 'lib'
4
4
  require 'rubygems'
5
5
  require 'thor'
6
6
  require 'thor/group'
7
- require 'opskeleton/version'
8
-
9
- module Opsk
10
- class Package < Thor::Group
11
- include Thor::Actions
12
-
13
- def self.source_root
14
- # during dev time
15
- if(File.dirname(__FILE__) == './bin')
16
- File.dirname('.')
17
- else
18
- "#{File.dirname(__FILE__)}/../"
19
- end
20
- end
21
-
22
- def create_pkg
23
- empty_directory('pkg')
24
- end
25
-
26
- def create_scripts
27
- empty_directory('scripts')
28
- template('templates/scripts/lookup.sh', "scripts/lookup.sh")
29
- template('templates/scripts/run.sh', "scripts/run.sh")
30
- end
31
-
32
- def package
33
- name = File.basename(Dir.getwd)
34
- ignored = IO.readlines('.gitignore').map(&:chomp)
35
- ignored.delete('modules')
36
- excludes = ignored.map{|f| "'#{f}'"}.join(" --exclude=") << ' --exclude-backups --exclude-vcs --exclude=pkg'
37
- run("tar --exclude=#{excludes} -czf pkg/#{name}.tar.gz ../#{name} > /dev/null", :verbose => false)
38
- end
39
-
40
- end
41
-
7
+ require 'opskeleton'
42
8
 
9
+ module Opsk
43
10
  class Specgen < Thor::Group
44
11
  include Thor::Actions
45
12
 
@@ -63,80 +30,6 @@ module Opsk
63
30
  def create_class_spec
64
31
  template('templates/spec.erb', "static-modules/#{name}/spec/classes/")
65
32
  end
66
-
67
- end
68
-
69
- class Generate < Thor::Group
70
- include Thor::Actions
71
-
72
- argument :name, :type => :string, :desc => "project name"
73
- argument :box, :type => :string, :desc => "Vagrant box type"
74
-
75
- desc "Generate a Vagrant, Puppet librarian and fpm project"
76
-
77
-
78
- def self.source_root
79
- # during dev time
80
- if(File.dirname(__FILE__) == './bin')
81
- File.dirname('.')
82
- else
83
- "#{File.dirname(__FILE__)}/../"
84
- end
85
- end
86
-
87
- def path
88
- "#{name}-sandbox"
89
- end
90
-
91
- def create_vagrant_file
92
- empty_directory(path)
93
- template('templates/vagrant.erb', "#{path}/Vagrantfile")
94
- end
95
-
96
- def create_gemfile
97
- copy_file('templates/gemfile', "#{path}/Gemfile")
98
- end
99
-
100
- def create_rakefile
101
- copy_file('templates/Rakefile', "#{path}/Rakefile")
102
- end
103
-
104
- def create_rvmrc
105
- template('templates/rvmrc.erb', "#{path}/.rvmrc")
106
- end
107
-
108
- def create_puppet_base
109
- empty_directory("#{path}/static-modules/")
110
- empty_directory("#{path}/manifests/")
111
- template('templates/puppetfile.erb', "#{path}/Puppetfile")
112
- template('templates/default.erb', "#{path}/manifests/default.pp")
113
- copy_file('templates/run.sh', "#{path}/run.sh")
114
- chmod("#{path}/run.sh", 0755)
115
- end
116
-
117
- def create_heira
118
- hieradata = "#{path}/hieradata/"
119
- empty_directory(hieradata)
120
- %w(common virtualbox physical).each do |env|
121
- copy_file('templates/clean.yaml', "#{hieradata}/#{env}.yaml")
122
- end
123
-
124
- copy_file('templates/hiera.yaml', "#{path}/hiera.yaml")
125
- end
126
-
127
- def readme
128
- template('templates/README.erb', "#{path}/README.md")
129
- copy_file('templates/LICENSE-2.0.txt',"#{path}/LICENSE-2.0.txt")
130
- end
131
-
132
- def git
133
- copy_file('templates/gitignore', "#{path}/.gitignore")
134
- inside(path) do
135
- run('git init .')
136
- run('git add -A')
137
- run("git commit -m 'initial sandbox import'")
138
- end
139
- end
140
33
  end
141
34
  end
142
35
 
@@ -0,0 +1,68 @@
1
+ module Opsk
2
+ class Generate < Thor::Group
3
+ include Thorable, Thor::Actions
4
+
5
+ argument :name, :type => :string, :desc => "project name"
6
+ argument :box, :type => :string, :desc => "Vagrant box type"
7
+
8
+ desc "Generate a Vagrant, Puppet librarian and fpm project"
9
+
10
+ def path
11
+ "#{name}-sandbox"
12
+ end
13
+
14
+ def create_vagrant_file
15
+ empty_directory(path)
16
+ template('templates/vagrant.erb', "#{path}/Vagrantfile")
17
+ end
18
+
19
+ def create_gemfile
20
+ copy_file('templates/gemfile', "#{path}/Gemfile")
21
+ end
22
+
23
+ def create_rakefile
24
+ copy_file('templates/Rakefile', "#{path}/Rakefile")
25
+ end
26
+
27
+ def create_version
28
+ template('templates/opsk.yml', "#{path}/opsk.yml")
29
+ end
30
+
31
+ def create_rvmrc
32
+ template('templates/rvmrc.erb', "#{path}/.rvmrc")
33
+ end
34
+
35
+ def create_puppet_base
36
+ empty_directory("#{path}/static-modules/")
37
+ empty_directory("#{path}/manifests/")
38
+ template('templates/puppetfile.erb', "#{path}/Puppetfile")
39
+ template('templates/default.erb', "#{path}/manifests/default.pp")
40
+ copy_file('templates/run.sh', "#{path}/run.sh")
41
+ chmod("#{path}/run.sh", 0755)
42
+ end
43
+
44
+ def create_heira
45
+ hieradata = "#{path}/hieradata/"
46
+ empty_directory(hieradata)
47
+ %w(common virtualbox physical).each do |env|
48
+ copy_file('templates/clean.yaml', "#{hieradata}/#{env}.yaml")
49
+ end
50
+
51
+ copy_file('templates/hiera.yaml', "#{path}/hiera.yaml")
52
+ end
53
+
54
+ def readme
55
+ template('templates/README.erb', "#{path}/README.md")
56
+ copy_file('templates/LICENSE-2.0.txt',"#{path}/LICENSE-2.0.txt")
57
+ end
58
+
59
+ def git
60
+ copy_file('templates/gitignore', "#{path}/.gitignore")
61
+ inside(path) do
62
+ run('git init .')
63
+ run('git add -A')
64
+ run("git commit -m 'initial sandbox import'")
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,46 @@
1
+ module Opsk
2
+ class Package < Thor::Group
3
+ include Thorable, Thor::Actions
4
+
5
+ def meta
6
+ OpenStruct.new(YAML.load_file('opsk.yml'))
7
+ end
8
+
9
+ def name
10
+ File.basename(Dir.getwd)
11
+ end
12
+
13
+ def artifact
14
+ "#{name}-#{meta.version}"
15
+ end
16
+
17
+ def create_build
18
+ empty_directory(artifact)
19
+ path = File.basename(Dir.getwd)
20
+ directory path , artifact
21
+ end
22
+
23
+ def create_pkg
24
+ empty_directory('pkg')
25
+ end
26
+
27
+ def create_scripts
28
+ empty_directory('scripts')
29
+ %w(lookup.sh run.sh).each do |s|
30
+ template("templates/scripts/#{s}", "scripts/#{s}")
31
+ chmod("scripts/#{s}", 0755)
32
+ end
33
+
34
+ end
35
+
36
+ def package
37
+ ignored = IO.readlines('.gitignore').map(&:chomp)
38
+ ignored.delete('modules')
39
+ excludes = ignored.map{|f| "'#{f}'"}.join(" --exclude=") << ' --exclude-backups --exclude-vcs --exclude=pkg'
40
+ run("tar --exclude=#{excludes} -czf pkg/#{artifact}.tar.gz #{artifact} > /dev/null", :verbose => false)
41
+ end
42
+
43
+ end
44
+
45
+ end
46
+
@@ -0,0 +1,14 @@
1
+ module Opsk
2
+ module Thorable
3
+ def self.included klass
4
+ def klass.source_root
5
+ # during dev time
6
+ if(File.dirname(__FILE__) == './bin')
7
+ File.dirname('.')
8
+ else
9
+ "#{File.dirname(__FILE__)}/../../"
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -1,3 +1,3 @@
1
1
  module Opskeleton
2
- VERSION = "0.0.5"
2
+ VERSION = "0.1.0"
3
3
  end
data/lib/opskeleton.rb CHANGED
@@ -1,5 +1,9 @@
1
- require "opskeleton/version"
1
+ require 'opskeleton/version'
2
+ require 'thor'
3
+ require 'thor/group'
4
+ require 'yaml'
5
+ require 'ostruct'
6
+ require 'opskeleton/thorable'
7
+ require 'opskeleton/package'
8
+ require 'opskeleton/generate'
2
9
 
3
- module Opskeleton
4
- # Your code goes here...
5
- end
@@ -0,0 +1,3 @@
1
+ ---
2
+ version: '0.0.1'
3
+ name: <%= name %>
@@ -1 +1,4 @@
1
- wget -q -O - "http://$1:8080/registry/profile/$2"
1
+ #!/bin/sh
2
+
3
+ export ip=`echo $SSH_CONNECTION | cut -d ' ' -f 1`
4
+ wget -q -O - "http://$ip:8080/registry/profile/$1"
@@ -0,0 +1,22 @@
1
+ $LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
2
+
3
+ require 'minitest/autorun'
4
+ require_relative 'test_helper'
5
+ require 'fileutils'
6
+
7
+ class GenerateTest< MiniTest::Unit::TestCase
8
+ include FileUtils
9
+
10
+ def setup
11
+ Opsk::Root.start ['generate', 'foo', 'bar']
12
+ end
13
+
14
+ def teardown
15
+ rm_rf 'foo-sandbox'
16
+ end
17
+
18
+ def test_version
19
+ assert File.exists?('foo-sandbox/opsk.yml')
20
+ end
21
+
22
+ end
@@ -0,0 +1,30 @@
1
+ $LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
2
+
3
+ require 'minitest/autorun'
4
+ require_relative 'test_helper'
5
+ require 'fileutils'
6
+
7
+ class PackageTest < MiniTest::Unit::TestCase
8
+ include FileUtils
9
+
10
+ def setup
11
+ Opsk::Root.start ['generate', 'foo', 'bar']
12
+ end
13
+
14
+
15
+ def with_cwd dir
16
+ Dir.chdir dir do
17
+ yield
18
+ end
19
+ end
20
+
21
+ def test_build
22
+ with_cwd 'foo-sandbox' do
23
+ Opsk::Root.start ['package']
24
+ end
25
+ assert File.exists?('foo-sandbox/foo-sandbox-0.0.1/Puppetfile')
26
+
27
+ assert File.exists?('foo-sandbox/pkg/foo-sandbox-0.0.1.tar.gz')
28
+ end
29
+
30
+ end
@@ -0,0 +1,14 @@
1
+ require 'rubygems'
2
+ require 'thor'
3
+ require 'thor/group'
4
+ require 'opskeleton'
5
+
6
+
7
+ module Opsk
8
+ class Root < Thor
9
+ register Opsk::Generate, 'generate', 'generate [name] [box]', 'generates opskelaton project structure'
10
+ register Opsk::Package, 'package', 'package', 'packages current module for celestial'
11
+
12
+ end
13
+ end
14
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opskeleton
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -44,6 +44,9 @@ files:
44
44
  - TODOS
45
45
  - bin/opsk
46
46
  - lib/opskeleton.rb
47
+ - lib/opskeleton/generate.rb
48
+ - lib/opskeleton/package.rb
49
+ - lib/opskeleton/thorable.rb
47
50
  - lib/opskeleton/version.rb
48
51
  - opskeleton.gemspec
49
52
  - templates/LICENSE-2.0.txt
@@ -54,6 +57,7 @@ files:
54
57
  - templates/gemfile
55
58
  - templates/gitignore
56
59
  - templates/hiera.yaml
60
+ - templates/opsk.yml
57
61
  - templates/puppetfile.erb
58
62
  - templates/run.sh
59
63
  - templates/rvmrc.erb
@@ -61,6 +65,9 @@ files:
61
65
  - templates/scripts/run.sh
62
66
  - templates/spec.erb
63
67
  - templates/vagrant.erb
68
+ - test/generate_test.rb
69
+ - test/package_test.rb
70
+ - test/test_helper.rb
64
71
  homepage: https://github.com/narkisr/opskeleton
65
72
  licenses: []
66
73
  post_install_message:
@@ -85,4 +92,7 @@ rubygems_version: 1.8.24
85
92
  signing_key:
86
93
  specification_version: 3
87
94
  summary: A generator for ops projects that include vagrant puppet and fpm
88
- test_files: []
95
+ test_files:
96
+ - test/generate_test.rb
97
+ - test/package_test.rb
98
+ - test/test_helper.rb