jammer 0.0.1 → 0.8.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/README.md +100 -0
- data/bin/jammer +149 -0
- data/features/jammer.feature +37 -0
- data/features/step_definitions/jammer_steps.rb +0 -0
- data/features/support/env.rb +17 -0
- data/lib/jammer.rb +37 -0
- data/lib/jammer/package_creator.rb +100 -0
- data/lib/jammer/package_info.rb +26 -0
- data/lib/jammer/package_installer.rb +26 -0
- data/lib/jammer/package_manager.rb +6 -0
- data/lib/jammer/package_publisher.rb +20 -0
- data/lib/jammer/templates/README.md.erb +3 -0
- data/lib/jammer/templates/package.json.erb +37 -0
- data/lib/jammer/templates/src/main.coffee.erb +1 -0
- data/lib/jammer/user.rb +15 -0
- data/lib/jammer/version.rb +1 -1
- data/spec/spec_helper.rb +12 -0
- metadata +38 -34
data/README.md
CHANGED
@@ -0,0 +1,100 @@
|
|
1
|
+
Jammer
|
2
|
+
======
|
3
|
+
|
4
|
+
Jammer provides a Ruby-based executable for managing Jam packages, 'cause let's be honest: JS is nice, but JS wrapped up with some Ruby is at least twice as nice. Jammer provides the ability to easily create, update, and publish Jam packages with a convenient command line interface. Jammer expects you to manage your source code using Git, so if you aren't, fork away and add other scm support.
|
5
|
+
|
6
|
+
Dependencies
|
7
|
+
------------
|
8
|
+
|
9
|
+
* Ruby 1.9+ - http://ruby-lang.org
|
10
|
+
* Jam - http://jamjs.org
|
11
|
+
* Git - http://git-scm.com
|
12
|
+
|
13
|
+
Installation
|
14
|
+
------------
|
15
|
+
|
16
|
+
0. Install Jam. NPM is recommended. `npm install -g jamjs` will install it globally if you have NPM.
|
17
|
+
|
18
|
+
1. `gem install jammer` *You may need to preface this commmand with `sudo` depending on your Ruby installation*
|
19
|
+
|
20
|
+
|
21
|
+
Usage
|
22
|
+
-----
|
23
|
+
|
24
|
+
### Creating a New Package
|
25
|
+
|
26
|
+
To create a new jam package:
|
27
|
+
|
28
|
+
jammer new [package_name]
|
29
|
+
|
30
|
+
This will prompt you for some basic information about the package (which you can always change later) and then create a new directory with the given name. Inside that directory will be the necessary structure for a basic jam package. The most important file created by this command is the `package.json` file.
|
31
|
+
|
32
|
+
Running `jammer new test-lib` and providing responses for the following prompts:
|
33
|
+
|
34
|
+
Package description ('The test-lib package'): This is a description for the test-lib.
|
35
|
+
Package homepage (''): http://github.com/crymer11/test-lib
|
36
|
+
|
37
|
+
would result in a `package.json` file that looks like this:
|
38
|
+
|
39
|
+
{
|
40
|
+
"name": "test-lib",
|
41
|
+
"version": "0.0.1",
|
42
|
+
"description": "This is a description for the test-lib.",
|
43
|
+
"homepage": "http://github.com/crymer11/test-lib",
|
44
|
+
"jam": {
|
45
|
+
"dependencies": {
|
46
|
+
},
|
47
|
+
"main": "test-lib.js",
|
48
|
+
"include": [
|
49
|
+
"test-lib.js",
|
50
|
+
"README"
|
51
|
+
]
|
52
|
+
},
|
53
|
+
"maintainers": [
|
54
|
+
{
|
55
|
+
"name": "Colin Rymer",
|
56
|
+
"email": "colin.rymer@gmail.com"
|
57
|
+
}
|
58
|
+
],
|
59
|
+
"contributors": [
|
60
|
+
{
|
61
|
+
"name": "Colin Rymer",
|
62
|
+
"email": "colin.rymer@gmail.com"
|
63
|
+
}
|
64
|
+
],
|
65
|
+
"repositories": [
|
66
|
+
{
|
67
|
+
"type": "git",
|
68
|
+
"url": "http://github.com/crymer11/test-lib.git"
|
69
|
+
}
|
70
|
+
],
|
71
|
+
"github": "http://github.com/crymer11/test-lib"
|
72
|
+
}
|
73
|
+
|
74
|
+
Note that the github attribute was set based on the detection of a github package homepage. If the homepage is not a github url, then the repositories attribute will be left empty and the github attribute will not be added.
|
75
|
+
|
76
|
+
### Publishing a Package
|
77
|
+
|
78
|
+
To publish the package, run `jammer publish`. This command will exit with an error message if not on the master branch of a repository. If it is on the master branch, it will create a tag for the version number and publish the code to the repository specified in your `.jamrc` file.
|
79
|
+
|
80
|
+
If the `jammer publish` command is run and the version number has not been updated, either manually or with `jammer bump major`, `jammer bump minor`, or `jammer bump patch`, then the command will exit with an error message specifying the version issue.
|
81
|
+
|
82
|
+
### Updating a Package
|
83
|
+
|
84
|
+
Contributing
|
85
|
+
------------
|
86
|
+
|
87
|
+
1. Fork it
|
88
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
89
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
90
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
91
|
+
5. Create new Pull Request
|
92
|
+
|
93
|
+
Authors
|
94
|
+
-------
|
95
|
+
|
96
|
+
* [Colin Rymer](http://github.com/crymer11)
|
97
|
+
|
98
|
+
Acknowledgement
|
99
|
+
---------------
|
100
|
+
Huge thanks [Primedia](http://primedia.com) for encouraging open source contributions.
|
data/bin/jammer
ADDED
@@ -0,0 +1,149 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'optparse'
|
4
|
+
require 'methadone'
|
5
|
+
require 'jammer'
|
6
|
+
require 'ostruct'
|
7
|
+
require 'json'
|
8
|
+
|
9
|
+
class App
|
10
|
+
include Methadone::Main
|
11
|
+
include Methadone::CLILogging
|
12
|
+
|
13
|
+
main do |command, arg|
|
14
|
+
if command
|
15
|
+
process_command command, arg
|
16
|
+
else
|
17
|
+
install_jamfile
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
class << self
|
22
|
+
VERSION_LEVELS = ['major', 'minor', 'patch']
|
23
|
+
|
24
|
+
def process_command(command, arg)
|
25
|
+
case command.downcase
|
26
|
+
when "new"
|
27
|
+
create_package arg
|
28
|
+
when "install"
|
29
|
+
install_jamfile
|
30
|
+
when "publish"
|
31
|
+
location = arg ? arg : '.'
|
32
|
+
publish_package location
|
33
|
+
when "bump"
|
34
|
+
bump_package arg
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def create_package(name)
|
39
|
+
if name && valid_name(name)
|
40
|
+
Jammer.create_package package_info(name)
|
41
|
+
else
|
42
|
+
exit_now! 64, "Whoops! A package name must be provided for the 'new' command."
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def publish_package(package_location)
|
47
|
+
begin
|
48
|
+
if publishable_package(package_location)
|
49
|
+
repository = options[:repository] if options[:repository]
|
50
|
+
package_json_file = File.join package_location, 'package.json'
|
51
|
+
package_info = Jammer::PackageInfo.fromJSON(File.read(package_json_file))
|
52
|
+
Jammer.publish_package package_location, package_info, repository
|
53
|
+
end
|
54
|
+
rescue StandardError => e
|
55
|
+
exit_now! 1, e.message
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def bump_package(version_level)
|
60
|
+
if VERSION_LEVELS.include? version_level
|
61
|
+
Jammer.bump_package version_level
|
62
|
+
else
|
63
|
+
exit_now! 1, "A valid version level (#{version_levels.join('|')}) must be provided."
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def install_jamfile
|
68
|
+
Jammer.install_packages
|
69
|
+
end
|
70
|
+
|
71
|
+
def valid_name(name)
|
72
|
+
force || check_directory(name)
|
73
|
+
end
|
74
|
+
|
75
|
+
def force
|
76
|
+
options[:force]
|
77
|
+
end
|
78
|
+
|
79
|
+
def package_info(name, info = Jammer::PackageInfo, url = '')
|
80
|
+
info.new(name, package_description("The #{name} package."), package_url(url))
|
81
|
+
end
|
82
|
+
|
83
|
+
def package_description(default)
|
84
|
+
user_response "Package description", default
|
85
|
+
end
|
86
|
+
|
87
|
+
def package_url(default)
|
88
|
+
user_response "Package homepage", default
|
89
|
+
end
|
90
|
+
|
91
|
+
def user_response(query, default)
|
92
|
+
print "#{query} ('#{default}'):"
|
93
|
+
response = STDIN.gets.chomp
|
94
|
+
response.empty? ? default : response
|
95
|
+
end
|
96
|
+
|
97
|
+
def check_directory(name)
|
98
|
+
if file_exists(name)
|
99
|
+
exit_now! 1, "A directory named '#{name}' already exists. Use '--force' to overwrite the existing directory."
|
100
|
+
else
|
101
|
+
true
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def file_exists(name)
|
106
|
+
File.exists? name
|
107
|
+
end
|
108
|
+
|
109
|
+
def publishable_package(package_location)
|
110
|
+
Dir.chdir(package_location) do
|
111
|
+
raise(StandardError, 'You must be in a package directory to publish a package.') unless file_exists 'package.json'
|
112
|
+
|
113
|
+
package = JSON.parse(File.read('package.json'))
|
114
|
+
|
115
|
+
package['jam']['include'].each do |included|
|
116
|
+
raise(StandardError, "#{included} was listed to be included but could not be found") unless file_or_source_exists(included)
|
117
|
+
end
|
118
|
+
|
119
|
+
git = File.exists?(File.join(package_location, '.git'))
|
120
|
+
raise(StandardError, "Package must be a git repository to publish") unless git
|
121
|
+
|
122
|
+
branch = `git rev-parse --abbrev-ref HEAD`
|
123
|
+
raise(StandardError, "You must be on the master branch for the package you want to publish.") unless branch == "master"
|
124
|
+
|
125
|
+
tag = "#{package['name']}-v#{package['version']}"
|
126
|
+
raise(StandardError, "#{package['version']} has already been tagged. Please increment the version number.") if `git tag`.match tag
|
127
|
+
|
128
|
+
return true
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
def file_or_source_exists(name)
|
133
|
+
file_exists name.match('js') ? "./src/#{name.sub('js', '')}coffee" : name
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
on "-f", "--force", "Force package creation on specified directory."
|
138
|
+
on "-r", "--repository", "Use specified repository for publishing"
|
139
|
+
|
140
|
+
arg :command, :optional
|
141
|
+
arg :arg, :optional
|
142
|
+
|
143
|
+
version Jammer::VERSION
|
144
|
+
description "Jam Package Creator"
|
145
|
+
|
146
|
+
use_log_level_option
|
147
|
+
|
148
|
+
go!
|
149
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
Feature: My bootstrapped app kinda works
|
2
|
+
In order to get going on coding my awesome app
|
3
|
+
I want to have aruba and cucumber setup
|
4
|
+
So I don't have to do it myself
|
5
|
+
|
6
|
+
Scenario: App just runs
|
7
|
+
When I get help for "jammer"
|
8
|
+
Then the exit status should be 0
|
9
|
+
And the banner should be present
|
10
|
+
And the banner should document that this app takes options
|
11
|
+
And the following options should be documented:
|
12
|
+
|--version|
|
13
|
+
|
14
|
+
Scenario: App creates new Jam packages
|
15
|
+
When I run `jammer new test` interactively
|
16
|
+
And I type "test description"
|
17
|
+
And I type "test.url"
|
18
|
+
Then the exit status should be 0
|
19
|
+
And a directory named "test" should exist
|
20
|
+
And the following files should exist:
|
21
|
+
| test/package.json |
|
22
|
+
| test/test.js |
|
23
|
+
| test/README.md |
|
24
|
+
|
25
|
+
Scenario: App doesn't overwrite directories
|
26
|
+
Given a directory named "test"
|
27
|
+
When I run `jammer new test`
|
28
|
+
Then the exit status should be 1
|
29
|
+
|
30
|
+
Scenario: App overwrites directories when forced
|
31
|
+
Given a directory named "test"
|
32
|
+
When I run `jammer --force new test` interactively
|
33
|
+
And I type ""
|
34
|
+
And I type ""
|
35
|
+
Then a directory named "test" should exist
|
36
|
+
And the following files should exist:
|
37
|
+
| test/package.json |
|
File without changes
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'aruba/cucumber'
|
2
|
+
require 'methadone/cucumber'
|
3
|
+
|
4
|
+
ENV['PATH'] = "#{File.expand_path(File.dirname(__FILE__) + '/../../bin')}#{File::PATH_SEPARATOR}#{ENV['PATH']}"
|
5
|
+
LIB_DIR = File.join(File.expand_path(File.dirname(__FILE__)),'..','..','lib')
|
6
|
+
|
7
|
+
Before do
|
8
|
+
# Using "announce" causes massive warnings on 1.9.2
|
9
|
+
@puts = true
|
10
|
+
@original_rubylib = ENV['RUBYLIB']
|
11
|
+
ENV['RUBYLIB'] = LIB_DIR + File::PATH_SEPARATOR + ENV['RUBYLIB'].to_s
|
12
|
+
end
|
13
|
+
|
14
|
+
After do
|
15
|
+
ENV['RUBYLIB'] = @original_rubylib
|
16
|
+
end
|
17
|
+
|
data/lib/jammer.rb
CHANGED
@@ -1,5 +1,42 @@
|
|
1
1
|
require 'jammer/version'
|
2
|
+
require 'jammer/package_info'
|
3
|
+
require 'jammer/package_creator'
|
4
|
+
require 'jammer/package_installer'
|
5
|
+
require 'jammer/package_manager'
|
6
|
+
require 'jammer/package_publisher'
|
2
7
|
|
3
8
|
module Jammer
|
9
|
+
class << self
|
10
|
+
def create_package(package_info)
|
11
|
+
creator.create_package package_info
|
12
|
+
end
|
4
13
|
|
14
|
+
def bump_package(version_level)
|
15
|
+
puts "TODO: implement version bumping"
|
16
|
+
end
|
17
|
+
|
18
|
+
def publish_package(package_location, package_info, repository = nil)
|
19
|
+
publisher.publish_package package_location, package_info, repository
|
20
|
+
end
|
21
|
+
|
22
|
+
def install_packages
|
23
|
+
installer.install_packages
|
24
|
+
end
|
25
|
+
|
26
|
+
def creator(default = Jammer::PackageCreator.new)
|
27
|
+
@creator ||= default
|
28
|
+
end
|
29
|
+
|
30
|
+
def installer(default = Jammer::PackageInstaller.new)
|
31
|
+
@installer ||= default
|
32
|
+
end
|
33
|
+
|
34
|
+
def manager(default = Jammer::PackageManager.new)
|
35
|
+
@manager ||= default
|
36
|
+
end
|
37
|
+
|
38
|
+
def publisher(default = Jammer::PackagePublisher.new)
|
39
|
+
@publisher ||= default
|
40
|
+
end
|
41
|
+
end
|
5
42
|
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
require 'erb'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'jammer/user'
|
4
|
+
|
5
|
+
module Jammer
|
6
|
+
class PackageCreator
|
7
|
+
attr_reader :package
|
8
|
+
|
9
|
+
def initialize(file_utils = FileUtils, user = Jammer::User.new)
|
10
|
+
@file_utils = file_utils
|
11
|
+
@user = user
|
12
|
+
end
|
13
|
+
|
14
|
+
def create_package(package_info)
|
15
|
+
@package = package_info
|
16
|
+
prepare_directory
|
17
|
+
create_files
|
18
|
+
end
|
19
|
+
|
20
|
+
def prepare_directory
|
21
|
+
remove_dir(package.name) if File.exists? package.name
|
22
|
+
end
|
23
|
+
|
24
|
+
def remove_dir(name)
|
25
|
+
@file_utils.rm_rf name, verbose: false, secure: true
|
26
|
+
end
|
27
|
+
|
28
|
+
def create_files
|
29
|
+
create_directory base_destination_dir, base_template_dir
|
30
|
+
end
|
31
|
+
|
32
|
+
def create_directory(destination, template_dir)
|
33
|
+
make_dir destination
|
34
|
+
write_files destination, template_dir
|
35
|
+
end
|
36
|
+
|
37
|
+
def make_dir(name)
|
38
|
+
@file_utils.mkdir_p name
|
39
|
+
end
|
40
|
+
|
41
|
+
def write_files(destination, template_dir)
|
42
|
+
templates(template_dir).each do |template|
|
43
|
+
template_file = File.join(template_dir, template)
|
44
|
+
if File.directory?(template_file)
|
45
|
+
dir = file_path(destination, template)
|
46
|
+
create_directory(dir, template_file)
|
47
|
+
else
|
48
|
+
create_file destination, template_file
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def create_file(destination, template_file)
|
54
|
+
file_destination = file_path(destination, file_name(template_file))
|
55
|
+
template = ERB.new(File.read(template_file))
|
56
|
+
write_file(file_destination, render(template))
|
57
|
+
end
|
58
|
+
|
59
|
+
def render(template)
|
60
|
+
template.result(template_binding)
|
61
|
+
end
|
62
|
+
|
63
|
+
def template_binding
|
64
|
+
@binding ||= get_binding(@package, @user)
|
65
|
+
end
|
66
|
+
|
67
|
+
def get_binding(package, user)
|
68
|
+
Kernel.binding
|
69
|
+
end
|
70
|
+
|
71
|
+
def file_name(file)
|
72
|
+
File.basename file, '.erb' #strip ".erb" off template file name
|
73
|
+
end
|
74
|
+
|
75
|
+
def file_path(dir, file_name)
|
76
|
+
file_name.sub! 'main', package.name
|
77
|
+
File.join dir, file_name
|
78
|
+
end
|
79
|
+
|
80
|
+
def templates(dir)
|
81
|
+
Dir.entries(dir).delete_if(&dot_dir)
|
82
|
+
end
|
83
|
+
|
84
|
+
def base_template_dir
|
85
|
+
File.join(File.dirname(__FILE__), 'templates')
|
86
|
+
end
|
87
|
+
|
88
|
+
def base_destination_dir
|
89
|
+
File.join Dir.pwd, package.name
|
90
|
+
end
|
91
|
+
|
92
|
+
def dot_dir
|
93
|
+
->(dir) { dir == '.' || dir == '..' }
|
94
|
+
end
|
95
|
+
|
96
|
+
def write_file(file_destination, file_contents)
|
97
|
+
File.open(file_destination, 'w') { |file| file.write file_contents }
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Jammer
|
2
|
+
class PackageInfo
|
3
|
+
attr_reader :name, :description, :version, :url
|
4
|
+
|
5
|
+
def initialize(package_name, package_desc, package_url, package_version = nil)
|
6
|
+
@name, @description, @version, @url = package_name, package_desc, package_version, package_url
|
7
|
+
end
|
8
|
+
|
9
|
+
def repo_url
|
10
|
+
on_github? ? "#{url}.git" : ''
|
11
|
+
end
|
12
|
+
|
13
|
+
def repo_type
|
14
|
+
on_github? ? 'git' : ''
|
15
|
+
end
|
16
|
+
|
17
|
+
def on_github?
|
18
|
+
url.include? 'github.com'
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.fromJSON(json_string)
|
22
|
+
package = JSON.parse json_string
|
23
|
+
new(package['name'], package['description'], nil, package['version'])
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Jammer
|
2
|
+
class PackageInstaller
|
3
|
+
|
4
|
+
JAM_PACKAGE_REGEX = /jam\s[\'\"](\w+)[\'\"](?:,\s['"](.*)['"])?/
|
5
|
+
|
6
|
+
def install_packages
|
7
|
+
packages.each do |package|
|
8
|
+
puts "installing #{package}"
|
9
|
+
`jam install #{package.first}#{"@" + package.last if package.last}`
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def packages
|
14
|
+
@packages ||= get_packages
|
15
|
+
end
|
16
|
+
|
17
|
+
def get_packages
|
18
|
+
package_file.scan(JAM_PACKAGE_REGEX)
|
19
|
+
end
|
20
|
+
|
21
|
+
def package_file
|
22
|
+
@package_file ||= File.read('Jamfile')
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module Jammer
|
4
|
+
class PackagePublisher
|
5
|
+
|
6
|
+
def publish_package(package_location, package_info, repository = nil)
|
7
|
+
tag_name = "#{package_info.name}-v#{package_info.version}"
|
8
|
+
tag_message = "#{package_info.name} version #{package_info.version}"
|
9
|
+
repository_string = repository ? " --repository #{repository}" : ''
|
10
|
+
puts 'Compiling coffeescript...'
|
11
|
+
`coffee -c --output #{package_location} #{package_location}/src`
|
12
|
+
|
13
|
+
puts `jam publish --no-auth #{package_location}#{repository_string}`
|
14
|
+
puts "Creating tag: #{tag_name}"
|
15
|
+
`git tag -a #{tag_name} -m '#{tag_message}'`
|
16
|
+
puts `git push --tags`
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
{
|
2
|
+
"name": "<%= package.name %>",
|
3
|
+
"version": "0.0.1",
|
4
|
+
"description": "<%= package.description %>",
|
5
|
+
"homepage": "<%= package.url %>",
|
6
|
+
"jam": {
|
7
|
+
"dependencies": {
|
8
|
+
},
|
9
|
+
"main": "<%= package.name %>.js",
|
10
|
+
"include": [
|
11
|
+
"<%= package.name %>.js",
|
12
|
+
"README.md"
|
13
|
+
]
|
14
|
+
},
|
15
|
+
"maintainers": [
|
16
|
+
{
|
17
|
+
"name": "<%= user.name %>",
|
18
|
+
"email": "<%= user.email %>"
|
19
|
+
}
|
20
|
+
],
|
21
|
+
"contributors": [
|
22
|
+
{
|
23
|
+
"name": "<%= user.name %>",
|
24
|
+
"email": "<%= user.email %>"
|
25
|
+
}
|
26
|
+
],
|
27
|
+
"repositories": [
|
28
|
+
{
|
29
|
+
"type": "<%= package.repo_type %>",
|
30
|
+
"url": "<%= package.repo_url %>"
|
31
|
+
}
|
32
|
+
]
|
33
|
+
<% if package.on_github? %>
|
34
|
+
, <%# JSON needs the comma for additional key/value pairs %>
|
35
|
+
"github": "<%= package.repo_url %>"
|
36
|
+
<% end %>
|
37
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
define [], () ->
|
data/lib/jammer/user.rb
ADDED
data/lib/jammer/version.rb
CHANGED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'simplecov'
|
2
|
+
SimpleCov.start
|
3
|
+
|
4
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
5
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
6
|
+
require 'rspec'
|
7
|
+
require 'jammer'
|
8
|
+
|
9
|
+
# Requires supporting files with custom matchers and macros, etc,
|
10
|
+
# in ./support/ and its subdirectories.
|
11
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
12
|
+
|
metadata
CHANGED
@@ -2,46 +2,30 @@
|
|
2
2
|
name: jammer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0
|
5
|
+
version: 0.8.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Colin Rymer
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-02-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
version_requirements: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
none: false
|
21
|
-
name: rake
|
22
|
-
type: :development
|
23
|
-
prerelease: false
|
24
|
-
requirement: !ruby/object:Gem::Requirement
|
25
|
-
requirements:
|
26
|
-
- - ! '>='
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
version: '0'
|
29
|
-
none: false
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
|
-
version_requirements: !ruby/object:Gem::Requirement
|
32
|
-
requirements:
|
33
|
-
- - ! '>='
|
17
|
+
- - ~>
|
34
18
|
- !ruby/object:Gem::Version
|
35
|
-
version:
|
19
|
+
version: 1.2.4
|
36
20
|
none: false
|
37
|
-
name:
|
38
|
-
type: :
|
21
|
+
name: methadone
|
22
|
+
type: :runtime
|
39
23
|
prerelease: false
|
40
24
|
requirement: !ruby/object:Gem::Requirement
|
41
25
|
requirements:
|
42
|
-
- -
|
26
|
+
- - ~>
|
43
27
|
- !ruby/object:Gem::Version
|
44
|
-
version:
|
28
|
+
version: 1.2.4
|
45
29
|
none: false
|
46
30
|
- !ruby/object:Gem::Dependency
|
47
31
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -50,7 +34,7 @@ dependencies:
|
|
50
34
|
- !ruby/object:Gem::Version
|
51
35
|
version: '0'
|
52
36
|
none: false
|
53
|
-
name:
|
37
|
+
name: rdoc
|
54
38
|
type: :development
|
55
39
|
prerelease: false
|
56
40
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,7 +50,7 @@ dependencies:
|
|
66
50
|
- !ruby/object:Gem::Version
|
67
51
|
version: '0'
|
68
52
|
none: false
|
69
|
-
name:
|
53
|
+
name: rake
|
70
54
|
type: :development
|
71
55
|
prerelease: false
|
72
56
|
requirement: !ruby/object:Gem::Requirement
|
@@ -82,7 +66,7 @@ dependencies:
|
|
82
66
|
- !ruby/object:Gem::Version
|
83
67
|
version: '0'
|
84
68
|
none: false
|
85
|
-
name:
|
69
|
+
name: rspec
|
86
70
|
type: :development
|
87
71
|
prerelease: false
|
88
72
|
requirement: !ruby/object:Gem::Requirement
|
@@ -98,7 +82,7 @@ dependencies:
|
|
98
82
|
- !ruby/object:Gem::Version
|
99
83
|
version: '0'
|
100
84
|
none: false
|
101
|
-
name:
|
85
|
+
name: cucumber
|
102
86
|
type: :development
|
103
87
|
prerelease: false
|
104
88
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,7 +98,7 @@ dependencies:
|
|
114
98
|
- !ruby/object:Gem::Version
|
115
99
|
version: '0'
|
116
100
|
none: false
|
117
|
-
name:
|
101
|
+
name: aruba
|
118
102
|
type: :development
|
119
103
|
prerelease: false
|
120
104
|
requirement: !ruby/object:Gem::Requirement
|
@@ -130,7 +114,7 @@ dependencies:
|
|
130
114
|
- !ruby/object:Gem::Version
|
131
115
|
version: '0'
|
132
116
|
none: false
|
133
|
-
name:
|
117
|
+
name: simplecov
|
134
118
|
type: :development
|
135
119
|
prerelease: false
|
136
120
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,14 +126,29 @@ dependencies:
|
|
142
126
|
description: Create, publish, and maintain jam packages.
|
143
127
|
email:
|
144
128
|
- colin.rymer@gmail.com
|
145
|
-
executables:
|
129
|
+
executables:
|
130
|
+
- jammer
|
146
131
|
extensions: []
|
147
132
|
extra_rdoc_files: []
|
148
133
|
files:
|
134
|
+
- bin/jammer
|
135
|
+
- lib/jammer/package_creator.rb
|
136
|
+
- lib/jammer/package_info.rb
|
137
|
+
- lib/jammer/package_installer.rb
|
138
|
+
- lib/jammer/package_manager.rb
|
139
|
+
- lib/jammer/package_publisher.rb
|
140
|
+
- lib/jammer/templates/package.json.erb
|
141
|
+
- lib/jammer/templates/README.md.erb
|
142
|
+
- lib/jammer/templates/src/main.coffee.erb
|
143
|
+
- lib/jammer/user.rb
|
149
144
|
- lib/jammer/version.rb
|
150
145
|
- lib/jammer.rb
|
151
|
-
-
|
146
|
+
- features/jammer.feature
|
147
|
+
- features/step_definitions/jammer_steps.rb
|
148
|
+
- features/support/env.rb
|
149
|
+
- spec/spec_helper.rb
|
152
150
|
- LICENSE
|
151
|
+
- README.md
|
153
152
|
homepage: http://github.com/primedia/jammer
|
154
153
|
licenses:
|
155
154
|
- MIT
|
@@ -169,10 +168,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
169
168
|
- !ruby/object:Gem::Version
|
170
169
|
version: '0'
|
171
170
|
none: false
|
172
|
-
requirements:
|
171
|
+
requirements:
|
172
|
+
- Jam, the JS package manager available via NPM
|
173
173
|
rubyforge_project:
|
174
174
|
rubygems_version: 1.8.23
|
175
175
|
signing_key:
|
176
176
|
specification_version: 3
|
177
177
|
summary: Create, publish, and maintain jam packages.
|
178
|
-
test_files:
|
178
|
+
test_files:
|
179
|
+
- features/jammer.feature
|
180
|
+
- features/step_definitions/jammer_steps.rb
|
181
|
+
- features/support/env.rb
|
182
|
+
- spec/spec_helper.rb
|