Permalink
Browse files

Work on the command help system.

  • Loading branch information...
1 parent 37f4f9b commit 332621527175bdb107997fb75eb11bfff40d5b12 @alloy alloy committed Sep 13, 2011
View
@@ -1,25 +1,60 @@
module Pod
class Command
- include Config::Mixin
-
- autoload :Help, 'cocoa_pods/command/help'
autoload :Install, 'cocoa_pods/command/install'
autoload :Repo, 'cocoa_pods/command/repo'
autoload :Setup, 'cocoa_pods/command/setup'
autoload :Spec, 'cocoa_pods/command/spec'
+ class Help
+ def initialize(command_class, argv)
+ @command_class, @argv = command_class, argv
+ end
+
+ def run
+ puts @command_class.banner
+ puts
+ puts "Options"
+ puts "======="
+ puts
+ puts @command_class.options
+ end
+ end
+
+ def self.banner
+ "### Commands\n" +
+ "\n" +
+ " * setup\n" +
+ " * install\n" +
+ " * repo\n" +
+ " * spec"
+ end
+
+ def self.options
+ " --help Show help information\n" +
+ " --verbose Print more information while working"
+ end
+
def self.parse(*argv)
argv = argv.dup
- command = case argv.shift
- when 'help' then Help
+ show_help = argv.delete('--help')
+ Config.instance.verbose = !!argv.delete('--verbose')
+
+ command_class = case argv.shift
when 'install' then Install
when 'repo' then Repo
when 'setup' then Setup
when 'spec' then Spec
end
- command.new(*argv)
+
+ if show_help || command_class.nil?
+ Help.new(command_class || self, argv)
+ else
+ command_class.new(*argv)
+ end
end
+ include Config::Mixin
+
def initialize(*argv)
raise ArgumentError, "unknown argument(s): #{argv.join(', ')}" unless argv.empty?
end
@@ -1,55 +0,0 @@
-module Pod
- class Command
- class Help < Command
- def run
- puts %{
-### Setup
-
- $ pod help setup
-
- pod setup
- Creates a directory at `~/.cocoa-pods' which will hold your spec-repos.
- This is where it will create a clone of the public `master' spec-repo.
-
-### Managing PodSpec files
-
- $ pod help spec
-
- pod spec create NAME
- Creates a directory for your new pod, named `NAME', with a default
- directory structure and accompanying `NAME.podspec'.
-
- pod spec init NAME
- Creates a PodSpec, in the current working dir, called `NAME.podspec'.
- Use this for existing libraries.
-
- pod spec lint NAME
- Validates `NAME.podspec' from a local spec-repo. In case `NAME' is
- omitted, it defaults to the PodSpec in the current working dir.
-
- pod spec push REMOTE
- Validates `NAME.podspec' in the current working dir, copies it to the
- local clone of the `REMOTE' spec-repo, and pushes it to the `REMOTE'
- spec-repo. In case `REMOTE' is omitted, it defaults to `master'.
-
-### Managing spec-repos
-
- $ pod help repo
-
- pod repo add NAME URL
- Clones `URL' in the local spec-repos directory at `~/.cocoa-pods'. The
- remote can later be referred to by `NAME'.
-
- pod repo update NAME
- Updates the local clone of the spec-repo `NAME'.
-
- pod repo change NAME URL
- Changes the git remote of local spec-repo `NAME' to `URL'.
-
- pod repo cd NAME
- Changes the current working dir to the local spec-repo `NAME'.
-}
- end
- end
- end
-end
@@ -1,7 +1,17 @@
module Pod
class Command
class Install < Command
+ def self.banner
+ 'TODO'
+ end
+
+ def self.options
+ " --no-clean Leave SCM dirs like `.git' and `.svn' in tact after downloading\n" +
+ super
+ end
+
def initialize(*argv)
+ config.clean = !argv.delete('--no-clean')
if podspec = argv.shift
@podspec = Pathname.new(podspec)
end
@@ -4,6 +4,25 @@
module Pod
class Command
class Repo < Command
+ def self.banner
+%{### Managing spec-repos
+
+ $ pod help repo
+
+ pod repo add NAME URL
+ Clones `URL' in the local spec-repos directory at `~/.cocoa-pods'. The
+ remote can later be referred to by `NAME'.
+
+ pod repo update NAME
+ Updates the local clone of the spec-repo `NAME'.
+
+ pod repo change NAME URL
+ Changes the git remote of local spec-repo `NAME' to `URL'.
+
+ pod repo cd NAME
+ Changes the current working dir to the local spec-repo `NAME'.}
+ end
+
include Executioner
executable :git
@@ -3,6 +3,16 @@
module Pod
class Command
class Setup < Command
+ def self.banner
+%{### Setup
+
+ $ pod help setup
+
+ pod setup
+ Creates a directory at `~/.cocoa-pods' which will hold your spec-repos.
+ This is where it will create a clone of the public `master' spec-repo.}
+ end
+
def master_repo_url
'git://github.com/alloy/cocoa-pod-specs.git'
end
@@ -1,6 +1,28 @@
module Pod
class Command
class Spec < Command
+ def self.banner
+%{### Managing PodSpec files
+
+ $ pod help spec
+
+ pod spec create NAME
+ Creates a directory for your new pod, named `NAME', with a default
+ directory structure and accompanying `NAME.podspec'.
+
+ pod spec init NAME
+ Creates a PodSpec, in the current working dir, called `NAME.podspec'.
+ Use this for existing libraries.
+
+ pod spec lint NAME
+ Validates `NAME.podspec' from a local spec-repo. In case `NAME' is
+ omitted, it defaults to the PodSpec in the current working dir.
+
+ pod spec push REMOTE
+ Validates `NAME.podspec' in the current working dir, copies it to the
+ local clone of the `REMOTE' spec-repo, and pushes it to the `REMOTE'
+ spec-repo. In case `REMOTE' is omitted, it defaults to `master'.}
+ end
end
end
end
View
@@ -10,11 +10,12 @@ def self.instance=(instance)
@instance = instance
end
- attr_accessor :repos_dir, :clean
+ attr_accessor :repos_dir, :clean, :verbose
def initialize
@repos_dir = Pathname.new(File.expand_path("~/.cocoa-pods"))
@clean = true
+ @verbose = false
end
def project_root

0 comments on commit 3326215

Please sign in to comment.