json2env 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. data/README.markdown +15 -0
  2. data/Rakefile +24 -0
  3. data/VERSION +1 -0
  4. data/bin/json2env +43 -0
  5. data/lib/json2env.rb +37 -0
  6. metadata +84 -0
@@ -0,0 +1,15 @@
1
+ # json2env
2
+
3
+ This is a simple tool for converting JSON into an envdir. It will take a json file or read from stdin.
4
+
5
+ $ json2env -f env.json dir
6
+
7
+ or
8
+
9
+ $ cat env.json | json2env dir
10
+
11
+ Then you can execute a program with this env using the envdir tool.
12
+
13
+
14
+ $ envdir dir program
15
+
@@ -0,0 +1,24 @@
1
+ require 'jeweler'
2
+
3
+ Jeweler::Tasks.new do |s|
4
+ s.name = "json2env"
5
+ s.description = "convert json to an envdir"
6
+ s.summary = s.description
7
+ s.author = "Orion Henry"
8
+ s.email = "orion@heroku.com"
9
+ s.homepage = "http://github.com/orionz/json2env"
10
+ s.rubyforge_project = "json2env"
11
+ s.files = FileList["[A-Z]*", "{bin,default,lib,spec}/**/*"]
12
+ s.executables = %w(json2env)
13
+ s.add_dependency "json"
14
+ end
15
+
16
+ Jeweler::RubyforgeTasks.new
17
+
18
+ desc 'Run specs'
19
+ task :spec do
20
+ sh 'bacon -s spec/*_spec.rb'
21
+ end
22
+
23
+ task :default => :spec
24
+
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1
@@ -0,0 +1,43 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'optparse'
4
+ require File.dirname(__FILE__) + "/../lib/json2env"
5
+
6
+
7
+ options = { :io => STDIN }
8
+
9
+ ARGV.unshift "-h" if ARGV.size == 0
10
+
11
+ optparse = OptionParser.new do|opts|
12
+ opts.banner = <<banner
13
+ Usage: json2env [-f json.file] envdir
14
+ banner
15
+ opts.on( '-f', '--file FILE', 'Specify a json file, default is stdin' ) do |file|
16
+ if (File.exists?(file))
17
+ options[:io] = File.open(file, "r")
18
+ end
19
+ end
20
+ opts.on( '-h', '--help', 'Display this screen' ) do
21
+ puts opts
22
+ exit
23
+ end
24
+ end
25
+
26
+ optparse.parse!
27
+
28
+ envdir = ARGV.shift
29
+ json = options[:io].read
30
+
31
+ begin
32
+ JSON2Env.new(json,envdir).create;
33
+ rescue JSON::ParserError
34
+ puts "Invalid JSON format"
35
+ exit 1
36
+ rescue JSON2Env::TargetNotADirectory
37
+ puts "Cannot make envdir - file #{envdir} in the way"
38
+ exit 2
39
+ rescue JSON2Env::TargetHasSubdirs
40
+ puts "Cowardly refusing to delete the target dir - it has subdirs"
41
+ exit 3
42
+ end
43
+
@@ -0,0 +1,37 @@
1
+ require 'json'
2
+
3
+ class JSON2Env
4
+ attr_accessor :env, :dir
5
+
6
+ class TargetHasSubdirs < Exception ; end
7
+ class TargetNotADirectory < Exception ; end
8
+
9
+ def initialize(json, dir)
10
+ @env = JSON.load(json)
11
+ @dir = dir
12
+ end
13
+
14
+ def create
15
+ if File.exists?(dir)
16
+ raise TargetNotADirectory unless File.directory?(dir)
17
+ clean_dir
18
+ end
19
+ Dir.mkdir(dir)
20
+ @env.each do |key, value|
21
+ File.open("#{dir}/#{key}", "w") do |file|
22
+ file.write(value.gsub(/\r\n|\r|\n/, "\0"))
23
+ end
24
+ end
25
+ end
26
+
27
+ def clean_dir
28
+ raise TargetHasSubdirs if files.detect { |f| File.directory?(f) }
29
+ files.each { |f| File.delete(f) }
30
+ Dir.delete(@dir);
31
+ end
32
+
33
+ def files
34
+ Dir.glob("#{@dir}/*")
35
+ end
36
+ end
37
+
metadata ADDED
@@ -0,0 +1,84 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: json2env
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Orion Henry
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-10-06 00:00:00 -07:00
19
+ default_executable: json2env
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: json
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ description: convert json to an envdir
36
+ email: orion@heroku.com
37
+ executables:
38
+ - json2env
39
+ extensions: []
40
+
41
+ extra_rdoc_files:
42
+ - README.markdown
43
+ files:
44
+ - README.markdown
45
+ - Rakefile
46
+ - VERSION
47
+ - bin/json2env
48
+ - lib/json2env.rb
49
+ has_rdoc: true
50
+ homepage: http://github.com/orionz/json2env
51
+ licenses: []
52
+
53
+ post_install_message:
54
+ rdoc_options:
55
+ - --charset=UTF-8
56
+ require_paths:
57
+ - lib
58
+ required_ruby_version: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ hash: 3
64
+ segments:
65
+ - 0
66
+ version: "0"
67
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ hash: 3
73
+ segments:
74
+ - 0
75
+ version: "0"
76
+ requirements: []
77
+
78
+ rubyforge_project: json2env
79
+ rubygems_version: 1.3.7
80
+ signing_key:
81
+ specification_version: 3
82
+ summary: convert json to an envdir
83
+ test_files: []
84
+