packager-dsl 0.0.1 → 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.
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