Increasing, decreasing, none or all? Take two inputs, a non-empty vector/list containing digits 1 and 2 and a string (no, you may not take 0/1 instead). The string will be one of the following (in lowercase, exactly as written below:

increasing
decreasing
ones
twos
all
none


If the string is ____ then you shall return the indices ___:


increasing ... where the list changes from 1 to 2 (every 2 that follows directly after a 1)
decreasing ... where the list changes from 2 to 1 (every 1 that follows directly after a 2)
ones ... of all digits that are 1
twos ... of all digits that are 2
all ... all the digits
none ... none of the digits. 0 is fine if the list is 1-indexed. A negative number is fine if the list is 0-indexed. You may also output an empty list or string.


Test cases:

These are 1-indexed. You may choose if you want 1-indexed or 0-indexed. The same vectors are used for different strings in the test cases.

--------------------------------
Vector:
1 1 2 2 2 1 2 2 1 1 2

String       - Output
increasing   - 3, 7, 11
decreasing   - 6, 9
ones         - 1, 2, 6, 9, 10 
twos         - 3, 4, 5, 7, 8, 11
all          - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
none         - 0 / []

------------------------------------
Vector:
1

String:
ones         - 1
all          - 1
decreasing / increasing / twos / none  - 0 / []


Scoring

As this is code-golf, the answer with the least bytes wins.

Explanations are encouraged!
JavaScript (Firefox 30-57), 74 73 bytes

(a,[s],i=0,p)=&gt;[for(e of a)if({i:e&gt;p,d:e&lt;p,o:e&lt;2,t:e&gt;1,a:1}[p=e,i++,s])i]


Array comprehensions are a neat way of combining map and filter in one go. Edit: Saved 1 byte thanks to @edc65.