OSDN Git Service

Mangle in-compatible package/release name with local filesystem.
authorTatsuki Sugiura <sugi@nemui.org>
Mon, 14 Mar 2016 09:16:16 +0000 (18:16 +0900)
committerTatsuki Sugiura <sugi@nemui.org>
Mon, 14 Mar 2016 09:16:16 +0000 (18:16 +0900)
lib/osdn/cli/command/frs_mkdirs.rb

index 3da46b8..5f1a0c3 100644 (file)
@@ -36,13 +36,21 @@ module OSDN; module CLI; module Command
       logger.debug "Making each package directry"
 
       packages.each do |package|
-        logger.info "Making directory for package #{package.name}"
-        pdir = target_dir + package.name
+        pname = fsname(package.name)
+        if pname != package.name
+          logger.warn "Package name '#{package.name}' is not suitable for filesystem, using '#{pname}'."
+        end
+        logger.info "Making directory for package #{pname}"
+        pdir = target_dir + pname
         FileUtils.mkdir_p(pdir)
         update_variables pdir, package_id: package.id
         package.releases.each do |release|
-          logger.info "Making directory for release #{release.name}"
-          rdir = pdir + release.name
+          rname = fsname(release.name)
+          if rname != release.name
+            logger.warn "Release name '#{release.name}' is not suitable for filesystem, using '#{rname}'."
+          end
+          logger.info "Making directory for release #{rname}"
+          rdir = pdir + rname
           FileUtils.mkdir_p(rdir)
           update_variables rdir, release_id: release.id
         end
@@ -66,5 +74,13 @@ module OSDN; module CLI; module Command
     def api
       OSDNClient::ProjectApi.new
     end
+
+    def fsname(name)
+      name = name.to_s.tr('/', '-')
+      if name.empty?
+        name = '(no-name)'
+      end
+      name
+    end
   end
 end; end; end