packager-dsl 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -1,37 +1,39 @@
1
- require 'rake/clean'
2
- require 'bundler/gem_tasks'
3
- require 'rubygems/tasks'
4
- require 'rspec/core/rake_task'
5
-
6
- # This is used by the Yardoc stuff in docile's Rakefile. We're not there yet.
7
- require File.expand_path('on_what', File.dirname(__FILE__))
8
-
9
- # Default task for `rake` is to run rspec
10
- task :default => [:spec]
11
-
12
- # Use default rspec rake task
13
- RSpec::Core::RakeTask.new
14
-
15
- task :unitspec do
16
- sh('rspec', *Dir.glob('spec/{cli,dsl,executor,struct}'))
17
- end
18
-
19
- # Configure `rake clobber` to delete all generated files
20
- CLOBBER.include('pkg', 'doc', 'coverage', '*.gem')
21
-
22
- # Add the gem tasks:
23
- # :build, :console, :install, :release
24
- Gem::Tasks.new
25
-
26
- if !on_travis? && !on_jruby? && !on_1_8?
27
- require 'github/markup'
28
- require 'redcarpet'
29
- require 'yard'
30
- require 'yard/rake/yardoc_task'
31
-
32
- YARD::Rake::YardocTask.new do |t|
33
- OTHER_PATHS = %w()
34
- t.files = ['lib/**/*.rb', OTHER_PATHS]
35
- t.options = %w(--markup-provider=redcarpet --markup=markdown --main=README.md)
36
- end
37
- end
1
+ require 'rake/clean'
2
+ require 'bundler/gem_tasks'
3
+ require 'rubygems/tasks'
4
+ require 'rspec/core/rake_task'
5
+
6
+ # This is used by the Yardoc stuff in docile's Rakefile. We're not there yet.
7
+ require File.expand_path('on_what', File.dirname(__FILE__))
8
+
9
+ # Default task for `rake` is to run rspec
10
+ task :default => [:spec]
11
+
12
+ # Use default rspec rake task
13
+ RSpec::Core::RakeTask.new do |t|
14
+ t.verbose = false
15
+ end
16
+
17
+ task :unitspec do
18
+ sh('rspec', *Dir.glob('spec/{cli,dsl,executor,struct}'))
19
+ end
20
+
21
+ # Configure `rake clobber` to delete all generated files
22
+ CLOBBER.include('pkg', 'doc', 'coverage', '*.gem')
23
+
24
+ # Add the gem tasks:
25
+ # :build, :console, :install, :release
26
+ Gem::Tasks.new
27
+
28
+ if !on_travis? && !on_jruby? && !on_1_8?
29
+ require 'github/markup'
30
+ require 'redcarpet'
31
+ require 'yard'
32
+ require 'yard/rake/yardoc_task'
33
+
34
+ YARD::Rake::YardocTask.new do |t|
35
+ OTHER_PATHS = %w()
36
+ t.files = ['lib/**/*.rb', OTHER_PATHS]
37
+ t.options = %w(--markup-provider=redcarpet --markup=markdown --main=README.md)
38
+ end
39
+ end
data/bin/packager CHANGED
@@ -1,8 +1,8 @@
1
- #!/usr/bin/env ruby
2
-
3
- $:.unshift File.expand_path('../../lib', __FILE__)
4
-
5
- require 'rubygems' unless defined? Gem
6
- require 'packager/cli'
7
-
8
- Packager::CLI.start
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift File.expand_path('../../lib', __FILE__)
4
+
5
+ require 'rubygems' unless defined? Gem
6
+ require 'packager/cli'
7
+
8
+ Packager::CLI.start
data/lib/packager.rb CHANGED
@@ -1,5 +1,5 @@
1
- require 'packager/version'
2
-
3
- require 'packager/cli'
4
- require 'packager/dsl'
5
- require 'packager/executor'
1
+ require 'packager/version'
2
+
3
+ require 'packager/cli'
4
+ require 'packager/dsl'
5
+ require 'packager/executor'
data/lib/packager/cli.rb CHANGED
@@ -1,72 +1,72 @@
1
- require 'thor'
2
-
3
- require 'packager'
4
-
5
- class Packager::CLI < Thor
6
- # Make sure to exit(1) on failure. This isn't covered in the specs.
7
- # :nocov:
8
- def self.exit_on_failure?
9
- true
10
- end
11
- # :nocov:
12
-
13
- # Taken from http://stackoverflow.com/a/27804972/1732954
14
- map %w[--version] => :__print_version
15
- desc "--version", "Print the version"
16
- def __print_version
17
- puts Packager::VERSION
18
- end
19
-
20
- desc :execute, "Execute one or more package DSL definition(s)"
21
- default_task :execute
22
- def execute(*args)
23
- if args.empty?
24
- raise Thor::Error, "No filenames provided for execute"
25
- end
26
-
27
- args.each do |filename|
28
- unless File.exists? filename
29
- raise Thor::Error, "'#{filename}' cannot be found"
30
- end
31
-
32
- begin
33
- items = Packager::DSL.parse_dsl(IO.read(filename))
34
- rescue Exception => e
35
- raise Thor::Error, "'#{filename}' has the following errors:\n#{e}"
36
- end
37
-
38
- if items.empty?
39
- raise Thor::Error, "'#{filename}' produces nothing"
40
- end
41
-
42
- packages = Packager::Executor.new.execute_on(items)
43
-
44
- puts "'#{filename}' executed #{packages.join(', ')}"
45
- end
46
- end
47
-
48
- desc :validate, "Validate one or more package DSL definition(s)"
49
- def validate(*args)
50
- if args.empty?
51
- raise Thor::Error, "No filenames provided for validate"
52
- end
53
-
54
- args.each do |filename|
55
- unless File.exists? filename
56
- raise Thor::Error, "'#{filename}' cannot be found"
57
- end
58
-
59
- begin
60
- items = Packager::DSL.parse_dsl(IO.read(filename))
61
- rescue Exception => e
62
- raise Thor::Error, "'#{filename}' has the following errors:\n#{e}"
63
- end
64
-
65
- if items.empty?
66
- raise Thor::Error, "'#{filename}' produces nothing"
67
- end
68
-
69
- puts "'#{filename}' parses cleanly"
70
- end
71
- end
72
- end
1
+ require 'thor'
2
+
3
+ require 'packager'
4
+
5
+ class Packager::CLI < Thor
6
+ # Make sure to exit(1) on failure. This isn't covered in the specs.
7
+ # :nocov:
8
+ def self.exit_on_failure?
9
+ true
10
+ end
11
+ # :nocov:
12
+
13
+ # Taken from http://stackoverflow.com/a/27804972/1732954
14
+ map %w[--version] => :__print_version
15
+ desc "--version", "Print the version"
16
+ def __print_version
17
+ puts Packager::VERSION
18
+ end
19
+
20
+ desc :execute, "Execute one or more package DSL definition(s)"
21
+ default_task :execute
22
+ def execute(*args)
23
+ if args.empty?
24
+ raise Thor::Error, "No filenames provided for execute"
25
+ end
26
+
27
+ args.each do |filename|
28
+ unless File.exists? filename
29
+ raise Thor::Error, "'#{filename}' cannot be found"
30
+ end
31
+
32
+ begin
33
+ items = Packager::DSL.parse_dsl(IO.read(filename))
34
+ rescue Exception => e
35
+ raise Thor::Error, "'#{filename}' has the following errors:\n#{e}"
36
+ end
37
+
38
+ if items.empty?
39
+ raise Thor::Error, "'#{filename}' produces nothing"
40
+ end
41
+
42
+ packages = Packager::Executor.new.execute_on(items)
43
+
44
+ puts "'#{filename}' executed #{packages.join(', ')}"
45
+ end
46
+ end
47
+
48
+ desc :validate, "Validate one or more package DSL definition(s)"
49
+ def validate(*args)
50
+ if args.empty?
51
+ raise Thor::Error, "No filenames provided for validate"
52
+ end
53
+
54
+ args.each do |filename|
55
+ unless File.exists? filename
56
+ raise Thor::Error, "'#{filename}' cannot be found"
57
+ end
58
+
59
+ begin
60
+ items = Packager::DSL.parse_dsl(IO.read(filename))
61
+ rescue Exception => e
62
+ raise Thor::Error, "'#{filename}' has the following errors:\n#{e}"
63
+ end
64
+
65
+ if items.empty?
66
+ raise Thor::Error, "'#{filename}' produces nothing"
67
+ end
68
+
69
+ puts "'#{filename}' parses cleanly"
70
+ end
71
+ end
72
+ end
data/lib/packager/dsl.rb CHANGED
@@ -1,55 +1,55 @@
1
- require 'packager/version'
2
- require 'packager/struct'
3
-
4
- require 'dsl/maker'
5
-
6
- class Packager::DSL < DSL::Maker
7
- class << self
8
- attr_writer :default_type
9
- def default_type(*args)
10
- @default_type = args[0] unless args.empty?
11
- @default_type
12
- end
13
- end
14
-
15
- add_type(VersionString = {}) do |attr, *args|
16
- unless args.empty?
17
- begin
18
- ___set(attr, Gem::Version.new(args[0]).to_s)
19
- rescue ArgumentError
20
- raise "'#{args[0]}' is not a legal version string"
21
- end
22
- end
23
- ___get(attr)
24
- end
25
-
26
- copy_file_dsl = generate_dsl({
27
- :source => String,
28
- :dest => String,
29
- }) do
30
- Packager::Struct::File.new(source, dest)
31
- end
32
-
33
- add_entrypoint(:package, {
34
- :name => String,
35
- :version => VersionString,
36
- :type => Any,
37
- :files => ArrayOf[copy_file_dsl],
38
- :file => AliasOf(:files),
39
- :requires => ArrayOf[String],
40
- :provides => ArrayOf[String],
41
- }) do |*args|
42
- type(Packager::DSL.default_type) unless type
43
- default(:name, args, 0)
44
-
45
- Packager::Struct::Package.new(
46
- name, version, type, files, requires, provides,
47
- )
48
- end
49
- add_verification(:package) do |item|
50
- return 'Every package must have a name' unless item.name
51
- return 'Every package must have a version' unless item.version
52
- return 'Every package must have a type' unless item.type
53
- return
54
- end
55
- end
1
+ require 'packager/version'
2
+ require 'packager/struct'
3
+
4
+ require 'dsl/maker'
5
+
6
+ class Packager::DSL < DSL::Maker
7
+ class << self
8
+ attr_writer :default_type
9
+ def default_type(*args)
10
+ @default_type = args[0] unless args.empty?
11
+ @default_type
12
+ end
13
+ end
14
+
15
+ add_type(VersionString = {}) do |attr, *args|
16
+ unless args.empty?
17
+ begin
18
+ ___set(attr, Gem::Version.new(args[0]).to_s)
19
+ rescue ArgumentError
20
+ raise "'#{args[0]}' is not a legal version string"
21
+ end
22
+ end
23
+ ___get(attr)
24
+ end
25
+
26
+ copy_file_dsl = generate_dsl({
27
+ :source => String,
28
+ :dest => String,
29
+ }) do
30
+ Packager::Struct::File.new(source, dest)
31
+ end
32
+
33
+ add_entrypoint(:package, {
34
+ :name => String,
35
+ :version => VersionString,
36
+ :type => Any,
37
+ :files => ArrayOf[copy_file_dsl],
38
+ :file => AliasOf(:files),
39
+ :requires => ArrayOf[String],
40
+ :provides => ArrayOf[String],
41
+ }) do |*args|
42
+ type(Packager::DSL.default_type) unless type
43
+ default(:name, args, 0)
44
+
45
+ Packager::Struct::Package.new(
46
+ name, version, type, files, requires, provides,
47
+ )
48
+ end
49
+ add_verification(:package) do |item|
50
+ return 'Every package must have a name' unless item.name
51
+ return 'Every package must have a version' unless item.version
52
+ return 'Every package must have a type' unless item.type
53
+ return
54
+ end
55
+ end
@@ -1,63 +1,63 @@
1
- require 'packager/version'
2
-
3
- require 'tmpdir'
4
-
5
- class Packager
6
- class Executor
7
- attr_accessor :commands, :dryrun
8
-
9
- def initialize(opts={})
10
- self.dryrun = !!opts[:dryrun]
11
- self.commands = []
12
- end
13
-
14
- def execute_on(items)
15
- curdir = Dir.pwd
16
- items.collect do |item|
17
- Dir.mktmpdir do |tempdir|
18
- Dir.chdir(tempdir) do
19
- path = create_package_for(item)
20
- FileUtils.mv(path, curdir) if path
21
- end
22
- end
23
- end
24
- end
25
-
26
- def create_package_for(item)
27
- unless item.files.empty?
28
- item.files.each do |file|
29
- dest = (file.dest || '').gsub /^\//, ''
30
- FileUtils.mkdir_p File.dirname(dest)
31
- FileUtils.cp_r(file.source, dest)
32
- end
33
- end
34
-
35
- cmd = Packager::Struct::Command.new(
36
- :name => item.name,
37
- :version => item.version,
38
- :target => item.type,
39
- :requires => item.requires,
40
- :provides => item.provides,
41
- )
42
-
43
- Dir.glob('*') do |entry|
44
- if File.directory?(entry)
45
- cmd.add_directory(entry)
46
- end
47
- end
48
-
49
- commands.push(cmd)
50
-
51
- execute_command(cmd)
52
- end
53
-
54
- def execute_command(cmd)
55
- return if dryrun
56
-
57
- x = `#{cmd.to_system.join(' ')}`
58
- rv = eval(x)
59
- raise rv[:error] if rv[:error]
60
- return rv[:path]
61
- end
62
- end
63
- end
1
+ require 'packager/version'
2
+
3
+ require 'tmpdir'
4
+
5
+ class Packager
6
+ class Executor
7
+ attr_accessor :commands, :dryrun
8
+
9
+ def initialize(opts={})
10
+ self.dryrun = !!opts[:dryrun]
11
+ self.commands = []
12
+ end
13
+
14
+ def execute_on(items)
15
+ curdir = Dir.pwd
16
+ items.collect do |item|
17
+ Dir.mktmpdir do |tempdir|
18
+ Dir.chdir(tempdir) do
19
+ path = create_package_for(item)
20
+ FileUtils.mv(path, curdir) if path
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ def create_package_for(item)
27
+ unless item.files.empty?
28
+ item.files.each do |file|
29
+ dest = (file.dest || '').gsub /^\//, ''
30
+ FileUtils.mkdir_p File.dirname(dest)
31
+ FileUtils.cp_r(file.source, dest)
32
+ end
33
+ end
34
+
35
+ cmd = Packager::Struct::Command.new(
36
+ :name => item.name,
37
+ :version => item.version,
38
+ :target => item.type,
39
+ :requires => item.requires,
40
+ :provides => item.provides,
41
+ )
42
+
43
+ Dir.glob('*') do |entry|
44
+ if File.directory?(entry)
45
+ cmd.add_directory(entry)
46
+ end
47
+ end
48
+
49
+ commands.push(cmd)
50
+
51
+ execute_command(cmd)
52
+ end
53
+
54
+ def execute_command(cmd)
55
+ return if dryrun
56
+
57
+ x = `#{cmd.to_system.join(' ')}`
58
+ rv = eval(x)
59
+ raise rv[:error] if rv[:error]
60
+ return rv[:path]
61
+ end
62
+ end
63
+ end