visionmedia-drupal 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,9 @@
1
+ === 0.0.3 / 2008-10-03
2
+
3
+ * 1 Major Feature:
4
+
5
+ * Installer for Drupal projects
6
+
1
7
  === 0.0.2 / 2008-10-02
2
8
 
3
9
  * 2 Bug Fixes:
data/README.txt CHANGED
@@ -17,8 +17,9 @@ to quickly generate and manage Drupal modules.
17
17
 
18
18
  == ARGUMENTS:
19
19
 
20
- create module <module_name> Generates a module skeleton from an interactive wizard.
21
- todo list [total] Displays list of todo items or a total.
20
+ create module <module_name> Generates a module skeleton from an interactive wizard.
21
+ todo list [total] Displays list of todo items or a total.
22
+ install <core | project> [dir] Install a Drupal project or core itself to [dir]
22
23
 
23
24
  == OPTIONS:
24
25
 
data/drupal.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "drupal"
3
- s.version = "0.0.2"
4
- s.date = "2008-09-29"
3
+ s.version = "0.0.3"
4
+ s.date = "2008-10-03"
5
5
  s.summary = "Drupal development kit"
6
6
  s.email = "tj@vision-media.ca"
7
7
  s.homepage = "http://vision-media.ca/resources/drupal/drupal-module-builder-gem"
data/lib/drupal.rb CHANGED
@@ -6,8 +6,9 @@
6
6
  #
7
7
  # == ARGUMENTS:
8
8
  #
9
- # create module Generates a module skeleton from an interactive wizard.
10
- # todo list [total] Displays list of todo items or a total.
9
+ # create module <module_name> [dir] Generates a module skeleton from an interactive wizard. Current directory unless [dir] is specified.
10
+ # todo list [total] Displays list of todo items or a total.
11
+ # install <core | project> [dir] Install a Drupal project or core itself to [dir]
11
12
  #
12
13
  # == OPTIONS:
13
14
  #
@@ -30,7 +31,13 @@
30
31
  #
31
32
  # View total todo items only.
32
33
  # drupal todo list total ./sites/all/modules
33
-
34
+ # Install a module to the modules folder in my new installation (from drupal root)
35
+ # drupal install devel ./sites/all/modules
36
+ #
37
+ # Install a module when in the 'modules directory
38
+ # drupal install devel
39
+ #
40
+
34
41
  require 'optparse'
35
42
  require 'ostruct'
36
43
  require File.dirname(__FILE__) + '/drupal/create_module'
@@ -41,7 +48,7 @@ class Drupal
41
48
 
42
49
  MAJOR = 0
43
50
  MINOR = 0
44
- TINY = 2
51
+ TINY = 3
45
52
  VERSION = [MAJOR, MINOR, TINY].join('.')
46
53
 
47
54
  # Run the drupal development tool.
@@ -94,6 +101,7 @@ class Drupal
94
101
 
95
102
  create module <module_name> [dir] Generates a module skeleton from an interactive wizard. Current directory unless [dir] is specified.
96
103
  todo list [total] Displays list of todo items or a total.
104
+ install <core | project> [dir] Install a Drupal project or core itself to [dir]
97
105
 
98
106
  EXAMPLES:
99
107
 
@@ -111,6 +119,15 @@ class Drupal
111
119
 
112
120
  View total todo items only.
113
121
  drupal todo list total ./sites/all/modules
122
+
123
+ Install drupal core to the current directory.
124
+ drupal install core
125
+
126
+ Install a module to the modules folder in my new installation (from drupal root)
127
+ drupal install devel ./sites/all/modules
128
+
129
+ Install a module when in the 'modules directory
130
+ drupal install devel
114
131
 
115
132
  USAGE
116
133
  exit
@@ -1,5 +1,6 @@
1
1
 
2
- require 'open-uri'
2
+ require 'zlib'
3
+ require 'net/http'
3
4
 
4
5
  class Drupal
5
6
  class Install
@@ -7,13 +8,11 @@ class Drupal
7
8
  # Attempt to download core installation or module.
8
9
  def run(arguments)
9
10
  @project = arguments[0]
10
- @dest = arguments[1] || '.'
11
+ @dest = arguments[1] || '.' # TODO: strip leading /
12
+ abort "Destination #{@dest} is not a directory." unless File.directory?(@dest)
11
13
  abort 'Project name required (core | <project>).' if arguments.empty?
12
- print "Destination '#{@dest}' is not empty, are you sure you want continue installation? (yes|no): " unless destination_empty?
13
- confirmation = STDIN.gets unless destination_empty?
14
- abort 'Installation aborted.' unless confirmation =~ /y|yes/
15
14
  check_core
16
- install_project if project_exists?
15
+ install_project
17
16
  end
18
17
 
19
18
  def debug(message)
@@ -30,14 +29,6 @@ class Drupal
30
29
  @project = 'drupal' if @project =~ /^core|drupal$/
31
30
  end
32
31
 
33
- # Determine if the project passed actually exists as a module.
34
- def project_exists?
35
- debug 'Locating project page'
36
- if !uri_available?("http://drupal.org/project/#{@project}")
37
- abort "Failed to find #{@project}."
38
- end
39
- end
40
-
41
32
  # Check if a uri is available.
42
33
  def uri_available?(uri)
43
34
  open(uri) rescue false
@@ -45,11 +36,45 @@ class Drupal
45
36
 
46
37
  # Install project.
47
38
  def install_project
48
- debug "Located #{@project} page"
49
- @markup = open("http://drupal.org/project/#{@project}") { |f| f.read }
50
- @markup.match /#{@project}-6\.x-[\d]\.[\d](?:\.\d)?(?:-\w+)?\.tar\.gz/
51
- # TODO: make sure markup works..
52
- # TODO: make sure match works..
39
+ debug "Locating #{@project} page"
40
+ # Locate tarball from project page
41
+ begin
42
+ response = Net::HTTP.get_response(URI.parse("http://drupal.org/project/#{@project}"))
43
+ @markup = response.body
44
+ # TODO: check 404
45
+ debug 'Located the project page'
46
+ rescue
47
+ puts 'Failed to request page'
48
+ end
49
+ @markup.match /(#{@project}-6(?:.*?)\.gz)/
50
+ @tarball = $1
51
+ @tarpath = File.expand_path("#{@dest}/#{@tarball}")
52
+ abort "Failed to find Drupal 6 tar of #{@project}" if @tarball.nil?
53
+ debug "Found tarball #{@tarball}"
54
+
55
+ # Fetch tarball
56
+ begin
57
+ response = Net::HTTP.get_response(URI.parse("http://ftp.drupal.org/files/projects/#{@tarball}"))
58
+ File.open(@tarpath, 'w') do |f|
59
+ f.write response.body
60
+ end
61
+ debug "Copied tarball to #{@tarpath}"
62
+ rescue
63
+ abort "Failed to find #{@tarpath}"
64
+ end
65
+
66
+ # Extract tarball
67
+ @pwd = File.dirname(__FILE__)
68
+ Dir.chdir File.dirname(@tarpath)
69
+ Kernel.system "tar -xf #{@tarpath}" rescue abort "Failed to extract #{@tarpath}"
70
+ Dir.chdir @pwd
71
+
72
+ # Remove tarball
73
+ Kernel.system "rm #{@tarpath}" rescue abort "Failed to remove #{@tarpath}"
74
+
75
+ # Installation complete
76
+ debug "Project installed to #{File.dirname(@tarpath)}" unless @dest == '.'
77
+ debug 'Installation complete'
53
78
  end
54
79
  end
55
80
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: visionmedia-drupal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - tj@vision-media.ca
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-09-29 00:00:00 -07:00
12
+ date: 2008-10-03 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15