add drawable mover script
parent
7dcc8b095c
commit
2059abb93c
|
@ -0,0 +1,25 @@
|
||||||
|
#!/usr/bin/env bb
|
||||||
|
|
||||||
|
(require '[clojure.tools.cli :refer [parse-opts]])
|
||||||
|
|
||||||
|
(def cli-options
|
||||||
|
[["-s" "--source DIRECTORY" "Source directory containing the drawable folders"]
|
||||||
|
["-d" "--destination DIRECTORY" "Destination directory where the drawables should be moved to"]
|
||||||
|
["-n" "--name DRAWABLE_NAME" "The name of the drawable to move WITHOUT file extension"]])
|
||||||
|
|
||||||
|
(def options (:options (parse-opts *command-line-args* cli-options)))
|
||||||
|
(def drawable-folder-regex #"drawable-?(.*)?")
|
||||||
|
(def drawable-file-extension-regex-str "\\.[a-zA-Z]+")
|
||||||
|
|
||||||
|
(let [source-directory (io/file (:source options))
|
||||||
|
destination-directory (io/file (:destination options))
|
||||||
|
drawable-name (:name options)
|
||||||
|
source-drawable-directories (filter #(re-matches drawable-folder-regex (.getName %)) (.listFiles source-directory))]
|
||||||
|
(doseq [folder source-drawable-directories]
|
||||||
|
(let [files-to-move (filter #(re-matches (re-pattern (str drawable-name drawable-file-extension-regex-str)) (.getName %)) (.listFiles folder))]
|
||||||
|
(when-not (empty? files-to-move)
|
||||||
|
(let [file-to-move (first files-to-move)
|
||||||
|
target-file (io/file (.getAbsolutePath destination-directory) (.getName folder) (.getName file-to-move))]
|
||||||
|
(println (str "moving " (.getName (.getParentFile file-to-move)) fs/file-separator (.getName file-to-move)))
|
||||||
|
(.mkdirs (.getParentFile target-file))
|
||||||
|
(.renameTo file-to-move target-file))))))
|
|
@ -0,0 +1,21 @@
|
||||||
|
# Drawable Mover
|
||||||
|
Quickly moves drawables from one module to another. It will reuse the density and file extension of the source file and simply move those drawables to the specified target module.
|
||||||
|
Just specify the source directory `-s` (the resource directory of the source module), the destination `-d` and the name of the resource to move `-n` *without* file extension.
|
||||||
|
|
||||||
|
## Example Usage
|
||||||
|
```bash
|
||||||
|
./dm.clj -s /home/schrofi/Projects/multi-module-project/app-module/src/main/res/ -d /home/schrofi/Projects/multi-module-project/shared-module/src/main/res -n "drawable-to-move"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Fish
|
||||||
|
You can make it a bit more convenient to use by creating a fish function to at least fill in the source directory for you based on the current working directory.
|
||||||
|
|
||||||
|
```
|
||||||
|
function dm
|
||||||
|
PATH_TO_SCRIPT/dm.clj -s $(pwd) -n $argv[1] -d $argv[2]
|
||||||
|
end
|
||||||
|
|
||||||
|
funcsave dm
|
||||||
|
```
|
||||||
|
|
||||||
|
Then you can simply open a terminal in the source resource directory and execute the command like `dm DRAWABLE_NAME DESTINATION_DIRECTORY`.
|
|
@ -7,7 +7,6 @@ It will reuse the file extension of the files that are already present inside th
|
||||||
./rr.clj -d "/home/schrofi/Downloads/random_asset" -n "ic_photo"
|
./rr.clj -d "/home/schrofi/Downloads/random_asset" -n "ic_photo"
|
||||||
```
|
```
|
||||||
|
|
||||||
##
|
|
||||||
### Fish
|
### Fish
|
||||||
To more conveniently use the tool from the commandline, you can define a fish function like this:
|
To more conveniently use the tool from the commandline, you can define a fish function like this:
|
||||||
```
|
```
|
||||||
|
|
Loading…
Reference in New Issue